diff --git a/.gitignore b/.gitignore index 07a57f0a..2a3cea38 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ __pycache__ # utility output /coverage.png + +# macos files +.DS_STORE diff --git a/Makefile b/Makefile index e3607cfe..64d52046 100644 --- a/Makefile +++ b/Makefile @@ -125,6 +125,7 @@ $(BUILD)/%.tilemap: %.png | $$(dir $$@) $(RGBGFX) -t $@ $< .PRECIOUS: $(BUILD)/%.sgb.tilemap +export LC_ALL=C $(BUILD)/%.sgb.tilemap: %.bin | $$(dir $$@) tr < $< -d '\000' > $@ diff --git a/audio/songs/bicycle.asm b/audio/songs/bicycle.asm index acd14c26..55eb1474 100755 --- a/audio/songs/bicycle.asm +++ b/audio/songs/bicycle.asm @@ -654,7 +654,7 @@ Music_Bicycle_branch_ed7c9:: sound_loop 0, Music_Bicycle_branch_ed7c9 Music_Bicycle_Ch4:: - toggle_noise 1 + toggle_noise 1 drum_speed 12 rest 2 diff --git a/audio/songs/nidorinointro.asm b/audio/songs/nidorinointro.asm index 9a8568b6..63ecd6f5 100755 --- a/audio/songs/nidorinointro.asm +++ b/audio/songs/nidorinointro.asm @@ -241,7 +241,7 @@ Music_NidorinoIntro_Ch3:: Music_NidorinoIntro_Ch4:: - toggle_noise 2 + toggle_noise 2 drum_speed 6 drum_note 4, 1 drum_note 4, 1 diff --git a/audio/songs/oakintro.asm b/audio/songs/oakintro.asm index f493f2e3..0f669b6c 100755 --- a/audio/songs/oakintro.asm +++ b/audio/songs/oakintro.asm @@ -337,7 +337,7 @@ Music_OakIntro_branch_ec77c:: sound_ret Music_OakIntro_Ch4:: - toggle_noise 0 + toggle_noise 0 Music_OakIntro_branch_ec7e9:: drum_speed 12 diff --git a/audio/songs/viridiancity.asm b/audio/songs/viridiancity.asm index 2beb4308..0f28123e 100755 --- a/audio/songs/viridiancity.asm +++ b/audio/songs/viridiancity.asm @@ -590,7 +590,7 @@ Music_ViridianCity_branch_ec441:: sound_ret Music_ViridianCity_Ch4:: - toggle_noise 0 + toggle_noise 0 Music_ViridianCity_branch_ec464:: drum_speed 12 diff --git a/constants.asm b/constants.asm index b3a63657..62342016 100644 --- a/constants.asm +++ b/constants.asm @@ -58,3 +58,6 @@ INCLUDE "constants/sgb_constants.asm" INCLUDE "constants/map_object_constants.asm" INCLUDE "constants/start_menu_constants.asm" INCLUDE "constants/movement_constants.asm" + +INCLUDE "constants/flypoint_constants.asm" +INCLUDE "constants/spawnpoint_constants.asm" diff --git a/constants/charmap.asm b/constants/charmap.asm index 1c012986..5bcc9529 100755 --- a/constants/charmap.asm +++ b/constants/charmap.asm @@ -294,3 +294,13 @@ charmap "7", $fd charmap "8", $fe charmap "9", $ff + +; Actual characters (from gfx/font/font_battle_extra.png) + + charmap "", $6e + + charmap "", $70 ; hiragana small do, unused + charmap "◀", $71 + + charmap "", $73 + charmap "№", $74 diff --git a/constants/flypoint_constants.asm b/constants/flypoint_constants.asm new file mode 100644 index 00000000..d4c4e613 --- /dev/null +++ b/constants/flypoint_constants.asm @@ -0,0 +1,25 @@ +; Fly point indexes (see data/flypoint) + const_def + + const FLY_POINT_SILENT_HILL ; 0 + const FLY_POINT_OLD ; 1 + const FLY_POINT_WEST ; 2 + const FLY_POINT_HAITEKU ; 3 + const FLY_POINT_FONTO ; 4 + const FLY_POINT_BAADON ; 5 + const FLY_POINT_NEWTYPE ; 6 + const FLY_POINT_SUGAR ; 7 + const FLY_POINT_BULL_FOREST ; 8 + const FLY_POINT_STAND ; 9 + const FLY_POINT_KANTO ; 10 + const FLY_POINT_PRINCE ; 11 + const FLY_POINT_MT_FUJI ; 12 + const FLY_POINT_SOUTH ; 13 + const FLY_POINT_NORTH ; 14 + +; Unused? + + const FLY_POINT_ROUTE_15 ; 15 + const FLY_POINT_ROUTE_18 ; 16 + +DEF FLY_POINT_N_A EQU $FF diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm index c62ecf42..c93c92e6 100644 --- a/constants/gfx_constants.asm +++ b/constants/gfx_constants.asm @@ -43,3 +43,5 @@ DEF DOUBLESPRITEBUFFERSIZE EQU 2 * SPRITEBUFFERSIZE const SPRITEOAMSTRUCT_ATTRIBUTES ; 3 DEF SPRITEOAMSTRUCT_LENGTH EQU const_value DEF NUM_SPRITE_OAM_STRUCTS EQU 40 ; see wShadowOAM + +DEF OAM_YCOORD_HIDDEN EQU 160 ; hides an OAM offscreen diff --git a/constants/map_data_constants.asm b/constants/map_data_constants.asm index 7124ab54..75e1519b 100644 --- a/constants/map_data_constants.asm +++ b/constants/map_data_constants.asm @@ -51,14 +51,7 @@ DEF NUM_MAP_PALETTES EQU const_value const FISHGROUP_REMORAID const FISHGROUP_QWILFISH_NO_SWARM -; connection directions (see data/maps/data.asm) - const_def - const EAST_F - const WEST_F - const SOUTH_F - const NORTH_F - -; wMapConnections +; wMapConnections / connection directions (see data/maps/data.asm) const_def shift_const EAST shift_const WEST diff --git a/constants/map_object_constants.asm b/constants/map_object_constants.asm index 1e87aadf..157ed381 100644 --- a/constants/map_object_constants.asm +++ b/constants/map_object_constants.asm @@ -5,13 +5,13 @@ DEF OBJECT_SPRITE_TILE rb ; 02 DEF OBJECT_MOVEMENT_TYPE rb ; 03 DEF OBJECT_FLAGS1 rb ; 04 DEF OBJECT_FLAGS2 rb ; 05 -DEF OBJECT_PALETTE rb ; 06 -DEF OBJECT_WALKING rb ; 07 -DEF OBJECT_DIRECTION rb ; 08 -DEF OBJECT_STEP_TYPE rb ; 09 -DEF OBJECT_STEP_DURATION rb ; 0a -DEF OBJECT_ACTION rb ; 0b -DEF OBJECT_STEP_FRAME rb ; 0c +DEF OBJECT_WALKING rb ; 06 +DEF OBJECT_DIRECTION rb ; 07 +DEF OBJECT_STEP_TYPE rb ; 08 +DEF OBJECT_STEP_DURATION rb ; 09 +DEF OBJECT_ACTION rb ; 0a +DEF OBJECT_STEP_FRAME rb ; 0b +DEF OBJECT_0C rb ; 0c DEF OBJECT_FACING rb ; 0d DEF OBJECT_TILE rb ; 0e DEF OBJECT_LAST_TILE rb ; 0f @@ -21,13 +21,13 @@ DEF OBJECT_LAST_MAP_X rb ; 12 DEF OBJECT_LAST_MAP_Y rb ; 13 DEF OBJECT_INIT_X rb ; 14 DEF OBJECT_INIT_Y rb ; 15 -DEF OBJECT_RADIUS rb ; 16 -DEF OBJECT_SPRITE_X rb ; 17 -DEF OBJECT_SPRITE_Y rb ; 18 -DEF OBJECT_SPRITE_X_OFFSET rb ; 19 -DEF OBJECT_SPRITE_Y_OFFSET rb ; 1a -DEF OBJECT_MOVEMENT_INDEX rb ; 1b -DEF OBJECT_1C rb ; 1c +DEF OBJECT_RADIUS_X rb ; 16 +DEF OBJECT_RADIUS_Y rb ; 17 +DEF OBJECT_SPRITE_X rb ; 18 +DEF OBJECT_SPRITE_Y rb ; 19 +DEF OBJECT_SPRITE_X_OFFSET rb ; 1a +DEF OBJECT_SPRITE_Y_OFFSET rb ; 1b +DEF OBJECT_MOVEMENT_INDEX rb ; 1c DEF OBJECT_1D rb ; 1d DEF OBJECT_1E rb ; 1e DEF OBJECT_1F rb ; 1f diff --git a/constants/menu_constants.asm b/constants/menu_constants.asm index 870f93b6..f2757ada 100644 --- a/constants/menu_constants.asm +++ b/constants/menu_constants.asm @@ -1,11 +1,10 @@ ; MenuHeader flags const_def shift_const MENU_RESTORE_TILES ; Will be set if MENU_BACKUP_TILES(_2) is set. - shift_const MENU_UNUSED_1 - shift_const MENU_UNUSED_2 + const_skip 2 shift_const MENU_NO_CLICK_SFX shift_const MENU_SPRITE_ANIMS - shift_const MENU_UNUSED_3 + shift_const MENU_UNUSED shift_const MENU_BACKUP_TILES shift_const MENU_BACKUP_TILES_2 @@ -32,37 +31,49 @@ shift_const SCROLLINGMENU_ENABLE_START shift_const SCROLLINGMENU_ENABLE_SELECT +; _2DMenu more flags + const_def + shift_const _2DMENU_EXIT_RIGHT ; 0 + shift_const _2DMENU_EXIT_LEFT ; 1 + shift_const _2DMENU_EXIT_UP ; 2 + shift_const _2DMENU_EXIT_DOWN ; 3 + shift_const _2DMENU_WRAP_LEFT_RIGHT ; 4 + shift_const _2DMENU_WRAP_UP_DOWN ; 5 + shift_const _2DMENU_ENABLE_SPRITE_ANIMS ; 6 + shift_const _2DMENU_DISABLE_JOYPAD_FILTER ; 7 + +; _2DMenu more flags 2 + const_def + const_skip 7 + shift_const _2DMENU_EXITING ; 7 + ; MonMenuOptions indexes (see data/mon_menu.asm) ; used by PokemonActionSubmenu (see engine/menus/start_menu.asm) const_def 1 ; moves - const MONMENUITEM_CUT ; 1 - const MONMENUITEM_FLY ; 2 - const MONMENUITEM_SURF ; 3 - const MONMENUITEM_STRENGTH ; 4 - const MONMENUITEM_WATERFALL ; 5 - const MONMENUITEM_FLASH ; 6 - const MONMENUITEM_WHIRLPOOL ; 7 - const MONMENUITEM_DIG ; 8 - const MONMENUITEM_TELEPORT ; 9 - const MONMENUITEM_SOFTBOILED ; 10 - const MONMENUITEM_HEADBUTT ; 11 - const MONMENUITEM_ROCKSMASH ; 12 - const MONMENUITEM_MILKDRINK ; 13 - const MONMENUITEM_SWEETSCENT ; 14 + const MONMENUITEM_CUT ; 1 + const MONMENUITEM_FLY ; 2 + const MONMENUITEM_SURF ; 3 + const MONMENUITEM_STRENGTH ; 4 + const MONMENUITEM_FLASH ; 5 + const MONMENUITEM_WHIRLPOOL ; 6 + const MONMENUITEM_BOUNCE ; 7 + const MONMENUITEM_DIG ; 8 + const MONMENUITEM_TELEPORT ; 9 + const MONMENUITEM_SOFTBOILED ; 10 ; options - const MONMENUITEM_STATS ; 15 - const MONMENUITEM_SWITCH ; 16 - const MONMENUITEM_ITEM ; 17 - const MONMENUITEM_CANCEL ; 18 - const MONMENUITEM_MOVE ; 19 - const MONMENUITEM_MAIL ; 20 - const MONMENUITEM_ERROR ; 21 + const MONMENUITEM_STATS ; 11 + const MONMENUITEM_SWITCH ; 12 + const MONMENUITEM_ITEM ; 13 + const MONMENUITEM_CANCEL ; 14 + const MONMENUITEM_MOVE ; 15 + const MONMENUITEM_MAIL ; 16 + const MONMENUITEM_ERROR ; 17 ; MonMenuOptions categories -DEF MONMENU_FIELD_MOVE EQU 0 -DEF MONMENU_MENUOPTION EQU 1 +DEF MONMENU_MENUOPTION EQU 0 +DEF MONMENU_FIELD_MOVE EQU 1 DEF NUM_MONMENU_ITEMS EQU 8 diff --git a/constants/pokemon_constants.asm b/constants/pokemon_constants.asm index bb303e90..82cec681 100644 --- a/constants/pokemon_constants.asm +++ b/constants/pokemon_constants.asm @@ -192,3 +192,33 @@ const MON_BELLSPROUT ; bc const MON_WEEPINBELL ; bd const MON_VICTREEBEL ; be + +; Unown forms + const_def 1 + const UNOWN_A ; 1 + const UNOWN_B ; 2 + const UNOWN_C ; 3 + const UNOWN_D ; 4 + const UNOWN_E ; 5 + const UNOWN_F ; 6 + const UNOWN_G ; 7 + const UNOWN_H ; 8 + const UNOWN_I ; 9 + const UNOWN_J ; 10 + const UNOWN_K ; 11 + const UNOWN_L ; 12 + const UNOWN_M ; 13 + const UNOWN_N ; 14 + const UNOWN_O ; 15 + const UNOWN_P ; 16 + const UNOWN_Q ; 17 + const UNOWN_R ; 18 + const UNOWN_S ; 19 + const UNOWN_T ; 20 + const UNOWN_U ; 21 + const UNOWN_V ; 22 + const UNOWN_W ; 23 + const UNOWN_X ; 24 + const UNOWN_Y ; 25 + const UNOWN_Z ; 26 +DEF NUM_UNOWN EQU const_value - 1 ; 26 diff --git a/constants/pokemon_data_constants.asm b/constants/pokemon_data_constants.asm index dd6b9196..4ab05e2d 100644 --- a/constants/pokemon_data_constants.asm +++ b/constants/pokemon_data_constants.asm @@ -100,8 +100,9 @@ DEF CAUGHT_EGG_LEVEL EQU 1 DEF PARTY_LENGTH EQU 6 ; boxes -DEF MONS_PER_BOX EQU 20 -DEF NUM_BOXES EQU 14 +; The Japanese version fits more Pokémon into the boxes, but has less boxes total +DEF MONS_PER_BOX EQU 30 +DEF NUM_BOXES EQU 10 ; hall of fame DEF HOF_MON_LENGTH EQUS "(wHallOfFamePokemonListMon1End - wHallOfFamePokemonListMon1)" diff --git a/constants/spawnpoint_constants.asm b/constants/spawnpoint_constants.asm new file mode 100644 index 00000000..54f7bbfd --- /dev/null +++ b/constants/spawnpoint_constants.asm @@ -0,0 +1,49 @@ +; Spawn point indexes (see data/maps/landmarks.asm) + const_def + + const SPAWN_POINT_NONE + const SPAWN_POINT_SILENT + const SPAWN_POINT_OLD + const SPAWN_POINT_WEST + const SPAWN_POINT_HIGH_TECH + const SPAWN_POINT_FOUNT + const SPAWN_POINT_BIRDON + const SPAWN_POINT_NEW_TYPE + const SPAWN_POINT_SUGAR + const SPAWN_POINT_BLUE_FOREST + const SPAWN_POINT_STAND + const SPAWN_POINT_KANTO + const SPAWN_POINT_PRINCE + const SPAWN_POINT_MT_FUJI + const SPAWN_POINT_SOUTH + const SPAWN_POINT_NORTH + const SPAWN_POINT_ROUTE_15 + const SPAWN_POINT_ROUTE_18 + const SPAWN_POINT_POWER_PLANT_1 + const SPAWN_POINT_POWER_PLANT_2 + const SPAWN_POINT_POWER_PLANT_3 + const SPAWN_POINT_POWER_PLANT_4 + const SPAWN_POINT_RUINS_1 + const SPAWN_POINT_RUINS_2 + const SPAWN_POINT_MINES_1 + const SPAWN_POINT_MINES_2 + const SPAWN_POINT_MINES_3 + const SPAWN_POINT_MINES_4 + const SPAWN_POINT_MINES_5 + const SPAWN_POINT_MINES_6 + const SPAWN_POINT_MINES_7 + const SPAWN_POINT_HIDEOUT_1 + const SPAWN_POINT_HIDEOUT_2 + const SPAWN_POINT_HIDEOUT_3 + const SPAWN_POINT_SLOWPOKE_WELL_1 + const SPAWN_POINT_SLOWPOKE_WELL_2 + const SPAWN_POINT_POKEMON_LEAGUE_1 + const SPAWN_POINT_POKEMON_LEAGUE_1_2 + const SPAWN_POINT_POKEMON_LEAGUE_2 + const SPAWN_POINT_POKEMON_LEAGUE_3 + const SPAWN_POINT_POKEMON_LEAGUE_4 + const SPAWN_POINT_POKEMON_LEAGUE_5 + const SPAWN_POINT_POKEMON_LEAGUE_6 + const SPAWN_POINT_POKEMON_LEAGUE_7 + const SPAWN_POINT_POKEMON_LEAGUE_7_2 + const SPAWN_POINT_SILENT_HILL diff --git a/constants/text_constants.asm b/constants/text_constants.asm index 9fdb14bb..9cdd1fbc 100644 --- a/constants/text_constants.asm +++ b/constants/text_constants.asm @@ -3,7 +3,7 @@ DEF NAME_LENGTH EQU 11 ; English DEF PLAYER_NAME_LENGTH EQU 6 ; Japanese DEF BOX_NAME_LENGTH EQU 9 ; English DEF MON_NAME_LENGTH EQU 6 -DEF MOVE_NAME_LENGTH EQU 13 ; English +DEF MOVE_NAME_LENGTH EQU 5 DEF ITEM_NAME_LENGTH EQU 11 DEF TRAINER_CLASS_NAME_LENGTH EQU 13 ; English diff --git a/data/maps/flypoints.asm b/data/maps/flypoints.asm new file mode 100644 index 00000000..41db87fb --- /dev/null +++ b/data/maps/flypoints.asm @@ -0,0 +1,27 @@ +INCLUDE "constants.asm" + +SECTION "data/maps/flypoints.asm", ROMX + +; +; Table that the game reads for determining which Fly point to move to depending on D-Pad input. +; Each row corresponds to the index of a Fly point. +; +; db UP, DOWN, LEFT, RIGHT +; +FlyPointPaths: + + db FLY_POINT_PRINCE, FLY_POINT_N_A, FLY_POINT_OLD, FLY_POINT_KANTO ; FLY_POINT_SILENT_HILL + db FLY_POINT_HAITEKU, FLY_POINT_SILENT_HILL, FLY_POINT_WEST, FLY_POINT_SILENT_HILL ; FLY_POINT_OLD + db FLY_POINT_BAADON, FLY_POINT_OLD, FLY_POINT_HAITEKU, FLY_POINT_OLD ; FLY_POINT_WEST + db FLY_POINT_FONTO, FLY_POINT_WEST, FLY_POINT_SOUTH, FLY_POINT_WEST ; FLY_POINT_HAITEKU + db FLY_POINT_SOUTH, FLY_POINT_HAITEKU, FLY_POINT_SOUTH, FLY_POINT_BAADON ; FLY_POINT_FONTO + db FLY_POINT_FONTO, FLY_POINT_WEST, FLY_POINT_FONTO, FLY_POINT_NEWTYPE ; FLY_POINT_BAADON + db FLY_POINT_SUGAR, FLY_POINT_N_A, FLY_POINT_BAADON, FLY_POINT_BULL_FOREST ; FLY_POINT_NEWTYPE + db FLY_POINT_N_A, FLY_POINT_NEWTYPE, FLY_POINT_N_A, FLY_POINT_N_A ; FLY_POINT_SUGAR + db FLY_POINT_NORTH, FLY_POINT_STAND, FLY_POINT_NEWTYPE, FLY_POINT_NORTH ; FLY_POINT_BULL_FOREST + db FLY_POINT_BULL_FOREST, FLY_POINT_KANTO, FLY_POINT_KANTO, FLY_POINT_BULL_FOREST ; FLY_POINT_STAND + db FLY_POINT_STAND, FLY_POINT_SILENT_HILL, FLY_POINT_SILENT_HILL, FLY_POINT_STAND ; FLY_POINT_KANTO + db FLY_POINT_MT_FUJI, FLY_POINT_SILENT_HILL, FLY_POINT_N_A, FLY_POINT_N_A ; FLY_POINT_PRINCE + db FLY_POINT_N_A, FLY_POINT_PRINCE, FLY_POINT_N_A, FLY_POINT_N_A ; FLY_POINT_MT_FUJI + db FLY_POINT_FONTO, FLY_POINT_HAITEKU, FLY_POINT_N_A, FLY_POINT_FONTO ; FLY_POINT_SOUTH + db FLY_POINT_N_A, FLY_POINT_BULL_FOREST, FLY_POINT_BULL_FOREST, FLY_POINT_N_A ; FLY_POINT_NORTH \ No newline at end of file diff --git a/data/maps/landmarks.asm b/data/maps/landmarks.asm index 796e6f7b..de395c94 100644 --- a/data/maps/landmarks.asm +++ b/data/maps/landmarks.asm @@ -1,7 +1,62 @@ INCLUDE "constants.asm" +MACRO landmark +; X, Y. +; Unlike the final game, the prototype actually stores and reads the bytes swapped, with Y first and X second. + db \2 + 16, \1 + 8 + +ENDM + SECTION "data/maps/landmarks.asm", ROMX +LandmarkPositions: + landmark -8, -16 ; LANDMARK_NONE + landmark 148, 12 ; LANDMARK_NORTH + landmark 148, 24 ; LANDMARK_BULL_FOREST_ROUTE_3 + landmark 148, 36 ; LANDMARK_BULL_FOREST + landmark 148, 48 ; LANDMARK_BULL_FOREST_ROUTE_2 + landmark 148, 60 ; LANDMARK_STAND + landmark 148, 76 ; LANDMARK_STAND_ROUTE + landmark 140, 92 ; LANDMARK_KANTO_EAST_ROUTE + landmark 124, 92 ; LANDMARK_KANTO + landmark 112, 92 ; LANDMARK_ROUTE_SILENT_EAST + landmark 100, 92 ; LANDMARK_SILENT_HILL + landmark 100, 84 ; LANDMARK_PRINCE + landmark 100, 76 ; LANDMARK_MT_FUJI + landmark 92, 92 ; LANDMARK_ROUTE_1_P1 + landmark 84, 92 ; LANDMARK_ROUTE_1_P2 + landmark 84, 76 ; LANDMARK_OLD_CITY + landmark 72, 76 ; LANDMARK_ROUTE_2 + landmark 60, 76 ; LANDMARK_WEST + landmark 60, 64 ; LANDMARK_BAADON_ROUTE_1 + landmark 60, 52 ; LANDMARK_BAADON + landmark 84, 52 ; LANDMARK_BAADON_ROUTE_2 + landmark 100, 52 ; LANDMARK_BAADON_ROUTE_3 + landmark 108, 60 ; LANDMARK_ROUTE_15 + landmark 116, 60 ; LANDMARK_NEWTYPE + landmark 116, 48 ; LANDMARK_SUGAR_ROUTE + landmark 116, 36 ; LANDMARK_SUGAR + landmark 124, 60 ; LANDMARK_NEWTYPE_ROUTE + landmark 132, 44 ; LANDMARK_ROUTE_18 + landmark 140, 36 ; LANDMARK_BULL_FOREST_ROUTE_1 + landmark 120, 76 ; LANDMARK_1C + landmark 96, 68 ; LANDMARK_1D + landmark 48, 44 ; LANDMARK_FONTO_ROUTE_3 + landmark 36, 44 ; LANDMARK_FONTO + landmark 36, 36 ; LANDMARK_FONTO_ROUTE_2 + landmark 24, 28 ; LANDMARK_FONTO_ROUTE_6 + landmark 12, 36 ; LANDMARK_FONTO_ROUTE_5 + landmark 12, 44 ; LANDMARK_SOUTH + landmark 24, 44 ; LANDMARK_FONTO_ROUTE_1 + landmark 12, 56 ; LANDMARK_HAITEKU_WEST_ROUTE_OCEAN + landmark 20, 68 ; LANDMARK_HAITEKU_WEST_ROUTE + landmark 36, 68 ; LANDMARK_HAITEKU + landmark 48, 68 ; LANDMARK_WASTE_BRIDGE + landmark 60, 44 ; LANDMARK_FONTO_ROUTE_4 + landmark 36, 56 ; LANDMARK_FONTO_BRIDGE + +SECTION "data/maps/landmarks.asm@LandmarkNames", ROMX + LandmarkNames:: db "サイレント@" ; SILENT db "オールド@" ; OLD diff --git a/data/maps/spawn_points.asm b/data/maps/spawn_points.asm new file mode 100644 index 00000000..908ef0a6 --- /dev/null +++ b/data/maps/spawn_points.asm @@ -0,0 +1,72 @@ +INCLUDE "constants.asm" + +SECTION "data/maps/spawn_points.asm", ROMX +; +; Spawn points used by Fly, Debug Warp, etc. +; +; Group, Map, X Position, Y Position +; +SpawnPoints: + +; Fly destinations + + db GROUP_SILENT_HILL, MAP_SILENT_HILL, $05, $05 + db GROUP_OLD_CITY, MAP_OLD_CITY, $1b, $1d + db GROUP_WEST, MAP_WEST, $19, $0f + db GROUP_HAITEKU, MAP_HAITEKU, $1f, $0b + db GROUP_FONTO, MAP_FONTO, $03, $0d + db GROUP_BAADON, MAP_BAADON, $0f, $05 + db GROUP_NEWTYPE, MAP_NEWTYPE, $07, $09 + db GROUP_SUGAR, MAP_SUGAR, $09, $0b + db GROUP_BULL_FOREST, MAP_BULL_FOREST, $0d, $13 + db GROUP_STAND, MAP_STAND, $21, $15 + db GROUP_KANTO, MAP_KANTO, $31, $1f + db GROUP_PRINCE, MAP_PRINCE, $05, $05 + db GROUP_MT_FUJI, MAP_MT_FUJI, $05, $05 + db GROUP_SOUTH, MAP_SOUTH, $21, $0f + db GROUP_NORTH, MAP_NORTH, $0d, $0b + +; Seemingly recognized as valid warps by hacking wFlyDestination, but inaccessible other than through debug Warp + + db GROUP_NEWTYPE, MAP_ROUTE_15, $09, $0b + db GROUP_NEWTYPE, MAP_ROUTE_18, $0d, $1d + +; Hidden warps (do not appear in debug menu normally) + + db GROUP_POWER_PLANT_1, MAP_POWER_PLANT_1, $06, $06 + db GROUP_POWER_PLANT_2, MAP_POWER_PLANT_2, $06, $06 + db GROUP_POWER_PLANT_3, MAP_POWER_PLANT_3, $04, $10 + db GROUP_POWER_PLANT_4, MAP_POWER_PLANT_4, $06, $06 + + db GROUP_RUINS_OF_ALPH_ENTRANCE, MAP_RUINS_OF_ALPH_ENTRANCE, $09, $0d + db GROUP_RUINS_OF_ALPH_MAIN, MAP_RUINS_OF_ALPH_MAIN, $17, $2f + + db GROUP_CAVE_MINECARTS_1, MAP_CAVE_MINECARTS_1, $06, $0a + db GROUP_CAVE_MINECARTS_2, MAP_CAVE_MINECARTS_2, $06, $06 + db GROUP_CAVE_MINECARTS_3, MAP_CAVE_MINECARTS_3, $06, $06 + db GROUP_CAVE_MINECARTS_4, MAP_CAVE_MINECARTS_4, $06, $06 + db GROUP_CAVE_MINECARTS_5, MAP_CAVE_MINECARTS_5, $06, $06 + db GROUP_CAVE_MINECARTS_6, MAP_CAVE_MINECARTS_6, $06, $06 + db GROUP_CAVE_MINECARTS_7, MAP_CAVE_MINECARTS_7, $06, $06 + + db GROUP_OFFICE_1, MAP_OFFICE_1, $10, $0d + db GROUP_OFFICE_2, MAP_OFFICE_2, $08, $08 + db GROUP_OFFICE_3, MAP_OFFICE_3, $08, $08 + + db GROUP_SLOWPOKE_WELL_ENTRANCE, MAP_SLOWPOKE_WELL_ENTRANCE, $09, $0b + db GROUP_SLOWPOKE_WELL_MAIN, MAP_SLOWPOKE_WELL_MAIN, $09, $23 + + db GROUP_OLD_CITY_GYM, MAP_OLD_CITY_GYM, $06, $06 + db GROUP_WEST_GYM, MAP_WEST_GYM, $06, $06 + db GROUP_HAITEKU_LEAGUE_2F, MAP_HAITEKU_LEAGUE_2F, $06, $06 + db GROUP_BAADON_LEAGUE_2F, MAP_BAADON_LEAGUE_2F, $06, $06 + db GROUP_NEWTYPE_LEAGUE_2F, MAP_NEWTYPE_LEAGUE_2F, $06, $06 + db GROUP_BULL_LEAGUE_2F, MAP_BULL_LEAGUE_2F, $06, $06 + db GROUP_STAND_LEAGUE_2F, MAP_STAND_LEAGUE_2F, $06, $06 + db GROUP_KANTO_LEAGUE_2F, MAP_KANTO_LEAGUE_2F, $06, $06 + db GROUP_KANTO_LEAGUE_2_2F, MAP_KANTO_LEAGUE_2_2F, $06, $06 + +; Only appears in debug menu, likely for the purposes of testing the demo + + db GROUP_SHIZUKANA_OKA, MAP_SHIZUKANA_OKA, $10, $10 + db $ff, $ff, $ff, $ff \ No newline at end of file diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc index 9e184b93..402460a7 100644 --- a/data/predef_pointers.inc +++ b/data/predef_pointers.inc @@ -60,24 +60,24 @@ GiveItemPredef:: add_predef Function28d6e add_predef Function40ac7 add_predef Function40000 - add_predef Function40b5c ; 30 - add_predef Function50000 - add_predef Function50bfe + add_predef ConvertMon_1to2 ; 30 + add_predef CopyMonToTempMon + add_predef ListMoves add_predef Function50bcd add_predef Function50b92 add_predef Function508c4 - add_predef Function50771 - add_predef Function50774 + add_predef PartyMenuInBattle_Setup + add_predef PartyMenuInBattle add_predef Function5081f ; 38 - add_predef Function506d4 - add_predef Function5069e + add_predef ListMovePP + add_predef GetGender add_predef Function502b5 - add_predef Function50244 - add_predef Function50248 - add_predef Function500c6 - add_predef Function500a0 - add_predef Function50073 ; 40 - add_predef Function50ed9 + add_predef DrawPlayerHP + add_predef DrawEnemyHP + add_predef GetTypeName + add_predef PrintMoveType + add_predef PrintMonTypes ; 40 + add_predef GetUnownLetter add_predef Functioncb6ff add_predef Functioncb710 add_predef Functioncb733 diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index b3b6f18a..7b14ab54 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -40,7 +40,7 @@ DoBattleTransition: ret .InitGFX: - callba ReanchorBGMap_NoOAMUpdate + farcall ReanchorBGMap_NoOAMUpdate call UpdateSprites call ConvertTrainerBattlePokeballTilesTo2bpp call WaitBGMap diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm index 6c464093..da2cea6c 100644 --- a/engine/battle_anims/bg_effects.asm +++ b/engine/battle_anims/bg_effects.asm @@ -537,7 +537,7 @@ BattleBGEffect_HeadFollow: ret _QueueBattleAnimation: - callab QueueBattleAnimation + callfar QueueBattleAnimation ret BattleBGEffect_27: @@ -2340,12 +2340,12 @@ BattleBGEffects_CheckSGB: BattleBGEffects_Sine: ld e, a - callab BattleAnim_Sine_e + callfar BattleAnim_Sine_e ld a, e ret BattleBGEffects_Cosine: ld e, a - callab BattleAnim_Cosine_e + callfar BattleAnim_Cosine_e ld a, e ret diff --git a/engine/debug/debug_menu.asm b/engine/debug/debug_menu.asm index 020e2272..a268f550 100644 --- a/engine/debug/debug_menu.asm +++ b/engine/debug/debug_menu.asm @@ -84,11 +84,11 @@ DebugMenuOptionFight:: ret DebugMenuOptionSubGames:: - callab CallSubGameMenu + callfar CallSubGameMenu jp DebugMenu DebugMenuOptionMonsterTest:: - ld hl, wPokedexOwned + ld hl, wPokedexCaught ld de, wPokedexSeen ld b, NUM_POKEMON / 8 ld a, %11111111 @@ -101,7 +101,7 @@ DebugMenuOptionMonsterTest:: ld a, (1 << ((NUM_POKEMON - 1) % 8)) - 1 ; discount #251 ld [hl], a ld [de], a - callab MonsterTest + callfar MonsterTest ld a, %11100100 ldh [rBGP], a @@ -109,7 +109,7 @@ Function40eb:: jp DebugMenu DebugMenuOptionName:: - callab OpenTrainerGear + callfar OpenTrainerGear ld a, %11100100 ldh [rBGP], a jp DebugMenu @@ -292,22 +292,22 @@ CallSubGameMenu: db "スロット@" SubGameMenu_PokerGame: - callab PokerMinigame + callfar PokerMinigame ret SubGameMenu_PuzzleGame: - callab FifteenPuzzleMinigame + callfar FifteenPuzzleMinigame ret SubGameMenu_CardFlipGame: - callab MemoryMinigame + callfar MemoryMinigame ret SubGameMenu_PicrossGame: - callab PicrossMinigame + callfar PicrossMinigame ret SubGameMenu_SlotMachineGame: - callab SlotMachineGame + callfar SlotMachineGame ret diff --git a/engine/debug/field/change_transportation.inc b/engine/debug/field/change_transportation.inc index 00c3693f..b98a6f52 100644 --- a/engine/debug/field/change_transportation.inc +++ b/engine/debug/field/change_transportation.inc @@ -37,7 +37,7 @@ FieldDebug_ChangeTransportation: call MenuTextBox .update_sprite - callab GetPlayerSprite + callfar GetPlayerSprite ld a, BUTTONS call FieldDebug_WaitJoypadInput call CloseWindow @@ -149,7 +149,7 @@ FieldDebug_CheckFacingSurfable: ret FieldDebug_SetSurfDirection: - ld a, [wPlayerWalking] + ld a, [wPlayerDirection] srl a srl a ld e, a diff --git a/engine/debug/field/follow_npc_test.inc b/engine/debug/field/follow_npc_test.inc index 8c2c5cb2..1e6b8553 100644 --- a/engine/debug/field/follow_npc_test.inc +++ b/engine/debug/field/follow_npc_test.inc @@ -36,7 +36,7 @@ FieldDebug_FollowNPCTest: ret .asm_fc9a5: - callab SpawnFollower + callfar SetFollowerDefaultAttributes ld a, 1 call Function15ed ld a, 1 @@ -50,7 +50,7 @@ FieldDebug_FollowNPCTest: .asm_fc9c2: call Function18cc ld a, 1 - call Function169f + call DeleteMapObject ret .MenuHeader: diff --git a/engine/debug/field/item_test.inc b/engine/debug/field/item_test.inc index e2592bde..9188c772 100644 --- a/engine/debug/field/item_test.inc +++ b/engine/debug/field/item_test.inc @@ -166,9 +166,9 @@ FieldDebug_ItemTest: .DetermineItemTossable: push hl - callab _CheckTossableItem + callfar _CheckTossableItem pop hl - ld a, [wItemAttributeParamBuffer] + ld a, [wItemAttributeValue] and a jr nz, .not_tossable call .tossable @@ -183,7 +183,7 @@ FieldDebug_ItemTest: .tossable push hl - callab SelectQuantityToToss + callfar SelectQuantityToToss jr c, .cancel_toss call .load_item ld hl, .TossConfirmText diff --git a/engine/debug/field/map_viewer.inc b/engine/debug/field/map_viewer.inc index ed29473d..c73d66b2 100644 --- a/engine/debug/field/map_viewer.inc +++ b/engine/debug/field/map_viewer.inc @@ -57,7 +57,7 @@ DebugMapViewer:: jr c, .continue call Function2c4a jr nc, .loop - callab Function824c + callfar Function824c jr .loop .continue @@ -141,7 +141,7 @@ DebugMapViewer:: ld d, 2 ld b, 1 ld c, 0 - callab Function83a2 + callfar Function83a2 ld a, DEBUGMAPVIEWER_WAIT_FINISHED_MOVING ldh [hDebugMapViewerJumptable], a and a @@ -159,7 +159,7 @@ DebugMapViewer:: .Cleanup: ld a, 1 - call Function169f + call DeleteMapObject call Function18cc ld a, 0 call Function1908 @@ -190,7 +190,7 @@ DebugMapViewer_ShowSelectedDetails: ld a, 0 ldh [hTextBoxCursorBlinkInterval], a ld bc, wObjectStructs - callab Function77a1 + callfar Function77a1 jr nc, .skip call RefreshScreen call .DisplayActorCastID @@ -323,7 +323,7 @@ DebugMapViewer_DoMovement: ret DebugMapViewer_ReplacePlayerObject: - callab Function807b + callfar DebugMapViewer_SetupCursor ld a, 1 call Function15ed ld a, 1 diff --git a/engine/debug/field/mon_following.inc b/engine/debug/field/mon_following.inc index 1512bb6a..fa867e59 100644 --- a/engine/debug/field/mon_following.inc +++ b/engine/debug/field/mon_following.inc @@ -18,7 +18,7 @@ FieldDebug_PokemonFollowing: ld a, [wPlayerStructEnd] and a jr nz, .ShowUnableText - callab Function8031 + callfar SpawnFollower ld de, SFX_24 call PlaySFX call CloseWindow @@ -27,7 +27,7 @@ FieldDebug_PokemonFollowing: ret .remove - callab Function806c + callfar DeleteFollower ld de, SFX_25 call PlaySFX jr .done diff --git a/engine/debug/field/move_to_entrance.inc b/engine/debug/field/move_to_entrance.inc index c99f36fd..b267d02a 100644 --- a/engine/debug/field/move_to_entrance.inc +++ b/engine/debug/field/move_to_entrance.inc @@ -32,7 +32,7 @@ FieldDebug_MoveToRoute1Entrance: ld e, $d ld b, 0 ld c, 1 - callab Function833a + callfar Function833a ld a, 0 ld hl, wMovementBuffer call LoadMovementDataPointer diff --git a/engine/debug/field/pokemart_menu.inc b/engine/debug/field/pokemart_menu.inc index 4ebeb5b7..da483ae7 100644 --- a/engine/debug/field/pokemart_menu.inc +++ b/engine/debug/field/pokemart_menu.inc @@ -8,7 +8,7 @@ FieldDebug_PokemartMenu: .DoPokemartMenu: call LoadStandardMenuHeader - callab asm_24860 + callfar asm_24860 ld hl, DebugMart_PokemartMenuText call PrintText ld hl, .MenuHeader @@ -68,7 +68,7 @@ DebugMart_BuyMenuHeader: ld a, [wScrollingMenuCursorPosition] ld c, a ld b, 0 - ld hl, wcc40 + ld hl, wcc3a add hl, bc add hl, bc add hl, bc @@ -122,7 +122,7 @@ DebugMart_Buy: ld [wItemQuantityBuffer], a ld hl, .HowManyText call PrintText - callab asm_24c64 + callfar asm_24c64 call ExitMenu jr c, .done predef LoadItemData @@ -172,14 +172,14 @@ DebugMart_Sell: ret ; unused - callab CheckItemsQuantity + callfar CheckItemsQuantity jp c, .no_items call LoadStandardMenuHeader xor a ld [wActiveBackpackPocket], a .bag_loop - callab DrawBackpack - callab DebugBackpackLoop + callfar DrawBackpack + callfar DebugBackpackLoop jr c, .close_bag call .DoBagFunctions jr nc, .bag_loop @@ -191,8 +191,8 @@ DebugMart_Sell: ret .DoBagFunctions: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .BagJumptable call CallJumptable ret @@ -207,7 +207,7 @@ DebugMart_Sell: dw .CheckSellableItem .FlipPocket: - callab FlipPocket2Status + callfar FlipPocket2Status xor a ld [wSelectedSwapPosition], a ret @@ -223,14 +223,14 @@ DebugMart_Sell: prompt .BallPocket: - callab BallPocket + callfar BallPocket jr nc, .CheckSellableItem and a ret .CheckSellableItem: - callab _CheckTossableItem - ld a, [wItemAttributeParamBuffer] + callfar _CheckTossableItem + ld a, [wItemAttributeValue] and a jr nz, .not_sellable jp .ItemQuantityPrompt @@ -260,7 +260,7 @@ DebugMart_Sell: .ItemQuantityPrompt: ld hl, .HowManyItemsText call PrintText - callab asm_24c64 + callfar asm_24c64 jr c, .got_quantity jr .CannotSellItem @@ -280,7 +280,7 @@ DebugMart_LoadItems: ld [hli], a cp -1 jr nz, .load_loop - ld hl, wcc40 + ld hl, wcc3a ld de, wcd60 + 1 .load_loop2 ld a, [de] @@ -298,7 +298,7 @@ DebugMart_LoadItems: .GetPrice: push hl ld [wCurItem], a - callab GetItemPrice + callfar GetItemPrice ld a, d ld [wcdc3], a ld a, e diff --git a/engine/debug/field/sprite_viewer.inc b/engine/debug/field/sprite_viewer.inc index 8285fbb3..8077aa7c 100644 --- a/engine/debug/field/sprite_viewer.inc +++ b/engine/debug/field/sprite_viewer.inc @@ -36,7 +36,7 @@ FieldDebug_SpriteViewer: ld [wSpriteViewerMenuStartingItem], a ld a, 1 ldh [hTextBoxCursorBlinkInterval], a - callab Function77ad + callfar Function77ad ret nc ldh a, [hEventID] call GetObjectStruct @@ -110,8 +110,8 @@ FieldDebug_SpriteViewer: ret .SetFollowing: - ld hl, Function8031 - ld a, BANK(Function8031) + ld hl, SpawnFollower + ld a, BANK(SpawnFollower) call QueueScript ; Exits immediately after setting sprite to follow the player @@ -259,7 +259,7 @@ FieldDebug_SpriteViewer: call PlaceString call .SetStartingPoint ld c, a - callab Function14144 + callfar Function14144 ld hl, vSprites + $c0 ld de, vFont ld bc, 12 diff --git a/engine/debug/field/teleport.inc b/engine/debug/field/teleport.inc index 5edbf97e..abce9d26 100644 --- a/engine/debug/field/teleport.inc +++ b/engine/debug/field/teleport.inc @@ -8,7 +8,7 @@ FieldDebug_Teleport: ld d, a ld a, [wMapId] ld e, a - callab IsSpawnPoint + callfar IsSpawnPoint jr nc, .not_spawn_point ld a, [wMapGroup] ld [wLastSpawnMapGroup], a diff --git a/engine/debug/field/toolgear.inc b/engine/debug/field/toolgear.inc index eac3650c..c702f71a 100644 --- a/engine/debug/field/toolgear.inc +++ b/engine/debug/field/toolgear.inc @@ -29,10 +29,10 @@ FieldDebug_Toolgear: jr .UpdateDayNightCycle .ChangeRTC: - callab SetTime + callfar SetTime .UpdateDayNightCycle: - callab Function8c325 + callfar Function8c325 call UpdateTimePals ld a, FIELDDEBUG_RETURN_CLOSE ret diff --git a/engine/debug/field/unused_flag_menu.inc b/engine/debug/field/unused_flag_menu.inc index 6b4a2786..88037d54 100644 --- a/engine/debug/field/unused_flag_menu.inc +++ b/engine/debug/field/unused_flag_menu.inc @@ -75,9 +75,9 @@ ENDM Functionfd91e: ; unused? call .asm_fd930 - ld a, [wCountSetBitsResult] - ld [wMonDexIndex], a - callab Pokepic + ld a, [wNumSetBits] + ld [wCurPartySpecies], a + callfar Pokepic ret .asm_fd930 @@ -85,6 +85,6 @@ Functionfd91e: ; unused? cp 251 jr nc, .asm_fd930 inc a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a ret diff --git a/engine/debug/field/vram_viewer.inc b/engine/debug/field/vram_viewer.inc index ccf2a49b..a0f25f25 100644 --- a/engine/debug/field/vram_viewer.inc +++ b/engine/debug/field/vram_viewer.inc @@ -114,7 +114,7 @@ FieldDebug_DoVRAMViewer: call .LoadTilesetsCommon call DisableLCD call LoadFont - callab LoadBackpackGraphics + callfar LoadBackpackGraphics call EnableLCD ret @@ -136,7 +136,7 @@ FieldDebug_DoVRAMViewer: call DisableLCD call LoadFontsBattleExtra call LoadFont - callab LoadPokemonStatsGraphics + callfar LoadPokemonStatsGraphics xor a ldh [hMapAnims], a call EnableLCD @@ -151,7 +151,7 @@ FieldDebug_DoVRAMViewer: ld bc, $180 tiles call ByteFill call LoadFont - callab Call_LoadBattleGraphics + callfar Call_LoadBattleGraphics xor a ldh [hMapAnims], a call EnableLCD @@ -159,15 +159,15 @@ FieldDebug_DoVRAMViewer: call .LoadPokemon ld de, $9310 ld a, 3 - ld [wcdd8], a + ld [wTempBattleMonSpecies], a predef Function3f04a ret .LoadPokemon: ld a, 3 ld [wce37], a - ld [wMonDexIndex], a - call GetMonHeader + ld [wCurPartySpecies], a + call GetBaseData call LoadMonFrontSprite ret @@ -180,7 +180,7 @@ FieldDebug_DoVRAMViewer: call LoadTilesetGFX ld a, 1 ldh [hMapAnims], a - callab LoadUsedSpritesGfx + callfar LoadUsedSpritesGfx call LoadFontExtra call EnableLCD ret diff --git a/engine/debug/field_debug_menu.asm b/engine/debug/field_debug_menu.asm index 3c972800..6dd6a0eb 100644 --- a/engine/debug/field_debug_menu.asm +++ b/engine/debug/field_debug_menu.asm @@ -174,7 +174,7 @@ FieldDebug_Reset: ret FieldDebug_ShowTrainerCard: ; unreferenced? - callab _TrainerCard + callfar _TrainerCard ld a, FIELDDEBUG_RETURN_REOPEN ret @@ -185,7 +185,7 @@ INCLUDE "engine/debug/field/change_tileset.inc" FieldDebug_TownMap: call LoadStandardMenuHeader call ClearSprites - callab FlyMap + callfar FlyMap call ClearPalettes call Function3657 call LoadFontExtra @@ -201,7 +201,7 @@ FieldDebug_NamePlayer: call LoadStandardMenuHeader ld de, wPlayerName ld b, 1 - callab NamingScreen + callfar NamingScreen call ClearBGPalettes call ClearTileMap call CloseWindow @@ -229,7 +229,7 @@ FieldDebug_HealPokemon: prompt FieldDebug_CableClub: - callab Function29abf + callfar Function29abf ld a, FIELDDEBUG_RETURN_REOPEN ret @@ -256,9 +256,9 @@ FieldDebug_TrainerGear: .OpenTrainerGear: call LoadStandardMenuHeader - callab OpenTrainerGear + callfar OpenTrainerGear call ClearPalettes - callab StartMenuLoadSprites + callfar StartMenuLoadSprites call CloseWindow ret @@ -267,7 +267,7 @@ INCLUDE "engine/debug/field/map_viewer.inc" INCLUDE "engine/debug/field/item_test.inc" FieldDebug_PCMenu: - callab PokemonCenterPC + callfar PokemonCenterPC ld a, FIELDDEBUG_RETURN_REOPEN ret diff --git a/engine/dumps/bank01.asm b/engine/dumps/bank01.asm index 69a1d93f..d214157a 100755 --- a/engine/dumps/bank01.asm +++ b/engine/dumps/bank01.asm @@ -3020,7 +3020,7 @@ LoadFonts_NoOAMUpdate: Function6445: call BackUpTilesToBuffer - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick ld hl, wStringBuffer1 @@ -3029,8 +3029,8 @@ Function6445: call CopyBytes .sub_645d ld hl, wPartyMon1Moves - ld bc, $0030 - ld a, [wWhichPokemon] + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [wCurPartyMon] call AddNTimes ld d, h ld e, l @@ -3043,7 +3043,7 @@ Function6445: dec b jr nz, .sub_646d push de - call .sub_64f4 + call ForgetMove pop de jp c, .sub_64d6 push hl @@ -3073,19 +3073,19 @@ Function6445: ld a, [wBattleMode] and a jp z, .sub_64eb - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld b, a - ld a, [wcd41] + ld a, [wCurBattleMon] cp b jp nz, .sub_64eb ld h, d ld l, e - ld de, wca04 + ld de, wBattleMonMoves ld bc, $0004 call CopyBytes ld bc, $0011 add hl, bc - ld de, wca0a + ld de, wBattleMonPP ld bc, $0004 call CopyBytes jp .sub_64eb @@ -3103,38 +3103,38 @@ Function6445: call PrintText ld b, $01 ret -.sub_64f4 + +ForgetMove:: push hl - ld hl, Text65f0 + ld hl, AskForgetMoveText call PrintText call YesNoBox pop hl ret c - ld bc, $fffc + ld bc, -NUM_MOVES add hl, bc push hl - ld de, wce2e - ld bc, $0004 + ld de, wListMoves_MoveIndicesBuffer + ld bc, NUM_MOVES call CopyBytes pop hl .sub_650f push hl - ld hl, Text65a8 + ld hl, MoveAskForgetText call PrintText coord hl, 10, 8 ld b, $08 ld c, $08 call DrawTextBox coord hl, 12, 10 - ld a, $28 - ld [wFieldMoveScriptID], a - ld a, $32 - call Predef + ld a, SCREEN_WIDTH*2 + ld [wListMovesLineSpacing], a + predef ListMoves ld a, $0a ld [w2DMenuCursorInitY], a ld a, $0b ld [w2DMenuCursorInitX], a - ld a, [wcd57] + ld a, [wNumMoves] inc a ld [w2DMenuNumRows], a ld a, $01 @@ -3199,7 +3199,7 @@ Text65a5: text_waitbutton text_end -Text65a8: +MoveAskForgetText: text "どの わざを" next "わすれさせたい?" done @@ -3225,26 +3225,20 @@ Text65de: line "おぼえずに おわった!" prompt -Text65f0: +AskForgetMoveText: text_from_ram wcd11 text "は あたらしく" line "" text_end - -Text65fd: text_from_ram wStringBuffer2 text "を おぼえたい<⋯⋯>!" para "しかし " text_end - -Text6610: text_from_ram wcd11 text "は わざを 4つ" line "おぼえるので せいいっぱいだ!" para "" text_end - -Text662e: text_from_ram wStringBuffer2 text "の かわりに" line "ほかの わざを わすれさせますか?" @@ -3359,7 +3353,7 @@ Function6713: ld b, $04 ld c, $0a call z, ClearBox - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a call GetPokemonName ld a, [wDebugFlags] @@ -3390,9 +3384,7 @@ Function6713: call Function3657 jr .sub_6773 .sub_676b - ld hl, Function3e3a7 - ld a, BANK(Function3e3a7) - call FarCall_hl + callfar Function3e3a7 .sub_6773 pop hl ld a, [hl] @@ -3430,7 +3422,7 @@ Function679d: jr z, .sub_67d3 ld hl, wPartyMonNicknames ld bc, $0006 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes ld e, l ld d, h @@ -3741,7 +3733,7 @@ Function78f0: ld a, [hl] xor $08 ld [hl], a - callab UpdateSGBBorder + callfar UpdateSGBBorder call LoadFont call LoadFontExtra ld c, $70 diff --git a/engine/dumps/bank02.asm b/engine/dumps/bank02.asm index 776c6ffd..d146b261 100755 --- a/engine/dumps/bank02.asm +++ b/engine/dumps/bank02.asm @@ -22,18 +22,18 @@ PlayerObjectTemplate: object_event -4, -4, SPRITE_GOLD, $10, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0 db $00, $00 -Function8031: - call SpawnFollower +SpawnFollower: + call SetFollowerDefaultAttributes ld a, [wUsedSprites+1] ld [wMap1ObjectSprite], a - ld a, $01 + ld a, FOLLOWER call Function1602 ld b, PLAYER ld c, FOLLOWER call StartFollow ret -SpawnFollower: +SetFollowerDefaultAttributes: ld a, FOLLOWER ld hl, FollowerObjectTemplate call CopyPlayerObjectTemplate @@ -48,16 +48,16 @@ FollowerObjectTemplate: object_event -4, -4, SPRITE_RHYDON, $18, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0 db $00, $00 -Function806c: - ld a, $01 - call Function169f +DeleteFollower: + ld a, FOLLOWER + call DeleteMapObject xor a ld [wObjectFollow_Follower], a ld a, $ff ld [wObjectFollow_Leader], a ret -Function807b: +DebugMapViewer_SetupCursor: ld a, $01 ld hl, Data8089 call CopyPlayerObjectTemplate @@ -183,7 +183,7 @@ Function8125: ret Function8131: - ldh a, [hConnectionStripLength] + ldh a, [hMapObjectIndex] ld e, a ld d, $00 ld hl, wUnknownWordcc9c @@ -202,7 +202,7 @@ CopyMapObjectToObjectStruct: add hl, bc ld [hl], a - ld hl, OBJECT_DIRECTION + ld hl, OBJECT_STEP_TYPE add hl, de ld [hl], $00 @@ -220,7 +220,7 @@ CopyMapObjectToObjectStruct: sub [hl] and $f swap a - ld hl, OBJECT_SPRITE_X_OFFSET + ld hl, OBJECT_SPRITE_Y add hl, de ld [hl], a @@ -238,7 +238,7 @@ CopyMapObjectToObjectStruct: sub [hl] and $f swap a - ld hl, OBJECT_SPRITE_Y + ld hl, OBJECT_SPRITE_X add hl, de ld [hl], a @@ -255,11 +255,11 @@ CopyMapObjectToObjectStruct: add hl, de ld [hl], -1 - ld hl, OBJECT_STEP_DURATION + ld hl, OBJECT_ACTION add hl, de ld [hl], 0 - ld hl, OBJECT_WALKING + ld hl, OBJECT_DIRECTION add hl, de ld [hl], 0 @@ -278,7 +278,7 @@ CopyMapObjectToObjectStruct: ld hl, MAPOBJECT_RADIUS add hl, bc ld a, [hl] - call Function81f8 + call CopyMapObject_Radius ld hl, MAPOBJECT_SCRIPT_POINTER + 1 add hl, bc @@ -317,18 +317,18 @@ InitObjectFlags: set 4, [hl] ret -Function81f8: +CopyMapObject_Radius: push af swap a and $0f inc a - ld hl, OBJECT_RADIUS + ld hl, OBJECT_RADIUS_X add hl, de ld [hl], a pop af and $0f inc a - ld hl, OBJECT_SPRITE_X + ld hl, OBJECT_RADIUS_Y add hl, de ld [hl], a ret @@ -961,9 +961,9 @@ FlyMap: .sub_86fc call DelayFrame call GetJoypadDebounced - ld hl, EffectObjectJumpNoDelay - ld a, BANK(EffectObjectJumpNoDelay) - call FarCall_hl + + callfar EffectObjectJumpNoDelay + ld hl, hJoyDown ld a, [hl] and $02 @@ -972,11 +972,11 @@ FlyMap: and $01 jr nz, .sub_8743 call Function8747 - ld hl, Functionc77d - ld a, BANK(Functionc77d) - call FarCall_hl + + callfar GetFlyPointMapLocation + ld d, $00 - ld hl, Data8a53 + ld hl, LandmarkPositions add hl, de add hl, de ld d, [hl] @@ -1001,29 +1001,29 @@ FlyMap: ldh [hJoyDebounceSrc], a ret -Function8747: +Function8747: ; Choose fly destination based on D-Pad input ld a, [wFlyDestination] ld l, a ld h, $00 add hl, hl add hl, hl - ld de, Data8a17 + ld de, FlyPointPaths add hl, de ld de, hJoySum ld a, [de] - and $40 + and D_UP jr nz, .sub_876e inc hl ld a, [de] - and $80 + and D_DOWN jr nz, .sub_876e inc hl ld a, [de] - and $20 + and D_LEFT jr nz, .sub_876e inc hl ld a, [de] - and $10 + and D_RIGHT jr nz, .sub_876e ret .sub_876e @@ -1095,7 +1095,7 @@ Function87ea: push hl ld e, a ld d, $00 - ld hl, Data8a53 + ld hl, LandmarkPositions add hl, de add hl, de ld e, l @@ -1167,7 +1167,7 @@ PlaceGoldInMap: ld hl, vChars0 lb bc, BANK(GoldSpriteGFX), $04 call Request2bpp - ld de, GoldSpriteGFX + $c0 + ld de, GoldSpriteGFX + LEN_2BPP_TILE * 12 ; Gold's front-facing walking sprite ld hl, vChars0 + $40 lb bc, BANK(GoldSpriteGFX), $04 call Request2bpp @@ -1185,7 +1185,7 @@ PlaceGoldInMap: call GetWorldMapLocation ld e, a ld d, $00 - ld hl, Data8a53 + ld hl, LandmarkPositions add hl, de add hl, de ld d, [hl] @@ -1219,57 +1219,3 @@ Function88b3: TownMapTilemap: INCBIN "gfx/trainer_gear/town_map.tilemap.rle" - -SECTION "engine/dumps/bank02.asm@Data8a17", ROMX - -Data8a17: - db $0b - db $ff - - db $01, $0a, $03, $00, $02, $00, $05, $01, $03, $01, $04, $02, $0d, $02 - db $0d, $03, $0d, $05, $04, $02, $04, $06, $07 - db $ff - - db $05, $08 - db $ff - - db $06 - db $ff - - db $ff - - db $0e, $09, $06, $0e, $08, $0a, $0a - db $08, $09, $00, $00, $09, $0c, $00 - db $ff - - db $ff - - db $ff - - db $0b - db $ff - - db $ff - - db $04, $03 - db $ff - - db $04 - db $ff - - db $08, $08 - db $ff - -Data8a53: - db $00, $00, $1c, $9c, $28, $9c, $34, $9c - db $40, $9c, $4c, $9c, $5c, $9c, $6c, $94 - db $6c, $84, $6c, $78, $6c, $6c, $64, $6c - db $5c, $6c, $6c, $64, $6c, $5c, $5c, $5c - db $5c, $50, $5c, $44, $50, $44, $44, $44 - db $44, $5c, $44, $6c, $4c, $74, $4c, $7c - db $40, $7c, $34, $7c, $4c, $84, $3c, $8c - db $34, $94, $5c, $80, $54, $68, $3c, $38 - db $3c, $2c, $34, $2c, $2c, $20, $34, $14 - db $3c, $14, $3c, $20, $48, $14, $54, $1c - db $54, $2c, $54, $38, $3c, $44, $48, $2c - diff --git a/engine/dumps/bank03.asm b/engine/dumps/bank03.asm index e199f94c..f2e1c30d 100755 --- a/engine/dumps/bank03.asm +++ b/engine/dumps/bank03.asm @@ -1,8 +1,8 @@ INCLUDE "constants.asm" -SECTION "engine/dumps/bank03.asm@Functionc77d", ROMX +SECTION "engine/dumps/bank03.asm@GetFlyPointMapLocation", ROMX -Functionc77d: +GetFlyPointMapLocation: ld a, [wFlyDestination] ld l, a ld h, $00 @@ -10,110 +10,13 @@ Functionc77d: add hl, hl ld de, SpawnPoints add hl, de - ld b, [hl] + ld b, [hl] ; SpawnPoints + (wFlyDestination * 4) inc hl ld c, [hl] call GetWorldMapLocation ld e, a ret -SECTION "engine/dumps/bank03.asm@SpawnPoints", ROMX -; Map, Warp ID -SpawnPoints: - db $01, $04 - db $05, $05 - db $02, $02 - db $1b, $1d - db $03, $01 - db $19, $0f - db $04, $03 - db $1f, $0b - db $05, $07 - db $03, $0d - db $06, $04 - db $0f, $05 - db $07, $04 - db $07, $09 - db $08, $02 - db $09, $0b - db $09, $04 - db $0d, $13 - db $0a, $02 - db $21, $15 - db $0b, $02 - db $31, $1f - db $0c, $02 - db $05, $05 - db $0d, $02 - db $05, $05 - db $0e, $01 - db $21, $0f - db $0f, $01 - db $0d, $0b - db $07, $01 - db $09, $0b - db $07, $03 - db $0d, $1d - db $10, $01 - db $06, $06 - db $10, $02 - db $06, $06 - db $10, $03 - db $04, $10 - db $10, $04 - db $06, $06 - db $10, $05 - db $09, $0d - db $10, $06 - db $17, $2f - db $10, $07 - db $06, $0a - db $10, $08 - db $06, $06 - db $10, $09 - db $06, $06 - db $10, $0a - db $06, $06 - db $10, $0b - db $06, $06 - db $10, $0c - db $06, $06 - db $10, $0d - db $06, $06 - db $10, $0e - db $10, $0d - db $10, $0f - db $08, $08 - db $10, $10 - db $08, $08 - db $10, $11 - db $09, $0b - db $10, $12 - db $09, $23 - db $02, $07 - db $06, $06 - db $03, $11 - db $06, $06 - db $04, $08 - db $06, $06 - db $06, $0e - db $06, $06 - db $07, $0d - db $06, $06 - db $09, $0e - db $06, $06 - db $0a, $0d - db $06, $06 - db $0b, $07 - db $06, $06 - db $0b, $25 - db $06, $06 - db $01, $0f - db $10, $10 - db $ff, $ff - db $ff, $ff - - SECTION "engine/dumps/bank03.asm@Functionc9c1", ROMX Functionc9c1: @@ -284,7 +187,7 @@ SECTION "engine/dumps/bank03.asm@Functiond41d", ROMX Functiond41d: push hl call Functiond4b2 - ld a, [wItemAttributeParamBuffer] + ld a, [wItemAttributeValue] and a jr nz, .sub_d45f ld a, [wCurItem] @@ -338,7 +241,7 @@ Functiond4b2: push hl push bc ld a, $01 - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a ld a, [wCurItem] cp $c4 jr nc, .sub_d4d7 @@ -362,7 +265,7 @@ Functiond4b2: jr c, .sub_d4e3 .sub_d4df xor a - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a .sub_d4e3 pop bc pop hl @@ -904,7 +807,7 @@ Functiond886: ld a, [wMonType] and $0f jr z, .sub_d893 - ld de, wd913 + ld de, wOTPartyCount .sub_d893 ld a, [de] inc a @@ -918,7 +821,7 @@ Functiond886: jr nc, .sub_d8a1 inc d .sub_d8a1 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [de], a inc de ld a, $ff @@ -941,7 +844,7 @@ Functiond8b6: ld a, [wMonType] and a jr nz, .sub_d8ea - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a call GetPokemonName ld hl, wPartyMonNicknames @@ -967,40 +870,39 @@ Functiond8b6: ld e, l ld d, h push hl - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld a, [wMonHeader] ld [de], a inc de ld a, [wBattleMode] and a jr z, .sub_d91b - ld a, [wcdda] + ld a, [wEnemyMonItem] ld [de], a .sub_d91b inc de push de xor a ld [wFieldMoveScriptID], a - ld a, $2a - call Predef + predef Function42252 pop de inc de inc de inc de inc de - ld a, [wce73] + ld a, [wPlayerID] ld [de], a inc de - ld a, [wce74] + ld a, [wPlayerID + 1] ld [de], a inc de push de ld a, [wCurPartyLevel] ld d, a - ld hl, Function50cd1 - ld a, BANK(Function50cd1) + ld hl, CalcExpAtLevel + ld a, BANK(CalcExpAtLevel) call FarCall_hl pop de ldh a, [hMultiplicand] @@ -1026,7 +928,7 @@ Functiond8b6: ld a, $98 ld b, $88 jr nz, .sub_d99a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a dec a ld c, a @@ -1044,7 +946,7 @@ Functiond8b6: push bc call SmallFarFlagAction pop bc - ld hl, wPokedexOwnedEnd + ld hl, wEndPokedexCaught call SmallFarFlagAction pop hl push hl @@ -1100,14 +1002,14 @@ Functiond8b6: inc de jr .sub_da0a .sub_d9d3 - ld a, [wcddf] + ld a, [wEnemyMonDVs] ld [de], a inc de - ld a, [wcde0] + ld a, [wEnemyMonDVs + 1] ld [de], a inc de push hl - ld hl, wcde1 + ld hl, wEnemyMonPP ld b, $04 .sub_d9e3 ld a, [hli] @@ -1125,23 +1027,23 @@ Functiond8b6: ld a, [wCurPartyLevel] ld [de], a inc de - ld a, [wcde7] + ld a, [wEnemyMonStatus] ld [de], a inc de - ld a, [wcde8] + ld a, [wEnemyMonStatus + 1] ld [de], a inc de - ld a, [wcde9] + ld a, [wEnemyMonHP] ld [de], a inc de - ld a, [wcdea] + ld a, [wEnemyMonHP + 1] ld [de], a inc de .sub_da0a ld a, [wBattleMode] dec a jr nz, .sub_da1c - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld bc, $000c call CopyBytes pop hl @@ -1195,7 +1097,7 @@ Functionda4f: ld c, a ld b, $00 add hl, bc - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [hli], a ld [hl], $ff ld hl, wPartyMon1 @@ -1205,7 +1107,7 @@ Functionda4f: call AddNTimes ld e, l ld d, h - ld hl, wcd7f + ld hl, wTempMon call CopyBytes ld hl, wPartyMon6StatsEnd ld a, [wPartyCount] @@ -1214,7 +1116,7 @@ Functionda4f: ld d, h ld e, l ld hl, wOTPartyMonOT - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call SkipNames ld bc, $0006 call CopyBytes @@ -1224,12 +1126,12 @@ Functionda4f: call SkipNames ld d, h ld e, l - ld hl, wda5f - ld a, [wWhichPokemon] + ld hl, wOTPartyMonNicknames + ld a, [wCurPartyMon] call SkipNames ld bc, $0006 call CopyBytes - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a dec a ld c, a @@ -1238,13 +1140,13 @@ Functionda4f: push bc call SmallFarFlagAction pop bc - ld hl, wPokedexOwnedEnd + ld hl, wEndPokedexCaught call SmallFarFlagAction and a ret Functiondac8: - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_dae3 cp $02 @@ -1271,21 +1173,21 @@ Functiondac8: ld c, a ld b, $00 add hl, bc - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] cp $02 ld a, [wd882] jr z, .sub_db00 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] .sub_db00 ld [hli], a ld [hl], $ff - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] dec a ld hl, wPartyMon1 ld bc, $0030 ld a, [wPartyCount] jr nz, .sub_db1b - ld hl, wdaa3 + ld hl, wBoxMon1 ld bc, $0020 ld a, [wBoxListLength] .sub_db1b @@ -1295,31 +1197,31 @@ Functiondac8: push hl ld e, l ld d, h - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a - ld hl, wdaa3 - ld bc, $0020 + ld hl, wBoxMon1 + ld bc, BOXMON_STRUCT_LENGTH jr z, .sub_db3b cp $02 ld hl, wd882 jr z, .sub_db41 ld hl, wPartyMon1 - ld bc, $0030 + ld bc, PARTYMON_STRUCT_LENGTH .sub_db3b - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes .sub_db41 - ld bc, $0020 + ld bc, BOXMON_STRUCT_LENGTH call CopyBytes - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] cp $03 - ld de, wd87c + ld de, wBufferMonOT jr z, .sub_db66 dec a ld hl, wPartyMon6StatsEnd ld a, [wPartyCount] jr nz, .sub_db60 - ld hl, wde63 + ld hl, wBoxMonOT ld a, [wBoxListLength] .sub_db60 dec a @@ -1327,29 +1229,29 @@ Functiondac8: ld d, h ld e, l .sub_db66 - ld hl, wde63 - ld a, [wcd7c] + ld hl, wBoxMonOT + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_db79 - ld hl, wd87c + ld hl, wBufferMonOT cp $02 jr z, .sub_db7f ld hl, wPartyMon6StatsEnd .sub_db79 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call SkipNames .sub_db7f - ld bc, $0006 + ld bc, PLAYER_NAME_LENGTH call CopyBytes - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] cp $03 - ld de, wd876 + ld de, wBufferMonNickname jr z, .sub_dba4 dec a ld hl, wPartyMonNicknames ld a, [wPartyCount] jr nz, .sub_db9e - ld hl, wdf17 + ld hl, wBoxMonNicknames ld a, [wBoxListLength] .sub_db9e dec a @@ -1357,22 +1259,22 @@ Functiondac8: ld d, h ld e, l .sub_dba4 - ld hl, wdf17 - ld a, [wcd7c] + ld hl, wBoxMonNicknames + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_dbb7 - ld hl, wd876 + ld hl, wBufferMonNickname cp $02 jr z, .sub_dbbd ld hl, wPartyMonNicknames .sub_dbb7 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call SkipNames .sub_dbbd ld bc, $0006 call CopyBytes pop hl - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] cp $01 jr z, .sub_dc14 cp $03 @@ -1381,8 +1283,7 @@ Functiondac8: srl a add $02 ld [wMonType], a - ld a, $31 - call Predef + predef CopyMonToTempMon ld a, BANK(Function50caa) ld hl, Function50caa call FarCall_hl @@ -1404,7 +1305,7 @@ Functiondac8: ld b, $01 call Functiondf7d pop bc - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr nz, .sub_dc14 ld hl, $0022 @@ -1441,13 +1342,13 @@ Functiondc16: ld c, a ld b, $00 add hl, bc - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a ld a, [wd882] - ld de, wd876 + ld de, wBufferMonNickname jr z, .sub_dc42 - ld a, [wd8b1] - ld de, wd8a5 + ld a, [wBreedMon1Species] + ld de, wBreedMon1Nickname .sub_dc42 ld [hli], a ld [wCurSpecies], a @@ -1486,7 +1387,7 @@ Functiondc16: pop hl ld bc, $0020 call CopyBytes - call GetMonHeader + call GetBaseData ld h, d ld l, e dec hl @@ -1511,7 +1412,7 @@ Functiondc16: ld [de], a jr .sub_dce9 .sub_dcad - ld hl, wdf17 + ld hl, wBoxMonNicknames ld a, [wBoxListLength] ld bc, $0006 call AddNTimes @@ -1521,7 +1422,7 @@ Functiondc16: pop de call CopyBytes push hl - ld hl, wde63 + ld hl, wBoxMonOT ld a, [wBoxListLength] ld bc, $0006 call AddNTimes @@ -1530,7 +1431,7 @@ Functiondc16: pop hl call CopyBytes push hl - ld hl, wdaa3 + ld hl, wBoxMon1 ld a, [wBoxListLength] ld bc, $0030 call AddNTimes @@ -1540,46 +1441,46 @@ Functiondc16: ld bc, $0020 call CopyBytes .sub_dce9 - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a ret z - ld hl, wd8d1 - ld de, wd8a5 + ld hl, wBreedMon2Nickname + ld de, wBreedMon1Nickname ld bc, $002c call CopyBytes and a ret Functiondcfc: - ld a, [wcd7c] - ld de, wd876 + ld a, [wPokemonWithdrawDepositParameter] + ld de, wBufferMonNickname and a jr z, .sub_dd2c - ld hl, wd8a5 - ld de, wd8d1 + ld hl, wBreedMon1Nickname + ld de, wBreedMon2Nickname ld bc, $0006 call CopyBytes - ld hl, wd8ab - ld de, wd8d7 + ld hl, wBreedMon1OT + ld de, wBreedMon2OT ld bc, $0006 call CopyBytes - ld hl, wd8b1 - ld de, wd8dd + ld hl, wBreedMon1 + ld de, wBreedMon2 ld bc, $0020 call CopyBytes - ld de, wd8a5 + ld de, wBreedMon1Nickname .sub_dd2c - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames ld bc, $0006 call AddNTimes call CopyBytes - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMon6StatsEnd ld bc, $0006 call AddNTimes call CopyBytes - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMon1 ld bc, $0030 call AddNTimes @@ -1589,11 +1490,11 @@ Functiondcfc: Functiondd5c: ld de, wBoxListLength ld a, [de] - cp $1e + cp MONS_PER_BOX ret nc inc a ld [de], a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a ld c, a .sub_dd6c @@ -1605,9 +1506,9 @@ Functiondd5c: ld [de], a cp $ff jr nz, .sub_dd6c - call GetMonHeader - ld hl, wde63 - ld bc, $0006 + call GetBaseData + ld hl, wBoxMonOT + ld bc, PLAYER_NAME_LENGTH ld a, [wBoxListLength] dec a jr z, .sub_dda9 @@ -1637,13 +1538,13 @@ Functiondd5c: jr nz, .sub_dd96 .sub_dda9 ld hl, wPlayerName - ld de, wde63 + ld de, wBoxMonOT ld bc, $0006 call CopyBytes ld a, [wBoxListLength] dec a jr z, .sub_dde5 - ld hl, wdf17 + ld hl, wBoxMonNicknames ld bc, $0006 dec a call AddNTimes @@ -1670,17 +1571,17 @@ Functiondd5c: dec b jr nz, .sub_ddd2 .sub_dde5 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a call GetPokemonName - ld de, wdf17 + ld de, wBoxMonNicknames ld hl, wStringBuffer1 ld bc, $0006 call CopyBytes ld a, [wBoxListLength] dec a jr z, .sub_de2a - ld hl, wdaa3 + ld hl, wBoxMon1 ld bc, $0020 dec a call AddNTimes @@ -1707,11 +1608,11 @@ Functiondd5c: dec b jr nz, .sub_de17 .sub_de2a - ld hl, wcdd9 - ld de, wdaa3 + ld hl, wEnemyMon + ld de, wBoxMon1 ld bc, $0006 call CopyBytes - ld hl, wce73 + ld hl, wPlayerID ld a, [hli] ld [de], a inc de @@ -1721,8 +1622,8 @@ Functiondd5c: push de ld a, [wCurPartyLevel] ld d, a - ld hl, Function50cd1 - ld a, BANK(Function50cd1) + ld hl, CalcExpAtLevel + ld a, BANK(CalcExpAtLevel) call FarCall_hl pop de ldh a, [hMultiplicand] @@ -1741,7 +1642,7 @@ Functiondd5c: inc de dec b jr nz, .sub_de5c - ld hl, wcddf + ld hl, wEnemyMonDVs ld b, $07 .sub_de66 ld a, [hli] @@ -1774,15 +1675,15 @@ Functionde79: cp $1e scf ret z - ld a, [wMonDexIndex] - ld [wcdd7], a + ld a, [wCurPartySpecies] + ld [wTempEnemyMonSpecies], a xor a ld [wca44], a ld hl, AddPokemonToBox ld a, BANK(AddPokemonToBox) call FarCall_hl call Functiondd5c - ld de, wdf17 + ld de, wBoxMonNicknames ld hl, wBoxListLength .sub_dead ld a, [hl] @@ -1810,7 +1711,7 @@ Functionde79: Functiondecd: ld hl, wPartyCount - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_ded9 ld hl, wBoxListLength @@ -1818,7 +1719,7 @@ Functiondecd: ld a, [hl] dec a ld [hli], a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a ld b, $00 add hl, bc @@ -1833,15 +1734,15 @@ Functiondecd: jr nz, .sub_dee6 ld hl, wPartyMon6StatsEnd ld d, $05 - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_defc - ld hl, wde63 + ld hl, wBoxMonOT ld d, $1d .sub_defc - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call SkipNames - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] cp d jr nz, .sub_df0b ld [hl], $ff @@ -1852,30 +1753,30 @@ Functiondecd: ld bc, $0006 add hl, bc ld bc, wPartyMonNicknames - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_df1d - ld bc, wdf17 + ld bc, wBoxMonNicknames .sub_df1d call CopyDataUntil ld hl, wPartyMon1 ld bc, $0030 - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_df32 - ld hl, wdaa3 + ld hl, wBoxMon1 ld bc, $0020 .sub_df32 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes ld d, h ld e, l - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_df49 ld bc, $0020 add hl, bc - ld bc, wde63 + ld bc, wBoxMonOT jr .sub_df50 .sub_df49 ld bc, $0030 @@ -1884,23 +1785,23 @@ Functiondecd: .sub_df50 call CopyDataUntil ld hl, wPartyMonNicknames - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_df5f - ld hl, wdf17 + ld hl, wBoxMonNicknames .sub_df5f ld bc, $0006 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes ld d, h ld e, l ld bc, $0006 add hl, bc ld bc, wPartyMonNicknamesEnd - ld a, [wcd7c] + ld a, [wPokemonWithdrawDepositParameter] and a jr z, .sub_df7a - ld bc, wdfcb + ld bc, wBoxMonNicknamesEnd .sub_df7a jp CopyDataUntil @@ -2108,14 +2009,13 @@ Functiondf91: ret Function60a0: - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] dec a ld c, a ld d, $00 ld hl, wPartyMonNicknamesEnd ld b, $02 - ld a, $0c - call Predef + predef SmallFarFlagAction push bc xor a ld [wMonType], a @@ -2139,13 +2039,13 @@ Function60a0: pop bc jp nc, .sub_e165 ld a, c - ld de, wdf17 + ld de, wBoxMonNicknames ld b, $01 push bc push de .sub_e0e1 push af - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a call GetPokemonName pop af @@ -2157,10 +2057,9 @@ Function60a0: ld hl, NewDexDataText call PrintText call ClearSprites - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a - ld a, $2e - call Predef + predef Function40ac7 call LoadTilesetGFX_LCDOff .sub_e10d ld hl, GotItText @@ -2170,7 +2069,7 @@ Function60a0: jr c, .sub_e155 push de ld b, $00 - callba NamingScreen + farcall NamingScreen pop de ld a, [de] cp $50 @@ -2180,14 +2079,14 @@ Function60a0: call CopyBytes .sub_e133 call ClearBGPalettes - ld hl, wcdaf + ld hl, wSpriteFlags ld a, [hl] push af res 7, [hl] set 6, [hl] call RedrawPlayerSprite pop af - ld [wcdaf], a + ld [wSpriteFlags], a call LoadFontExtra call LoadMapPart call GetMemSGBLayout @@ -2374,15 +2273,14 @@ Functione2f0: call CloseWindow ret c ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld a, [wMenuSelection] - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ld a, $01 - ld [wcd7c], a - ld a, $12 - call Predef + ld [wPokemonWithdrawDepositParameter], a + predef Functiondac8 xor a - ld [wcd7c], a + ld [wPokemonWithdrawDepositParameter], a call Functiondecd ret @@ -2417,15 +2315,14 @@ Functione350: call CloseWindow ret c ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld a, [wMenuSelection] - ld [wMonDexIndex], a + ld [wCurPartySpecies], a xor a - ld [wcd7c], a - ld a, $12 - call Predef + ld [wPokemonWithdrawDepositParameter], a + predef Functiondac8 ld a, $01 - ld [wcd7c], a + ld [wPokemonWithdrawDepositParameter], a call Functiondecd ret @@ -2439,9 +2336,9 @@ BillsPC_ReleaseMon: call Functione6a4 call CloseWindow ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld a, [wMenuSelection] - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ret c ld hl, OnceReleasedText call MenuTextBox @@ -2449,7 +2346,7 @@ BillsPC_ReleaseMon: call CloseWindow ret c ld a, $01 - ld [wcd7c], a + ld [wPokemonWithdrawDepositParameter], a call Functiondecd ret @@ -2489,11 +2386,11 @@ BoxSelectFunc: push hl ld de, DummyBoxText call CopyString - ld a, $f6 + ld a, "0" add c dec hl ld [hli], a - ld [hl], $50 + ld [hl], "@" pop hl ld de, $0009 add hl, de @@ -2537,16 +2434,16 @@ Functione438: ret Texte461: - db "・.01 @" - db "・.02 @" - db "・.03 @" - db "・.04 @" - db "・.05 @" - db "・.06 @" - db "・.07 @" - db "・.08 @" - db "・.09 @" - db "・.10 @" + db "№.01 @" + db "№.02 @" + db "№.03 @" + db "№.04 @" + db "№.05 @" + db "№.06 @" + db "№.07 @" + db "№.08 @" + db "№.09 @" + db "№.10 @" Functione49d: ; change box screen items ld h, d @@ -2708,13 +2605,12 @@ Functione5d3: ret .sub_e60d ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld a, $02 ld [wMonType], a call LoadStandardMenuHeader call LowVolume - ld a, $3b - call Predef + predef Function502b5 call MaxVolume call ExitMenu ret @@ -2873,11 +2769,11 @@ Function6734: _UseItem: ld a, [wCurItem] - ld [wce37], a + ld [wNamedObjectIndexBuffer], a call GetItemName call CopyStringToStringBuffer2 ld a, $01 - ld [wFieldMoveSucceeded], a + ld [wItemEffectSucceeded], a ld a, [wCurItem] cp $c4 jp nc, Functionf678 @@ -2893,11 +2789,11 @@ _UseItem: jp hl Tablee7a5: - dw Functione8f9 - dw Functione8f9 + dw PokeBallEffect ; ITEM_MASTER_BALL + dw PokeBallEffect ; ITEM_ULTRA_BALL dw Functionf66f - dw Functione8f9 - dw Functione8f9 + dw PokeBallEffect ; ITEM_GREAT_BALL + dw PokeBallEffect ; ITEM_POKE_BALL dw Functionec95 dw Functioneca4 dw Functioned00 @@ -3064,50 +2960,64 @@ Tablee7a5: dw Functionf672 dw Functionf672 -Functione8f9: +PokeBallEffect: ld a, [wBattleMode] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage dec a - jp nz, Functionf7ae + jp nz, UseBallInTrainerBattle + ld a, [wPartyCount] - cp $06 - jr nz, .sub_e913 + cp PARTY_LENGTH + jr nz, .room_in_party + ld a, [wBoxListLength] - cp $1e - jp z, Functionf7d8 -.sub_e913 + cp MONS_PER_BOX + jp z, Ball_BoxIsFullMessage + +.room_in_party xor a ld [wce35], a - call Functionec7a - ld hl, Textf8c6 + call ReturnToBattle_UseBall + + ld hl, ItemUsedText call PrintText - ld a, [wcdfe] + + ld a, [wEnemyMonCatchRate] ld b, a ld a, [wCurItem] - cp $01 + cp ITEM_MASTER_BALL jp z, .sub_e9d6 - cp $02 - jr z, .sub_e941 - cp $04 - jr z, .sub_e936 - jr .sub_e947 -.sub_e936 + + cp ITEM_ULTRA_BALL + jr z, .ultra_ball_modifier + + cp ITEM_GREAT_BALL + jr z, .great_ball_modifier + + ; POKE_BALL + jr .regular_ball + +; 1.5x modifier +.great_ball_modifier ld a, b srl a add b ld b, a - jr nc, .sub_e947 + jr nc, .regular_ball ld b, $ff - jr .sub_e947 -.sub_e941 + jr .regular_ball + +; 2.0x modifier +.ultra_ball_modifier sla b - jr nc, .sub_e947 + jr nc, .regular_ball ld b, $ff -.sub_e947 + +.regular_ball ld a, b - ldh [hQuotient+2], a - ld hl, wcde9 + ldh [hMultiplicand + 2], a + ld hl, wEnemyMonHP ld b, [hl] inc hl ld c, [hl] @@ -3160,7 +3070,7 @@ Functione8f9: ld a, $01 .sub_e998 ld b, a - ld a, [wcde7] + ld a, [wEnemyMonStatus] and $27 ld c, $0a jr nz, .sub_e9a9 @@ -3176,7 +3086,7 @@ Functione8f9: .sub_e9af ld d, a push de - ld a, [wca03] + ld a, [wBattleMonItem] ld hl, Function37e3d ld a, BANK(Function37e3d) call FarCall_hl @@ -3197,24 +3107,23 @@ Functione8f9: jr z, .sub_e9d6 jr nc, .sub_e9d9 .sub_e9d6 - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] .sub_e9d9 ld [wce35], a ld c, $14 call DelayFrames ld a, [wCurItem] - ld [wca5c], a - ld de, $0100 + ld [wBattleAnimParam], a + ld de, ANIM_THROW_POKE_BALL ld a, e - ld [wccc0], a + ld [wFXAnimID], a ld a, d - ld [wccc1], a + ld [wFXAnimID + 1], a xor a ldh [hBattleTurn], a ld [wMapBlocksAddress], a - ld [wcccd], a - ld a, $51 - call Predef + ld [wNumHits], a + predef PlayBattleAnim ld a, [wce35] and a jr nz, .sub_ea29 @@ -3232,7 +3141,7 @@ Functione8f9: ld hl, BallSoCloseText jp z, .sub_eb59 .sub_ea29 - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] push af ld a, [hli] @@ -3241,7 +3150,7 @@ Functione8f9: ld a, [hl] push af push hl - ld hl, wcdda + ld hl, wEnemyMonItem ld a, [hl] push af push hl @@ -3249,19 +3158,19 @@ Functione8f9: bit 3, [hl] jr z, .sub_ea48 ld a, $84 - ld [wcdd7], a + ld [wTempEnemyMonSpecies], a jr .sub_ea55 .sub_ea48 set 3, [hl] ld hl, wcad0 - ld a, [wcddf] + ld a, [wEnemyMonDVs] ld [hli], a - ld a, [wcde0] + ld a, [wEnemyMonDVs + 1] ld [hl], a .sub_ea55 - ld a, [wcdd7] - ld [wMonDexIndex], a - ld a, [wcde6] + ld a, [wTempEnemyMonSpecies] + ld [wCurPartySpecies], a + ld a, [wEnemyMonLevel] ld [wCurPartyLevel], a ld hl, AddPokemonToBox ld a, BANK(AddPokemonToBox) @@ -3277,9 +3186,9 @@ Functione8f9: ld [hld], a pop af ld [hl], a - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wce35], a - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ld [wce37], a ld a, [wce03] dec a @@ -3293,26 +3202,23 @@ Functione8f9: ld d, $00 ld hl, wPartyMonNicknamesEnd ld b, $02 - ld a, $0c - call Predef + predef SmallFarFlagAction ld a, c push af ld a, [wce37] dec a ld c, a ld b, $01 - ld a, $0c - call Predef + predef SmallFarFlagAction pop af and a jr nz, .sub_eac7 ld hl, NewDexDataText_2 call PrintText call ClearSprites - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wce37], a - ld a, $2e - call Predef + predef Function40ac7 .sub_eac7 ld a, [wPartyCount] cp $06 @@ -3320,8 +3226,7 @@ Functione8f9: xor a ld [wMonType], a call ClearSprites - ld a, $10 - call Predef + predef Functiond886 ld hl, Textec61 call PrintText call YesNoBox @@ -3349,19 +3254,18 @@ Functione8f9: jr .sub_eb5f .sub_eb13 call ClearSprites - ld a, $15 - call Predef + predef Functiondd5c ld hl, Textec61 call PrintText call YesNoBox jr c, .sub_eb47 - ld de, wdf17 + ld de, wBoxMonNicknames ld b, $00 ld a, BANK(NamingScreen) ld hl, NamingScreen call FarCall_hl call GBFadeOutToWhite - ld de, wdf17 + ld de, wBoxMonNicknames ld a, [de] cp $50 jr nz, .sub_eb47 @@ -3425,7 +3329,7 @@ GotchaText: line "@" Textebfd: - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "を つかまえたぞ!@" Textec0b: @@ -3434,19 +3338,19 @@ Textec0b: text_end Textec0e: - text_from_ram wdf17 + text_from_ram wBoxMonNicknames text "は マサキの ところへ" line "てんそうされた!" prompt BallSentToSomeonesPCText_2: - text_from_ram wdf17 + text_from_ram wBoxMonNicknames text "は だれかの に" ; "was transferred to" line "てんそうされた!" ; "Someone's PC!" prompt NewDexDataText_2: - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "の データが あたらしく" ; "New Dex data will" line "#ずかんに セーブされます!@" ; "be added for (MON)!" @@ -3464,7 +3368,7 @@ Textec69: line "なまえを つけますか" done -Functionec7a: +ReturnToBattle_UseBall: call ClearPalettes ld hl, Call_LoadBattleGraphics ld a, BANK(Call_LoadBattleGraphics) @@ -3479,7 +3383,7 @@ Functionec7a: Functionec95: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, BANK(Function86a0) ld hl, Function86a0 jp FarCall_hl @@ -3521,12 +3425,12 @@ Functionecd5: jr z, .sub_ece9 ld a, $01 ld [wPlayerState], a - ld hl, Textf8d7 + ld hl, ItemGotOnText jr .sub_ecf0 .sub_ece9 xor a ld [wPlayerState], a - ld hl, Textf8e6 + ld hl, ItemGotOffText .sub_ecf0 call MenuTextBox call CloseWindow @@ -3538,7 +3442,7 @@ Functionecd5: Functioned00: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, $05 call Functionf0cf jr c, .sub_ed32 @@ -3557,7 +3461,7 @@ Functioned00: jr z, .sub_ed2f jp Functionf7a2 .sub_ed2f - call Functionf7e2 + call WontHaveAnyEffectMessage .sub_ed32 xor a ld [wFieldMoveSucceeded], a @@ -3566,22 +3470,22 @@ Functioned00: Functioned37: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionedbe ld a, $00 call GetPartyParamLocation push hl - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a ld [wce37], a ld bc, $001f add hl, bc ld a, [hl] ld [wCurPartyLevel], a - call GetMonHeader - ld a, [wWhichPokemon] + call GetBaseData + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick call Functionee26 @@ -3628,8 +3532,7 @@ Functionedab: ld bc, $000a add hl, bc ld b, $01 - ld a, $18 - jp Predef + predef_jump Functiondf7d Functionedbe: xor a @@ -3701,13 +3604,13 @@ Dataee38: Functionee42: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionedbe ld a, $00 call GetPartyParamLocation - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a ld [wce37], a push hl @@ -3715,8 +3618,8 @@ Functionee42: add hl, bc ld a, [hl] ld [wCurPartyLevel], a - call GetMonHeader - ld a, [wWhichPokemon] + call GetBaseData + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick pop hl @@ -3731,8 +3634,8 @@ Functionee42: ld [wCurPartyLevel], a push de ld d, a - ld hl, Function50cd1 - ld a, BANK(Function50cd1) + ld hl, CalcExpAtLevel + ld a, BANK(CalcExpAtLevel) call FarCall_hl pop de pop hl @@ -3775,13 +3678,10 @@ Functionee42: ld [hl], a ld a, $f8 ld [wcdb9], a - ld hl, Function5087e - ld a, BANK(Function5087e) - call FarCall_hl + callfar Function5087e xor a ld [wMonType], a - ld a, $31 - call Predef + predef CopyMonToTempMon ld d, $01 ld hl, Function50628 ld a, BANK(Function50628) @@ -3789,10 +3689,9 @@ Functionee42: call TextboxWaitPressAorB_BlinkCursor xor a ld [wMonType], a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wce37], a - ld a, $29 - call Predef + predef Function421f8 xor a ld [wcab9], a ld hl, Function4af93 @@ -3803,11 +3702,11 @@ Functionee42: Functionef02: ld a, [wPartyCount] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionf100 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a Functionef17: @@ -3824,18 +3723,17 @@ Functionef17: call Functionf113 jr nc, .sub_ef50 xor a - ld [wca10], a + ld [wBattleMonStatus], a ld hl, wca3f res 0, [hl] ld hl, wca3b res 0, [hl] ld a, $24 call GetPartyParamLocation - ld de, wca14 + ld de, wBattleMonMaxHP ld bc, $000a call CopyBytes - ld a, $24 - call Predef + predef Function3e1a4 .sub_ef50 call Functionf7a2 push de @@ -3874,7 +3772,7 @@ Dataef77: Functionef8c: ld a, [wPartyCount] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionf100 @@ -3883,22 +3781,20 @@ Functionef8c: ld a, [wBattleMode] and a jr z, .sub_efc9 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a ld d, $00 ld hl, wcada ld b, $02 - ld a, $0c - call Predef + predef SmallFarFlagAction ld a, c and a jr z, .sub_efc9 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a ld hl, wca37 ld b, $01 - ld a, $0c - call Predef + predef SmallFarFlagAction .sub_efc9 xor a ld [wccc4], a @@ -3923,7 +3819,7 @@ Functionefed: Functionefee: ld a, [wPartyCount] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionf100 @@ -3955,13 +3851,13 @@ Functionefee: ld hl, wca3b res 0, [hl] xor a - ld [wca10], a + ld [wBattleMonStatus], a ld a, $22 call GetPartyParamLocation ld a, [hli] - ld [wca12], a + ld [wBattleMonHP], a ld a, [hld] - ld [wca13], a + ld [wBattleMonHP + 1], a .sub_f049 call Functionf0b0 ld a, $f5 @@ -3976,7 +3872,7 @@ Functionf05a: Functionf05b: ld a, [wPartyCount] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld a, $01 call Functionf0cf jp c, Functionf100 @@ -4000,9 +3896,9 @@ Functionf05b: ld a, $22 call GetPartyParamLocation ld a, [hli] - ld [wca12], a + ld [wBattleMonHP], a ld a, [hld] - ld [wca13], a + ld [wBattleMonHP + 1], a .sub_f09e call Functionf0b0 ld a, $f5 @@ -4019,20 +3915,18 @@ Functionf0b0: ld de, SFX_POTION call WaitPlaySFX pop de - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] coord hl, 11, 0 ld bc, $0028 call AddNTimes ld a, $02 - ld [wHPBarType], a - ld a, $17 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar ret Functionf0cf: ld [wcdb9], a - ld a, $36 - call Predef + predef PartyMenuInBattle_Setup ret Functionf0d8: @@ -4042,9 +3936,7 @@ Functionf0d8: ld bc, VBlank.return ld a, $7f call ByteFill - ld hl, Function5087e - ld a, BANK(Function5087e) - call FarCall_hl + callfar Function5087e ld a, $01 ldh [hBGMapMode], a ld c, $32 @@ -4053,7 +3945,7 @@ Functionf0d8: ret Functionf0fb: - call Functionf7e2 + call WontHaveAnyEffectMessage jr Functionf104 Functionf100: @@ -4073,9 +3965,9 @@ Functionf113: ld a, [wBattleMode] and a ret z - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] push hl - ld hl, wcd41 + ld hl, wCurBattleMon cp [hl] pop hl jr nz, .sub_f125 @@ -4263,8 +4155,7 @@ Functionf218: push bc ld a, $01 ld [wcdb9], a - ld a, $37 - call Predef + predef PartyMenuInBattle pop bc jr c, .sub_f28c ld a, [wcd3c] @@ -4275,7 +4166,7 @@ Functionf218: jr z, .sub_f21d push bc ld a, c - ld [wWhichPokemon], a + ld [wCurPartyMon], a call Functionf165 jr z, .sub_f292 call Functionf171 @@ -4283,7 +4174,7 @@ Functionf218: pop bc push bc ld a, b - ld [wWhichPokemon], a + ld [wCurPartyMon], a call Functionf165 call Functionf1ce push de @@ -4304,7 +4195,7 @@ Functionf218: push bc push de ld a, c - ld [wWhichPokemon], a + ld [wCurPartyMon], a call Functionf165 pop de call Functionf13f @@ -4314,8 +4205,7 @@ Functionf218: call ClearTileMap ld a, $f5 ld [wcdb9], a - ld a, $38 - call Predef + predef Function5081f ld c, $c8 call Function3872 pop bc @@ -4362,7 +4252,7 @@ Functionf2cc: Functionf2ce: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, b ld [wce2d], a jp Functionf793 @@ -4370,7 +4260,7 @@ Functionf2ce: Functionf2dc: ld a, [wBattleMode] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld hl, wca3e set 0, [hl] jp Functionf793 @@ -4378,7 +4268,7 @@ Functionf2dc: Functionf2eb: ld a, [wBattleMode] dec a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, $01 ld [wce06], a jp Functionf793 @@ -4386,7 +4276,7 @@ Functionf2eb: Functionf2fa: ld a, [wBattleMode] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld hl, wca3e set 1, [hl] jp Functionf793 @@ -4394,7 +4284,7 @@ Functionf2fa: Functionf309: ld a, [wBattleMode] and a - jp z, Functionf7dd + jp z, IsntTheTimeMessage ld hl, wca3e set 2, [hl] jp Functionf793 @@ -4403,12 +4293,12 @@ Functionf318: ld a, [wBattleMode] and a jr nz, .sub_f327 - call Functionf7dd + call IsntTheTimeMessage ld a, $02 ld [wFieldMoveSucceeded], a ret .sub_f327 - ld hl, wc9ef + ld hl, wPlayerMoveStruct ld a, [hli] push af ld a, [hl] @@ -4419,7 +4309,7 @@ Functionf318: ld [hl], a call Functionf793 ld a, $ae - ld [wc9ef], a + ld [wPlayerMoveStruct], a call ReloadTilesFromBuffer call WaitBGMap xor a @@ -4447,14 +4337,14 @@ Functionf355: ld a, [wBattleMode] cp $01 jr z, .sub_f36e - ld hl, wd93b + ld hl, wOTPartyMon1Status call Functionf397 .sub_f36e - ld hl, wca10 + ld hl, wBattleMonStatus ld a, [hl] and b ld [hl], a - ld hl, wcde7 + ld hl, wEnemyMonStatus ld a, [hl] and b ld [hl], a @@ -4533,7 +4423,7 @@ Functionf3fd: Functionf413: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld hl, Textf424 call MenuTextBox call CloseWindow @@ -4550,14 +4440,14 @@ Textf42f: Functionf437: call Functionf49f - jp c, Functionf7dd + jp c, IsntTheTimeMessage ld bc, $0585 ld a, $01 jr Functionf478 Functionf444: call Functionf49f - jp c, Functionf7dd + jp c, IsntTheTimeMessage .sub_f44a call Random srl a @@ -4585,7 +4475,7 @@ Dataf46a: Functionf46e: call Functionf49f - jp c, Functionf7dd + jp c, IsntTheTimeMessage call Functionf9d9 ld a, e @@ -4626,7 +4516,7 @@ Functionf49f: cp $02 jr z, .sub_f4c8 call Functionfab4 - ld hl, Textf8c6 + ld hl, ItemUsedText call PrintText ld de, SFX_FULL_HEAL call WaitPlaySFX @@ -4641,7 +4531,7 @@ Functionf49f: Functionf4ca: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage Functionf4d1: ld a, [wCurItem] @@ -4664,13 +4554,11 @@ Functionf4d1: ld hl, Textf610 .sub_f4fb call PrintText - ld hl, Function3daa7 - ld a, BANK(Function3daa7) - call FarCall_hl + callfar Function3daa7 jr nz, .sub_f4d7 ld hl, wPartyMon1Moves ld bc, $0030 - call Functionf9c9 + call GetMthMoveOfNthPartymon push hl ld a, [hl] ld [wce37], a @@ -4707,15 +4595,15 @@ Functionf550: ld a, [wBattleMode] and a jr z, .sub_f572 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld b, a - ld a, [wcd41] + ld a, [wCurBattleMon] cp b jr nz, .sub_f572 ld hl, wPartyMon1PP ld bc, $0030 call AddNTimes - ld de, wca0a + ld de, wBattleMonPP ld bc, $0004 call CopyBytes .sub_f572 @@ -4733,10 +4621,10 @@ Functionf580: Functionf588: xor a ld [wMonType], a - call Functionf960 + call GetMaxPPOfMove ld hl, wPartyMon1Moves - ld bc, $0030 - call Functionf9c9 + ld bc, PARTYMON_STRUCT_LENGTH + call GetMthMoveOfNthPartymon ld bc, $0015 add hl, bc ld a, [wce37] @@ -4776,8 +4664,8 @@ Functionf5bd: .sub_f5ca push bc ld hl, wPartyMon1Moves - ld bc, $0030 - call Functionf9c9 + ld bc, PARTYMON_STRUCT_LENGTH + call GetMthMoveOfNthPartymon ld a, [hl] and a jr z, .sub_f5e1 @@ -4796,7 +4684,7 @@ Functionf5bd: jp nz, Functionf550 Functionf5f0: - call Functionf7e2 + call WontHaveAnyEffectMessage Functionf5f3: call ClearPalettes @@ -4836,19 +4724,19 @@ Textf64c: Functionf65d: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld hl, TryTeleport ld a, $0b jp FarCall_hl Functionf66c: - jp Functionf7dd + jp IsntTheTimeMessage Functionf66f: - jp Functionf7dd + jp IsntTheTimeMessage Functionf672: - jp Functionf7dd + jp IsntTheTimeMessage Functionf675: jp Functionfaba @@ -4856,7 +4744,7 @@ Functionf675: Functionf678: ld a, [wBattleMode] and a - jp nz, Functionf7dd + jp nz, IsntTheTimeMessage ld a, [wCurItem] sub $c9 push af @@ -4865,8 +4753,7 @@ Functionf678: .sub_f689 inc a ld [wce37], a - ld a, $1b - call Predef + predef GetTMHMMove ld a, [wce37] ld [wce32], a call Unreferenced_GetMoveName @@ -4905,10 +4792,9 @@ Functionf678: call GetMemSGBLayout jp ReloadTilesFromBuffer .sub_f6ea - ld a, $1a - call Predef + predef CanLearnTMHMMove push bc - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick pop bc @@ -4923,8 +4809,7 @@ Functionf678: .sub_f70c call Functionfdab jr c, .sub_f6bb - ld a, $00 - call Predef + predef Function6445 ld a, b and a ret z @@ -4971,7 +4856,7 @@ Textf784: prompt Functionf793: - ld hl, Textf8c6 + ld hl, ItemUsedText call PrintText ld de, SFX_FULL_HEAL call WaitPlaySFX @@ -4984,152 +4869,156 @@ Functionf7a2: call TossItem ret -Functionf7ae: - call Functionec7a - ld de, $0100 +UseBallInTrainerBattle: + call ReturnToBattle_UseBall + ld de, ANIM_THROW_POKE_BALL ld a, e - ld [wccc0], a + ld [wFXAnimID], a ld a, d - ld [wccc1], a + ld [wFXAnimID + 1], a xor a - ld [wca5c], a + ld [wBattleAnimParam], a ldh [hBattleTurn], a - ld [wcccd], a - ld a, $51 - call Predef - ld hl, Textf850 + ld [wNumHits], a + predef PlayBattleAnim + ld hl, BallBlockedText call PrintText - ld hl, Textf860 + ld hl, BallDontBeAThiefText call PrintText jr Functionf7a2 -Functionf7d8: - ld hl, Textf8a5 - jr Functionf7f4 +Ball_BoxIsFullMessage: + ld hl, BallBoxFullText + jr CantUseItemMessage -Functionf7dd: - ld hl, Textf7fb - jr Functionf7f4 +IsntTheTimeMessage: + ld hl, ItemOakWarningText + jr CantUseItemMessage -Functionf7e2: - ld hl, Textf841 - jr Functionf7f4 +WontHaveAnyEffectMessage: + ld hl, ItemWontHaveAnyEffectText + jr CantUseItemMessage -Functionf7e7: - ld hl, Textf822 - jr Functionf7f4 +BelongsToSomeoneElseMessage: ; unreferenced + ld hl, ItemBelongsToSomeoneElseText + jr CantUseItemMessage -Functionf7ec: - ld hl, Textf874 - jr Functionf7f4 +CyclingIsntAllowedMessage: ; unreferenced + ld hl, NoCyclingText + jr CantUseItemMessage -Functionf7f1: - ld hl, Textf88d +CantGetOnYourBikeMessage: ; unreferenced + ld hl, ItemCantGetOnText -Functionf7f4: +CantUseItemMessage: xor a - ld [wFieldMoveSucceeded], a + ld [wItemEffectSucceeded], a jp PrintText -Textf7fb: +ItemOakWarningText: text "オーキドの ことば<⋯⋯>" line "よ! こういうものには" cont "つかいどきが あるのじゃ!" prompt -Textf822: +ItemBelongsToSomeoneElseText: text "たいせつな あずかりものです!" -Textf832: +Unreferenced_CantUseText: db "" next "つかうことは できません!" prompt -Textf841: +ItemWontHaveAnyEffectText: text "つかっても こうかがないよ" prompt -Textf850: +BallBlockedText: text "に ボールを はじかれた!" prompt -Textf860: +BallDontBeAThiefText: text "ひとの ものを とったら どろぼう!" prompt -Textf874: +NoCyclingText: text "ここでは じてんしゃに" next "のることは できません" prompt -Textf88d: +ItemCantGetOnText: text "ここでは@" - Textf893: text_from_ram wStringBuffer1 text "に" line "のることは できません" prompt -Textf8a5: +BallBoxFullText: text "ボックスに あずけている #が" line "いっぱいなので つかえません!" prompt -Textf8c6: +ItemUsedText: text "は@" - Textf8ca: text_low text_from_ram wStringBuffer2 text "を つかった!" done -Textf8d7: +ItemGotOnText: text "は@" - Textf8db: text_low text_from_ram wStringBuffer2 text "に のった" prompt -Textf8e6: +ItemGotOffText: text "は@" - Textf8ea: text_low text_from_ram wStringBuffer2 text "から おりた" prompt -SECTION "engine/dumps/bank03.asm@Functionf960", ROMX +SECTION "engine/dumps/bank03.asm@GetMaxPPOfMove", ROMX -Functionf960: +GetMaxPPOfMove: ld a, [wMonType] and a + ld hl, wPartyMon1Moves - ld bc, $0030 - jr z, .sub_f989 - ld hl, wd91d + ld bc, PARTYMON_STRUCT_LENGTH + jr z, .got_partymon ; PARTYMON + + ld hl, wOTPartyMon1Moves dec a - jr z, .sub_f989 - ld hl, wdaa5 - ld bc, $0020 + jr z, .got_partymon ; OTPARTYMON + + ld hl, wBoxMon1Moves + ld bc, BOXMON_STRUCT_LENGTH dec a - jr z, .sub_f989 + jr z, .got_partymon ; BOXMON + ld hl, wd884 dec a - jr z, .sub_f984 - ld hl, wca04 -.sub_f984 - call Functionf9cf - jr .sub_f98c -.sub_f989 - call Functionf9c9 -.sub_f98c + jr z, .got_nonpartymon ; TEMPMON + + ld hl, wBattleMonMoves ; WILDMON + +.got_nonpartymon ; TEMPMON, WILDMON + call GetMthMoveOfCurrentMon + jr .gotdatmove + +.got_partymon ; PARTYMON, OTPARTYMON, BOXMON + call GetMthMoveOfNthPartymon + +.gotdatmove ld a, [hl] dec a + push hl ld hl, Moves + MOVE_PP ld bc, MOVE_LENGTH @@ -5140,33 +5029,35 @@ Functionf960: ld de, wStringBuffer1 ld [de], a pop hl + push bc - ld bc, $0015 + ld bc, MON_PP - MON_MOVES ld a, [wMonType] - cp $04 - jr nz, .sub_f9b1 + cp WILDMON + jr nz, .notwild ld bc, $0006 -.sub_f9b1 +.notwild add hl, bc ld a, [hl] - and $c0 + and PP_UP_MASK pop bc + or b - ld hl, wcd27 + ld hl, wStringBuffer1 + 1 ld [hl], a xor a ld [wce37], a call ComputeMaxPP ld a, [hl] - and $3f + and PP_MASK ld [wce37], a ret -Functionf9c9: - ld a, [wWhichPokemon] +GetMthMoveOfNthPartymon: + ld a, [wCurPartyMon] call AddNTimes -Functionf9cf: +GetMthMoveOfCurrentMon: ld a, [w2DMenuDataEnd] ld c, a ld b, $00 @@ -5295,12 +5186,12 @@ Functionfaba: ld a, $03 ld [wd8a2], a .sub_fad8 - ld hl, Textfcea + ld hl, Breeder_NoEggYetText call PrintText .sub_fade - ld hl, Textfc19 + ld hl, Breeder_IntroText call PrintText - ld hl, Datafc30 + ld hl, Breeder_Menu call LoadMenuHeader call VerticalMenu push af @@ -5317,20 +5208,19 @@ Functionfaba: jr z, .sub_fb19 cp $02 jr nz, .sub_fb22 - ld hl, Textfc64 + ld hl, Breeder_CheckOnPokemonText call PrintText call YesNoBox jp c, Functionfbde jr .sub_fb22 .sub_fb19 - ld hl, Textfc75 + ld hl, Breeder_DoesntHavePokemonText call PrintText jp Functionfbde .sub_fb22 ld a, $01 - ld [wcd7c], a - ld a, $14 - call Predef + ld [wPokemonWithdrawDepositParameter], a + predef Functiondc16 jp c, Functionfbea ld a, [wd8a2] sub $01 @@ -5341,7 +5231,7 @@ Functionfaba: ld a, [wd8fd] srl a ld [wd8fd], a - ld hl, Textfc89 + ld hl, Breeder_WithdrawnText call PrintText jp Functionfbde .sub_fb4c @@ -5351,55 +5241,53 @@ Functionfaba: add $06 call Functionf0cf jp c, Functionfbde - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData xor a ld [wMonType], a - ld a, $3a - call Predef + predef GetGender ld a, [wd8fd] rla ld [wd8fd], a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick ld a, $01 - ld [wcd7c], a - ld a, $13 - call Predef + ld [wPokemonWithdrawDepositParameter], a + predef Functiondcfc xor a - ld [wcd7c], a + ld [wPokemonWithdrawDepositParameter], a ld hl, Functiondecd ld a, BANK(Functiondecd) call FarCall_hl - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] call PlayCry - ld hl, Textfc48 + ld hl, Breeder_DepositedText call PrintText ld a, [wd8a2] inc a ld [wd8a2], a cp $02 jr nz, Functionfbde - ld hl, Textfcac + ld hl, Breeder_LetsMakeBabiesText call PrintText call Functionfbf0 ld a, [wce37] cp $50 - ld hl, Textfcbb + ld hl, Breeder_SeemToGetAlongText call z, PrintText ld a, [wce37] cp $14 - ld hl, Textfcca + ld hl, Breeder_DontSeemToGetAlongText call z, PrintText ld a, [wce37] and a - ld hl, Textfcda + ld hl, Breeder_GendersDontMatchText call z, PrintText jr Functionfbde .sub_fbd6 - ld hl, Textfc4f + ld hl, Breeder_AlreadyHasTwoPokemonText call PrintText jr Functionfbde @@ -5420,14 +5308,14 @@ Functionfbf0: xor b and $01 jr z, .sub_fc15 - ld a, [wd8b7] + ld a, [wBreedMon1ID] ld b, a - ld a, [wd8e3] + ld a, [wBreedMon2ID] cp b jr nz, .sub_fc13 - ld a, [wd8b8] + ld a, [wBreedMon1ID + 1] ld b, a - ld a, [wd8e4] + ld a, [wBreedMon2ID + 1] cp b jr nz, .sub_fc13 ld a, $14 @@ -5438,45 +5326,41 @@ Functionfbf0: ld [wce37], a ret -Textfc19: +Breeder_IntroText: text "わたしは こずくりやさん" line "さて どうする?" done -Datafc30: +Breeder_Menu: db $40, $04, $0d, $0b, $13 - dw Datafc38 + dw Breeder_MenuOptions db $01 -Datafc38: +Breeder_MenuOptions: db $80, $03 - db "あずける@" + db "あずける@" ; Deposit + db "ひきとる@" ; Withdraw + db "やめる@" ; Cancel -Textfc3f: - db "ひきとる@" - -Textfc44: - db "やめる@" - -Textfc48: +Breeder_DepositedText: text "あずけた!" prompt -Textfc4f: +Breeder_AlreadyHasTwoPokemonText: text "すでに 2ひきの#を" line "あずかっています" prompt -Textfc64: +Breeder_CheckOnPokemonText: text "こずくりを ちゅうししますか?" done -Textfc75: +Breeder_DoesntHavePokemonText: text "#は いっぴきも" line "あずかってませんが" prompt -Textfc89: +Breeder_WithdrawnText: text "ひきとった!" prompt @@ -5485,46 +5369,45 @@ Textfc91: line "#で いっぱいのようです" prompt -Textfcac: +Breeder_LetsMakeBabiesText: text "それでは こづくりします!" prompt -Textfcbb: +Breeder_SeemToGetAlongText: text "あいしょうが いいようです" prompt -Textfcca: +Breeder_DontSeemToGetAlongText: text "あいしょうが わるいようです" prompt -Textfcda: +Breeder_GendersDontMatchText: text "せいべつが あわないようです" prompt -Textfcea: +Breeder_NoEggYetText: text "ざんねんながら まだ うまれて" line "こないようです" prompt Functionfd03: - ld hl, Textfd2e + ld hl, Breeder_EggLaidText call PrintText call YesNoBox jp c, Functionfbde ld a, $04 ld [wd8a2], a - ld a, [wd8b1] - ld [wMonDexIndex], a + ld a, [wBreedMon1Species] + ld [wCurPartySpecies], a call PlayCry xor a ld [wMonType], a ld a, $05 ld [wCurPartyLevel], a - ld a, $16 - call Predef + predef Functionde79 jp Functionfbde -Textfd2e: +Breeder_EggLaidText: text "タマゴが うまれました!" line "ひきとりますか?" done @@ -5608,16 +5491,15 @@ Functionfdab: and a ret .sub_fdbf - ld hl, Textfdc7 + ld hl, .knows_move_text call PrintText scf ret -Textfdc7: +.knows_move_text text_from_ram wStringBuffer1 text "は すでに" line "@" - Textfdd2: text_from_ram wStringBuffer2 text "を おぼえています" @@ -5649,16 +5531,15 @@ Functionfdf3: and a ret .sub_fe02 - ld hl, Textfe0a + ld hl, .knows_move_text call PrintText scf ret -Textfe0a: +.knows_move_text text_from_ram wStringBuffer1 text "は すでに" line "@" - Textfe15: text_from_ram wStringBuffer2 text "を おぼえています" diff --git a/engine/dumps/bank09.asm b/engine/dumps/bank09.asm index 5466c799..6d012ad6 100644 --- a/engine/dumps/bank09.asm +++ b/engine/dumps/bank09.asm @@ -344,7 +344,7 @@ UpdateItemDescription:: ld c, $12 call DrawTextBox decoord 1, 14 - callab ShowItemDescription + callfar ShowItemDescription ret Pokepic: @@ -358,9 +358,9 @@ Pokepic: call GetSGBLayout xor a ldh [hBGMapMode], a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld de, vFont call LoadMonFrontSprite ld a, [wMenuBorderTopCoord] @@ -551,7 +551,7 @@ asm_2438a: ld a, [wMenuDataItems] add [hl] ld b, a - ld a, [wcdbc] + ld a, [wScrollingMenuListSize] cp b jp c, ClearAccumulator inc [hl] @@ -585,13 +585,13 @@ asm_243c3: ld l, a ld a, [wMenuDataDisplayFunctionPointer] call GetFarByte - ld [wcdbc], a + ld [wScrollingMenuListSize], a ld a, [wMenuScrollPosition] ld c, a ld a, [wMenuCursorBuffer] add c ld b, a - ld a, [wcdbc] + ld a, [wScrollingMenuListSize] inc a cp b jr c, .asm_243f2 @@ -600,7 +600,7 @@ asm_243c3: ld a, [wMenuDataItems] add c ld b, a - ld a, [wcdbc] + ld a, [wScrollingMenuListSize] inc a cp b jr nc, .asm_243fb @@ -615,7 +615,7 @@ asm_243c3: asm_243fc: ld a, [wMenuDataHeaderEnd] ld c, a - ld a, [wcdbc] + ld a, [wScrollingMenuListSize] ld b, a ld a, [wMenuBorderTopCoord] add $01 @@ -849,7 +849,7 @@ asm_24576: ret asm_24590: - ld a, [wcdbc] + ld a, [wScrollingMenuListSize] ld d, a ld a, e cp d @@ -868,7 +868,7 @@ asm_2459b: push bc push hl ld c, d - callab GetBallByIndex + callfar GetBallByIndex ld d, c pop hl pop bc @@ -1125,8 +1125,8 @@ Function2473b:: cp $ff jr z, .asm_24762 push de - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld e, a ld d, $00 ld hl, .data_2475b @@ -1163,8 +1163,8 @@ PlaceMenuItemQuantity:: push de ld a, [wMenuSelection] ld [wCurItem], a - callab _CheckTossableItem - ld a, [wItemAttributeParamBuffer] + callfar _CheckTossableItem + ld a, [wItemAttributeValue] pop hl and a jr nz, .done @@ -1177,9 +1177,9 @@ PlaceMenuItemQuantity:: ret asm_247a6: - ld hl, wPartyMonOTEnd + ld hl, wPartyMonNicknames jr .asm_247ae - ld hl, wdf17 + ld hl, wBoxMonNicknames .asm_247ae push de ld a, [wScrollingMenuCursorPosition] @@ -1197,8 +1197,8 @@ asm_247ba: .asm_247c6 push de ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a - predef Function50000 + ld [wCurPartyMon], a + predef CopyMonToTempMon pop hl call PrintLevel ret @@ -1222,7 +1222,7 @@ asm_247d8: add hl, de push hl ld a, [wScrollingMenuCursorPosition] - ld hl, wdf17 + ld hl, wBoxMonNicknames call GetNick pop hl call PlaceString @@ -1230,11 +1230,10 @@ asm_247d8: add hl, de push hl ld a, [wScrollingMenuCursorPosition] - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld a, $02 ld [wMonType], a - ld a, $31 - call Predef + predef CopyMonToTempMon pop hl push hl call PrintLevel @@ -1242,7 +1241,7 @@ asm_247d8: ld de, 3 add hl, de push hl - callab Function5069e + callfar GetGender ld a, $ef jr c, .asm_2482e ld a, $f5 @@ -1257,9 +1256,9 @@ asm_4831: call MenuBox call PlaceVerticalMenuItems call MenuBoxCoord2Tile - ld de, $0015 + ld de, SCREEN_WIDTH + 1 add hl, de - ld de, wd15d + ld de, wMoney ld bc, $4306 call PrintNumber ret @@ -1288,9 +1287,9 @@ asm_24868: asm_24872: call MenuBox call MenuBoxCoord2Tile - ld de, $0015 + ld de, SCREEN_WIDTH + 1 add hl, de - ld de, wd15d + ld de, wMoney ld bc, $4306 call PrintNumber ld [hl], $f0 @@ -1302,99 +1301,115 @@ MenuHeader24888: dw 0 db 1 -asm_24890: - ld hl, .MenuHeader2489a +UnreferencedMenu_24890: +; An unreferenced, nonfunctional menu that resembles the field debug menu. + ld hl, .MenuData call LoadMenuHeader call VerticalMenu ret -.MenuHeader2489a: +.MenuData: db MENU_BACKUP_TILES menu_coords 0, 0, 6, 10 - dw .text_248a2 + dw .MenuText db 1 -.text_248a2: - db "たエ゛うる@" - db "かう@" - db "やめる@" - db "くさかり@" - db "とんでけ@" - db "どんぶらこ@" - db "フルパワー@" - db "ひかりゴケ@" - db "うずしお@" - db "とびはねる@" - db "あなをほる@" - db "テレポート@" - db "タマゴうみ@" - -Text248e7: - db "つよさをみる@" - db "ならびかえ@" - db "そうび@" - db "キャンセル@" - db "もちわざ@" - db "メール@" - db "エラー!@" - -Data2490c: - db $f5, $01 - db $f6, $02 - db $f7, $03 - db $f8, $04 - db $f9, $05 - db $fa, $06 - db $fb, $07 - db $5b, $08 - db $64, $09 - db $87, $0a - db $ff - -Data24921: - db $01, $01, $f5 - db $01, $02, $f6 - db $01, $03, $f7 - db $01, $04, $f8 - db $01, $05, $f9 - db $01, $06, $fa - db $01, $07, $fb - db $01, $08, $5b - db $01, $09, $64 - db $01, $0a, $87 - db $00, $0b, $01 - db $00, $0c, $02 - db $00, $0d, $03 - db $00, $0e, $04 - db $00, $0f, $05 - db $00, $10, $06 - db $00, $11, $07 - db $ff - -Function24955:: +.MenuText: + db (STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING) + db 3 ; amount of options + db "うる@" ; Switch + db "かう@" ; Buy + db "やめる@" ; Cancel + db "くさかり@" ; "Mower"? (replaced by Uproot) + db "とんでけ@" ; "Flight"? (replaced by Wind Ride) + db "どんぶらこ@" ; "Splash"? (replaced by Water Sport) + db "フルパワー@" ; "Full Power" (replaced by Strong Arm) + db "ひかりゴケ@" ; Bright Moss + db "うずしお@" ; Whirlpool + db "とびはねる@" ; Bounce + db "あなをほる@" ; Dig + db "テレポート@" ; Teleport + db "タマゴうみ@" ; Softboiled + +; MonMenuOptionStrings indexes + const_def 1 + const MONMENUVALUE_STATS ; 1 + const MONMENUVALUE_SWITCH ; 2 + const MONMENUVALUE_ITEM ; 3 + const MONMENUVALUE_CANCEL ; 4 + const MONMENUVALUE_MOVE ; 5 + const MONMENUVALUE_MAIL ; 6 + const MONMENUVALUE_ERROR ; 7 +DEF NUM_MONMENUVALUES EQU const_value - 1 + +MonMenuOptionStrings: + db "つよさをみる@" ; Stats + db "ならびかえ@" ; Switch + db "そうび@" ; Item + db "キャンセル@" ; Cancel + db "もちわざ@" ; Moves + db "メール@" ; Mail + db "エラー!@" ; Error! + +Unreferenced_FieldMoveList: +; Possibly how the + db MOVE_UPROOT, MONMENUITEM_CUT + db MOVE_WIND_RIDE, MONMENUITEM_FLY + db MOVE_WATER_SPORT, MONMENUITEM_SURF + db MOVE_STRONG_ARM, MONMENUITEM_STRENGTH + db MOVE_BRIGHT_MOSS, MONMENUITEM_FLASH + db MOVE_WHIRLPOOL, MONMENUITEM_WHIRLPOOL + db MOVE_BOUNCE, MONMENUITEM_BOUNCE + db MOVE_DIG, MONMENUITEM_DIG + db MOVE_TELEPORT, MONMENUITEM_TELEPORT + db MOVE_SOFTBOILED, MONMENUITEM_SOFTBOILED + db -1 + +MonMenuOptions: + db MONMENU_FIELD_MOVE, MONMENUITEM_CUT, MOVE_UPROOT + db MONMENU_FIELD_MOVE, MONMENUITEM_FLY, MOVE_WIND_RIDE + db MONMENU_FIELD_MOVE, MONMENUITEM_SURF, MOVE_WATER_SPORT + db MONMENU_FIELD_MOVE, MONMENUITEM_STRENGTH, MOVE_STRONG_ARM + db MONMENU_FIELD_MOVE, MONMENUITEM_FLASH, MOVE_BRIGHT_MOSS + db MONMENU_FIELD_MOVE, MONMENUITEM_WHIRLPOOL, MOVE_WHIRLPOOL + db MONMENU_FIELD_MOVE, MONMENUITEM_BOUNCE, MOVE_BOUNCE + db MONMENU_FIELD_MOVE, MONMENUITEM_DIG, MOVE_DIG + db MONMENU_FIELD_MOVE, MONMENUITEM_TELEPORT, MOVE_TELEPORT + db MONMENU_FIELD_MOVE, MONMENUITEM_SOFTBOILED, MOVE_SOFTBOILED + db MONMENU_MENUOPTION, MONMENUITEM_STATS, MONMENUVALUE_STATS + db MONMENU_MENUOPTION, MONMENUITEM_SWITCH, MONMENUVALUE_SWITCH + db MONMENU_MENUOPTION, MONMENUITEM_ITEM, MONMENUVALUE_ITEM + db MONMENU_MENUOPTION, MONMENUITEM_CANCEL, MONMENUVALUE_CANCEL + db MONMENU_MENUOPTION, MONMENUITEM_MOVE, MONMENUVALUE_MOVE + db MONMENU_MENUOPTION, MONMENUITEM_MAIL, MONMENUVALUE_MAIL + db MONMENU_MENUOPTION, MONMENUITEM_ERROR, MONMENUVALUE_ERROR + db -1 + +MonSubmenu:: xor a ldh [hBGMapMode], a - call asm_24a0c - callab Function_8f1cb - ld hl, .MenuHeader2497d + call GetMonSubmenuItems + callfar FreezeMonIcons + ld hl, .MenuHeader call LoadMenuHeader - call asm_24985 - call asm_249c9 + call .GetTopCoord + call PopulateMonMenu + ld a, 1 ldh [hBGMapMode], a - call asm_24997 + call MonMenuLoop ld [wMenuSelection], a call CloseWindow ret -.MenuHeader2497d: - db $40 - menu_coords 11, 0, $13, $11 +.MenuHeader: + db MENU_BACKUP_TILES ; flags + menu_coords 11, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 dw 0 - db 1 + db 1 ; default option -asm_24985: - ld a, [wFieldMoveScriptID] +.GetTopCoord: + ld a, [wMonSubmenuCount] inc a add a ld b, a @@ -1405,179 +1420,193 @@ asm_24985: call MenuBox ret -asm_24997: - ld a, $a0 - ld [wMenuDataHeaderEnd], a - ld a, [wFieldMoveScriptID] +MonMenuLoop: + ld a, (STATICMENU_CURSOR | STATICMENU_WRAP) + ld [wMenuDataFlags], a + ld a, [wMonSubmenuCount] ld [wMenuDataItems], a call InitVerticalMenuCursor + ld hl, w2DMenuFlags - set 6, [hl] + set _2DMENU_ENABLE_SPRITE_ANIMS_F, [hl] + call Get2DMenuJoypad ldh a, [hJoyDown] - bit 0, a - jr nz, asm_249bc - bit 1, a - jr nz, asm_249b9 - jr asm_24997 -asm_249b9: - ld a, $0e + bit A_BUTTON_F, a + jr nz, .select + bit B_BUTTON_F, a + jr nz, .cancel + jr MonMenuLoop + +.cancel: + ld a, MONMENUITEM_CANCEL ret -asm_249bc: - ld a, [w2DMenuDataEnd] +.select: + ld a, [wMenuCursorY] dec a ld c, a - ld b, $00 - ld hl, wMapBlocksAddress + ld b, 0 + ld hl, wMonSubmenuItems add hl, bc ld a, [hl] ret -asm_249c9: +PopulateMonMenu: call MenuBoxCoord2Tile - ld bc, $002a + ld bc, 2*SCREEN_WIDTH + 2 add hl, bc - ld de, wMapBlocksAddress -asm_249d3: + ld de, wMonSubmenuItems +.loop ld a, [de] inc de cp $ff ret z push de push hl - call asm_249e8 + call GetMonMenuString pop hl call PlaceString - ld bc, $0028 + ld bc, 2*SCREEN_WIDTH add hl, bc pop de - jr asm_249d3 -asm_249e8: + jr .loop + +GetMonMenuString: dec a ld b, a add a add b ld c, a ld b, $00 - ld hl, Data24921 + ld hl, MonMenuOptions add hl, bc ld a, [hli] - and a - jr z, asm_24a00 + and a ; if MONMENU_MENUOPTION + jr z, .NotMove inc hl ld a, [hl] ld [wNamedObjectIndexBuffer], a call Unreferenced_GetMoveName ret -asm_24a00: +.NotMove: inc hl ld a, [hl] dec a - ld hl, Text248e7 + ld hl, MonMenuOptionStrings call GetNthString ld d, h ld e, l ret -asm_24a0c: - call asm_24a78 - ld a, $02 +GetMonSubmenuItems: + call ResetMonSubmenu + ld a, MON_MOVES call GetPartyParamLocation ld d, h ld e, l - ld hl, wMapBlocksAddress - ld c, $04 -asm_24a1b: + ld hl, wMonSubmenuItems + ld c, NUM_MOVES + +.loop push bc push de ld a, [de] - and a - jr z, asm_24a2b + and a ; no move in this slot + jr z, .next + push hl - call asm_24a63 + call IsFieldMove + pop hl - jr nc, asm_24a2b - call asm_24a93 -asm_24a2b: + jr nc, .next + call AddMonMenuItem + +.next pop de inc de pop bc dec c - jr nz, asm_24a1b - ld a, $0b - call asm_24a93 - ld a, $0c - call asm_24a93 - ld a, $0f - call asm_24a93 + jr nz, .loop + + ld a, MONMENUITEM_STATS + call AddMonMenuItem + ld a, MONMENUITEM_SWITCH + call AddMonMenuItem + ld a, MONMENUITEM_MOVE + call AddMonMenuItem + push hl - ld a, $01 + ld a, MON_ITEM call GetPartyParamLocation ld a, [hl] pop hl - cp $9e - ld a, $0d - jr nz, asm_24a50 - ld a, $10 -asm_24a50: - call asm_24a93 - ld a, [wFieldMoveScriptID] - cp $08 - jr z, asm_24a5f - ld a, $0e - call asm_24a93 -asm_24a5f: - call asm_24a86 + cp ITEM_MAIL + ld a, MONMENUITEM_ITEM + jr nz, .notmail + ld a, MONMENUITEM_MAIL + +.notmail + call AddMonMenuItem + ld a, [wMonSubmenuCount] + cp NUM_MONMENU_ITEMS + jr z, .maxitems + + ld a, MONMENUITEM_CANCEL + call AddMonMenuItem + +.maxitems + call TerminateMonSubmenu ret -asm_24a63: +IsFieldMove: ld b, a - ld hl, Data24921 -asm_24a67: + ld hl, MonMenuOptions +.next ld a, [hli] - cp $ff - jr z, asm_24a77 - and a - jr z, asm_24a77 + cp -1 + jr z, .nope + and a ; MONMENU_MENUOPTION + jr z, .nope ld d, [hl] inc hl ld a, [hli] cp b - jr nz, asm_24a67 + jr nz, .next ld a, d scf -asm_24a77: + +.nope ret -asm_24a78: +ResetMonSubmenu: xor a - ld [wFieldMoveScriptID], a - ld hl, wMapBlocksAddress - ld bc, $9 + ld [wMonSubmenuCount], a + ld hl, wMonSubmenuItems + ld bc, NUM_MONMENU_ITEMS + 1 call ByteFill ret -asm_24a86: - ld a, [wFieldMoveScriptID] +TerminateMonSubmenu: + ld a, [wMonSubmenuCount] ld e, a - ld d, $00 - ld hl, wMapBlocksAddress + ld d, 0 + ld hl, wMonSubmenuItems add hl, de - ld [hl], $ff + ld [hl], -1 ret -asm_24a93: +AddMonMenuItem: push hl push de push af - ld a, [wFieldMoveScriptID] + ld a, [wMonSubmenuCount] ld e, a inc a - ld [wFieldMoveScriptID], a + ld [wMonSubmenuCount], a ld d, $00 - ld hl, wMapBlocksAddress + ld hl, wMonSubmenuItems add hl, de pop af ld [hl], a @@ -1585,8 +1614,8 @@ asm_24a93: pop hl ret -asm_24aa9: - ld hl, .MenuHeader24ae9 +BattleMonMenu: + ld hl, .MenuHeader call CopyMenuHeader xor a ldh [hBGMapMode], a @@ -1594,45 +1623,50 @@ asm_24aa9: call UpdateSprites call PlaceVerticalMenuItems call WaitBGMap + ld hl, wMenuDataPointer ld a, [hli] ld h, [hl] ld l, a - ld de, wMenuDataHeaderEnd - ld bc, $8 + ld de, wMenuData2 + ld bc, $8 ; TODO: constantify call CopyBytes - ld a, [wMenuDataHeaderEnd] - bit 7, a - jr z, .asm_24ae4 + + ld a, [wMenuDataFlags] + bit STATICMENU_CURSOR_F, a + jr z, .set_carry call InitVerticalMenuCursor ld hl, w2DMenuFlags - set 6, [hl] + set _2DMENU_ENABLE_SPRITE_ANIMS_F, [hl] call Get2DMenuJoypad - bit 1, a - jr z, .asm_24ae6 + bit B_BUTTON_F, a + jr z, .clear_carry ret z -.asm_24ae4: + +.set_carry: scf ret -.asm_24ae6: +.clear_carry: and a ret ret -.MenuHeader24ae9: - db 0 - menu_coords 11, 11, $13, $11 - dw .text_24af1 - db 1 +.MenuHeader: + db 0 ; flags + menu_coords 11, 11, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1 + dw .MenuText + db 1 ; default option -.text_24af1: - db "たエ゛とりかえる@" - db "つよさをみる@" - db "キャンセル@" +.MenuText: + db (STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING) + db 3 + db "とりかえる@" ; Switch + db "つよさをみる@" ; Stats + db "キャンセル@" ; Cancel -asm_24b06: +LoadBattleMenu: ld hl, MenuHeader24b24 jr asm_24b0e @@ -1655,10 +1689,13 @@ MenuHeader24b24: db 1 .text_24b2c: - db "アガたたかう@" - db "どうぐ@" - db "#@" - db "にげる@" + db STATICMENU_CURSOR + dn 2, 2 + db 5 + db "たたかう@" ; "FIGHT" + db "どうぐ@" ; "ITEM" + db "#@" ; "" + db "にげる@" ; "RUN" MenuHeader24b3e: db MENU_BACKUP_TILES @@ -1667,10 +1704,13 @@ MenuHeader24b3e: db 1 .text_24b46: - db "アジサファりボール×   @" - db "エサをなげる@" - db "いしをなげる@" - db "にげる@" + db STATICMENU_CURSOR + dn 2, 2 + db 11 + db "サファりボール×   @" ; "SAFARI BALL× @" + db "エサをなげる@" ; "BAIT" + db "いしをなげる@" ; "THROW ROCK" + db "にげる@" ; "RUN" asm_24b67: call CopyMenuData @@ -1838,7 +1878,7 @@ SelectQuantityToToss:: ret asm_24c64: - callab GetItemPrice + callfar GetItemPrice ld a, d ld [wFieldMoveScriptID], a ld a, e diff --git a/engine/dumps/bank0b.asm b/engine/dumps/bank0b.asm index bc25e05f..07cdd6fa 100644 --- a/engine/dumps/bank0b.asm +++ b/engine/dumps/bank0b.asm @@ -71,7 +71,7 @@ asm_2d36c: ld a, $1a call Predef push bc - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick pop bc @@ -87,7 +87,7 @@ asm_2d36c: jr asm_2d33e asm_2d390: - callab Functionfdab + callfar Functionfdab jr c, asm_2d33e ld a, $0 call Predef @@ -217,8 +217,7 @@ asm_2d4a3: ld [wCurSpecies], a ld b, a ld hl, $c395 - ld a, $3f - call Predef + predef PrintMoveType ld hl, $c3b9 call Function2d663 ld hl, $c39b @@ -226,10 +225,10 @@ asm_2d4a3: call PlaceString ld a, [wCurSpecies] dec a - ld hl, Data418b8 - ld bc, $7 + ld hl, Moves + MOVE_POWER + ld bc, MOVE_LENGTH call AddNTimes - ld a, BANK(Data418b8) + ld a, BANK(Moves) call GetFarByte ld hl, $c3a0 cp $2 diff --git a/engine/dumps/bank0d.asm b/engine/dumps/bank0d.asm index 0b732e76..226e0564 100644 --- a/engine/dumps/bank0d.asm +++ b/engine/dumps/bank0d.asm @@ -14,7 +14,7 @@ Function34000: and a ret nz call Function360b1 - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr Function34046 Function3401c: @@ -39,7 +39,7 @@ asm_34030: ld hl, wcaba inc [hl] call Function360b1 - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] Function34046: ld b, 0 @@ -1412,9 +1412,9 @@ Data34593: Data34599: dw sub_34677 - dw asm_34b2c - dw asm_34c83 - dw asm_34d7f + dw BattleCommand_CheckObedience + dw BattleCommand_UsedMoveText + dw BattleCommand_DoTurn dw asm_34e03 dw asm_34e8b dw asm_34ec9 @@ -1440,7 +1440,7 @@ Data34599: dw asm_37549 dw Function365bf dw asm_366e3 - dw asm_3714b + dw BattleCommand_PayDay dw asm_37180 dw asm_371ba dw asm_36894 @@ -1506,10 +1506,10 @@ Data34599: dw asm_37936 dw asm_3796e dw asm_379a8 - dw asm_37a11 + dw BattleCommand_HappinessPower dw asm_37a3a dw sub_3599d - dw asm_37a8c + dw BattleCommand_FrustrationPower dw asm_37aa6 dw asm_37af7 dw asm_37b29 @@ -1526,39 +1526,39 @@ Data34599: sub_34677: ldh a, [hBattleTurn] and a - ld a, [wcac1] + ld a, [wCurPlayerSelectedMove] jr z, asm_34682 - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] asm_34682: inc a jp z, asm_34991 xor a ld [wca3a], a - ld [wca5c], a - ld [wcad2], a + ld [wBattleAnimParam], a + ld [wAlreadyDisobeyed], a ld [wcad9], a ld a, $a ld [wca38], a ldh a, [hBattleTurn] and a jp nz, asm_34809 - ld hl, wca10 + ld hl, wBattleMonStatus ld a, [hl] and 7 jr z, asm_346e5 dec a - ld [wca10], a + ld [wBattleMonStatus], a and 7 jr z, asm_346ba xor a - ld [wcccd], a + ld [wNumHits], a ld de, $0104 call sub_35f53 jr asm_346cd asm_346ba: - ld hl, text_349a7 + ld hl, WokeUpText call PrintText ld hl, Function3d5ce call CallFromBank0F @@ -1567,40 +1567,40 @@ asm_346ba: jr asm_346e5 asm_346cd: - ld hl, text_34997 + ld hl, FastAsleepText call PrintText - ld a, [wcac1] - cp $ad + ld a, [wCurPlayerSelectedMove] + cp MOVE_SNORE jr z, asm_346e5 - cp $d6 + cp MOVE_SLEEP_TALK jr z, asm_346e5 xor a - ld [wcad6], a + ld [wCurPlayerMove], a jp asm_34991 asm_346e5: - ld hl, wca10 + ld hl, wBattleMonStatus bit 5, [hl] jr z, asm_34704 - ld a, [wcac1] - cp $ac + ld a, [wCurPlayerSelectedMove] + cp MOVE_FLAME_WHEEL jr z, asm_34704 - cp $dd + cp MOVE_SACRED_FIRE jr z, asm_34704 - ld hl, text_349b3 + ld hl, FrozenSolidText call PrintText xor a - ld [wcad6], a + ld [wCurPlayerMove], a jp asm_34991 asm_34704: ld a, [wEnemySubStatus3] bit 5, a jp z, asm_3471d - ld a, [wcac1] - cp $e5 + ld a, [wCurPlayerSelectedMove] + cp MOVE_RAPID_SPIN jp z, asm_3471d - ld hl, text_34a55 + ld hl, CantMoveText call PrintText jp asm_34991 @@ -1609,7 +1609,7 @@ asm_3471d: bit 3, [hl] jp z, asm_34730 res 3, [hl] - ld hl, text_349dc + ld hl, FlinchedText call PrintText jp asm_34991 @@ -1618,7 +1618,7 @@ asm_34730: bit 5, [hl] jr z, asm_34742 res 5, [hl] - ld hl, text_349e6 + ld hl, MustRechargeText call PrintText jp asm_34991 @@ -1633,7 +1633,7 @@ asm_34742: jr nz, asm_34759 ld [hl], a ld [wcad3], a - ld hl, text_349fd + ld hl, DisabledNoMoreText call PrintText asm_34759: @@ -1645,15 +1645,15 @@ asm_34759: jr nz, asm_34772 ld hl, wPlayerSubStatus3 res 7, [hl] - ld hl, text_34a32 + ld hl, ConfusedNoMoreText call PrintText jr asm_34796 asm_34772: - ld hl, text_34a0d + ld hl, IsConfusedText call PrintText xor a - ld [wcccd], a + ld [wNumHits], a ld de, $0103 call sub_35f53 call BattleRandom @@ -1670,16 +1670,16 @@ asm_34796: ld a, [wca3b] add a jr nc, asm_347bc - ld hl, text_34aa8 + ld hl, InLoveWithText call PrintText xor a - ld [wcccd], a + ld [wNumHits], a ld de, $010a call sub_35f53 call BattleRandom cp $80 jp c, asm_347bc - ld hl, text_34ab6 + ld hl, InfatuationText call PrintText jr asm_347e2 @@ -1687,20 +1687,20 @@ asm_347bc: ld a, [wcad3] and a jr z, asm_347ce - ld hl, wcac1 + ld hl, wCurPlayerSelectedMove cp [hl] jr nz, asm_347ce call sub_34acc jp asm_34991 asm_347ce: - ld hl, wca10 + ld hl, wBattleMonStatus bit 6, [hl] jr z, asm_34808 call BattleRandom cp $3f jr nc, asm_34808 - ld hl, text_349c8 + ld hl, FullyParalyzedText call PrintText asm_347e2: @@ -1710,7 +1710,7 @@ asm_347e2: ld [hl], a ld hl, wca3b res 6, [hl] - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] cp $13 jr z, asm_347fb cp $5b @@ -1720,7 +1720,7 @@ asm_347e2: asm_347fb: res 6, [hl] ld a, 2 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f asm_34805: @@ -1730,24 +1730,24 @@ asm_34808: ret asm_34809: - ld hl, wcde7 + ld hl, wEnemyMonStatus ld a, [hl] and 7 jr z, asm_3484f dec a - ld [wcde7], a + ld [wEnemyMonStatus], a and a jr z, asm_3482a - ld hl, text_34997 + ld hl, FastAsleepText call PrintText xor a - ld [wcccd], a + ld [wNumHits], a ld de, $0104 call sub_35f53 jr asm_3483d asm_3482a: - ld hl, text_349a7 + ld hl, WokeUpText call PrintText ld hl, Function3d67c call CallFromBank0F @@ -1756,38 +1756,38 @@ asm_3482a: jr asm_3484f asm_3483d: - ld a, [wcac1] - cp $ad + ld a, [wCurPlayerSelectedMove] + cp MOVE_SNORE jr z, asm_3484f - cp $d6 + cp MOVE_SLEEP_TALK jr z, asm_3484f xor a - ld [wcad7], a + ld [wCurEnemyMove], a jp asm_34991 asm_3484f: - ld hl, wcde7 + ld hl, wEnemyMonStatus bit 5, [hl] jr z, asm_3486e - ld a, [wcac2] - cp $ac + ld a, [wCurEnemySelectedMove] + cp MOVE_FLAME_WHEEL jr z, asm_3486e - cp $dd + cp MOVE_SACRED_FIRE jr z, asm_3486e - ld hl, text_349b3 + ld hl, FrozenSolidText call PrintText xor a - ld [wcad7], a + ld [wCurEnemyMove], a jp asm_34991 asm_3486e: ld a, [wPlayerSubStatus3] bit 5, a jp z, asm_34887 - ld a, [wcac2] - cp $e5 + ld a, [wCurEnemySelectedMove] + cp MOVE_RAPID_SPIN jp z, asm_34887 - ld hl, text_34a55 + ld hl, CantMoveText call PrintText jp asm_34991 @@ -1796,7 +1796,7 @@ asm_34887: bit 3, [hl] jp z, asm_3489a res 3, [hl] - ld hl, text_349dc + ld hl, FlinchedText call PrintText jp asm_34991 @@ -1805,7 +1805,7 @@ asm_3489a: bit 5, [hl] jr z, asm_348ac res 5, [hl] - ld hl, text_349e6 + ld hl, MustRechargeText call PrintText jp asm_34991 @@ -1820,7 +1820,7 @@ asm_348ac: jr nz, asm_348c3 ld [hl], a ld [wcad4], a - ld hl, text_349fd + ld hl, DisabledNoMoreText call PrintText asm_348c3: @@ -1832,15 +1832,15 @@ asm_348c3: jr nz, asm_348de ld hl, wEnemySubStatus3 res 7, [hl] - ld hl, text_34a32 + ld hl, ConfusedNoMoreText call PrintText jp asm_3491d asm_348de: - ld hl, text_34a0d + ld hl, IsConfusedText call PrintText xor a - ld [wcccd], a + ld [wNumHits], a ld de, $0103 call sub_35f53 call BattleRandom @@ -1850,12 +1850,12 @@ asm_348de: ld a, [hl] and $80 ld [hl], a - ld hl, text_34a1b + ld hl, HurtItselfText call PrintText call sub_35904 call sub_3599d xor a - ld [wcccd], a + ld [wNumHits], a ldh [hBattleTurn], a ld de, 1 call sub_35f53 @@ -1868,16 +1868,16 @@ asm_3491d: ld a, [wca40] add a jr nc, asm_34943 - ld hl, text_34aa8 + ld hl, InLoveWithText call PrintText xor a - ld [wcccd], a + ld [wNumHits], a ld de, $010a call sub_35f53 call BattleRandom cp $80 jp c, asm_34943 - ld hl, text_34ab6 + ld hl, InfatuationText call PrintText jr asm_34969 @@ -1885,20 +1885,20 @@ asm_34943: ld a, [wcad4] and a jr z, asm_34955 - ld hl, wcac2 + ld hl, wCurEnemySelectedMove cp [hl] jr nz, asm_34955 call sub_34acc jp asm_34991 asm_34955: - ld hl, wcde7 + ld hl, wEnemyMonStatus bit 6, [hl] jr z, asm_3498f call BattleRandom cp $3f jr nc, asm_3498f - ld hl, text_349c8 + ld hl, FullyParalyzedText call PrintText asm_34969: @@ -1908,17 +1908,17 @@ asm_34969: ld [hl], a ld hl, wca40 res 6, [hl] - ld a, [wc9e8] - cp $13 + ld a, [wEnemyMoveStruct] + cp MOVE_FLY jr z, asm_34982 - cp $5b + cp MOVE_DIG jr z, asm_34982 jr asm_3498c asm_34982: res 6, [hl] ld a, 2 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f asm_3498c: @@ -1933,69 +1933,95 @@ asm_34991: ld [wca7d], a ret -text_34997: +FastAsleepText: text "は" line "ぐうぐう ねむっている" prompt -text_349a7: +WokeUpText: text "は めをさました!" prompt -text_349b3: +FrozenSolidText: text "は" line "こおって しまって うごかない!" prompt -text_349c8: - db "からだが しびれて うごけない" +FullyParalyzedText: + text "は" + line "からだが しびれて うごけない" + prompt -text_349dc: - db "は ひるんだ!" +FlinchedText: + text "は ひるんだ!" + prompt -text_349e6: - db "こうげきの はんどうでは うごけない!" +MustRechargeText: + text "こうげきの はんどうで" + line "は うごけない!" + prompt -text_349fd: - db "かなしばりが とけた!" +DisabledNoMoreText: + text "の" + line "かなしばりが とけた!" + prompt -text_34a0d: - db "こんらんしている!" +IsConfusedText: + text "は" + line "こんらんしている!" + prompt -text_34a1b: - db "わけも わからずじぶんを こうげきした!" +HurtItselfText: + text "わけも わからず" + line "じぶんを こうげきした!" + prompt -text_34a32: - db "こんらんが とけた!" +ConfusedNoMoreText: + text "の" + line "こんらんが とけた!" + prompt -text_34a41: - db "の こうげきはまだ つづいている" +AttackContinuesText: + text "の こうげきは" + line "まだ つづいている" + done -text_34a55: - db "みうごきが とれない!" +CantMoveText: + text "は" + line "みうごきが とれない!" + prompt -text_34a65: - db "は がまんしている" +StoringEnergyText: + text "は がまんしている" + prompt -text_34a71: - db "がまんが とかれた!" +UnleashedEnergyText: + text "がまんが とかれた!" -text_34a80: - db "@" +HungOnText: + text "は" + line "@" text_from_ram wStringBuffer1 - db "で もちこたえた!" + text "で もちこたえた!" + prompt -text_34a93: - db "は あいてのこうげきを こらえた!" +EnduredText: + text "は あいての" + line "こうげきを こらえた!" + prompt -text_34aa8: - db "に メロメロだ!" +InLoveWithText: + text "は" + line "に メロメロだ!" + prompt -text_34ab6: - db "は メロメロでわざが だせなかった!" +InfatuationText: + text "は メロメロで" + line "わざが だせなかった!" + prompt sub_34acc: - ld hl, wcac1 + ld hl, wCurPlayerSelectedMove ld de, wPlayerSubStatus3 ldh a, [hBattleTurn] and a @@ -2008,27 +2034,28 @@ asm_34adb: res 4, a ld [de], a ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Unreferenced_GetMoveName ld hl, text_34aec jp PrintText text_34aec: - text "は かなしばりで@" + text "は かなしばりで" + line "@" text_from_ram wStringBuffer1 text "がだせない!" text_34b02: prompt sub_34b03: - ld hl, text_34a1b + ld hl, HurtItselfText call PrintText xor a ld [wca39], a call sub_35904 call sub_3599d xor a - ld [wcccd], a + ld [wNumHits], a inc a ldh [hBattleTurn], a ld de, 1 @@ -2039,47 +2066,57 @@ sub_34b03: ldh [hBattleTurn], a jp sub_35fc9 -asm_34b2c: +BattleCommand_CheckObedience: ldh a, [hBattleTurn] and a ret nz xor a - ld [wcad2], a + ld [wAlreadyDisobeyed], a ld a, [wLinkMode] and a ret nz ld hl, wPartyMon1ID - ld bc, $30 - ld a, [wcd41] + ld bc, (wPartyMon2 - wPartyMon1) + ld a, [wCurBattleMon] call AddNTimes - ld a, [wce73] + ld a, [wPlayerID] cp [hl] - jr nz, asm_34b51 + jr nz, .obeylevel inc hl - ld a, [wce74] + ld a, [wPlayerID + 1] cp [hl] ret z -asm_34b51: +.obeylevel ld hl, wBadges + + ; eighth badge bit 7, [hl] - ld a, $65 - jr nz, asm_34b6e + ld a, MAX_LEVEL + 1 + jr nz, .getlevel + + ; sixth badge bit 5, [hl] - ld a, $46 - jr nz, asm_34b6e + ld a, 70 + jr nz, .getlevel + + ; fourth badge bit 3, [hl] - ld a, $32 - jr nz, asm_34b6e + ld a, 50 + jr nz, .getlevel + + ; second badge bit 1, [hl] - ld a, $1e - jr nz, asm_34b6e - ld a, $a + ld a, 30 + jr nz, .getlevel -asm_34b6e: + ; no badges + ld a, 10 + +.getlevel ld b, a ld c, a - ld a, [wca0f] + ld a, [wBattleMonLevel] ld d, a add b ld b, a @@ -2114,7 +2151,7 @@ asm_34b87: jr c, asm_34baa cp b jr nc, asm_34bbc - ld hl, text_34c54 + ld hl, WontObeyText call PrintText call sub_34b03 jp asm_34c34 @@ -2125,33 +2162,33 @@ asm_34baa: swap a and 7 jr z, asm_34baa - ld [wca10], a - ld hl, text_34c44 + ld [wBattleMonStatus], a + ld hl, BeganToNapText jr asm_34bd6 asm_34bbc: call BattleRandom and 3 - ld hl, text_34c37 + ld hl, LoafingAroundText and a jr z, asm_34bd6 - ld hl, text_34c54 + ld hl, WontObeyText dec a jr z, asm_34bd6 - ld hl, text_34c65 + ld hl, TurnedAwayText dec a jr z, asm_34bd6 - ld hl, text_34c74 + ld hl, IgnoredOrdersText asm_34bd6: call PrintText jr asm_34c34 asm_34bdb: - ld a, [wca05] + ld a, [wBattleMonMoves + 1] and a jr z, asm_34bbc - ld hl, wca0a + ld hl, wBattleMonPP push hl ld a, [hli] ld b, [hl] @@ -2173,7 +2210,7 @@ asm_34bdb: cp b jr z, asm_34bbc ld a, 1 - ld [wcad2], a + ld [wAlreadyDisobeyed], a ld a, [w2DMenuNumRows] dec a ld b, a @@ -2188,7 +2225,7 @@ asm_34c0a: cp c jr z, asm_34c0a ld [wcd40], a - ld hl, wca0a + ld hl, wBattleMonPP ld e, a ld d, 0 add hl, de @@ -2198,348 +2235,285 @@ asm_34c0a: ld a, [wcd40] ld c, a ld b, 0 - ld hl, wca04 + ld hl, wBattleMonMoves add hl, bc ld a, [hl] - ld [wcac1], a + ld [wCurPlayerSelectedMove], a call Function360b1 asm_34c34: jp asm_357a9 -text_34c37: - db $1 - db $fc - db $c9 - db $0 - db $ca - db $7f - db $c5 - db $cf - db $b9 - db $c3 - db $b2 - db $d9 - db $58 +LoafingAroundText: + text_from_ram wBattleMonNickname + text "は なまけている" + prompt -text_34c44: - db $1 - db $fc - db $c9 - db $0 - db $ca - db $7f - db $cb - db $d9 - db $c8 - db $dd - db $ca - db $2c - db $d2 - db $c0 - db $e7 - db $58 +BeganToNapText: + text_from_ram wBattleMonNickname + text "は ひるねをはじめた!" + prompt -text_34c54: - db $1 - db $fc - db $c9 - db $0 - db $ca - db $7f - db $b2 - db $b3 - db $ba - db $c4 - db $dd - db $7f - db $b7 - db $b6 - db $c5 - db $b2 - db $58 +WontObeyText: + text_from_ram wBattleMonNickname + text "は いうことを きかない" + prompt -text_34c65: - db $1 - db $fc - db $c9 - db $0 - db $ca - db $7f - db $bf - db $df - db $48 - db $dd - db $7f - db $d1 - db $b2 - db $c0 - db $58 +TurnedAwayText: + text_from_ram wBattleMonNickname + text "は そっぽを むいた" + prompt -text_34c74: - db $1 - db $fc - db $c9 - db $0 - db $ca - db $7f - db $bc - db $d7 - db $de - db $46 - db $d8 - db $dd - db $bc - db $c0 - db $58 +IgnoredOrdersText: + text_from_ram wBattleMonNickname + text "は しらんぷりをした" + prompt -asm_34c83: - ld hl, text_34c89 +BattleCommand_UsedMoveText: + ld hl, UsedMoveText jp PrintText -text_34c89: - db $0 - db $5a - db $50 - db $8 +UsedMoveText: + text "@" + start_asm ldh a, [hBattleTurn] and a - ld a, [wc9ef] - ld hl, $cad6 - jr z, asm_34c9e - ld a, [wc9e8] - ld hl, $cad7 + ld a, [wPlayerMoveStruct] + ld hl, wCurPlayerMove + jr z, .playerTurn + ld a, [wEnemyMoveStruct] + ld hl, wCurEnemyMove -asm_34c9e: +.playerTurn: ld [hl], a - ld [wCountSetBitsResult], a - call sub_34d22 - ld a, [wcad2] + ld [wMoveGrammar], a + call GetMoveGrammar + ld a, [wAlreadyDisobeyed] and a - ld hl, Data34cc1 + ld hl, UsedMove2Text ret nz - ld a, [wCountSetBitsResult] + ld a, [wMoveGrammar] cp 3 - ld hl, Data34cc1 + ld hl, UsedMove2Text ret c - ld hl, Data34cba + ld hl, UsedMove1Text ret -Data34cba: - db $0 - db $c9 - db $7f - db $50 - db $8 - jr asm_34cc6 - -Data34cc1: - db $0 - db $ca - db $7f - db $50 - db $8 +UsedMove1Text: + text "の @" + start_asm + jr UsedMoveText_CheckObedience + +UsedMove2Text: + text "は @" + start_asm +UsedMoveText_CheckObedience: +; check obedience + ld a, [wAlreadyDisobeyed] + and a + jr z, .GetMoveNameText +; print " instead," + ld hl, .UsedInsteadText + ret -asm_34cc6: - ld a, [wcad2] - and a - jr z, asm_34cdc - ld hl, Data34cd0 +.UsedInsteadText: + text "めいれいをむしして@" + start_asm +.GetMoveNameText: + ld hl, MoveNameText ret -Data34cd0: - db $0 - db $d2 - db $b2 - db $da - db $b2 - db $dd - db $d1 - db $bc - db $bc - db $c3 - db $50 - db $8 +MoveNameText: + text "@" + text_from_ram wStringBuffer2 + start_asm +; get start address + ld hl, .endusemovetexts -asm_34cdc: - ld hl, Data34ce0 - ret +; get move id + ld a, [wNumSetBits] -Data34ce0: - db $0 - db $4f - db $50 - db $1 - dw wcd31 - db $8 - ld hl, Data34cf8 - ld a, [wCountSetBitsResult] +; 2-byte pointer add a + +; seek push bc ld b, 0 ld c, a add hl, bc pop bc + +; get pointer to usedmovetext ender ld a, [hli] ld h, [hl] ld l, a ret -Data34cf8: - dw Data34d02 - dw Data34d0b - dw Data34d12 - dw Data34d17 - dw Data34d1f +.endusemovetexts +; entries correspond to MoveGrammar sets + dw EndUsedMove1Text + dw EndUsedMove2Text + dw EndUsedMove3Text + dw EndUsedMove4Text + dw EndUsedMove5Text -Data34d02: - db $0 - db $dd - db $7f - db $c2 - db $b6 - db $df - db $c0 - db $e7 - db $57 +EndUsedMove1Text: + text "を つかった!" + done -Data34d0b: - db $0 - db $dd - db $7f - db $bc - db $c0 - db $e7 - db $57 -Data34d12: - db $0 - db $bc - db $c0 - db $e7 - db $57 +EndUsedMove2Text: + text "を した!" + done -Data34d17: - db $0 - db $7f - db $ba - db $b3 - db $29 - db $b7 - db $e7 - db $57 +EndUsedMove3Text: + text "した!" + done -Data34d1f: - db $0 - db $e7 - db $57 +EndUsedMove4Text: + text " こうげき!" + done + +EndUsedMove5Text: + text "!" + done + +GetMoveGrammar: +; store move grammar type in wMoveGrammar -sub_34d22: push bc - ld a, [wCountSetBitsResult] - ld c, a - ld b, 0 - ld hl, Data34d40 +; wMoveGrammar contains move id + ld a, [wMoveGrammar] + ld c, a ; move id + ld b, 0 ; grammar index + +; read grammer table + ld hl, MoveGrammar -asm_34d2c: +.loop ld a, [hli] - cp $ff - jr z, asm_34d3a +; end of table? + cp -1 + jr z, .end +; match? cp c - jr z, asm_34d3a + jr z, .end +; advance grammar type at 0 and a - jr nz, asm_34d2c + jr nz, .loop +; next grammar type inc b - jr asm_34d2c + jr .loop -asm_34d3a: +.end: +; wMoveGrammar now contains move grammar ld a, b - ld [wCountSetBitsResult], a + ld [wMoveGrammar], a + +; we're done pop bc ret -Data34d40: - db $e - db $4a - db $0 - db $69 - db $75 - db $78 - db $85 - db $0 - db $60 - db $61 - db $64 - db $66 - db $68 - db $8c - db $0 - db $1 - db $a - db $b - db $11 - db $13 - db $14 - db $15 - db $1e - db $22 - db $23 - db $25 - db $27 - db $2b - db $2c - db $2d - db $2e - db $2f - db $40 - db $44 - db $46 - db $47 - db $51 - db $59 - db $5a - db $5b - db $5c - db $67 - db $6a - db $6b - db $6e - db $6f - db $76 - db $7a - db $80 - db $84 - db $8b - db $8d - db $91 - db $94 - db $96 - db $97 - db $9a - db $9c - db $9f - db $a3 - db $a4 - db $0 - db $ff - -asm_34d7f: - ldh a, [hBattleTurn] - and a - ld a, [wcac1] - ld hl, wca0a +MoveGrammar: +; Each move is given an identifier for what usedmovetext to use (0-4). +; Made redundant in English localization, where all are just "[mon]used [move]!" +; In this prototype, no new moves have been added to the list yet. +; +; 0: "[mon]の[move]を つかった!" ("[mon]used [move]!") + db MOVE_SWORDS_DANCE + db MOVE_GROWTH + db $0 + +; 1: "[mon]の[move]した!" ("[mon]did [move]!") + db MOVE_RECOVER + db MOVE_BIDE + db MOVE_SELFDESTRUCT + db MOVE_AMNESIA + db $0 + +; 2: "[mon]の[move]を した!" ("[mon]did [move]!") + db MOVE_MEDITATE + db MOVE_AGILITY + db MOVE_TELEPORT + db MOVE_MIMIC + db MOVE_DOUBLE_TEAM + db MOVE_BARRAGE + db $0 + +; 3: "[mon]の[move] こうげき!" ("[mon]'s[move] attack!") + db MOVE_POUND + db MOVE_SCRATCH + db MOVE_VICEGRIP + db MOVE_WING_ATTACK + db MOVE_FLY + db MOVE_BIND + db MOVE_SLAM + db MOVE_HORN_ATTACK + db MOVE_BODY_SLAM + db MOVE_WRAP + db MOVE_THRASH + db MOVE_TAIL_WHIP + db MOVE_LEER + db MOVE_BITE + db MOVE_GROWL + db MOVE_ROAR + db MOVE_SING + db MOVE_PECK + db MOVE_COUNTER + db MOVE_STRENGTH + db MOVE_ABSORB + db MOVE_STRING_SHOT + db MOVE_EARTHQUAKE + db MOVE_FISSURE + db MOVE_DIG + db MOVE_TOXIC + db MOVE_SCREECH + db MOVE_HARDEN + db MOVE_MINIMIZE + db MOVE_WITHDRAW + db MOVE_DEFENSE_CURL + db MOVE_METRONOME + db MOVE_LICK + db MOVE_CLAMP + db MOVE_CONSTRICT + db MOVE_POISON_GAS + db MOVE_LEECH_LIFE + db MOVE_BUBBLE + db MOVE_FLASH + db MOVE_SPLASH + db MOVE_ACID_ARMOR + db MOVE_FURY_SWIPES + db MOVE_REST + db MOVE_SHARPEN + db MOVE_SLASH + db MOVE_SUBSTITUTE + db $0 + +; 4: "[mon]の[move]!" ("[mon]'s[move]!") +; Any move not listed above uses this grammar. + db -1 ; end + +BattleCommand_DoTurn: + ldh a, [hBattleTurn] + and a + ld a, [wCurPlayerSelectedMove] + ld hl, wBattleMonPP ld de, wPlayerSubStatus3 jr z, asm_34d96 - ld a, [wcac2] - ld hl, wcde1 + ld a, [wCurEnemySelectedMove] + ld hl, wEnemyMonPP ld de, wEnemySubStatus3 asm_34d96: - cp $a5 + ; If move is struggle, return + cp MOVE_STRUGGLE ret z + + ; If afflicted with one of these substatuses, return ld a, [de] and 7 ret nz + inc de ld a, [de] bit 6, a @@ -2555,16 +2529,16 @@ asm_34d96: ldh a, [hBattleTurn] and a ld hl, wPartyMon1PP - ld a, [wcd41] + ld a, [wCurBattleMon] jr z, asm_34dc5 ld a, [wBattleMode] dec a ret z - ld hl, wd932 + ld hl, wOTPartyMon1PP ld a, [wca36] asm_34dc5: - ld bc, $30 + ld bc, (wPartyMon2 - wPartyMon1) call AddNTimes sub_34dcb: @@ -2587,53 +2561,36 @@ asm_34dd6: asm_34de2: call sub_37f5f - ld hl, text_34dee + ld hl, NoPPLeftText call PrintText ld b, 1 ret -text_34dee: - db $0 - db $bc - db $b6 - db $bc - db $7f - db $dc - db $2b - db $c9 - db $7f - db $43 - db $81 - db $ab - db $93 - db $26 - db $4f - db $c5 - db $b6 - db $df - db $c0 - db $e7 - db $58 +NoPPLeftText: + text "しかし わざの ポイントが" + line "なかった!" + prompt + asm_34e03: xor a ld [wca39], a ldh a, [hBattleTurn] and a - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] jr nz, asm_34e12 - ld a, [wca02] + ld a, [wBattleMonSpecies] asm_34e12: ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld c, 6 - ld hl, wc9f1 + ld hl, wPlayerMoveStructPower ld de, wca3e ldh a, [hBattleTurn] and a jr z, asm_34e2b - ld hl, wc9ea + ld hl, wEnemyMoveStructPower ld de, wca43 asm_34e2b: @@ -2730,7 +2687,7 @@ asm_34e98: ret asm_34e99: - ld a, [wca5c] + ld a, [wBattleAnimParam] ld b, a inc b ld a, [wce2a] @@ -2754,39 +2711,39 @@ asm_34ea6: ret asm_34ec1: - ld a, [wca5c] + ld a, [wBattleAnimParam] inc a - ld [wca5c], a + ld [wBattleAnimParam], a ret asm_34ec9: - ld hl, wca20 + ld hl, wBattleMonType ld a, [hli] ld b, a ld c, [hl] - ld hl, wcdf7 + ld hl, wEnemyMonType ld a, [hli] ld d, a ld e, [hl] - ld a, [wc9f2] - ld [wCountSetBitsResult], a + ld a, [wPlayerMoveStructType] + ld [wNumSetBits], a ldh a, [hBattleTurn] and a jr z, asm_34ef2 - ld hl, wcdf7 + ld hl, wEnemyMonType ld a, [hli] ld b, a ld c, [hl] - ld hl, wca20 + ld hl, wBattleMonType ld a, [hli] ld d, a ld e, [hl] - ld a, [wc9eb] - ld [wCountSetBitsResult], a + ld a, [wEnemyMoveStructType] + ld [wNumSetBits], a asm_34ef2: call sub_34f97 - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] cp b jr z, asm_34f00 cp c @@ -2811,7 +2768,7 @@ asm_34f00: set 7, [hl] asm_34f1a: - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld b, a ld hl, TypeMatchups @@ -2888,7 +2845,7 @@ asm_34f81: asm_34f86: call Function34fff - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld b, a ld a, [wca38] and $80 @@ -2903,7 +2860,7 @@ sub_34f97: ld hl, Data34ff2 ld a, [wcae2] ld b, a - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld c, a asm_34fa5: @@ -2978,11 +2935,11 @@ Data34ff2: Function34fff: ldh a, [hBattleTurn] and a - ld hl, wcdf7 - ld a, [wc9f2] + ld hl, wEnemyMonType + ld a, [wPlayerMoveStructType] jr z, asm_35010 - ld hl, wca20 - ld a, [wc9eb] + ld hl, wBattleMonType + ld a, [wEnemyMoveStructType] asm_35010: ld d, a @@ -2990,7 +2947,7 @@ asm_35010: inc hl ld c, [hl] ld a, $a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a ld hl, TypeMatchups asm_3501c: @@ -3036,7 +2993,7 @@ asm_35048: ldh [hQuotient + 1], a ld a, [hli] ldh [hQuotient + 2], a - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ldh [hPrintNumDivisor], a call Multiply ld a, $a @@ -3046,7 +3003,7 @@ asm_35048: call Divide pop bc ldh a, [hQuotient + 2] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a jr asm_3501c asm_3506c: @@ -3092,14 +3049,14 @@ asm_351b0: Function351d0: ld hl, wca40 - ld de, wc9f0 - ld bc, wcde7 + ld de, wPlayerMoveStructEffect + ld bc, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_351e7 ld hl, wca3b - ld de, wc9e9 - ld bc, wca10 + ld de, wEnemyMoveStructEffect + ld bc, wBattleMonStatus asm_351e7: ld a, [de] @@ -3134,32 +3091,32 @@ asm_35213: dec hl bit 6, [hl] jp z, asm_3524d - ld hl, wcad7 - ld de, wc9ef + ld hl, wCurEnemyMove + ld de, wPlayerMoveStruct ldh a, [hBattleTurn] and a jr z, asm_3522b - ld hl, wcad6 - ld de, wc9e8 + ld hl, wCurPlayerMove + ld de, wEnemyMoveStruct asm_3522b: ld a, [hl] - cp $13 + cp MOVE_FLY jr nz, asm_3523c ld a, [de] - cp $12 + cp MOVE_WHIRLWIND jr z, asm_3524d - cp $57 + cp MOVE_THUNDER jr z, asm_3524d jp asm_352c4 asm_3523c: - cp $5b + cp MOVE_DIG jp nz, asm_352c4 ld a, [de] - cp $59 + cp MOVE_EARTHQUAKE jr z, asm_3524d - cp $5a + cp MOVE_FISSURE jr z, asm_3524d jp asm_352c4 @@ -3167,7 +3124,7 @@ asm_3524d: ldh a, [hBattleTurn] and a jr nz, asm_35277 - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] cp $12 jr c, asm_3526f cp $1a @@ -3190,7 +3147,7 @@ asm_3526f: jr asm_3529a asm_35277: - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] cp $12 jr c, asm_35294 cp $1a @@ -3213,12 +3170,12 @@ asm_35294: asm_3529a: call sub_352df - ld a, [wc9f3] + ld a, [wPlayerMoveStructAccuracy] ld b, a ldh a, [hBattleTurn] and a jr z, asm_352aa - ld a, [wc9ec] + ld a, [wEnemyMoveStructAccuracy] ld b, a asm_352aa: @@ -3264,13 +3221,13 @@ asm_352d9: sub_352df: ldh a, [hBattleTurn] and a - ld hl, wc9f3 + ld hl, wPlayerMoveStructAccuracy ld a, [wcaae] ld b, a ld a, [wcab7] ld c, a jr z, asm_352fa - ld hl, wc9ec + ld hl, wEnemyMoveStructAccuracy ld a, [wcab6] ld b, a ld a, [wcaaf] @@ -3347,11 +3304,11 @@ Function3535c: call sub_3750b jr nz, asm_35373 push hl - ld hl, wc9f5 + ld hl, wPlayerMoveStructEffectChance ldh a, [hBattleTurn] and a jr z, asm_3536d - ld hl, wc9ee + ld hl, wEnemyMoveStructEffectChance asm_3536d: call BattleRandom @@ -3374,10 +3331,10 @@ asm_35380: bit 4, a ret z xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a inc a - ld [wca5c], a + ld [wBattleAnimParam], a ld a, $a4 jp sub_37f23 @@ -3386,18 +3343,18 @@ asm_35393: and a jp nz, sub_37f5f inc a - ld [wcccd], a + ld [wNumHits], a ldh a, [hBattleTurn] and a - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] ld c, a ld de, wca45 - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_353b7 - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] ld c, a ld de, wca4d - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_353b7: cp $1d @@ -3411,7 +3368,7 @@ asm_353b7: cp $68 jr z, asm_353cf xor a - ld [wca5c], a + ld [wBattleAnimParam], a asm_353cf: ld e, c @@ -3419,17 +3376,17 @@ asm_353cf: jp sub_35f53 asm_353d5: - ld a, [wca5c] + ld a, [wBattleAnimParam] and 1 xor 1 - ld [wca5c], a + ld [wBattleAnimParam], a ld a, [de] cp 1 ld e, c ld d, 0 jp z, sub_35f53 xor a - ld [wcccd], a + ld [wNumHits], a jp sub_35f53 sub_353ef: @@ -3443,10 +3400,10 @@ asm_353fa: bit 4, a ret z xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a ld a, 2 - ld [wca5c], a + ld [wBattleAnimParam], a ld a, $a4 jp sub_37f23 @@ -3457,10 +3414,10 @@ asm_3540e: call sub_355a6 ldh a, [hBattleTurn] and a - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] ld hl, wPlayerSubStatus3 jr z, asm_35427 - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] ld hl, wEnemySubStatus3 asm_35427: @@ -3473,7 +3430,7 @@ asm_35427: asm_35432: res 6, [hl] ld a, 2 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f jp asm_357a9 @@ -3526,15 +3483,15 @@ asm_35483: ret z dec a jr nz, asm_35490 - ld hl, text_34a93 + ld hl, EnduredText jp PrintText asm_35490: call Function37e2d ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName - ld hl, text_34a80 + ld hl, HungOnText jp PrintText sub_354a0: @@ -3565,13 +3522,13 @@ asm_354ab: call Function37e2d ldh a, [hBattleTurn] and a - ld de, wca12 - ld hl, wca14 - ld a, [wc9ef] + ld de, wBattleMonHP + ld hl, wBattleMonMaxHP + ld a, [wPlayerMoveStruct] jr z, asm_354db - ld de, wcde9 - ld hl, wcdeb - ld a, [wc9e8] + ld de, wEnemyMonHP + ld hl, wEnemyMonMaxHP + ld a, [wEnemyMoveStruct] asm_354db: ld b, a @@ -3589,11 +3546,11 @@ asm_354db: push de push af call sub_37f5f - ld hl, wca10 + ld hl, wBattleMonStatus ldh a, [hBattleTurn] and a jr z, asm_354fb - ld hl, wcde7 + ld hl, wEnemyMonStatus asm_354fb: ld a, [hl] @@ -3660,9 +3617,8 @@ asm_35545: xor a asm_35556: - ld [wHPBarType], a - ld a, $17 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar ld hl, DrawHUDsAndHPBars call CallFromBank0F ld hl, text_35593 @@ -3733,11 +3689,11 @@ text_35593: db $58 sub_355a6: - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_355b1 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect asm_355b1: ld hl, text_35649 @@ -3780,7 +3736,7 @@ asm_355ee: ld hl, text_35619 call PrintText ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ldh a, [hBattleTurn] and a @@ -3982,12 +3938,12 @@ text_356b8: db $58 asm_356c9: - ld hl, wcde9 + ld hl, wEnemyMonHP ld de, wca44 ldh a, [hBattleTurn] and a jr z, asm_356da - ld hl, wca12 + ld hl, wBattleMonHP ld de, wca3f asm_356da: @@ -4001,16 +3957,16 @@ asm_356da: call PrintText ldh a, [hBattleTurn] and a - ld hl, wcdec + ld hl, wEnemyMonMaxHP + 1 ld bc, wTileMap + 42 ld a, 0 jr nz, asm_356fd - ld hl, wca15 + ld hl, wBattleMonMaxHP + 1 ld bc, wTileMap + 190 ld a, 1 asm_356fd: - ld [wHPBarType], a + ld [wWhichHPBar], a ld a, [hld] ld [wHPBarMaxHP], a ld a, [hld] @@ -4027,17 +3983,16 @@ asm_356fd: ld [wcdc8], a ld h, b ld l, c - ld a, $17 - call Predef + predef UpdateHPBar ldh a, [hBattleTurn] push af xor 1 ldh [hBattleTurn], a xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a inc a - ld [wca5c], a + ld [wBattleAnimParam], a ld a, $c2 call sub_37f23 pop af @@ -4071,13 +4026,13 @@ asm_3574f: asm_35752: ld hl, wca43 ld de, wcab1 - ld bc, wc9e8 + ld bc, wEnemyMoveStruct ldh a, [hBattleTurn] and a jr z, asm_35769 ld hl, wca3e ld de, wcaa9 - ld bc, wc9ef + ld bc, wPlayerMoveStruct asm_35769: bit 6, [hl] @@ -4148,7 +4103,7 @@ Function357b7: ld hl, wce29 ld [hli], a ld [hl], a - ld hl, wc9f1 + ld hl, wPlayerMoveStructPower ld a, [hli] and a ld d, a @@ -4156,7 +4111,7 @@ Function357b7: ld a, [hl] cp $14 jr nc, asm_357fe - ld hl, wcdef + ld hl, wEnemyMonDefense ld a, [hli] ld b, a ld c, [hl] @@ -4167,7 +4122,7 @@ Function357b7: rl b asm_357da: - ld hl, wca16 + ld hl, wBattleMonStats ld a, [wca39] and a jr z, asm_35831 @@ -4179,14 +4134,14 @@ asm_357da: ld c, a push bc ld hl, wPartyMon1Stats - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes pop bc jr asm_35831 asm_357fe: - ld hl, wcdf5 + ld hl, wEnemyMonSpclDef ld a, [hli] ld b, a ld c, [hl] @@ -4197,7 +4152,7 @@ asm_357fe: rl b asm_3580f: - ld hl, wca1c + ld hl, wBattleMonSpclAtk ld a, [wca39] and a jr z, asm_35831 @@ -4209,7 +4164,7 @@ asm_3580f: ld c, a push bc ld hl, wPartyMon1SpclAtk - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes pop bc @@ -4235,7 +4190,7 @@ asm_35831: asm_3584c: ld b, l - ld a, [wca0f] + ld a, [wBattleMonLevel] ld e, a ld a, [wca39] and a @@ -4252,7 +4207,7 @@ sub_3585d: xor a ld [hli], a ld [hl], a - ld hl, wc9ea + ld hl, wEnemyMoveStructPower ld a, [hli] ld d, a and a @@ -4260,7 +4215,7 @@ sub_3585d: ld a, [hl] cp $14 jr nc, asm_358a4 - ld hl, wca18 + ld hl, wBattleMonDefense ld a, [hli] ld b, a ld c, [hl] @@ -4271,13 +4226,13 @@ sub_3585d: rl b asm_35880: - ld hl, wcded + ld hl, wEnemyMonAttack ld a, [wca39] and a jr z, asm_358d7 ld hl, wPartyMon1Defense - ld a, [wcd41] - ld bc, $30 + ld a, [wCurBattleMon] + ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes ld a, [hli] ld b, a @@ -4290,7 +4245,7 @@ asm_35880: jr asm_358d7 asm_358a4: - ld hl, wca1e + ld hl, wBattleMonSpclDef ld a, [hli] ld b, a ld c, [hl] @@ -4301,12 +4256,12 @@ asm_358a4: rl b asm_358b5: - ld hl, wcdf3 + ld hl, wEnemyMonSpclAtk ld a, [wca39] and a jr z, asm_358d7 ld hl, wPartyMon1SpclDef - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes ld a, [hli] @@ -4339,7 +4294,7 @@ asm_358d7: asm_358f2: ld b, l - ld a, [wcde6] + ld a, [wEnemyMonLevel] ld e, a ld a, [wca39] and a @@ -4359,13 +4314,13 @@ sub_35904: ld [hl], a ldh a, [hBattleTurn] and a - ld hl, wca18 + ld hl, wBattleMonDefense ld de, wca3f - ld a, [wca0f] + ld a, [wBattleMonLevel] jr z, asm_35921 - ld hl, wcdef + ld hl, wEnemyMonDefense ld de, wca44 - ld a, [wcde6] + ld a, [wEnemyMonLevel] asm_35921: push af @@ -4413,7 +4368,7 @@ sub_35952: ld a, [wLinkMode] cp 3 jr nz, asm_35976 - ld hl, wd93f + ld hl, wOTPartyMon1MaxHP dec c sla c ld b, 0 @@ -4430,13 +4385,13 @@ sub_35952: ret asm_35976: - ld a, [wcde6] + ld a, [wEnemyMonLevel] ld [wCurPartyLevel], a - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wCurSpecies], a - call GetMonHeader - ld hl, wcddf - ld de, wcd94 + call GetBaseData + ld hl, wEnemyMonDVs + ld de, wTempMonDVs ld a, [hli] ld [de], a inc de @@ -4444,18 +4399,17 @@ asm_35976: ld [de], a pop bc ld b, 0 - ld hl, wcd89 - ld a, $19 - call Predef + ld hl, wTempMonExp + 2 + predef Functiondf91 pop de ret sub_3599d: ldh a, [hBattleTurn] and a - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_359a8 - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_359a8: cp 7 @@ -4522,9 +4476,9 @@ asm_359f6: ld b, a ldh a, [hBattleTurn] and a - ld a, [wc9f2] + ld a, [wPlayerMoveStructType] jr z, asm_35a0b - ld a, [wc9eb] + ld a, [wEnemyMoveStructType] asm_35a0b: cp b @@ -4630,13 +4584,13 @@ Data35a7d: db $ff asm_35a9c: - ld hl, wca0f - ld de, wc9f0 + ld hl, wBattleMonLevel + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_35aad - ld hl, wcde6 - ld de, wc9e9 + ld hl, wEnemyMonLevel + ld de, wEnemyMoveStructEffect asm_35aad: ld a, [de] @@ -4674,11 +4628,11 @@ asm_35ace: jr asm_35afd asm_35adc: - ld hl, wcde9 + ld hl, wEnemyMonHP ldh a, [hBattleTurn] and a jr z, asm_35ae7 - ld hl, wca12 + ld hl, wBattleMonHP asm_35ae7: ld a, [hli] @@ -4704,11 +4658,11 @@ asm_35afd: ret asm_35b03: - ld hl, wca12 + ld hl, wBattleMonHP ldh a, [hBattleTurn] and a jr z, asm_35b0e - ld hl, wcde9 + ld hl, wEnemyMonHP asm_35b0e: xor a @@ -4764,14 +4718,14 @@ asm_35b59: and a ld a, [hl] jr nz, asm_35b69 - ld hl, wc9f1 + ld hl, wPlayerMoveStructPower ld [hl], a push hl call Function357b7 jr asm_35b71 asm_35b69: - ld hl, wc9ea + ld hl, wEnemyMoveStructPower ld [hl], a push hl call sub_3585d @@ -4799,11 +4753,11 @@ Data35b78: asm_35b84: ldh a, [hBattleTurn] and a - ld hl, wcac2 - ld de, wc9ea + ld hl, wCurEnemySelectedMove + ld de, wEnemyMoveStructPower jr z, asm_35b95 - ld hl, wcac1 - ld de, wc9f1 + ld hl, wCurPlayerSelectedMove + ld de, wPlayerMoveStructPower asm_35b95: ld a, 1 @@ -4843,11 +4797,11 @@ asm_35bbd: and a ld hl, wca44 ld de, wca51 - ld a, [wcad7] + ld a, [wCurEnemyMove] jr z, asm_35bd4 ld hl, wca3f ld de, wca49 - ld a, [wcad6] + ld a, [wCurPlayerMove] asm_35bd4: and a @@ -4897,15 +4851,14 @@ asm_35c0b: call sub_3750b jp nz, asm_35ca9 call sub_37f0f - ld hl, wca15 - ld de, wcdec + ld hl, wBattleMonMaxHP + 1 + ld de, wEnemyMonMaxHP + 1 call sub_35c59 ld a, 1 - ld [wHPBarType], a + ld [wWhichHPBar], a ld hl, wTileMap + 190 - ld a, $17 - call Predef - ld hl, wcde9 + predef UpdateHPBar + ld hl, wEnemyMonHP ld a, [hli] ld [wcdc6], a ld a, [hli] @@ -4916,10 +4869,9 @@ asm_35c0b: ld [wHPBarMaxHP], a call sub_35c88 xor a - ld [wHPBarType], a + ld [wWhichHPBar], a ld hl, wTileMap + 42 - ld a, $17 - call Predef + predef UpdateHPBar ld hl, text_35caf jp PrintText @@ -5007,11 +4959,11 @@ text_35caf: db $58 asm_35cc5: - ld hl, wca10 + ld hl, wBattleMonStatus ldh a, [hBattleTurn] and a jr z, asm_35cd0 - ld hl, wca10 + ld hl, wBattleMonStatus asm_35cd0: ld a, [hl] @@ -5022,11 +4974,11 @@ asm_35cd0: ret asm_35cd9: - ld hl, wcdf7 + ld hl, wEnemyMonType ldh a, [hBattleTurn] and a jr z, asm_35ce4 - ld hl, wca20 + ld hl, wBattleMonType asm_35ce4: ld a, [wca3a] @@ -5055,9 +5007,8 @@ asm_35cf0: asm_35d09: ld [hld], a ld [hl], a - ld [wCountSetBitsResult], a - ld a, $3e - call Predef + ld [wNumSetBits], a + predef GetTypeName ld hl, text_35d19 jp PrintText @@ -5129,17 +5080,17 @@ asm_35d66: jr z, asm_35d95 call sub_3750b jp nz, asm_35d95 - ld hl, wca04 + ld hl, wBattleMonMoves ld a, [wcd40] ld c, a ld b, 0 add hl, bc - ld a, [wcad7] + ld a, [wCurEnemyMove] ld [hl], a ld hl, wPartyMon1Moves add hl, bc ld [hl], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Unreferenced_GetMoveName call sub_37f0f ld hl, text_35d9b @@ -5171,13 +5122,13 @@ text_35d9b: asm_35dae: call sub_37f0f - ld hl, wc9f0 - ld de, wcde7 + ld hl, wPlayerMoveStructEffect + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_35dc2 - ld hl, wc9e9 - ld de, wca10 + ld hl, wEnemyMoveStructEffect + ld de, wBattleMonStatus asm_35dc2: push hl @@ -5197,15 +5148,15 @@ asm_35dc2: asm_35dd4: ldh a, [hBattleTurn] and a - ld hl, wca05 - ld de, wcac1 - ld bc, wc9ef - ld a, [wca10] + ld hl, wBattleMonMoves + 1 + ld de, wCurPlayerSelectedMove + ld bc, wPlayerMoveStruct + ld a, [wBattleMonStatus] jr z, asm_35df1 - ld hl, wcddc - ld de, wcac2 - ld bc, wc9e8 - ld a, [wcde7] + ld hl, wEnemyMonMoves + 1 + ld de, wCurEnemySelectedMove + ld bc, wEnemyMoveStruct + ld a, [wEnemyMonStatus] asm_35df1: and 7 @@ -5297,13 +5248,13 @@ asm_35e5e: jr nz, asm_35ec4 ldh a, [hBattleTurn] and a - ld hl, wcddb - ld de, wd932 - ld a, [wcad7] + ld hl, wEnemyMonMoves + ld de, wOTPartyMon1PP + ld a, [wCurEnemyMove] jr z, asm_35e7b - ld hl, wca04 + ld hl, wBattleMonMoves ld de, wPartyMon1PP - ld a, [wcad6] + ld a, [wCurPlayerMove] asm_35e7b: and a @@ -5318,7 +5269,7 @@ asm_35e85: ld a, [hli] cp b jr nz, asm_35e85 - ld [wCountSetBitsResult], a + ld [wNumSetBits], a dec hl ld b, 0 push bc @@ -5345,7 +5296,7 @@ asm_35e85: asm_35eaf: ld a, b - ld [wCountSetBitsResult], a + ld [wNumSetBits], a ld a, [hl] sub b ld [hl], a @@ -5375,7 +5326,7 @@ text_35eca: db $7f db $50 db $9 - dw wCountSetBitsResult + dw wNumSetBits db $11 db $0 db $b9 @@ -5386,11 +5337,11 @@ text_35eca: db $58 sub_35ee1: - ld de, wcdea + ld de, wEnemyMonHP + 1 ldh a, [hBattleTurn] and a jr z, asm_35eec - ld de, wca13 + ld de, wBattleMonHP + 1 asm_35eec: ld hl, wce2a @@ -5435,12 +5386,12 @@ asm_35f11: ret asm_35f13: - ld hl, wca10 + ld hl, wBattleMonStatus ld de, wca3b ldh a, [hBattleTurn] and a jr z, asm_35f24 - ld hl, wcde7 + ld hl, wEnemyMonStatus ld de, wca40 asm_35f24: @@ -5486,12 +5437,12 @@ text_35f3e: sub_35f53: ld a, e - ld [wccc0], a + ld [wFXAnimID], a ld a, d - ld [wccc1], a + ld [wFXAnimID + 1], a ld c, 3 call DelayFrames - jpab PlayBattleAnim + jpfar PlayBattleAnim sub_35f68: ld hl, wce29 @@ -5505,42 +5456,41 @@ sub_35f68: jp nz, asm_3602a ld a, [hld] ld b, a - ld a, [wcdea] + ld a, [wEnemyMonHP + 1] ld [wHPBarOldHP], a sub b - ld [wcdea], a + ld [wEnemyMonHP + 1], a ld a, [hl] ld b, a - ld a, [wcde9] + ld a, [wEnemyMonHP] ld [wcdc6], a sbc b - ld [wcde9], a + ld [wEnemyMonHP], a jr nc, asm_35fa1 ld a, [wcdc6] ld [hli], a ld a, [wHPBarOldHP] ld [hl], a xor a - ld hl, wcde9 + ld hl, wEnemyMonHP ld [hli], a ld [hl], a asm_35fa1: - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld a, [hli] ld [wPlayerEffectivenessVsEnemyMons], a ld a, [hl] ld [wHPBarMaxHP], a - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] ld [wcdc8], a ld a, [hl] ld [wHPBarNewHP], a ld hl, wTileMap + 42 xor a - ld [wHPBarType], a - ld a, $17 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar asm_35fc3: ld hl, DrawHUDsAndHPBars @@ -5558,16 +5508,16 @@ sub_35fc9: jp nz, asm_3602a ld a, [hld] ld b, a - ld a, [wca13] + ld a, [wBattleMonHP + 1] ld [wHPBarOldHP], a sub b - ld [wca13], a + ld [wBattleMonHP + 1], a ld [wHPBarNewHP], a ld b, [hl] - ld a, [wca12] + ld a, [wBattleMonHP] ld [wcdc6], a sbc b - ld [wca12], a + ld [wBattleMonHP], a ld [wcdc8], a jr nc, asm_3600c ld a, [wcdc6] @@ -5575,7 +5525,7 @@ sub_35fc9: ld a, [wHPBarOldHP] ld [hl], a xor a - ld hl, wca12 + ld hl, wBattleMonHP ld [hli], a ld [hl], a ld hl, wHPBarNewHP @@ -5583,16 +5533,15 @@ sub_35fc9: ld [hl], a asm_3600c: - ld hl, wca14 + ld hl, wBattleMonMaxHP ld a, [hli] ld [wPlayerEffectivenessVsEnemyMons], a ld a, [hl] ld [wHPBarMaxHP], a ld hl, wTileMap + 190 ld a, 1 - ld [wHPBarType], a - ld a, $17 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar asm_36024: ld hl, DrawHUDsAndHPBars @@ -5630,19 +5579,19 @@ asm_3604c: xor 1 ldh [hBattleTurn], a xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a ld a, 3 - ld [wca5c], a + ld [wBattleAnimParam], a ld a, $a4 call sub_37f23 pop af ldh [hBattleTurn], a ldh a, [hBattleTurn] - ld hl, wc9f0 + ld hl, wPlayerMoveStructEffect and a jr z, asm_3607c - ld hl, wc9e9 + ld hl, wEnemyMoveStructEffect asm_3607c: xor a @@ -5704,19 +5653,19 @@ Function360b1: and a jp z, asm_360c7 ld hl, wca44 - ld de, wc9e8 - ld bc, wcad7 + ld de, wEnemyMoveStruct + ld bc, wCurEnemyMove push bc - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] ld b, a jr asm_360dc asm_360c7: ld hl, wca3f - ld de, wc9ef - ld bc, wcad6 + ld de, wPlayerMoveStruct + ld bc, wCurPlayerMove push bc - ld a, [wcac1] + ld a, [wCurPlayerSelectedMove] ld b, a ld a, [wcabe] and a @@ -5730,7 +5679,7 @@ asm_360dc: bit 4, [hl] jr nz, asm_360fa ld [wCurSpecies], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a dec a ld hl, Moves ld bc, 7 @@ -5742,18 +5691,18 @@ asm_360dc: asm_360fa: ld a, [bc] ld [wCurSpecies], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a asm_36101: call Unreferenced_GetMoveName jp CopyStringToStringBuffer2 - ld de, wcde7 + ld de, wEnemyMonStatus ld bc, wca43 ldh a, [hBattleTurn] and a jp z, asm_36119 - ld de, wca10 + ld de, wBattleMonStatus ld bc, wca3e asm_36119: @@ -5827,12 +5776,12 @@ text_36176: db $58 asm_36184: - ld de, wcde7 + ld de, wEnemyMonStatus ld bc, wca43 ldh a, [hBattleTurn] and a jp z, asm_36196 - ld de, wca10 + ld de, wBattleMonStatus ld bc, wca3e asm_36196: @@ -5848,7 +5797,7 @@ asm_36196: cp $17 jr nz, asm_361b8 ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName ld hl, text_374f7 jr asm_36215 @@ -5927,11 +5876,11 @@ text_3621b: db $58 asm_3622a: - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_36235 - ld de, wca10 + ld de, wBattleMonStatus asm_36235: call sub_3750b @@ -5997,11 +5946,11 @@ text_3628d: db $58 asm_36299: - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_362a4 - ld de, wca10 + ld de, wBattleMonStatus asm_362a4: ld hl, text_35649 @@ -6018,7 +5967,7 @@ asm_362a4: cp $14 jr nz, asm_362ce ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName ld hl, text_374f7 jr asm_3634b @@ -6082,11 +6031,11 @@ asm_36319: sub_36331: ldh a, [hBattleTurn] and a - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] ld hl, wca44 ld de, wca4f jr z, asm_36348 - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] ld hl, wca3f ld de, wca47 @@ -6194,13 +6143,13 @@ sub_363a3: inc [hl] asm_363b3: - ld hl, wca12 - ld de, wca14 + ld hl, wBattleMonHP + ld de, wBattleMonMaxHP ldh a, [hBattleTurn] and a jp z, asm_363c5 - ld hl, wcde9 - ld de, wcdeb + ld hl, wEnemyMonHP + ld de, wEnemyMonMaxHP asm_363c5: ld bc, wcdc6 @@ -6259,26 +6208,23 @@ asm_36400: xor a asm_3640e: - ld [wHPBarType], a - ld a, $17 - call Predef - ld a, $1e - call Predef - ld a, $23 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar + predef Function3d5ce + predef Function3d67c ld hl, sub_3d3f4 jp CallFromBank0F asm_36426: xor a - ld [wcccd], a + ld [wNumHits], a call sub_3750b ret nz - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_36439 - ld de, wca10 + ld de, wBattleMonStatus asm_36439: ld a, [de] @@ -6353,10 +6299,10 @@ sub_364a2: ldh a, [hBattleTurn] and a ld a, [wca36] - ld hl, wd93b + ld hl, wOTPartyMon1Status jr z, asm_364b9 ld hl, wPartyMon1Status - ld a, [wcd41] + ld a, [wCurBattleMon] asm_364b9: ld bc, $30 @@ -6391,14 +6337,14 @@ text_364c7: asm_364dc: xor a - ld [wcccd], a + ld [wNumHits], a call sub_3750b ret nz - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_364ef - ld de, wca10 + ld de, wBattleMonStatus asm_364ef: ld a, [de] @@ -6467,14 +6413,14 @@ text_36546: asm_36555: xor a - ld [wcccd], a + ld [wNumHits], a call sub_3750b ret nz - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_36568 - ld de, wca10 + ld de, wBattleMonStatus asm_36568: ld a, [de] @@ -6526,12 +6472,12 @@ asm_365ae: Function365bf: ld hl, wcaa9 - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_365d0 ld hl, wcab1 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect asm_365d0: ld a, [de] @@ -6564,12 +6510,12 @@ asm_365f1: cp 4 jr nc, asm_36661 push hl - ld hl, wca17 + ld hl, wBattleMonAttack + 1 ld de, wca93 ldh a, [hBattleTurn] and a jr z, asm_36609 - ld hl, wcdee + ld hl, wEnemyMonAttack + 1 ld de, wca9e asm_36609: @@ -6641,13 +6587,13 @@ asm_36661: asm_36666: ld hl, wca3e - ld de, wc9ef + ld de, wPlayerMoveStruct ld bc, wcadc ldh a, [hBattleTurn] and a jr z, asm_3667d ld hl, wca43 - ld de, wc9e8 + ld de, wEnemyMoveStruct ld bc, wcad8 asm_3667d: @@ -6688,7 +6634,7 @@ text_366b2: db $4f db $50 db $1 - dw wcd31 + dw wStringBuffer2 db $0 db $26 db $50 @@ -6696,9 +6642,9 @@ text_366b2: ld hl, text_366d3 ldh a, [hBattleTurn] and a - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_366cc - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_366cc: cp $12 @@ -6728,12 +6674,12 @@ text_366db: asm_366e3: ld hl, wcab1 - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_36703 ld hl, wcaa9 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect ld a, [wLinkMode] cp 3 jr z, asm_36703 @@ -6793,12 +6739,12 @@ asm_3674c: jr nc, asm_367b9 push hl push de - ld hl, wcdee + ld hl, wEnemyMonAttack + 1 ld de, wca9e ldh a, [hBattleTurn] and a jr z, asm_36765 - ld hl, wca17 + ld hl, wBattleMonAttack + 1 ld de, wca93 asm_36765: @@ -6914,7 +6860,7 @@ text_367fa: db $4f db $50 db $1 - dw wcd31 + dw wStringBuffer2 db $0 db $26 db $50 @@ -6922,9 +6868,9 @@ text_367fa: ld hl, text_36826 ldh a, [hBattleTurn] and a - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_36814 - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_36814: cp $1a @@ -6969,7 +6915,7 @@ asm_36836: jr asm_36836 asm_3683c: - ld de, wcd31 + ld de, wStringBuffer2 ld bc, $a jp CopyBytes @@ -7045,13 +6991,13 @@ Data3687a: asm_36894: ld bc, wPlayerSubStatus3 - ld de, wc9ef + ld de, wPlayerMoveStruct ld hl, wca56 ldh a, [hBattleTurn] and a jr z, asm_368ab ld bc, wEnemySubStatus3 - ld de, wc9e8 + ld de, wEnemyMoveStruct ld hl, wca58 asm_368ab: @@ -7081,10 +7027,10 @@ asm_368c8: jr nz, asm_368ff ld hl, wPlayerSubStatus3 res 0, [hl] - ld hl, text_34a71 + ld hl, UnleashedEnergyText call PrintText ld a, 1 - ld [wc9f1], a + ld [wPlayerMoveStructPower], a ld hl, wca56 ld a, [hld] add a @@ -7102,13 +7048,13 @@ asm_368f2: xor a ld [hli], a ld [hl], a - ld a, $75 - ld [wc9ef], a + ld a, MOVE_BIDE + ld [wPlayerMoveStruct], a ld b, $22 jp asm_37f6b asm_368ff: - ld hl, text_34a65 + ld hl, StoringEnergyText call PrintText jp asm_357a9 @@ -7129,15 +7075,15 @@ asm_3691f: ld [de], a inc de ld [de], a - ld [wc9f0], a - ld [wc9e9], a + ld [wPlayerMoveStructEffect], a + ld [wEnemyMoveStructEffect], a call BattleRandom and 1 inc a inc a ld [bc], a ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37eec jp asm_357a9 @@ -7197,7 +7143,7 @@ asm_36985: jr nz, asm_369cf ld a, [wCurPartyLevel] ld b, a - ld a, [wca0f] + ld a, [wBattleMonLevel] cp b jr nc, asm_369bc add b @@ -7213,9 +7159,9 @@ asm_3699d: cp b jr nc, asm_369bc xor a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] cp $64 jp nz, asm_374b1 jp Function37499 @@ -7224,18 +7170,18 @@ asm_369bc: ld hl, sub_3d3f4 call CallFromBank0F xor a - ld [wcccd], a + ld [wNumHits], a inc a ld [wce06], a - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] jr asm_36a3e asm_369cf: xor a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ld hl, text_374c8 - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] cp $64 jp nz, PrintText jp Function37499 @@ -7244,7 +7190,7 @@ asm_369e4: ld a, [wBattleMode] dec a jr nz, asm_36a29 - ld a, [wca0f] + ld a, [wBattleMonLevel] ld b, a ld a, [wCurPartyLevel] cp b @@ -7262,9 +7208,9 @@ asm_369f7: cp b jr nc, asm_36a16 xor a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] cp $64 jp nz, asm_374b1 jp Function37499 @@ -7273,18 +7219,18 @@ asm_36a16: ld hl, sub_3d3f4 call CallFromBank0F xor a - ld [wcccd], a + ld [wNumHits], a inc a ld [wce06], a - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] jr asm_36a3e asm_36a29: xor a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ld hl, text_374c8 - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] cp $64 jp nz, PrintText jp asm_37494 @@ -7292,7 +7238,7 @@ asm_36a29: asm_36a3e: push af ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ld c, 20 call DelayFrames @@ -7378,11 +7324,11 @@ asm_36aa9: bit 2, [hl] jp nz, asm_36af2 set 2, [hl] - ld hl, wc9f0 + ld hl, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_36abb - ld hl, wc9e9 + ld hl, wEnemyMoveStructEffect asm_36abb: ld a, [hl] @@ -7518,12 +7464,12 @@ asm_36b55: call sub_3750b ret nz ld hl, wEnemySubStatus3 - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_36b6a ld hl, wPlayerSubStatus3 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect asm_36b6a: call sub_36ffd @@ -7540,12 +7486,12 @@ asm_36b74: call sub_3750b ret nz ld hl, wEnemySubStatus3 - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_36b90 ld hl, wPlayerSubStatus3 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect asm_36b90: push hl @@ -7567,13 +7513,13 @@ asm_36ba0: and $7f cp $a jr c, asm_36be0 - ld hl, wca1b - ld de, wcdf2 + ld hl, wBattleMonSpeed + 1 + ld de, wEnemyMonSpeed + 1 ldh a, [hBattleTurn] and a jr z, asm_36bc0 - ld hl, wcdf2 - ld de, wca1b + ld hl, wEnemyMonSpeed + 1 + ld de, wBattleMonSpeed + 1 asm_36bc0: ld a, [de] @@ -7622,17 +7568,17 @@ asm_36bf6: asm_36c02: xor a - ld [wcccd], a + ld [wNumHits], a inc a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ld hl, wPlayerSubStatus3 - ld de, wc9ef + ld de, wPlayerMoveStruct ldh a, [hBattleTurn] and a jr z, asm_36c1e ld hl, wEnemySubStatus3 - ld de, wc9e8 + ld de, wEnemyMoveStruct asm_36c1e: set 4, [hl] @@ -7861,7 +7807,7 @@ asm_36d2b: asm_36d2e: push hl push de - ld hl, text_34a41 + ld hl, AttackContinuesText call PrintText pop hl dec [hl] @@ -7947,11 +7893,11 @@ text_36d8d: asm_36d9b: ldh a, [hBattleTurn] and a - ld a, [wc9ef] - ld hl, wca14 + ld a, [wPlayerMoveStruct] + ld hl, wBattleMonMaxHP jr z, asm_36dac - ld a, [wc9e8] - ld hl, wcdeb + ld a, [wEnemyMoveStruct] + ld hl, wEnemyMonMaxHP asm_36dac: ld d, a @@ -8008,9 +7954,8 @@ asm_36ded: xor a asm_36dfb: - ld [wHPBarType], a - ld a, $17 - call Predef + ld [wWhichHPBar], a + predef UpdateHPBar ld hl, text_36e09 jp PrintText @@ -8052,7 +7997,7 @@ asm_36e2b: cp $19 jr nz, asm_36e43 ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName call sub_37f5f ld hl, text_374f7 @@ -8070,11 +8015,11 @@ asm_36e4e: and a ld hl, wEnemySubStatus3 ld bc, wca4e - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_36e65 ld hl, wPlayerSubStatus3 ld bc, wca46 - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_36e65: bit 7, [hl] @@ -8129,13 +8074,13 @@ asm_36e9e: jp asm_37494 asm_36ead: - ld hl, wcde7 - ld de, wc9f2 + ld hl, wEnemyMonStatus + ld de, wPlayerMoveStructType ldh a, [hBattleTurn] and a jp z, asm_36ebf - ld hl, wca10 - ld de, wc9eb + ld hl, wBattleMonStatus + ld de, wEnemyMoveStructType asm_36ebf: ld a, [wca38] @@ -8152,7 +8097,7 @@ asm_36ebf: ld a, [hl] pop hl jr nz, asm_36ee6 - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName call sub_37f5f ld hl, text_374f7 @@ -8203,13 +8148,13 @@ asm_36f2f: asm_36f35: call sub_37f5f - ld hl, wca14 + ld hl, wBattleMonMaxHP ld de, wcabc ld bc, wca3e ldh a, [hBattleTurn] and a jr z, asm_36f4f - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld de, wcabd ld bc, wca43 @@ -8244,15 +8189,15 @@ asm_36f4f: add a jr c, asm_36f89 xor a - ld [wcccd], a - ld [wccc1], a - ld [wca5c], a + ld [wNumHits], a + ld [wFXAnimID + 1], a + ld [wBattleAnimParam], a ld a, $a4 call sub_37f23 jr asm_36f91 asm_36f89: - callab Functioncc000_2 + callfar Functioncc000_2 asm_36f91: ld hl, text_36fa8 @@ -8385,13 +8330,13 @@ asm_3701b: ld a, [wca3a] and a jr nz, asm_37055 - ld hl, wca04 - ld de, wcad7 + ld hl, wBattleMonMoves + ld de, wCurEnemyMove ldh a, [hBattleTurn] and a jr z, asm_37035 - ld hl, wcddb - ld de, wcad6 + ld hl, wEnemyMonMoves + ld de, wCurPlayerMove asm_37035: call sub_37e0d @@ -8407,7 +8352,7 @@ asm_3703e: dec hl ld a, [de] ld [hl], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Unreferenced_GetMoveName call sub_37f0f ld hl, text_37058 @@ -8439,12 +8384,12 @@ asm_37069: and a jr nz, asm_3709a ld hl, wca43 - ld de, wcde9 + ld de, wEnemyMonHP ldh a, [hBattleTurn] and a jr z, asm_37080 ld hl, wca3e - ld de, wca12 + ld de, wBattleMonHP asm_37080: ld a, [de] @@ -8510,14 +8455,14 @@ asm_370c8: and a jr nz, asm_37132 ld de, wca50 - ld hl, wcddb - ld bc, wcad7 + ld hl, wEnemyMonMoves + ld bc, wCurEnemyMove ldh a, [hBattleTurn] and a jr z, asm_370e5 ld de, wca48 - ld hl, wca04 - ld bc, wcad6 + ld hl, wBattleMonMoves + ld bc, wCurPlayerMove asm_370e5: ld a, [de] @@ -8528,7 +8473,7 @@ asm_370e5: jr z, asm_37132 cp $a5 jr z, asm_37132 - ld [wCountSetBitsResult], a + ld [wNumSetBits], a ld b, a ld c, $ff @@ -8539,9 +8484,9 @@ asm_370f7: jr nz, asm_370f7 ldh a, [hBattleTurn] and a - ld hl, wcde1 + ld hl, wEnemyMonPP jr z, asm_37107 - ld hl, wca0a + ld hl, wBattleMonPP asm_37107: ld b, 0 @@ -8564,84 +8509,56 @@ asm_37107: inc hl asm_37125: - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld [hl], a call Unreferenced_GetMoveName - ld hl, text_37138 + ld hl, MoveDisabledText jp PrintText asm_37132: call sub_37f5f jp Function37499 -text_37138: - db $0 - db $59 - db $c9 - db $4f - db $50 - db $1 - dw wStringBuffer1 - db $0 - db $dd - db $7f - db $cc - db $b3 - db $2c - db $ba - db $d2 - db $c0 - db $e7 - db $58 +MoveDisabledText: + text "の" + line "@" + text_from_ram wStringBuffer1 + text "を ふうじこめた!" + prompt -asm_3714b: +BattleCommand_PayDay: xor a ld hl, wStringBuffer1 ld [hli], a ldh a, [hBattleTurn] and a - ld a, [wca0f] - jr z, asm_3715b - ld a, [wcde6] + ld a, [wBattleMonLevel] + jr z, .ok + ld a, [wEnemyMonLevel] -asm_3715b: +.ok: add a - ld hl, wcacc + ld hl, wPayDayMoney + 2 add [hl] ld [hld], a - jr nc, text_3716e + jr nc, PrintCoinsScatteredText inc [hl] dec hl - jr nz, text_3716e + jr nz, PrintCoinsScatteredText inc [hl] -text_3716e: - ld hl, Data3716e +PrintCoinsScatteredText: + ld hl, CoinsScatteredText jp PrintText -Data3716e: - db $0 - db $ba - db $3a - db $de - db $26 - db $7f - db $b1 - db $c0 - db $d8 - db $c6 - db $7f - db $c1 - db $d7 - db $3a - db $df - db $c0 - db $e7 - db $58 +CoinsScatteredText: + text "こばんが あたりに ちらばった!" + prompt + asm_37180: - ld hl, wcdf7 - ld de, wca20 + ld hl, wEnemyMonType + ld de, wBattleMonType ldh a, [hBattleTurn] and a jr z, asm_3718f @@ -8695,17 +8612,17 @@ asm_371ba: ld hl, wcab1 call sub_37224 ld hl, wca93 - ld de, wca16 + ld de, wBattleMonAttack call sub_3722b ld hl, wca9e - ld de, wcded + ld de, wEnemyMonAttack call sub_3722b - ld hl, wcde7 - ld de, wcac2 + ld hl, wEnemyMonStatus + ld de, wCurEnemySelectedMove ldh a, [hBattleTurn] and a jr z, asm_371e9 - ld hl, wca10 + ld hl, wBattleMonStatus dec de asm_371e9: @@ -8793,13 +8710,13 @@ text_37234: asm_3724b: ldh a, [hBattleTurn] and a - ld de, wca12 - ld hl, wca14 - ld a, [wc9ef] + ld de, wBattleMonHP + ld hl, wBattleMonMaxHP + ld a, [wPlayerMoveStruct] jr z, asm_37262 - ld de, wcde9 - ld hl, wcdeb - ld a, [wc9e8] + ld de, wEnemyMonHP + ld hl, wEnemyMonMaxHP + ld a, [wEnemyMoveStruct] asm_37262: ld b, a @@ -8817,11 +8734,11 @@ asm_37262: push de push af call sub_37f5f - ld hl, wca10 + ld hl, wBattleMonStatus ldh a, [hBattleTurn] and a jr z, asm_37282 - ld hl, wcde7 + ld hl, wEnemyMonStatus asm_37282: ld a, [hl] @@ -8839,11 +8756,11 @@ asm_3728e: asm_37294: jr z, asm_372a0 - callab Function3c7d3 + callfar Function3c7d3 jr asm_372a8 asm_372a0: - callab Function3c7f2 + callfar Function3c7f2 asm_372a8: call sub_37f0f @@ -8851,7 +8768,7 @@ asm_372a8: push af xor 1 ldh [hBattleTurn], a - callab sub_3c808 + callfar sub_3c808 pop af ldh [hBattleTurn], a ld hl, DrawHUDsAndHPBars @@ -8924,14 +8841,14 @@ text_372f2: db $58 asm_37305: - ld hl, wca02 - ld de, wcdd9 + ld hl, wBattleMon + ld de, wEnemyMon ld bc, wca44 ldh a, [hBattleTurn] and a jr nz, asm_37320 - ld hl, wcdd9 - ld de, wca02 + ld hl, wEnemyMon + ld de, wBattleMon ld bc, wca3f xor a ld [wcd40], a @@ -8950,10 +8867,10 @@ asm_37320: asm_37334: xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a bit 4, [hl] push af ld a, $a4 @@ -8965,14 +8882,14 @@ asm_37334: jr asm_3735b asm_37353: - callab Functioncc000_2 + callfar Functioncc000_2 asm_3735b: xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a ld a, 2 - ld [wca5c], a + ld [wBattleAnimParam], a pop af ld a, $a4 call nz, sub_37f23 @@ -9041,7 +8958,7 @@ asm_373b4: asm_373bf: pop hl ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetPokemonName ld hl, wca9e ld de, wca93 @@ -9091,12 +9008,12 @@ text_373f4: asm_37407: ld hl, wca3f - ld de, wc9f0 + ld de, wPlayerMoveStructEffect ldh a, [hBattleTurn] and a jr z, asm_37418 ld hl, wca44 - ld de, wc9e9 + ld de, wEnemyMoveStructEffect asm_37418: ld a, [de] @@ -9351,18 +9268,18 @@ asm_37517: asm_3751b: ld a, 5 - ld [wcccd], a + ld [wNumHits], a ld c, 3 call DelayFrames ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f - ld hl, wca10 + ld hl, wBattleMonStatus ld de, wca3e ldh a, [hBattleTurn] and a jr z, asm_3753e - ld hl, wcde7 + ld hl, wEnemyMonStatus ld de, wca43 asm_3753e: @@ -9380,13 +9297,13 @@ asm_3753e: asm_37549: ldh a, [hBattleTurn] and a - ld a, [wcad7] - ld hl, wcac1 - ld de, wc9ef + ld a, [wCurEnemyMove] + ld hl, wCurPlayerSelectedMove + ld de, wPlayerMoveStruct jr z, asm_37560 - ld a, [wcad6] - ld de, wc9e8 - ld hl, wcac2 + ld a, [wCurPlayerMove] + ld de, wEnemyMoveStruct + ld hl, wCurEnemySelectedMove asm_37560: cp $77 @@ -9401,7 +9318,7 @@ asm_37567: asm_37570: ld [hl], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a dec a ld hl, Moves ld bc, 7 @@ -9414,9 +9331,9 @@ asm_37570: call sub_37f5f ldh a, [hBattleTurn] and a - ld a, [wc9f0] + ld a, [wPlayerMoveStructEffect] jr z, asm_3759a - ld a, [wc9e9] + ld a, [wEnemyMoveStructEffect] asm_3759a: call Function34046 @@ -9450,13 +9367,13 @@ text_375a0: asm_375b8: call sub_37f0f - ld de, wc9f0 - ld hl, wcac1 + ld de, wPlayerMoveStructEffect + ld hl, wCurPlayerSelectedMove ldh a, [hBattleTurn] and a jr z, asm_375cc - ld de, wc9e9 - ld hl, wcac2 + ld de, wEnemyMoveStructEffect + ld hl, wCurEnemySelectedMove asm_375cc: call BattleRandom @@ -9487,14 +9404,14 @@ asm_375ea: ld a, [hl] and a ret z - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Function3535c ret nc xor a ld [hl], a ld [de], a call sub_37637 - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld [hl], a ld [de], a jr asm_3762d @@ -9508,14 +9425,14 @@ asm_3760f: ld a, [hl] and a ret z - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Function3535c ret nc xor a ld [hl], a ld [de], a call sub_37649 - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ld [hl], a ld [de], a @@ -9527,22 +9444,22 @@ asm_3762d: sub_37637: ld hl, wPartyMon1Item - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes ld d, h ld e, l - ld hl, wca03 + ld hl, wBattleMonItem ret sub_37649: - ld hl, wd91c + ld hl, wOTPartyMon1Item ld a, [wca36] ld bc, $30 call AddNTimes ld d, h ld e, l - ld hl, wcdda + ld hl, wEnemyMonItem ret text_3765b: @@ -9609,12 +9526,12 @@ asm_376a0: asm_376a6: ld hl, wca40 - ld de, wcde7 + ld de, wEnemyMonStatus ldh a, [hBattleTurn] and a jr z, asm_376b7 ld hl, wca3b - ld de, wca10 + ld de, wBattleMonStatus asm_376b7: call sub_37e0d @@ -9653,22 +9570,22 @@ asm_376e0: asm_376e6: ld hl, wPartyMon1Status - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes ld d, h ld e, l - ld hl, wca10 + ld hl, wBattleMonStatus ldh a, [hBattleTurn] and a jr z, asm_3770d - ld hl, wd93b + ld hl, wOTPartyMon1Status ld a, [wca36] ld bc, $30 call AddNTimes ld d, h ld e, l - ld hl, wcde7 + ld hl, wEnemyMonStatus asm_3770d: bit 5, [hl] @@ -9711,8 +9628,8 @@ asm_37736: jr nz, asm_3777a set 1, [hl] call sub_37f0f - callab sub_3c7b0 - callab sub_3c75e + callfar sub_3c7b0 + callfar sub_3c75e ld hl, text_3775a jp PrintText @@ -10098,11 +10015,11 @@ asm_37936: and a jr nz, asm_37965 call sub_37f0f - ld hl, wc9e8 + ld hl, wEnemyMoveStruct ldh a, [hBattleTurn] and a jr z, asm_3794a - ld hl, wc9ef + ld hl, wPlayerMoveStruct asm_3794a: push af @@ -10181,19 +10098,19 @@ asm_379a4: ret asm_379a8: - ld a, [wca02] + ld a, [wBattleMonSpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData xor a ld [wMonType], a - callab Function5069e + callfar GetGender push af - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld a, 3 ld [wMonType], a - callab Function5069e + callfar GetGender push af pop bc ld a, c @@ -10238,27 +10155,29 @@ asm_37a0b: call sub_37f5f jp Function37499 -asm_37a11: +BattleCommand_HappinessPower:: push bc - ld hl, wca0e + ld hl, wBattleMonHappiness ldh a, [hBattleTurn] and a - jr z, asm_37a1d - ld hl, wcde5 + jr z, .got_happiness + ld hl, wEnemyMonHappiness -asm_37a1d: +.got_happiness: xor a - ldh [hQuotient], a - ldh [hQuotient + 1], a + ldh [hMultiplicand], a + ldh [hMultiplicand + 1], a ld a, [hl] - ldh [hQuotient + 2], a - ld a, $a - ldh [hPrintNumDivisor], a + ldh [hMultiplicand + 2], a + ld a, 10 + ldh [hMultiplier], a call Multiply - ld a, $19 - ldh [hPrintNumDivisor], a + + ld a, 25 + ldh [hDivisor], a ld b, 4 call Divide + ldh a, [hQuotient + 2] ld d, a pop bc @@ -10286,7 +10205,7 @@ asm_37a49: asm_37a55: xor a - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ld d, [hl] pop bc @@ -10295,16 +10214,16 @@ asm_37a55: asm_37a5f: pop bc ld a, 1 - ld [wca5c], a + ld [wBattleAnimParam], a call sub_37f0f ldh a, [hBattleTurn] push af xor 1 ldh [hBattleTurn], a - callab sub_3c7b0 + callfar sub_3c7b0 pop af ldh [hBattleTurn], a - callab sub_3c808 + callfar sub_3c808 jp asm_357a9 Data37a85: @@ -10316,25 +10235,25 @@ Data37a85: db $78 db $ff -asm_37a8c: +BattleCommand_FrustrationPower:: push bc - ld hl, wca0e + ld hl, wBattleMonHappiness ldh a, [hBattleTurn] and a - jr z, asm_37a98 - ld hl, wcde5 + jr z, .got_happiness + ld hl, wEnemyMonHappiness -asm_37a98: +.got_happiness: ld a, [hl] - cp $46 - ld d, $1e - jr nc, asm_37aa4 + cp 70 + ld d, 30 + jr nc, .happiness_higher_than_70 ld b, a - ld a, $64 + ld a, 100 sub b ld d, a -asm_37aa4: +.happiness_higher_than_70: pop bc ret @@ -10456,32 +10375,19 @@ asm_37b39: push de inc hl ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call sub_37f5f - ld hl, text_37b4c + ld hl, MagnitudeText call PrintText pop de pop bc ret -text_37b4c: - db $0 - db $9d - db $7 - db $95 - db $90 - db $ae - db $e3 - db $13 - db $50 - db $9 - db $37 - db $ce - db $11 - db $0 - db $e7 - db $e7 - db $58 +MagnitudeText: + text "マグニチュード@" + deciram wNamedObjectIndexBuffer, 1, 1 + text "!!" + prompt Data37b5d: db $d @@ -10519,7 +10425,7 @@ asm_37b81: inc de cp $ff jr z, asm_37b9c - ld a, [wcd41] + ld a, [wCurBattleMon] cp c jr z, asm_37b93 ld a, [hli] @@ -10531,7 +10437,7 @@ asm_37b81: asm_37b93: push bc - ld bc, $30 + ld bc, (wPartyMon2 - wPartyMon1) add hl, bc pop bc inc c @@ -10545,28 +10451,26 @@ asm_37b9c: call LoadStandardMenuHeader ld a, 2 ld [wcdb9], a - ld a, $36 - call Predef + predef PartyMenuInBattle_Setup asm_37bb1: jr c, asm_37bc2 - ld hl, wcd41 - ld a, [wWhichPokemon] + ld hl, wCurBattleMon + ld a, [wCurPartyMon] cp [hl] jr nz, asm_37bc9 - ld hl, text_37c69 + ld hl, BattleText_MonIsAlreadyOut call PrintText asm_37bc2: - ld a, $37 - call Predef + predef PartyMenuInBattle jr asm_37bb1 asm_37bc9: - callab HasMonFainted + callfar HasMonFainted jr z, asm_37bc2 call ClearPalettes - callab Function3e3a7 + callfar Function3e3a7 call CloseWindow call ClearSprites ld hl, wTileMap + 1 @@ -10576,15 +10480,15 @@ asm_37bc9: call GetSGBLayout call SetPalettes call sub_37c4c - callab asm_3da1c + callfar asm_3da1c jr asm_37c4b asm_37c02: ld a, [wBattleMode] dec a jr z, asm_37c63 - ld de, wd913 + 1 - ld hl, wd93d + ld de, wOTPartySpecies + ld hl, wOTPartyMon1HP ld bc, 0 asm_37c11: @@ -10616,10 +10520,10 @@ asm_37c2c: jr z, asm_37c63 call sub_37f0f call sub_37c4c - callab sub_3cd6e + callfar sub_3cd6e ld a, 1 - ld [wCountSetBitsResult], a - callab sub_3e2c6 + ld [wNumSetBits], a + callfar sub_3e2c6 asm_37c4b: ret @@ -10630,7 +10534,7 @@ sub_37c4c: ret z ld a, 1 ld [wFieldMoveSucceeded], a - callab sub_3df8b + callfar sub_3df8b xor a ld [wFieldMoveSucceeded], a ret @@ -10639,19 +10543,11 @@ asm_37c63: call sub_37f5f jp Function37499 -text_37c69: - db $1 - dw wEnemyMonNickname - db $0 - db $ca - db $d3 - db $b3 - db $33 - db $c3 - db $b2 - db $cf - db $bd - db $58 +BattleText_MonIsAlreadyOut: + text_from_ram wBattleMonNickname + text "はもうでています" + prompt + asm_37c76: ret @@ -10667,34 +10563,15 @@ asm_37c82: bit 5, [hl] ret z res 5, [hl] - ld hl, text_37c8e + ld hl, ReleasedByText call PrintText ret -text_37c8e: - db $0 - db $5a - db $ca - db $7f - db $59 - db $c9 - db $4f - db $ba - db $b3 - db $29 - db $b7 - db $b6 - db $d7 - db $7f - db $b6 - db $b2 - db $ce - db $b3 - db $bb - db $da - db $c0 - db $e7 - db $58 +ReleasedByText: + text "は の" + line "こうげきから かいほうされた!" + prompt + asm_37ca5: ld de, $0303 @@ -10709,7 +10586,7 @@ asm_37caf: asm_37cb2: push de - callab Function3c7f2 + callfar Function3c7f2 pop de ld a, [wTimeOfDay] cp d @@ -10717,7 +10594,7 @@ asm_37cb2: ld a, [wTimeOfDay] cp e jr z, asm_37cd0 - callab Function3c7d3 + callfar Function3c7d3 asm_37cd0: call BattleRandom @@ -10743,7 +10620,7 @@ asm_37cd0: push af xor 1 ldh [hBattleTurn], a - callab sub_3c808 + callfar sub_3c808 pop af ldh [hBattleTurn], a ld hl, text_37d0e @@ -10776,13 +10653,13 @@ asm_37d21: and a ret nz push bc - ld hl, wca08 - ld bc, wc9f2 + ld hl, wBattleMonDVs + ld bc, wPlayerMoveStructType ldh a, [hBattleTurn] and a jr z, asm_37d38 - ld hl, wcddf - ld bc, wc9eb + ld hl, wEnemyMonDVs + ld bc, wEnemyMoveStructType asm_37d38: push bc @@ -10905,12 +10782,12 @@ asm_37dd5: sub_37ddb: ldh a, [hBattleTurn] and a - ld hl, wca0a + ld hl, wBattleMonPP ld de, wPartyMon1PP ld a, [wcd40] jr z, asm_37df2 - ld hl, wcde1 - ld de, wd932 + ld hl, wEnemyMonPP + ld de, wOTPartyMon1PP ld a, [wcac7] asm_37df2: @@ -10923,9 +10800,9 @@ asm_37df2: add hl, bc ldh a, [hBattleTurn] and a - ld a, [wcd41] + ld a, [wCurBattleMon] jr z, asm_37e05 - ld a, [wcde7] + ld a, [wEnemyMonStatus] asm_37e05: ld bc, $30 @@ -10947,22 +10824,22 @@ asm_37e19: ret Function37e1d: - ld hl, wca03 + ld hl, wBattleMonItem ldh a, [hBattleTurn] and a jp z, asm_37e29 - ld hl, wcdda + ld hl, wEnemyMonItem asm_37e29: ld b, [hl] jp Function37e3d Function37e2d: - ld hl, wcdda + ld hl, wEnemyMonItem ldh a, [hBattleTurn] and a jp z, asm_37e39 - ld hl, wca03 + ld hl, wBattleMonItem asm_37e39: ld b, [hl] @@ -10974,7 +10851,7 @@ Function37e3d: ret z push hl push bc - ld hl, ItemAttributes + 3 + ld hl, ItemAttributes + ITEMATTR_PARAM dec a ld c, a ld b, 0 @@ -11002,13 +10879,13 @@ Function37e60: push bc ldh a, [hBattleTurn] and a - ld hl, wd91c - ld de, wcdda + ld hl, wOTPartyMon1Item + ld de, wEnemyMonItem ld a, [wca36] jr z, asm_37e7a ld hl, wPartyMon1Item - ld de, wca03 - ld a, [wcd41] + ld de, wBattleMonItem + ld a, [wCurBattleMon] asm_37e7a: push hl @@ -11082,7 +10959,7 @@ sub_37ec2: push hl push de push bc - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName ld hl, text_37ed5 call PrintText @@ -11117,17 +10994,17 @@ text_37ed5: sub_37eec: xor a - ld [wccc1], a + ld [wFXAnimID + 1], a ldh a, [hBattleTurn] and a - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] jr z, asm_37efb - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] asm_37efb: and a ret z - ld [wccc0], a + ld [wFXAnimID], a ldh a, [hBattleTurn] and a ld a, 6 @@ -11135,31 +11012,31 @@ asm_37efb: ld a, 3 asm_37f09: - ld [wcccd], a + ld [wNumHits], a jp asm_37f26 sub_37f0f: xor a - ld [wcccd], a - ld [wccc1], a + ld [wNumHits], a + ld [wFXAnimID + 1], a ldh a, [hBattleTurn] and a - ld a, [wc9ef] + ld a, [wPlayerMoveStruct] jr z, asm_37f21 - ld a, [wc9e8] + ld a, [wEnemyMoveStruct] asm_37f21: and a ret z sub_37f23: - ld [wccc0], a + ld [wFXAnimID], a asm_37f26: push hl push de push bc - callab PlayBattleAnim + callfar PlayBattleAnim pop bc pop de pop hl @@ -11167,11 +11044,11 @@ asm_37f26: sub_37f35: ld a, e - ld [wccc0], a + ld [wFXAnimID], a ld a, d - ld [wccc1], a + ld [wFXAnimID + 1], a xor a - ld [wcccd], a + ld [wNumHits], a push hl push de push bc @@ -11179,7 +11056,7 @@ sub_37f35: push af xor 1 ldh [hBattleTurn], a - callab PlayBattleAnim + callfar PlayBattleAnim pop af ldh [hBattleTurn], a pop bc diff --git a/engine/dumps/bank0f.asm b/engine/dumps/bank0f.asm index fda1d315..8cc879a9 100644 --- a/engine/dumps/bank0f.asm +++ b/engine/dumps/bank0f.asm @@ -8,7 +8,7 @@ StartBattle: ld [wFieldMoveSucceeded], a inc a ld [wce36], a - ld hl, wd93d + ld hl, wOTPartyMon1HP ld bc, $2f ld d, 3 .find_first_enemy_alive_loop @@ -48,29 +48,29 @@ StartBattle: and a jp nz, .asm_3c0d2 xor a - ld [wWhichPokemon], a + ld [wCurPartyMon], a .find_first_alive_loop call HasMonFainted jr nz, .found_first_alive - ld hl, wWhichPokemon + ld hl, wCurPartyMon inc [hl] jr .find_first_alive_loop .found_first_alive - ld a, [wWhichPokemon] - ld [wcd41], a + ld a, [wCurPartyMon] + ld [wCurBattleMon], a inc a ld hl, wPartyCount ld c, a ld b, 0 add hl, bc ld a, [hl] - ld [wMonDexIndex], a - ld [wcdd8], a + ld [wCurPartySpecies], a + ld [wTempBattleMonSpecies], a ld hl, $c305 ld a, 9 call sub_3cd3b call BackUpTilesToBuffer - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a ld b, 1 push bc @@ -114,7 +114,7 @@ StartBattle: jp PrintText call sub_3e81b - ld a, [wcdf2] + ld a, [wEnemyMonSpeed + 1] add a ld b, a jp c, asm_3c132 @@ -162,17 +162,17 @@ asm_3c14a: call PlaySFX xor a ldh [hBattleTurn], a - jpab Functioncc000 + jpfar Functioncc000 WildPokemonFledText: text "やせいの@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "は にげだした!" prompt EnemyPokemonFledText: text "てきの@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "は にげだした!" prompt @@ -247,24 +247,24 @@ asm_3c219: res 4, [hl] xor a ldh [hBattleTurn], a - ld hl, Data3dfdd + ld hl, BattleText_TargetsEncoreEnded call PrintText jr asm_3c246 asm_3c229: - ld a, [wcad6] + ld a, [wCurPlayerMove] and a jr z, asm_3c219 ld a, [wcd40] ld c, a ld b, 0 - ld hl, wca0a + ld hl, wBattleMonPP add hl, bc ld a, [hl] - and $3f + and $3f ; Power points? jr z, asm_3c219 - ld a, [wcad6] - ld [wcac1], a + ld a, [wCurPlayerMove] + ld [wCurPlayerSelectedMove], a jr asm_3c269 asm_3c246: @@ -277,7 +277,7 @@ asm_3c246: xor a ld [wcac0], a inc a - ld [wccc0], a + ld [wFXAnimID], a call Function3daa7 push af call ReloadTilesFromBuffer @@ -288,8 +288,8 @@ asm_3c246: asm_3c269: xor a ldh [hBattleTurn], a - callab Function360b1 - ld a, [wc9f0] + callfar Function360b1 + ld a, [wPlayerMoveStructEffect] cp $77 jr z, asm_3c285 xor a @@ -318,50 +318,50 @@ asm_3c285: bit 5, a jr z, asm_3c2bb ld a, [wcd40] - ld hl, wca04 + ld hl, wBattleMonMoves ld c, a ld b, 0 add hl, bc ld a, [hl] cp $76 jr nz, asm_3c2bb - ld [wcac1], a + ld [wCurPlayerSelectedMove], a asm_3c2bb: - callab Function38220 + callfar Function38220 ld a, 1 ldh [hBattleTurn], a call Function3d3a2 jp asm_3c3c7 asm_3c2cd: - ld a, [wcac1] + ld a, [wCurPlayerSelectedMove] call sub_3c3b8 cp $67 jr nz, asm_3c2e4 - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] call sub_3c3b8 cp $67 jr z, asm_3c311 jp asm_3c41d asm_3c2e4: - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] call sub_3c3b8 cp $67 jp z, asm_3c3c7 - ld a, [wcac1] + ld a, [wCurPlayerSelectedMove] call sub_3c3b8 cp $59 jr nz, asm_3c306 - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] call sub_3c3b8 cp $59 jr z, asm_3c311 jp asm_3c3c7 asm_3c306: - ld a, [wcac2] + ld a, [wCurEnemySelectedMove] call sub_3c3b8 cp $59 jp z, asm_3c41d @@ -369,9 +369,9 @@ asm_3c306: asm_3c311: xor a ldh [hBattleTurn], a - callab Function37e1d + callfar Function37e1d push bc - callab Function37e2d + callfar Function37e2d pop de ld a, d cp $4a @@ -415,8 +415,8 @@ asm_3c35d: jr asm_3c36d asm_3c36d: - ld de, wca1a - ld hl, wcdf1 + ld de, wBattleMonSpeed + ld hl, wEnemyMonSpeed ld c, 2 call memcmp jr z, asm_3c37f @@ -469,9 +469,9 @@ sub_3c3b8: asm_3c3c7: ld a, 1 ldh [hBattleTurn], a - callab Function38000 + callfar Function38000 jr c, asm_3c3eb - callab Function3401c + callfar Function3401c call sub_3c473 ld a, [wce06] and a @@ -483,7 +483,7 @@ asm_3c3eb: call sub_3c498 jp z, asm_3c883 call DrawHUDsAndHPBars - callab Function34000 + callfar Function34000 call sub_3c473 ld a, [wce06] and a @@ -499,7 +499,7 @@ asm_3c3eb: jp asm_3c183 asm_3c41d: - callab Function34000 + callfar Function34000 call sub_3c473 ld a, [wce06] and a @@ -511,9 +511,9 @@ asm_3c41d: call DrawHUDsAndHPBars ld a, 1 ldh [hBattleTurn], a - callab Function38000 + callfar Function38000 jr c, asm_3c460 - callab Function3401c + callfar Function3401c call sub_3c473 ld a, [wce06] and a @@ -548,11 +548,11 @@ asm_3c484: ret sub_3c48d: - ld hl, wcde9 + ld hl, wEnemyMonHP jr asm_3c495 sub_3c492: - ld hl, wca12 + ld hl, wBattleMonHP asm_3c495: ld a, [hli] @@ -560,11 +560,11 @@ asm_3c495: ret sub_3c498: - ld hl, wca10 + ld hl, wBattleMonStatus ldh a, [hBattleTurn] and a jr z, asm_3c4a3 - ld hl, wcde7 + ld hl, wEnemyMonStatus asm_3c4a3: ld a, [hl] @@ -582,7 +582,7 @@ asm_3c4b8: call PrintText pop de xor a - ld [wcccd], a + ld [wNumHits], a call PlayMoveAnimation call sub_3c78b ld hl, wca3f @@ -626,7 +626,7 @@ asm_3c4f6: xor 1 ldh [hBattleTurn], a xor a - ld [wcccd], a + ld [wNumHits], a ld de, $0107 call PlayMoveAnimation pop af @@ -648,7 +648,7 @@ asm_3c528: bit 0, [hl] jr z, asm_3c542 xor a - ld [wcccd], a + ld [wNumHits], a ld de, $010c call PlayMoveAnimation call sub_3c7b0 @@ -667,7 +667,7 @@ asm_3c54d: bit 1, [hl] jr z, asm_3c567 xor a - ld [wcccd], a + ld [wNumHits], a ld de, $010c call PlayMoveAnimation call sub_3c7b0 @@ -690,7 +690,7 @@ asm_3c572: xor 1 ldh [hBattleTurn], a xor a - ld [wcccd], a + ld [wNumHits], a ld de, $010b call PlayMoveAnimation pop af @@ -701,11 +701,11 @@ asm_3c572: call PrintText asm_3c596: - ld hl, wca12 + ld hl, wBattleMonHP ldh a, [hBattleTurn] and a jr z, asm_3c5a1 - ld hl, wcde9 + ld hl, wEnemyMonHP asm_3c5a1: ld a, [hli] @@ -783,7 +783,7 @@ asm_3c651: ld a, [de] dec a ld [de], a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a push af push hl ld hl, PerishCountText @@ -795,12 +795,12 @@ asm_3c651: ldh a, [hBattleTurn] and a jr nz, asm_3c682 - ld hl, wca12 + ld hl, wBattleMonHP xor a ld [hli], a ld [hl], a ld hl, wPartyMon1HP - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes xor a @@ -809,14 +809,14 @@ asm_3c651: ret asm_3c682: - ld hl, wcde9 + ld hl, wEnemyMonHP xor a ld [hli], a ld [hl], a ld a, [wBattleMode] dec a ret z - ld hl, wd93d + ld hl, wOTPartyMon1HP ld a, [wca36] ld bc, $30 call AddNTimes @@ -828,7 +828,7 @@ asm_3c682: PerishCountText: text "の ほろびの" line "カウントが @" - deciram wCountSetBitsResult, 1, 1 + deciram wNumSetBits, 1, 1 text "になった!" prompt @@ -914,11 +914,11 @@ SunlightFadedText: prompt sub_3c75e: - ld hl, wca12 + ld hl, wBattleMonHP ldh a, [hBattleTurn] and a jr z, asm_3c769 - ld hl, wcde9 + ld hl, wEnemyMonHP asm_3c769: inc hl @@ -944,11 +944,11 @@ asm_3c787: ret sub_3c78b: - ld hl, wca14 + ld hl, wBattleMonMaxHP ldh a, [hBattleTurn] and a jr z, asm_3c796 - ld hl, wcdeb + ld hl, wEnemyMonMaxHP asm_3c796: ld a, [hli] @@ -971,11 +971,11 @@ asm_3c7af: ret sub_3c7b0: - ld hl, wca14 + ld hl, wBattleMonMaxHP ldh a, [hBattleTurn] and a jr z, .asm_3c7bb - ld hl, wcdeb + ld hl, wEnemyMonMaxHP .asm_3c7bb ld a, [hli] ld [wMapBlocksAddress], a @@ -995,11 +995,11 @@ sub_3c7b0: ret Function3c7d3: - ld hl, wca14 + ld hl, wBattleMonMaxHP ldh a, [hBattleTurn] and a jr z, .asm_3c7de - ld hl, wcdeb + ld hl, wEnemyMonMaxHP .asm_3c7de ld a, [hli] ld [wMapBlocksAddress], a @@ -1017,11 +1017,11 @@ Function3c7d3: ret Function3c7f2: - ld hl, wca14 + ld hl, wBattleMonMaxHP ldh a, [hBattleTurn] and a jr z, .asm_3c7fd - ld hl, wcdeb + ld hl, wEnemyMonMaxHP .asm_3c7fd ld a, [hli] ld [wMapBlocksAddress], a @@ -1032,11 +1032,11 @@ Function3c7f2: ret sub_3c808: - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ldh a, [hBattleTurn] and a jr z, asm_3c813 - ld hl, wca14 + ld hl, wBattleMonMaxHP asm_3c813: ld a, [hli] @@ -1091,7 +1091,7 @@ sub_3c854: asm_3c862: push bc - ld [wHPBarType], a + ld [wWhichHPBar], a predef UpdateHPBar pop bc ret @@ -1119,7 +1119,7 @@ asm_3c883: ld a, d and a jp z, asm_3cc56 - ld hl, wca12 + ld hl, wBattleMonHP ld a, [hli] or [hl] call nz, Function3d5ce @@ -1130,7 +1130,7 @@ asm_3c883: ret z call sub_3c9ad jp z, asm_3c9fd - ld hl, wca12 + ld hl, wBattleMonHP ld a, [hli] or [hl] jr nz, asm_3c8b8 @@ -1153,7 +1153,7 @@ sub_3c8ca: dec a jr z, asm_3c8e2 ld a, [wca36] - ld hl, wd93d + ld hl, wOTPartyMon1HP ld bc, $30 call AddNTimes xor a @@ -1178,7 +1178,7 @@ asm_3c8e2: ld [wca50], a ld [wcad4], a ld [wcad8], a - ld hl, wcad6 + ld hl, wCurPlayerMove ld [hli], a ld [hl], a ld hl, $c310 @@ -1208,7 +1208,7 @@ asm_3c935: call sub_3cae1 asm_3c93d: - ld hl, wca12 + ld hl, wBattleMonHP ld a, [hli] or [hl] jr nz, asm_3c94d @@ -1232,7 +1232,7 @@ asm_3c94d: call Function32c8 push af jr z, asm_3c976 - ld hl, wcdf9 + ld hl, wEnemyMonBaseStats ld b, 7 asm_3c970: @@ -1263,7 +1263,7 @@ asm_3c989: EnemyMonFainted: text "てきの @" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "は たおれた!" prompt @@ -1273,10 +1273,10 @@ sub_3c9a8: ret sub_3c9ad: - ld a, [wd913] + ld a, [wOTPartyCount] ld b, a xor a - ld hl, wd93d + ld hl, wOTPartyMon1HP ld de, $30 asm_3c9b8: @@ -1294,7 +1294,7 @@ sub_3c9c2: ld hl, wccd2 ld e, $30 call sub_3d723 - callab Function3834e + callfar Function3834e ld a, [wLinkMode] and a jr z, asm_3c9e4 @@ -1311,7 +1311,7 @@ asm_3c9e4: ldh [hBattleTurn], a call Function3d3a2 xor a - ld [wc9e8], a + ld [wEnemyMoveStruct], a ld [wFieldMoveSucceeded], a ld [wcaba], a inc a @@ -1338,7 +1338,7 @@ asm_3ca18: and a ld a, b call z, sub_3cae1 - callab Function390e9 + callfar Function390e9 ld hl, TrainerDefeatedText call PrintText ld a, [wLinkMode] @@ -1352,12 +1352,12 @@ asm_3ca18: jr nz, asm_3ca51 ld hl, RivalLossText call PrintText - callab HealParty + callfar HealParty asm_3ca51: - ld a, [wca03] + ld a, [wBattleMonItem] ld b, a - callab Function37e3d + callfar Function37e3d ld a, b cp $4c jr nz, asm_3ca74 @@ -1374,7 +1374,7 @@ asm_3ca51: ld [hl], a asm_3ca74: - ld de, wd15f + ld de, wMoney + 2 ld hl, wca5b ld c, 3 and a @@ -1430,7 +1430,7 @@ asm_3caf3: ld a, d and a jp z, asm_3cc56 - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] or [hl] jr nz, asm_3cb18 @@ -1455,7 +1455,7 @@ asm_3cb18: jp asm_3c183 sub_3cb34: - ld a, [wcd41] + ld a, [wCurBattleMon] ld c, a ld hl, wca37 ld b, 0 @@ -1473,8 +1473,8 @@ asm_3cb56: ld hl, wTrainerClass ld [hli], a ld [hl], a - ld [wca10], a - ld [wca11], a + ld [wBattleMonStatus], a + ld [wBattleMonStatus + 1], a call sub_3d3f4 ld hl, $c335 ld bc, $050b @@ -1489,13 +1489,13 @@ asm_3cb56: ret z ld a, $f0 ld [wCryTracks], a - ld a, [wca02] + ld a, [wBattleMonSpecies] call PlayStereoCry ld hl, FaintedText jp PrintText FaintedText: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text "は たおれた!" prompt @@ -1522,7 +1522,7 @@ asm_3cbbc: cp 1 jr z, asm_3cbaf ld hl, wPartyMon1Speed - ld de, wcdf1 + ld de, wEnemyMonSpeed jp TryRunningFromBattle UseNextMonText: @@ -1533,13 +1533,13 @@ sub_3cbdb: call LoadStandardMenuHeader ld a, 2 ld [wcdb9], a - predef Function50771 + predef PartyMenuInBattle_Setup asm_3cbe8: jr nc, asm_3cbf1 asm_3cbea: - predef Function50774 + predef PartyMenuInBattle jr asm_3cbe8 asm_3cbf1: @@ -1556,8 +1556,8 @@ asm_3cc04: xor a ld [wFieldMoveSucceeded], a call ClearSprites - ld a, [wWhichPokemon] - ld [wcd41], a + ld a, [wCurPartyMon] + ld [wCurBattleMon], a ld c, a ld hl, wca37 ld b, 1 @@ -1581,7 +1581,7 @@ asm_3cc04: xor a ldh [hBattleTurn], a call Function3d3a2 - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] or [hl] ret @@ -1601,7 +1601,7 @@ asm_3cc56: call DelayFrames ld hl, RivalWinText call PrintText - callab HealParty + callfar HealParty ret asm_3cc83: @@ -1739,7 +1739,7 @@ sub_3cd6e: ld hl, wca37 xor a ld [hl], a - ld a, [wcd41] + ld a, [wCurBattleMon] ld c, a ld b, 1 push bc @@ -1750,7 +1750,7 @@ sub_3cd6e: pop bc predef SmallFarFlagAction xor a - ld hl, wcad6 + ld hl, wCurPlayerMove ld [hli], a ld [hl], a dec a @@ -1784,13 +1784,13 @@ FindMonInOTPartyToSwitchIntoBattle: inc hl sla [hl] inc b - ld a, [wd913] + ld a, [wOTPartyCount] cp b jp z, ScoreMonTypeMatchups ld a, [wca36] cp b jr z, .discourage - ld hl, wd93d + ld hl, wOTPartyMon1HP push bc ld a, b ld bc, $30 @@ -1812,7 +1812,7 @@ FindMonInOTPartyToSwitchIntoBattle: LookUpTheEffectivenessOfEveryMove: push bc - ld hl, wd91d + ld hl, wOTPartyMon1Moves ld a, b ld bc, $30 call AddNTimes @@ -1831,16 +1831,16 @@ LookUpTheEffectivenessOfEveryMove: ld hl, Moves ld bc, 7 call AddNTimes - ld de, wc9e8 + ld de, wEnemyMoveStruct ld a, BANK(Moves) call FarCopyBytes ld a, 1 ldh [hBattleTurn], a - callab Function34fff + callfar Function34fff pop bc pop de pop hl - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] cp $b jr c, .loop ld hl, wEnemyEffectivenessVsPlayerMons @@ -1851,7 +1851,7 @@ LookUpTheEffectivenessOfEveryMove: IsThePlayerMonTypesEffectiveAgainstOTMon: push bc - ld hl, wd913 + ld hl, wOTPartyCount ld a, b inc a ld c, a @@ -1862,22 +1862,22 @@ IsThePlayerMonTypesEffectiveAgainstOTMon: ld hl, asm_3cf17 ld bc, $1f call AddNTimes - ld de, wcdf7 + ld de, wEnemyMonType ld bc, 2 ld a, $14 call FarCopyBytes - ld a, [wca20] - ld [wc9f2], a + ld a, [wBattleMonType1] + ld [wPlayerMoveStructType], a xor a ldh [hBattleTurn], a - callab Function34fff - ld a, [wCountSetBitsResult] + callfar Function34fff + ld a, [wNumSetBits] cp $b jr nc, .super_effective - ld a, [wca21] - ld [wc9f2], a - callab Function34fff - ld a, [wCountSetBitsResult] + ld a, [wBattleMonType2] + ld [wPlayerMoveStructType], a + callfar Function34fff + ld a, [wNumSetBits] cp $b jr nc, .super_effective pop bc @@ -1903,7 +1903,7 @@ ScoreMonTypeMatchups: inc hl sla [hl] jr nc, .loop1 - ld a, [wd913] + ld a, [wOTPartyCount] ld b, a ld c, [hl] .loop2 @@ -1944,7 +1944,7 @@ asm_3ced8: ld a, [wca36] cp b jr z, asm_3ced8 - ld hl, wd93d + ld hl, wOTPartyMon1HP push bc ld a, b ld bc, $30 @@ -1958,25 +1958,25 @@ asm_3ced8: asm_3cefa: ld a, b - ld [wWhichPokemon], a - ld hl, wd93a + ld [wCurPartyMon], a + ld hl, wOTPartyMon1Level ld bc, $30 call AddNTimes ld a, [hl] ld [wCurPartyLevel], a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] inc a - ld hl, wd913 + ld hl, wOTPartyCount ld c, a ld b, 0 add hl, bc ld a, [hl] asm_3cf17: - ld [wcdd7], a - ld [wMonDexIndex], a + ld [wTempEnemyMonSpecies], a + ld [wCurPartySpecies], a call AddPokemonToBox - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] ld [wcac8], a ld a, [hl] @@ -1995,7 +1995,7 @@ asm_3cf17: ld a, [wce5f] bit 6, a jr nz, EnemySendOutFirstMon - callab Function390e9 + callfar Function390e9 ld hl, TrainerAboutToUseText call PrintText ld bc, $0107 @@ -2005,21 +2005,21 @@ asm_3cf17: jr nz, EnemySendOutFirstMon ld a, 2 ld [wcdb9], a - predef Function50771 + predef PartyMenuInBattle_Setup asm_3cf6d: ld a, 1 ld [wMenuCursorY], a jr c, asm_3cf93 - ld hl, wcd41 - ld a, [wWhichPokemon] + ld hl, wCurBattleMon + ld a, [wCurPartyMon] cp [hl] jr nz, asm_3cf8a ld hl, IsAlreadyOutText call PrintText asm_3cf83: - predef Function50774 + predef PartyMenuInBattle jr asm_3cf6d asm_3cf8a: @@ -2041,28 +2041,28 @@ EnemySendOutFirstMon: ld b, 1 call GetSGBLayout call SetPalettes - callab Function390e9 + callfar Function390e9 ld hl, TrainerSentOutText call PrintText - ld a, [wcdd7] - ld [wMonDexIndex], a + ld a, [wTempEnemyMonSpecies] + ld [wCurPartySpecies], a ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld a, 1 ld [wMonType], a - predef Function50000 - ld hl, wcd94 - predef Function50ed9 + predef CopyMonToTempMon + ld hl, wTempMonDVs + predef GetUnownLetter ld de, vFrontPic call LoadMonFrontSprite xor a - ld [wcccd], a + ld [wNumHits], a inc a ldh [hBattleTurn], a ; Play shiny animation for Sunflora and Pikachu ld b, 1 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] cp DEX_SUNNY jr z, .apply_animation cp DEX_PIKACHU @@ -2078,12 +2078,12 @@ EnemySendOutFirstMon: .apply_animation ld a, b - ld [wca5c], a + ld [wBattleAnimParam], a ld de, $0101 call PlayMoveAnimation ld a, $f ld [wCryTracks], a - ld a, [wcdd7] + ld a, [wTempEnemyMonSpecies] call PlayStereoCry call Function3d67c ld a, [wMenuCursorY] @@ -2100,7 +2100,7 @@ TrainerAboutToUseText: text "の @" text_from_ram wStringBuffer1 text "は" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "を くりだそうと している" para "も #を" @@ -2113,13 +2113,13 @@ TrainerSentOutText: text_from_ram wStringBuffer1 text "は" line "@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "を くりだした!" done sub_3d071: xor a - ld hl, wcad7 + ld hl, wCurEnemyMove ld [hli], a ld [hl], a ld hl, wca40 @@ -2151,9 +2151,9 @@ AnyPartyAlive: ret HasMonFainted: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMon1HP - ld bc, $30 + ld bc, (wPartyMon2 - wPartyMon1) call AddNTimes ld a, [hli] or [hl] @@ -2161,13 +2161,13 @@ HasMonFainted: ld a, [wce36] and a jr nz, .has_hp - ld hl, NoWillText + ld hl, BattleText_TheresNoWillToBattle call PrintText .has_hp xor a ret -NoWillText: +BattleText_TheresNoWillToBattle: text "たたかう きりょくが ない!" prompt @@ -2186,10 +2186,10 @@ TryRunningFromBattle: jp nz, .cannot_escape push hl push de - ld a, [wca03] - ld [wCountSetBitsResult], a + ld a, [wBattleMonItem] + ld [wNumSetBits], a ld b, a - callab Function37e3d + callfar Function37e3d ld a, b cp $48 pop de @@ -2330,38 +2330,43 @@ EscapedUsingItemText: prompt LoadBattleMonFromParty: - ld a, [wWhichPokemon] - ld bc, $30 - ld hl, wPartyMon1Species + ld a, [wCurPartyMon] + ld bc, PARTYMON_STRUCT_LENGTH + ld hl, wPartyMon1 call AddNTimes - ld de, wca02 - ld bc, 6 + ; Copy species, held item, and move + ld de, wBattleMon + ld bc, (wPartyMon1ID - wPartyMon1Species) ; 6 call CopyBytes - ld bc, $f + ; Skip ID, experience, and stat experience + ld bc, (wPartyMon1DVs - wPartyMon1ID) ; 15 add hl, bc - ld de, wca08 - ld bc, 7 + ; Copy DVs, PP, and happiness + ld de, wBattleMonDVs + ld bc, (wPartyMon1PokerusStatus - wPartyMon1DVs) ; 7 call CopyBytes + ; Copy level, status, current and max HP, and stats inc hl inc hl inc hl - ld de, wca0f - ld bc, $11 + ld de, wBattleMonLevel + ld bc, (wPartyMon1StatsEnd - wPartyMon1Level) ; 17 call CopyBytes - ld a, [wcdd8] + ; Copy both types + ld a, [wTempBattleMonSpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld a, [wMonHType1] - ld [wca20], a + ld [wBattleMonType1], a ld a, [wMonHType2] - ld [wca21], a + ld [wBattleMonType2], a ld hl, wPartyMonNicknames - ld a, [wcd41] + ld a, [wCurBattleMon] call SkipNames - ld de, wEnemyMonNickname + ld de, wBattleMonNickname ld bc, 6 call CopyBytes - ld hl, wca16 + ld hl, wBattleMonStats ld de, wca93 ld bc, $a call CopyBytes @@ -2369,7 +2374,7 @@ LoadBattleMonFromParty: call sub_3e360 xor a ldh [hBattleTurn], a - callab Function95cc + callfar Function95cc ret ApplyStatMods: @@ -2383,47 +2388,47 @@ ApplyStatMods: ret LoadEnemyMonFromParty: - ld a, [wWhichPokemon] - ld bc, $30 - ld hl, wWildMons + ld a, [wCurPartyMon] + ld bc, PARTYMON_STRUCT_LENGTH + ld hl, wOTPartyMons call AddNTimes - ld de, wcdd9 + ld de, wEnemyMon ld bc, 6 call CopyBytes ld bc, $f add hl, bc - ld de, wcddf + ld de, wEnemyMonDVs ld bc, 7 call CopyBytes inc hl inc hl inc hl - ld de, wcde6 + ld de, wEnemyMonLevel ld bc, $11 call CopyBytes - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wCurSpecies], a - call GetMonHeader - ld hl, wda5f - ld a, [wWhichPokemon] + call GetBaseData + ld hl, wOTPartyMonNicknames + ld a, [wCurPartyMon] call SkipNames - ld de, wBattleMonNickname + ld de, wEnemyMonNickname ld bc, 6 call CopyBytes - ld hl, wcded + ld hl, wEnemyMonStats ld de, wca9e ld bc, $a call CopyBytes call sub_3e24b ld hl, wMonHType1 - ld de, wcdf7 + ld de, wEnemyMonType1 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a ld hl, wMonHBaseStats - ld de, wcdf9 + ld de, wEnemyMonBaseStats ld b, 5 .base_stats_loop ld a, [hli] @@ -2438,33 +2443,32 @@ LoadEnemyMonFromParty: ld [hli], a dec b jr nz, .stat_mod_loop - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld [wca36], a ret Function3d32e: - ld hl, wca08 - predef Function50ed9 - ld a, $21 - call Predef + ld hl, wBattleMonDVs + predef GetUnownLetter + predef Function3f04a xor a ldh [hGraphicStartTile], a ld hl, wStartmenuCursor ld [hli], a ld [hl], a ld [wca38], a - ld [wc9ef], a + ld [wPlayerMoveStruct], a ld b, 1 call GetSGBLayout ld hl, wEnemySubStatus3 res 5, [hl] xor a ldh [hBattleTurn], a - ld [wcccd], a + ld [wNumHits], a ; Play shiny animation for Sunflora and Pikachu ld b, 1 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] cp DEX_SUNNY jr z, .apply_animation cp DEX_PIKACHU @@ -2480,21 +2484,21 @@ Function3d32e: .apply_animation ld a, b - ld [wca5c], a + ld [wBattleAnimParam], a ld de, $0101 call PlayMoveAnimation ; mon on the left side ld a, $f0 ld [wCryTracks], a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] call PlayStereoCry call Function3d5ce ret sub_3d387: xor a - ld hl, wcad6 + ld hl, wCurPlayerMove ld [hli], a ld [hl], a ld hl, wca3b @@ -2511,12 +2515,12 @@ sub_3d387: Function3d3a2: ld hl, wcadd - ld de, wca20 + ld de, wBattleMonType ldh a, [hBattleTurn] and a jr z, asm_3d3b3 ld hl, wcade - ld de, wcdf7 + ld de, wEnemyMonType asm_3d3b3: bit 0, [hl] @@ -2544,7 +2548,7 @@ sub_3d3e1: push af xor a ldh [hBattleTurn], a - ld [wcccd], a + ld [wNumHits], a ld de, $0102 call PlayMoveAnimation pop af @@ -2552,13 +2556,13 @@ sub_3d3e1: ret sub_3d3f4: - ld a, [wcd41] + ld a, [wCurBattleMon] ld hl, wPartyMon1Level ld bc, $30 call AddNTimes ld d, h ld e, l - ld hl, wca0f + ld hl, wBattleMonLevel ld bc, 5 jp CopyBytes @@ -2594,17 +2598,17 @@ sub_3d42d: ret sub_3d43b: - callab Function37e2d + callfar Function37e2d ld a, b cp 1 ret nz - ld de, wcdea - ld hl, wcdec + ld de, wEnemyMonHP + 1 + ld hl, wEnemyMonMaxHP + 1 ldh a, [hBattleTurn] and a jr z, asm_3d458 - ld de, wca13 - ld hl, wIntroTilesPointer + ld de, wBattleMonHP + 1 + ld hl, wBattleMonMaxHP + 1 asm_3d458: push bc @@ -2656,36 +2660,35 @@ asm_3d492: ld [de], a call sub_3d4d4 ldh a, [hBattleTurn] - ld [wHPBarType], a + ld [wWhichHPBar], a and a ld hl, $c2ca jr z, asm_3d4ac ld hl, $c35e asm_3d4ac: - ld [wHPBarType], a + ld [wWhichHPBar], a predef UpdateHPBar call DrawHUDsAndHPBars - callab Function37e2d + callfar Function37e2d ld a, [hl] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call GetItemName - callab Function37e60 + callfar Function37e60 ld hl, RecoveredWithItemText jp PrintText sub_3d4d4: ld a, $69 - ld [wccc0], a + ld [wFXAnimID], a ldh a, [hBattleTurn] push af xor 1 ldh [hBattleTurn], a xor a - ld [wcccd], a - ld [wccc1], a - ld a, $51 - call Predef + ld [wNumHits], a + ld [wFXAnimID + 1], a + predef PlayBattleAnim pop af ldh [hBattleTurn], a ret @@ -2712,22 +2715,22 @@ asm_3d518: sub_3d51f: ld hl, wPartyMon1Item - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes - ld bc, wca03 - ld de, wc9ef + ld bc, wBattleMonItem + ld de, wPlayerMoveStruct ld a, 0 call sub_3d54f ret sub_3d537: - ld hl, wd91c + ld hl, wOTPartyMon1Item ld a, [wca36] ld bc, $30 call AddNTimes - ld bc, wcdda - ld de, wc9e8 + ld bc, wEnemyMonItem + ld de, wEnemyMoveStruct ld a, 1 call sub_3d54f ret @@ -2738,7 +2741,7 @@ sub_3d54f: push bc ld a, [bc] ld b, a - callab Function37e3d + callfar Function37e3d ld hl, Data3d59f asm_3d560: @@ -2750,7 +2753,7 @@ asm_3d560: jr nz, asm_3d560 pop bc ld a, [bc] - ld [wCountSetBitsResult], a + ld [wNumSetBits], a xor a ld [bc], a dec hl @@ -2774,7 +2777,7 @@ asm_3d560: push de ld a, b ld [de], a - callab Function365bf + callfar Function365bf pop de pop af ld [de], a @@ -2812,54 +2815,52 @@ DrawHUDsAndHPBars: Function3d5ce: xor a ldh [hBGMapMode], a - ld hl, $c335 + hlcoord 9, 7 ld bc, $050b call ClearBox - callab Function383cd - ld hl, $c366 + callfar Function383cd + hlcoord 18, 9 ld [hl], $73 - ld de, wEnemyMonNickname - ld hl, $c34a + ld de, wBattleMonNickname + hlcoord 10, 8 call sub_3d72f call PlaceString push bc - ld hl, wca02 - ld de, wcd7f + ld hl, wBattleMon + ld de, wTempMon ld bc, 6 call CopyBytes - ld hl, wca0f - ld de, wLoadedMonLevel + ld hl, wBattleMonLevel + ld de, wTempMonLevel ld bc, $11 call CopyBytes - ld a, [wcd7f] + ld a, [wTempMonSpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData pop hl push hl inc hl - ld de, wcd9f - ld a, $34 - call Predef + ld de, wTempMonStatus + predef Function50b92 pop hl jr nz, asm_3d626 call PrintLevel asm_3d626: - ld a, [wcd7f] - ld [wMonDexIndex], a + ld a, [wTempMonSpecies] + ld [wCurPartySpecies], a ld hl, $c35e ld b, 1 - ld a, $3c - call Predef + predef DrawPlayerHP push de - ld a, [wcd41] + ld a, [wCurBattleMon] ld hl, wPartyMon1Exp + 2 ld bc, $30 call AddNTimes ld d, h ld e, l ld hl, $c386 - ld a, [wLoadedMonLevel] + ld a, [wTempMonLevel] ld b, a call Function3e874 ld a, 1 @@ -2867,7 +2868,7 @@ asm_3d626: pop de ld hl, wccd1 call sub_3d723 - ld hl, wca12 + ld hl, wBattleMonHP ld a, [hli] or [hl] jr z, asm_3d66d @@ -2893,29 +2894,28 @@ asm_3d676: Function3d67c: xor a ldh [hBGMapMode], a - ld hl, $c2a1 + hlcoord 1, 0 ld bc, $040b call ClearBox - callab Function383fd - ld de, wBattleMonNickname - ld hl, $c2b6 + callfar Function383fd + ld de, wEnemyMonNickname + hlcoord 2, 1 call sub_3d72f call PlaceString ld h, b ld l, c push hl inc hl - ld de, wcde7 - ld a, $34 - call Predef + ld de, wEnemyMonStatus + predef Function50b92 pop hl jr nz, asm_3d6b4 - ld a, [wcde6] - ld [wLoadedMonLevel], a + ld a, [wEnemyMonLevel] + ld [wTempMonLevel], a call PrintLevel asm_3d6b4: - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] ldh [hMultiplicand + 1], a ld a, [hld] @@ -2933,7 +2933,7 @@ asm_3d6c7: ld a, $30 ldh [hPrintNumDivisor], a call Multiply - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld a, [hli] ld b, a ld a, [hl] @@ -2974,7 +2974,7 @@ asm_3d6fb: asm_3d710: xor a - ld [wHPBarType], a + ld [wWhichHPBar], a ld hl, $c2ca ld b, 0 call DrawBattleHPBar @@ -3024,49 +3024,49 @@ DisplayBattleMenu: call BackUpTilesToBuffer .menu_loop: - callab asm_24b06 + callfar LoadBattleMenu jr c, .menu_loop ld a, [wStartmenuCursor] cp 1 - jp z, .attack_menu + jp z, BattleMenu_Fight cp 2 - jp z, .item_menu + jp z, BattleMenu_Pack cp 3 - jp z, Battle_PartyMenu + jp z, BattleMenu_PKMN cp 4 - jp z, Battle_PickedRun + jp z, BattleMenu_Run jr .menu_loop -.attack_menu: +BattleMenu_Fight: xor a - ld [wce39], a + ld [wNumFleeAttempts], a call ReloadTilesFromBuffer and a ret -.item_menu: +BattleMenu_Pack: ld a, [wLinkMode] and a - jp nz, .cant_use_gear + jp nz, .ItemsCantBeUsed call LoadStandardMenuHeader - callab GetPocket2Status + callfar GetPocket2Status xor a ld [wSelectedSwapPosition], a call ClearPalettes - callab DrawBackpack + callfar DrawBackpack .item_menu_loop xor a ldh [hBGMapMode], a call ClearSprites - ld hl, $c2ca + hlcoord 2, 2 ld b, 8 - ld c, $f + ld c, 15 call DrawTextBox call Call_DebugBackpackLoop - jr c, .exit_item_menu - call sub_3d84e - ld a, [wFieldMoveSucceeded] + jr c, .didnt_use_item + call BattleMenuPack_SelectItem + ld a, [wItemEffectSucceeded] and a jr z, .item_menu_loop call Call_LoadBattleGraphics @@ -3096,7 +3096,7 @@ DisplayBattleMenu: scf ret -.exit_item_menu +.didnt_use_item call ClearPalettes call DelayFrame call Call_LoadBattleGraphics @@ -3105,12 +3105,12 @@ DisplayBattleMenu: call SetPalettes jp DisplayBattleMenu -.cant_use_gear - ld hl, CantUseGearText +.ItemsCantBeUsed + ld hl, BattleText_ItemsCantBeUsedHere call PrintText jp DisplayBattleMenu -CantUseGearText: +BattleText_ItemsCantBeUsedHere: text "ここでは どうぐを" line "つかうことは できません" prompt @@ -3128,59 +3128,59 @@ sub_3d832: ret Call_DebugBackpackLoop: - callab DebugBackpackLoop + callfar DebugBackpackLoop ret -sub_3d84e: - callab ScrollingMenu_ClearLeftColumn +BattleMenuPack_SelectItem: + callfar ScrollingMenu_ClearLeftColumn call PlaceHollowCursor predef LoadItemData - callab CheckItemContext - ld a, [wItemAttributeParamBuffer] - ld hl, Data3d870 + callfar CheckItemContext + ld a, [wItemAttributeValue] + ld hl, .item_attribute_jump_table call CallJumptable ret -Data3d870: - dw asm_3d87e - dw asm_3d87e - dw asm_3d88b - dw asm_3d89a - dw asm_3d8b9 - dw asm_3d8aa - dw asm_3d8b9 +.item_attribute_jump_table: + dw .cant_use ; ITEMMENU_NOUSE + dw .cant_use ; TM_HOLDER + dw .ball_holder ; BALL_HOLDER + dw .other_bags ; IMPORTANT_BAG/ITEM_BAG + dw .menu_close ; ITEMMENU_CURRENT + dw .normal_item_effect ; ITEMMENU_PARTY + dw .menu_close ; ITEMMENU_CLOSE -asm_3d87e: - callab PrintCantUseText +.cant_use: + callfar PrintCantUseText xor a - ld [wFieldMoveSucceeded], a + ld [wItemEffectSucceeded], a ret -asm_3d88b: - callab BallPocket - jr nc, asm_3d8b9 +.ball_holder: + callfar BallPocket + jr nc, .menu_close xor a - ld [wFieldMoveSucceeded], a + ld [wItemEffectSucceeded], a ret -asm_3d89a: - callab FlipPocket2Status +.other_bags: + callfar FlipPocket2Status xor a ld [wSelectedSwapPosition], a - ld [wFieldMoveSucceeded], a + ld [wItemEffectSucceeded], a ret -asm_3d8aa: +.normal_item_effect: call UseItem call ClearPalettes - callab DrawBackpack + callfar DrawBackpack ret -asm_3d8b9: +.menu_close: call UseItem ret -Battle_PartyMenu: +BattleMenu_PKMN: call LoadStandardMenuHeader asm_3d8c0: @@ -3188,7 +3188,7 @@ asm_3d8c0: call LoadStandardMenuHeader xor a ld [wcdb9], a - predef Function50771 + predef PartyMenuInBattle_Setup jp c, asm_3d918 jp asm_3d8eb @@ -3199,12 +3199,12 @@ asm_3d8d5: call ByteFill xor a ld [wcdb9], a - predef Function50774 + predef PartyMenuInBattle jr c, asm_3d918 asm_3d8eb: - callab Function_8f1cb - callab asm_24aa9 + callfar FreezeMonIcons + callfar BattleMonMenu jr c, asm_3d8d5 call PlaceHollowCursor ld a, [wMenuCursorY] @@ -3269,9 +3269,9 @@ asm_3d982: jp asm_3d8d5 asm_3d992: - ld a, [wcd41] + ld a, [wCurBattleMon] ld d, a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] cp d jr nz, asm_3d9a5 ld hl, IsAlreadyOutText @@ -3298,14 +3298,14 @@ SwitchPlayerMon: asm_3d9cb: call RetreatMon - ld c, $32 + ld c, 50 call DelayFrames call sub_3d3e1 - ld hl, $c335 + hlcoord 9, 7 ld bc, $050b call ClearBox - ld a, [wWhichPokemon] - ld [wcd41], a + ld a, [wCurPartyMon] + ld [wCurBattleMon], a ld c, a ld b, 1 push bc @@ -3341,8 +3341,8 @@ asm_3da2a: ld hl, $c335 ld bc, $050b call ClearBox - ld a, [wWhichPokemon] - ld [wcd41], a + ld a, [wCurPartyMon] + ld [wCurBattleMon], a ld c, a ld b, 1 push bc @@ -3353,7 +3353,7 @@ asm_3da2a: predef SmallFarFlagAction call LoadBattleMonFromParty xor a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call sub_3e2c6 call Function3d32e call PrintEmptyString @@ -3364,22 +3364,22 @@ asm_3da2a: ret IsAlreadyOutText: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text "はもうでています" prompt CantBringBackText: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text "を もどすことが" line "できない!" prompt -Battle_PickedRun: +BattleMenu_Run: call ReloadTilesFromBuffer ld a, 3 ld [wMenuCursorY], a - ld hl, wca1a - ld de, wcdf1 + ld hl, wBattleMonSpeed + ld de, wEnemyMonSpeed call TryRunningFromBattle ld a, 0 ld [wce38], a @@ -3390,7 +3390,7 @@ Battle_PickedRun: jp DisplayBattleMenu Function3daa7: - ld hl, wcddb + ld hl, wEnemyMonMoves ld a, [wcac0] dec a jr z, asm_3dac8 @@ -3398,17 +3398,17 @@ Function3daa7: jr z, asm_3dabc call sub_3dce0 ret z - ld hl, wca04 + ld hl, wBattleMonMoves jr asm_3dac8 asm_3dabc: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMon1Moves - ld bc, $30 + ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes asm_3dac8: - ld de, wce2e + ld de, wListMoves_MoveIndicesBuffer ld bc, 4 call CopyBytes xor a @@ -3434,8 +3434,7 @@ asm_3dae9: asm_3daf9: ld a, $28 ld [wHPBarMaxHP], a - ld a, $32 - call Predef + predef ListMoves ld b, 1 ld a, [wcac0] cp 2 @@ -3457,7 +3456,7 @@ asm_3db22: ld [wMenuCursorY], a ld a, 1 ld [wMenuCursorX], a - ld a, [wcd57] + ld a, [wNumMoves] inc a ld [w2DMenuNumRows], a ld a, 1 @@ -3557,7 +3556,7 @@ asm_3dbd9: asm_3dbe2: pop af ret nz - ld hl, wca0a + ld hl, wBattleMonPP ld a, [wMenuCursorY] ld c, a ld b, 0 @@ -3577,12 +3576,12 @@ asm_3dbe2: asm_3dc05: ld a, [wMenuCursorY] - ld hl, wca04 + ld hl, wBattleMonMoves ld c, a ld b, 0 add hl, bc ld a, [hl] - ld [wcac1], a + ld [wCurPlayerSelectedMove], a xor a ret @@ -3613,7 +3612,7 @@ asm_3dc55: ld a, [wMenuCursorY] and a jp nz, asm_3db6a - ld a, [wcd57] + ld a, [wNumMoves] inc a ld [wMenuCursorY], a jp asm_3db6a @@ -3621,7 +3620,7 @@ asm_3dc55: asm_3dc66: ld a, [wMenuCursorY] ld b, a - ld a, [wcd57] + ld a, [wNumMoves] inc a inc a cp b @@ -3643,12 +3642,11 @@ asm_3dc83: ld a, [wcabe] and a jp z, Function3daa7 - ld [wccc0], a + ld [wFXAnimID], a xor a - ld [wcccd], a - ld [wccc1], a - ld a, $51 - call Predef + ld [wNumHits], a + ld [wFXAnimID + 1], a + predef PlayBattleAnim jp Function3daa7 asm_3dca4: @@ -3678,17 +3676,17 @@ sub_3dcb7: ret z cp $fc ret nc - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call Unreferenced_GetMoveName ld hl, $c401 jp PlaceString sub_3dce0: ld a, $a5 - ld [wcac1], a + ld [wCurPlayerSelectedMove], a ld a, [wca48] and a - ld hl, wca0a + ld hl, wBattleMonPP jr nz, asm_3dcf7 ld a, [hli] or [hl] @@ -3729,7 +3727,7 @@ asm_3dd0c: ret Data3dd19: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text "は だすことの できるわざが ない!" asm_3dd31: @@ -3739,9 +3737,9 @@ asm_3dd31: ld a, [wSelectedSwapPosition] and a jr z, asm_3ddb1 - ld hl, wca04 + ld hl, wBattleMonMoves call sub_3dd97 - ld hl, wca0a + ld hl, wBattleMonPP call sub_3dd97 ld hl, wca48 ld a, [hl] @@ -3774,7 +3772,7 @@ asm_3dd67: asm_3dd78: ld hl, wPartyMon1Moves - ld a, [wcd41] + ld a, [wCurBattleMon] ld bc, $30 call AddNTimes push hl @@ -3840,48 +3838,50 @@ asm_3dde3: dec [hl] xor a ldh [hBattleTurn], a - ld hl, wca04 + ld hl, wBattleMonMoves ld a, [wMenuCursorY] ld c, a ld b, 0 add hl, bc ld a, [hl] - ld [wcac1], a - ld a, [wcd41] - ld [wWhichPokemon], a + ld [wCurPlayerSelectedMove], a + ld a, [wCurBattleMon] + ld [wCurPartyMon], a ld a, 4 ld [wMonType], a - callab Functionf960 + callfar GetMaxPPOfMove ld hl, wMenuCursorY ld c, [hl] inc [hl] ld b, 0 - ld hl, wca0a + ld hl, wBattleMonPP add hl, bc ld a, [hl] and $3f ld [wStringBuffer1], a + + ; Untranslated references to VRAM! Hooray? + ld hl, $c3d6 ld de, MoveTypeText call PlaceString ld hl, $c3b4 - ld [hl], $f3 + ld [hl], "/" ld hl, $c3ee - ld [hl], $f3 + ld [hl], "/" ld hl, $c3b2 ld de, wStringBuffer1 ld bc, $0102 call PrintNumber ld hl, $c3b5 - ld de, wCountSetBitsResult + ld de, wNumSetBits ld bc, $0102 call PrintNumber - callab Function360b1 - ld a, [wc9ef] + callfar Function360b1 + ld a, [wPlayerMoveStruct] ld b, a ld hl, $c3ef - ld a, $3f - call Predef + predef PrintMoveType asm_3de5b: jp WaitBGMap @@ -3910,7 +3910,7 @@ sub_3de6e: jp nc, asm_3df86 ld [wcac7], a ld c, a - ld hl, wcddb + ld hl, wEnemyMonMoves ld b, 0 add hl, bc ld a, [hl] @@ -3930,15 +3930,15 @@ asm_3deb0: res 4, [hl] ld a, 1 ldh [hBattleTurn], a - ld hl, Data3dfdd + ld hl, BattleText_TargetsEncoreEnded call PrintText jr asm_3dedc asm_3dec1: - ld a, [wcad7] + ld a, [wCurEnemyMove] and a jr z, asm_3deb0 - ld hl, wcde1 + ld hl, wEnemyMonPP ld a, [wcac7] ld c, a ld b, 0 @@ -3946,7 +3946,7 @@ asm_3dec1: ld a, [hl] and $3f jr z, asm_3deb0 - ld a, [wcad7] + ld a, [wCurEnemyMove] jp asm_3df68 asm_3dedc: @@ -3972,7 +3972,7 @@ asm_3df04: jr asm_3df68 asm_3df08: - ld hl, wcde1 + ld hl, wEnemyMonPP ld bc, 0 asm_3df0e: @@ -4000,11 +4000,11 @@ asm_3df26: jr z, asm_3df3f ld a, 1 ld [wca22], a - callab Function384d4 + callfar Function384d4 jr asm_3df6b asm_3df3f: - ld hl, wcddb + ld hl, wEnemyMonMoves call BattleRandom and 3 ld c, a @@ -4019,7 +4019,7 @@ asm_3df3f: ld a, [hl] and a jr z, asm_3df3f - ld hl, wcde1 + ld hl, wEnemyMonPP add hl, bc ld b, a ld a, [hl] @@ -4030,13 +4030,13 @@ asm_3df3f: ld a, b asm_3df68: - ld [wcac2], a + ld [wCurEnemySelectedMove], a asm_3df6b: ld a, 1 ldh [hBattleTurn], a - callab Function360b1 - ld a, [wc9e9] + callfar Function360b1 + ld a, [wEnemyMoveStructEffect] cp $77 ret z xor a @@ -4058,7 +4058,7 @@ sub_3df8b: ld a, [wFieldMoveSucceeded] and a jr nz, asm_3dfa8 - ld a, [wcac1] + ld a, [wCurPlayerSelectedMove] cp $a5 ld b, $e jr z, asm_3dfae @@ -4069,7 +4069,7 @@ sub_3df8b: jr asm_3dfaf asm_3dfa8: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] add 4 ld b, a @@ -4078,7 +4078,7 @@ asm_3dfae: asm_3dfaf: ld [wPlayerLinkAction], a - callab PlaceWaitingText + callfar PlaceWaitingText asm_3dfba: call LinkTransfer @@ -4102,19 +4102,19 @@ asm_3dfd3: jr nz, asm_3dfd3 ret -Data3dfdd: +BattleText_TargetsEncoreEnded: text "アンコールじょうたいが とけた!" asm_3dff2: ldh a, [hBattleTurn] and a - ld hl, wcac2 - ld de, wc9ea - ld a, [wcac1] + ld hl, wCurEnemySelectedMove + ld de, wEnemyMoveStructPower + ld a, [wCurPlayerSelectedMove] jr z, asm_3e009 - ld hl, wcac1 - ld de, wc9f1 - ld a, [wcac2] + ld hl, wCurPlayerSelectedMove + ld de, wPlayerMoveStructPower + ld a, [wCurEnemySelectedMove] asm_3e009: cp $44 @@ -4155,7 +4155,7 @@ asm_3e023: asm_3e035: xor a ld [wca3a], a - callab Function351d0 + callfar Function351d0 xor a ret @@ -4163,16 +4163,16 @@ AddPokemonToBox: ld a, [wLinkMode] and a jp nz, LoadEnemyMonFromParty - ld a, [wcdd7] - ld [wcdd9], a + ld a, [wTempEnemyMonSpecies] + ld [wEnemyMonSpecies], a ld [wCurSpecies], a - ld [wMonDexIndex], a - call GetMonHeader + ld [wCurPartySpecies], a + call GetBaseData ld a, [wBattleMode] cp 2 jr nz, asm_3e06f - ld a, [wWhichPokemon] - ld hl, wd91c + ld a, [wCurPartyMon] + ld hl, wOTPartyMon1Item ld bc, $30 call AddNTimes ld a, [hl] @@ -4186,7 +4186,7 @@ asm_3e06f: ld a, [wMonHItems] asm_3e07b: - ld [wcdda], a + ld [wEnemyMonItem], a ld a, [wca44] bit 3, a ld hl, wcad0 @@ -4203,61 +4203,60 @@ asm_3e07b: call BattleRandom asm_3e09c: - ld hl, wcddf + ld hl, wEnemyMonDVs ld [hli], a ld [hl], b ld a, [wCurPartyLevel] - ld [wcde6], a - ld de, wcdeb + ld [wEnemyMonLevel], a + ld de, wEnemyMonMaxHP ld b, 0 ld hl, wcdd4 - ld a, $18 - call Predef + predef Functiondf7d ld a, [wBattleMode] cp 2 jr z, asm_3e0d2 ld a, [wca44] bit 3, a jr nz, asm_3e0f1 - ld hl, wcde7 + ld hl, wEnemyMonStatus xor a ld [hli], a ld [hli], a - ld a, [wcdeb] + ld a, [wEnemyMonMaxHP] ld [hli], a - ld a, [wcdec] + ld a, [wEnemyMonMaxHP + 1] ld [hli], a jr asm_3e0f1 asm_3e0d2: - ld hl, wd93e - ld a, [wWhichPokemon] + ld hl, wOTPartyMon1HP + 1 + ld a, [wCurPartyMon] ld bc, $30 call AddNTimes ld a, [hld] - ld [wcdea], a + ld [wEnemyMonHP + 1], a ld a, [hld] - ld [wcde9], a - ld a, [wWhichPokemon] + ld [wEnemyMonHP], a + ld a, [wCurPartyMon] ld [wca36], a dec hl ld a, [hl] - ld [wcde7], a + ld [wEnemyMonStatus], a asm_3e0f1: ld hl, wMonHType1 - ld de, wcdf7 + ld de, wEnemyMonType1 ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a - ld de, wcddb + ld de, wEnemyMonMoves ld a, [wBattleMode] cp 2 jr nz, asm_3e11a - ld hl, wd91d - ld a, [wWhichPokemon] + ld hl, wOTPartyMon1Moves + ld a, [wCurPartyMon] ld bc, $30 call AddNTimes ld bc, 4 @@ -4273,16 +4272,14 @@ asm_3e11a: ld [hli], a ld [hl], a ld [wHPBarMaxHP], a - ld a, $2a - call Predef + predef Function42252 asm_3e129: - ld hl, wcddb - ld de, wcde1 - ld a, $f - call Predef + ld hl, wEnemyMonMoves + ld de, wEnemyMonPP + predef FillPP ld hl, wMonHBaseStats - ld de, wcdf9 + ld de, wEnemyMonBaseStats ld b, 5 asm_3e13c: @@ -4296,20 +4293,20 @@ asm_3e13c: inc de ld a, [wMonHBaseEXP] ld [de], a - ld a, [wcdd7] - ld [wCountSetBitsResult], a + ld a, [wTempEnemyMonSpecies] + ld [wNumSetBits], a call GetPokemonName ld hl, wStringBuffer1 - ld de, wBattleMonNickname + ld de, wEnemyMonNickname ld bc, 6 call CopyBytes - ld a, [wcdd7] + ld a, [wTempEnemyMonSpecies] dec a ld c, a ld b, 1 - ld hl, wPokedexOwnedEnd + ld hl, wEndPokedexCaught predef SmallFarFlagAction - ld hl, wcded + ld hl, wEnemyMonStats ld de, wca9e ld bc, $a call CopyBytes @@ -4323,17 +4320,17 @@ asm_3e182: jr nz, asm_3e182 ld a, 1 ldh [hBattleTurn], a - callab Function95cc + callfar Function95cc ret asm_3e193: push bc - ld a, [wca0f] + ld a, [wBattleMonLevel] ld b, a - ld a, [wcde6] - ld [wca0f], a + ld a, [wEnemyMonLevel] + ld [wBattleMonLevel], a ld a, b - ld [wcde6], a + ld [wEnemyMonLevel], a pop bc ret @@ -4345,10 +4342,10 @@ Function3e1aa: ldh a, [hBattleTurn] and a ld a, [wca3b] - ld hl, wca17 + ld hl, wBattleMonAttack + 1 jr z, asm_3e1bb ld a, [wca40] - ld hl, wcdee + ld hl, wEnemyMonAttack + 1 asm_3e1bb: ld c, 4 @@ -4376,10 +4373,10 @@ asm_3e1d1: ldh a, [hBattleTurn] and a ld a, [wca3c] - ld hl, wca16 + ld hl, wBattleMonAttack jr z, asm_3e1e2 ld a, [wca41] - ld hl, wcded + ld hl, wEnemyMonAttack asm_3e1e2: ld c, 4 @@ -4413,11 +4410,11 @@ asm_3e1ff: sub_3e201: xor a - ld [wcdd7], a + ld [wTempEnemyMonSpecies], a ld b, 1 call GetSGBLayout ; Should be a call instead - callab sub_3f003 + callfar sub_3f003 ld hl, $c2b3 ld c, 0 @@ -4479,10 +4476,10 @@ sub_3e254: ldh a, [hBattleTurn] and a jr z, asm_3e275 - ld a, [wca10] + ld a, [wBattleMonStatus] and $40 ret z - ld hl, wca1b + ld hl, wBattleMonSpeed + 1 ld a, [hld] ld b, a ld a, [hl] @@ -4500,10 +4497,10 @@ asm_3e273: ret asm_3e275: - ld a, [wcde7] + ld a, [wEnemyMonStatus] and $40 ret z - ld hl, wcdf2 + ld hl, wEnemyMonSpeed + 1 ld a, [hld] ld b, a ld a, [hl] @@ -4524,10 +4521,10 @@ asm_3e291: ldh a, [hBattleTurn] and a jr z, asm_3e2ae - ld a, [wca10] + ld a, [wBattleMonStatus] and $10 ret z - ld hl, wca17 + ld hl, wBattleMonAttack + 1 ld a, [hld] ld b, a ld a, [hl] @@ -4543,10 +4540,10 @@ asm_3e2ac: ret asm_3e2ae: - ld a, [wcde7] + ld a, [wEnemyMonStatus] and $10 ret z - ld hl, wcdee + ld hl, wEnemyMonAttack + 1 ld a, [hld] ld b, a ld a, [hl] @@ -4575,14 +4572,14 @@ asm_3e2c8: sub_3e2d2: push bc push bc - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] and a ld a, c - ld hl, wca16 + ld hl, wBattleMonStats ld de, wca93 ld bc, wcaa9 jr z, asm_3e2ed - ld hl, wcded + ld hl, wEnemyMonStats ld de, wca9e ld bc, wcab1 @@ -4675,7 +4672,7 @@ sub_3e360: ret z ld a, [wBadges] ld b, a - ld hl, wca16 + ld hl, wBattleMonAttack ld c, 4 asm_3e36f: @@ -4716,24 +4713,24 @@ sub_3e37c: ret Call_LoadBattleGraphics: - jpab LoadBattleGraphics + jpfar LoadBattleGraphics Function3e3a7: - jpab Functionf80d6 + jpfar Functionf80d6 - ld de, $4c22 ; pointing to code? - ld hl, $96c0 - ld bc, $3e04 + ld de, HpExpBarParts0GFX + ld hl, vChars2 tile $6c + lb bc, BANK(HpExpBarParts0GFX), 04 call Get1bpp - ld de, $4c42 ; pointing to code? - ld hl, $9730 - ld bc, $3e06 + ld de, HpExpBarParts1GFX + ld hl, vChars2 tile $73 + lb bc, BANK(HpExpBarParts1GFX), 06 call Get1bpp - ld de, $4c72 ; pointing to code? - ld hl, $9550 - ld bc, $3e08 + ld de, ExpBarGFX + ld hl, vChars2 tile $55 + lb bc, BANK(ExpBarGFX), 08 jp Get2bpp PrintEmptyString: @@ -4746,16 +4743,15 @@ PrintEmptyString: SECTION "engine/dumps/bank0f.asm@PlayMoveAnimation", ROMX PlayMoveAnimation: ld a, e - ld [wccc0], a + ld [wFXAnimID], a ld a, d - ld [wccc1], a + ld [wFXAnimID + 1], a asm_3e419: call WaitBGMap asm_3e41c: - ld a, $51 - jp Predef + predef_jump PlayBattleAnim sub_3e421: ld a, [wLinkMode] @@ -4765,7 +4761,7 @@ sub_3e421: asm_3e426: call sub_3e64b xor a - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld bc, wPartyMon1Species asm_3e430: @@ -4776,7 +4772,7 @@ asm_3e430: jp z, asm_3e613 push bc ld hl, wca37 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a asm_3e441: @@ -4791,7 +4787,7 @@ asm_3e441: add hl, bc ld d, h ld e, l - ld hl, wcdf9 + ld hl, wEnemyMonBaseStats push bc ld c, 5 @@ -4829,7 +4825,7 @@ asm_3e478: ldh [hMultiplicand + 1], a ld a, [wcdff] ldh [hMultiplicand + 2], a - ld a, [wcde6] + ld a, [wEnemyMonLevel] ldh [hPrintNumDivisor], a call Multiply ld a, 7 @@ -4839,11 +4835,11 @@ asm_3e478: pop bc ld hl, 6 add hl, bc - ld a, [wce73] + ld a, [wPlayerID] cp [hl] jr nz, asm_3e4a7 inc hl - ld a, [wce74] + ld a, [wPlayerID + 1] cp [hl] ld a, 0 jr z, asm_3e4ac @@ -4874,17 +4870,17 @@ asm_3e4ac: inc [hl] asm_3e4ce: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld e, a ld d, 0 ld hl, wPartySpecies add hl, de ld a, [hl] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData push bc ld d, $64 - callab Function50cd1 + callfar CalcExpAtLevel pop bc ld hl, $a add hl, bc @@ -4910,15 +4906,15 @@ asm_3e4ce: ld [hld], a asm_3e507: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames call GetNick ld hl, BoostedExpPointsText call PrintText xor a ld [wMonType], a - predef Function50000 - callba Function50caa + predef CopyMonToTempMon + farcall Function50caa pop bc ld hl, $1f add hl, bc @@ -4934,8 +4930,8 @@ asm_3e507: add hl, bc ld a, [hl] ld [wCurSpecies], a - ld [wCountSetBitsResult], a - call GetMonHeader + ld [wNumSetBits], a + call GetBaseData ld hl, $25 add hl, bc ld a, [hld] @@ -4950,8 +4946,7 @@ asm_3e507: add hl, bc push bc ld b, 1 - ld a, $18 - call Predef + predef Functiondf7d pop bc pop de ld hl, $25 @@ -4969,18 +4964,18 @@ asm_3e507: ld a, [hl] adc d ld [hl], a - ld a, [wcd41] + ld a, [wCurBattleMon] ld d, a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] cp d jr nz, asm_3e5d3 - ld de, wca12 + ld de, wBattleMonHP ld a, [hli] ld [de], a inc de ld a, [hli] ld [de], a - ld de, wca14 + ld de, wBattleMonMaxHP push bc ld bc, $c call CopyBytes @@ -4988,7 +4983,7 @@ asm_3e507: ld hl, $1f add hl, bc ld a, [hl] - ld [wca0f], a + ld [wBattleMonLevel], a ld a, [wca3f] bit 3, a jr nz, asm_3e5ae @@ -5000,12 +4995,12 @@ asm_3e507: asm_3e5ae: xor a - ld [wCountSetBitsResult], a + ld [wNumSetBits], a call sub_3e2c6 ; these three calls should be regular calls - callab sub_3e247 - callab sub_3e360 - callab Function3d5ce + callfar sub_3e247 + callfar sub_3e360 + callfar Function3d5ce call PrintEmptyString call BackUpTilesToBuffer @@ -5014,19 +5009,18 @@ asm_3e5d3: call PrintText xor a ld [wMonType], a - predef Function50000 + predef CopyMonToTempMon ld d, 1 - callab Function50628 + callfar Function50628 call TextboxWaitPressAorB_BlinkCursor call ReloadTilesFromBuffer xor a ld [wMonType], a ld a, [wCurSpecies] - ld [wCountSetBitsResult], a - ld a, $29 - call Predef + ld [wNumSetBits], a + predef Function421f8 ld hl, wcdc2 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld c, a ld b, 1 predef SmallFarFlagAction @@ -5036,11 +5030,11 @@ asm_3e5d3: asm_3e613: ld a, [wPartyCount] ld b, a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] inc a cp b jr z, asm_3e62f - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld bc, $30 ld hl, wPartyMon1Species call AddNTimes @@ -5052,7 +5046,7 @@ asm_3e62f: ld hl, wca37 xor a ld [hl], a - ld a, [wcd41] + ld a, [wCurBattleMon] ld c, a ld b, 1 push bc @@ -5061,8 +5055,7 @@ asm_3e62f: xor a ld [hl], a pop bc - ld a, $c - jp Predef + predef_jump SmallFarFlagAction sub_3e64b: ld a, [wca37] @@ -5080,8 +5073,8 @@ asm_3e654: jr nz, asm_3e654 cp 2 ret c - ld [wCountSetBitsResult], a - ld hl, wcdf9 + ld [wNumSetBits], a + ld hl, wEnemyMonBaseStats ld c, 7 asm_3e667: @@ -5089,7 +5082,7 @@ asm_3e667: ldh [hProduct], a ld a, [hl] ldh [hQuotient], a - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] ldh [hPrintNumDivisor], a ld b, 2 call Divide @@ -5161,7 +5154,7 @@ PrintSendOutMonMessage: jr nz, .print_text .not_link - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] or [hl] ld hl, GoText @@ -5169,7 +5162,7 @@ PrintSendOutMonMessage: xor a ldh [hQuotient], a ; enemy mon current HP * 25 - ld hl, wcde9 + ld hl, wEnemyMonHP ld a, [hli] ld [wcac8], a ldh [hMultiplicand + 1], a @@ -5179,7 +5172,7 @@ PrintSendOutMonMessage: ld a, 25 ldh [hPrintNumDivisor], a call Multiply - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -5236,7 +5229,7 @@ PrintPlayerMon1Text: ld hl, .Text ret .Text: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text "!" RetreatMon: @@ -5244,12 +5237,12 @@ RetreatMon: jp PrintText PlayerMon2Text: - text_from_ram wEnemyMonNickname + text_from_ram wBattleMonNickname text " @" start_asm push de push bc - ld hl, wcdea + ld hl, wEnemyMonHP + 1 ld de, wcac9 ld b, [hl] dec hl @@ -5264,7 +5257,7 @@ PlayerMon2Text: ld a, 25 ldh [hPrintNumDivisor], a call Multiply - ld hl, wcdeb + ld hl, wEnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -5336,11 +5329,11 @@ asm_3e828: ld hl, Data3e861 jr nz, asm_3e843 push hl - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld a, [wMonHCatchRate] - ld [wcdfe], a + ld [wEnemyMonCatchRate], a pop hl asm_3e843: @@ -5351,14 +5344,14 @@ asm_3e843: Data3e84b: text "やせいの@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "は" line "エサを たべてる!" prompt Data3e861: text "やせいの@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "は" line "おこってる!" prompt @@ -5368,7 +5361,7 @@ Function3e874: push de ld d, b push de - callab Function50cd1 + callfar CalcExpAtLevel pop de ld hl, hQuotient ld a, [hli] @@ -5378,7 +5371,7 @@ Function3e874: ld a, [hl] push af inc d - callab Function50cd1 + callfar CalcExpAtLevel ld hl, hMultiplicand + 2 ld a, [hl] ldh [hPrintNumTemp], a @@ -5497,19 +5490,18 @@ Function3e91e: and a ld hl, Functioncc4d4 jr nz, asm_3e954 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] push af - ld a, [wca02] + ld a, [wBattleMonSpecies] ld [wCurSpecies], a - ld [wMonDexIndex], a - call GetMonHeader + ld [wCurPartySpecies], a + call GetBaseData ld hl, $14 call UncompressMonSprite ld hl, $9310 - ld a, $33 - call Predef + predef Function50bcd pop af - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ret asm_3e954: @@ -5532,18 +5524,18 @@ Function3e963: and a ld hl, Functioncc4d4 jr nz, asm_3e999 - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] push af - ld a, [wcdd9] + ld a, [wEnemyMonSpecies] ld [wCurSpecies], a - ld [wMonDexIndex], a - call GetMonHeader - ld hl, wcddf - predef Function50ed9 + ld [wCurPartySpecies], a + call GetBaseData + ld hl, wEnemyMonDVs + predef GetUnownLetter ld de, vFrontPic call LoadMonFrontSprite pop af - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ret asm_3e999: @@ -5634,7 +5626,7 @@ sub_3ea0e: asm_3ea15: push af - ld a, [wCountSetBitsResult] + ld a, [wNumSetBits] cp [hl] jr z, asm_3ea24 inc hl @@ -5727,15 +5719,15 @@ asm_3ee88: asm_3ee91: ld c, [hl] ld b, 0 - ld hl, wd91e + ld hl, wOTPartyMon1Moves + 1 add hl, bc ld a, [hli] ld [wCurPartyLevel], a ld a, [hl] call sub_3ef03 jr c, asm_3eebd - ld [wMonDexIndex], a - ld [wcdd7], a + ld [wCurPartySpecies], a + ld [wTempEnemyMonSpecies], a ld a, [wce2d] and a jr z, asm_3eec1 @@ -5845,8 +5837,8 @@ Function3ef19: ld a, [wce01] and a jr z, InitBattleCommon - ld [wMonDexIndex], a - ld [wcdd7], a + ld [wCurPartySpecies], a + ld [wTempEnemyMonSpecies], a InitBattleCommon: ld a, [wTimeOfDayPal] @@ -5901,18 +5893,18 @@ _InitBattleCommon: sub_3ef9a: ld [wca22], a - callab LoadTrainerClass - callab Function38f45 + callfar LoadTrainerClass + callfar Function38f45 ld a, [wca22] cp 9 jr nz, asm_3efb8 xor a - ld [wd91c], a + ld [wOTPartyMon1Item], a asm_3efb8: call sub_3f003 xor a - ld [wcdd7], a + ld [wTempEnemyMonSpecies], a ldh [hGraphicStartTile], a dec a ld [wcac4], a @@ -5929,8 +5921,8 @@ sub_3efdb: ld a, 1 ld [wBattleMode], a call AddPokemonToBox - ld hl, wcddf - predef Function50ed9 + ld hl, wEnemyMonDVs + predef GetUnownLetter ld de, vFrontPic call LoadMonFrontSprite xor a @@ -6003,17 +5995,16 @@ asm_3f03d: ret Function3f04a: - ld a, [wcdd8] - ld [wMonDexIndex], a - ld hl, $c305 + ld a, [wTempBattleMonSpecies] + ld [wCurPartySpecies], a + hlcoord 1, 5 ld b, 7 ld c, 8 call ClearBox ld hl, $14 call UncompressMonSprite ld hl, $9310 - ld a, $33 - jp Predef + predef_jump Function50bcd Function3f068: ld de, $a203 @@ -6119,22 +6110,22 @@ InitBattleVariables: ld [hl], a ld [wMenuScrollPosition], a ld [wca39], a - ld [wca02], a + ld [wBattleMonSpecies], a ld [wca37], a - ld [wcd41], a + ld [wCurBattleMon], a ld [wce06], a ld [wTimeOfDayPal], a ld [wcaba], a ld hl, wccd1 ld [hli], a ld [hl], a - ld hl, wca08 + ld hl, wBattleMonDVs ld [hli], a ld [hl], a - ld hl, wcddf + ld hl, wEnemyMonDVs ld [hli], a ld [hl], a - ld hl, wc9e8 + ld hl, wEnemyMoveStruct ld bc, $012c xor a call ByteFill @@ -6170,8 +6161,7 @@ asm_3f148: asm_3f151: xor a ld [wcab9], a - ld a, $2b - call Predef + predef Function41fa1 asm_3f15a: xor a @@ -6207,19 +6197,19 @@ asm_3f15a: ret sub_3f19e: - ld hl, wcaca + ld hl, wPayDayMoney ld a, [hli] or [hl] inc hl or [hl] ret z - ld a, [wca03] + ld a, [wBattleMonItem] ld b, a - callab Function37e3d + callfar Function37e3d ld a, b cp $4c jr nz, AddBattleMoneyToAccount - ld hl, wcacc + ld hl, wPayDayMoney + 2 sla [hl] dec hl rl [hl] @@ -6232,8 +6222,8 @@ sub_3f19e: ld [hl], a AddBattleMoneyToAccount: - ld hl, wcacc - ld de, wd15f + ld hl, wPayDayMoney + 2 + ld de, wMoney + 2 ld c, 3 and a .loop @@ -6250,17 +6240,17 @@ AddBattleMoneyToAccount: GotMoneyForWinningText: text "は @" - deciram wcaca, 3, 6 + deciram wPayDayMoney, 3, 6 text "円" line "ひろった!" prompt sub_3f1f3: ld a, [wca36] - ld hl, wd93b + ld hl, wOTPartyMon1Status ld bc, $30 call AddNTimes - ld a, [wcde7] + ld a, [wEnemyMonStatus] ld [hl], a call ClearTileMap call sub_3f60c @@ -6416,8 +6406,7 @@ InitBackPic: ld a, BANK(PlayerBacksprite) call UncompressSpriteFromDE ld hl, vTitleLogo2 - ld a, $33 - call Predef + predef Function50bcd ld a, 0 call OpenSRAM ld hl, vSprites @@ -6486,14 +6475,14 @@ BattleStartMessage: call WaitSFX ld c, 20 call DelayFrames - callab Function390e9 + callfar Function390e9 ld hl, WantsToBattleText jr .PlaceBattleStartText .wild ld a, $f ld [wCryTracks], a - ld a, [wcdd7] + ld a, [wTempEnemyMonSpecies] call PlayStereoCry ld hl, WildPokemonAppearedText ld a, [wca3a] @@ -6503,7 +6492,7 @@ BattleStartMessage: .PlaceBattleStartText: push hl - callab Function38340 + callfar Function38340 pop hl call PrintText ret @@ -6511,13 +6500,13 @@ BattleStartMessage: WildPokemonAppearedText: text "あ! やせいの" line "@" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "が とびだしてきた!" prompt HookedPokemonAttackedText: text "つりあげた @" - text_from_ram wBattleMonNickname + text_from_ram wEnemyMonNickname text "が" line "とびかかってきた!" prompt @@ -6537,8 +6526,7 @@ ShowLinkBattleParticipants: call ClearTileMap .ok call DelayFrame - ld a, $4e - call Predef + predef DoBattleTransition call Call_LoadBattleGraphics ld a, 1 ldh [hBGMapMode], a @@ -6567,7 +6555,7 @@ sub_3f60c: ld a, $69 ld [hli], a ld [hl], $6a - callab Function38431 + callfar Function38431 ld c, 150 jp DelayFrames diff --git a/engine/dumps/bank14.asm b/engine/dumps/bank14.asm new file mode 100644 index 00000000..331ac9ca --- /dev/null +++ b/engine/dumps/bank14.asm @@ -0,0 +1,2130 @@ +INCLUDE "constants.asm" + +SECTION "engine/dumps/bank14.asm@CopyMonToTempMon", ROMX + +CopyMonToTempMon:: + ld a, [wCurPartyMon] + ld e, a + call GetMonSpecies + ld a, [wCurPartySpecies] + ld [wCurSpecies], a + call GetBaseData + + ld a, [wMonType] + ld hl, wPartyMons + ld bc, PARTYMON_STRUCT_LENGTH + and a + jr z, .getmonaddress + ld hl, wOTPartyMons + ld bc, PARTYMON_STRUCT_LENGTH + cp OTPARTYMON + jr z, .getmonaddress + ld hl, wBoxMons + ld bc, BOXMON_STRUCT_LENGTH + cp BOXMON + jr z, .getmonaddress + ld hl, wd882 + jr .copywholestruct + +.getmonaddress + ld a, [wCurPartyMon] + call AddNTimes +.copywholestruct + ld de, wTempMon + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + ret + +GetMonSpecies:: + ld a, [wMonType] + and a ; PARTYMON + jr z, .partymon + cp OTPARTYMON + jr z, .otpartymon + cp BOXMON + jr z, .boxmon + cp TEMPMON + jr z, .breedmon + ; WILDMON + +.partymon + ld hl, wPartySpecies + jr .done + +.otpartymon + ld hl, wOTPartySpecies + jr .done + +.boxmon + ld hl, wBoxList + jr .done + +.breedmon + ld a, [wd882] + jr .done2 + +.done + ld d, 0 + add hl, de + ld a, [hl] + +.done2 + ld [wCurPartySpecies], a + ret + +PrintMonTypes:: +; Print one or both types of [wCurSpecies] +; on the stats screen at hl. + + push hl + call GetBaseData + pop hl + + push hl + ld a, [wMonHType1] + call .Print + + ld a, [wMonHType1] + ld b, a + ld a, [wMonHType2] + cp b + pop hl + jr z, .hide_type_2 + ld bc, SCREEN_WIDTH * 2 + add hl, bc + +.Print + push hl + jr PrintType + +.hide_type_2 + ld a, " " + ld bc, SCREEN_WIDTH - 3 + add hl, bc + ld [hl], a + inc bc + add hl, bc + ld bc, PLAYER_NAME_LENGTH - 1 + jp ByteFill + +PrintMoveType:: +; Print the type of move b at hl. + + push hl + ld a, b + dec a + ld bc, MOVE_LENGTH + ld hl, Moves + call AddNTimes + ld de, wStringBuffer1 + ld a, BANK(Moves) + call FarCopyBytes + ld a, [wStringBuffer1 + MOVE_TYPE] + +PrintType:: +; Print type a to stack pointer. + add a + ld hl, TypeNames + ld e, a + ld d, 0 + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + + jp PlaceString + +GetTypeName:: +; Copy the name of type [wMoveGrammar] to wStringBuffer1. + + ld a, [wMoveGrammar] + ld hl, TypeNames + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wStringBuffer1 + ld bc, MOVE_NAME_LENGTH + jp CopyBytes + +SECTION "engine/dumps/bank14.asm@GetTrainerClassName_Old", ROMX + +GetTrainerClassName_Old:: +; Seemingly unreferenced. +; Loads a name to wStringBuffer1 from a partial list of Trainer classes leftover from Red/Green. + ld hl, .name_table + ld a, [wca22] + dec a + ld c, a + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wStringBuffer1 +.copy_byte + ld a, [hli] + ld [de], a + inc de + cp "@" + jr nz, .copy_byte + ret + +.name_table: + dw .youngster, .bug_catcher, .lass, wca2b + dw .jr_trainer_male, .jr_trainer_female, .pokemaniac, .super_nerd + dw wca2b, wca2b, .burglar, .engineer + dw .jack, wca2b, .swimmer, wca2b + dw wca2b, .beauty, wca2b, .rocker + dw .juggler, wca2b, wca2b, .blackbelt + dw wca2b, .prof_oak, .chief, .scientist + dw wca2b, .rocket, .cooltrainer_male, .cooltrainer_female + dw wca2b, wca2b, wca2b, wca2b + dw wca2b, wca2b, wca2b, wca2b + dw wca2b, wca2b, wca2b, wca2b + dw wca2b, wca2b, wca2b + + +.youngster + db "たんパン@" + +.bug_catcher + db "むしとり@" + +.lass + db "ミニスカ@" + +.jr_trainer_male + db "ボーイ@" + +.jr_trainer_female + db "ガール@" + +.pokemaniac + db "マニア@" + +.super_nerd + db "りかけい@" + +.burglar + db "どろぼう@" + +.engineer + db "オヤジ@" + +.jack +; Removed trainer class from original game, whose name string didn't make it to Gen I but somehow ended up in Gen II. + db "ジャック@" + +.swimmer + db "かいパン@" + +.beauty + db "おねえさん@" + +.rocker + db "グループ@" + +.juggler + db "ジャグラー@" + +.blackbelt + db "からて@" + +.prof_oak + db "オーキド@" + +.chief + db "チーフ@" + +.scientist + db "けんきゅういん@" + +.rocket + db "だんいん@" + +.cooltrainer_male + db "エりート♂@" + +.cooltrainer_female + db "エりート♀@" + +DrawPlayerHP:: + ld a, 1 + jr DrawHP + +DrawEnemyHP: + ld a, 2 + +DrawHP: + ld [wWhichHPBar], a + push hl + push bc + ; box mons have full HP + ld a, [wMonType] + cp BOXMON + jr z, .at_least_1_hp + + ld a, [wTempMonHP] + ld b, a + ld a, [wTempMonHP + 1] + ld c, a + +; Any HP? + or b + jr nz, .at_least_1_hp + + xor a + ld c, a + ld e, a + ld a, 6 + ld d, a + jp .fainted + +.at_least_1_hp + ld a, [wTempMonMaxHP] + ld d, a + ld a, [wTempMonMaxHP + 1] + ld e, a + ld a, [wMonType] + cp BOXMON + jr nz, .not_boxmon + + ld b, d + ld c, e + +.not_boxmon + predef ComputeHPBarPixels + ld a, 6 + ld d, a + ld c, a + +.fainted + ld a, c + pop bc + ld c, a + pop hl + push de + push hl + push hl + call DrawBattleHPBar + pop hl + +; Print HP + bccoord 1, 1, 0 + add hl, bc + ld de, wTempMonHP + ld a, [wMonType] + cp BOXMON + jr nz, .not_boxmon_2 + ld de, wTempMonMaxHP +.not_boxmon_2 + lb bc, 2, 3 + call PrintNumber + + ld a, "/" ; $f3 + ld [hli], a + +; Print max HP + ld de, wTempMonMaxHP + lb bc, 2, 3 + call PrintNumber + pop hl + pop de + ret + +Function502b5:: + ld a, [wCurPartySpecies] + cp DEX_EGG + jr z, .asm_502d9 + + call CopyMonToTempMon + ld a, [wMonType] + cp 2 + jr c, .asm_502d9 + + ld a, [wTempMonLevel] + ld [wCurPartyLevel], a + ld hl, wTempMonExp + 2 + ld de, wTempMonMaxHP + ld b, 1 + predef Functiondf7d +.asm_502d9 + ld hl, wd4a7 + set 1, [hl] + call ClearBGPalettes + call ClearTileMap + call UpdateSprites + callfar LoadPokemonStatsGraphics + + ldh a, [hMapAnims] + push af + xor a + ldh [hMapAnims], a + ld c, 1 + ld b, 0 + ld hl, Function50340 +.asm_502fc + push bc + ld de, .asm_50302 + push de + jp hl + +.asm_50302 + pop bc +.asm_50303 + call GetJoypadDebounced + ldh a, [hJoySum] + and (D_LEFT | D_RIGHT | B_BUTTON | A_BUTTON) + jr z, .asm_50303 + bit B_BUTTON_F, a + jr nz, .asm_50333 + bit D_LEFT_F, a + jr nz, .asm_5031e + inc c + ld a, 3 + cp c + jr nc, .asm_50323 + ld c, 1 + jr .asm_50323 + +.asm_5031e + dec c + jr nz, .asm_50323 + ld c, 3 +.asm_50323 + ld hl, .data_5033a + dec c + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + inc c + ld b, 1 + jr .asm_502fc + +.asm_50333 + call ClearBGPalettes + pop af + ldh [hMapAnims], a + ret + +.data_5033a + dw Function50340, Function504e5, Function50562 + +Function50340:: + call WaitBGMap + xor a + ldh [hBGMapMode], a + ld a, [wMonHIndex] + ld [wMoveGrammar], a + ld [wCurSpecies], a + ld a, b + and a + jr nz, .asm_503b3 + push bc + hlcoord 1, 0 + ld [hl], $74 + inc hl + ld [hl], $f2 + inc hl + + ld de, wMoveGrammar + ld bc, $8103 + call PrintNumber + hlcoord 1, 8 + call PrintLevel + + ld hl, NicknamePointers + call GetNicknamePointer + ld d, h + ld e, l + hlcoord 1, 10 + call PlaceString + push bc + call GetGender + ld a, "♂" + jr c, .asm_50384 + ld a, "♀" +.asm_50384 + pop hl + ld [hl], a + hlcoord 1, 12 + ld a, "/" + ld [hli], a + ld a, [wMonHIndex] + ld [wMoveGrammar], a + call GetPokemonName + call PlaceString + hlcoord 7, 0 + ld bc, SCREEN_WIDTH + ld d, SCREEN_HEIGHT + +.place_vertical_divider + ld a, $31 + ld [hl], a + add hl, bc + dec d + jr nz, .place_vertical_divider + + inc a + hlcoord 2, 16 + ld [hli], a + inc a + ld [hli], a + inc a + ld [hli], a + inc a + ld [hl], a + pop bc +.asm_503b3 + push bc + ld b, 1 + call Function505d9 + hlcoord 8, 0 + ld bc, TextCommands + call ClearBox + + hlcoord 10, 1 + ld b, 0 + call DrawPlayerHP + + hlcoord 18, 1 + ld [hl], $41 + + ld hl, wccd9 + call SetHPPal + ld b, SGB_STATS_SCREEN_HP_PALS + call GetSGBLayout + + hlcoord 9, 4 + ld de, StatusText_StatusType + call PlaceString + + hlcoord 15, 4 + ld a, [wMonType] + cp 2 + jr z, .asm_503f5 + push hl + ld de, wTempMonStatus + call Function50b7d + pop hl +.asm_503f5 + ld de, StatusText_OK + call z, PlaceString + hlcoord 14, 6 + call PrintMonTypes + + hlcoord 8, 10 + ld b, 6 + ld c, 10 + call DrawTextBox + + hlcoord 10, 10 + ld de, StatusText_ExpPoints + call PlaceString + + ld a, [wTempMonLevel] + push af + cp 100 + jr z, .asm_50420 + + inc a + ld [wTempMonLevel], a +.asm_50420 + hlcoord 16, 14 + call PrintLevel + + pop af + ld [wTempMonLevel], a + ld de, wTempMonExp + hlcoord 12, 11 + ld bc, $0307 + call PrintNumber + + call .CalcExpToNextLevel + ld de, wcdc3 + hlcoord 10, 13 + ld bc, $0307 + call PrintNumber + + hlcoord 9, 13 + ld de, StatusText_Ato + call PlaceString + + hlcoord 17, 13 + ld de, StatusText_De + call PlaceString + + ld a, [wTempMonLevel] + ld b, a + ld de, wTempMonExp + 2 + hlcoord 10, 16 + predef Function3e874 + + hlcoord 9, 16 + ld [hl], $40 + hlcoord 18, 16 + ld [hl], $41 + call WaitBGMap + + ld a, 1 + ldh [hBGMapMode], a + pop bc + ld a, b + and a + ret nz + + call SetPalettes + ld hl, wTempMonDVs + call GetUnownLetter + + hlcoord 0, 1 + call PrepMonFrontpic + ld a, [wCurPartySpecies] + call PlayCry + ret + +.CalcExpToNextLevel:: + ld a, [wTempMonLevel] + cp MAX_LEVEL + jr z, .AlreadyAtMaxLevel + inc a + ld d, a + call CalcExpAtLevel + ld hl, wTempMonExp + 2 + ld hl, wTempMonExp + 2 ; Seemingly an unnecessary duplicate line + ldh a, [hQuotient + 2] + sub [hl] + dec hl + ld [wcdc5], a + ldh a, [hQuotient + 1] + sbc [hl] + dec hl + ld [wcdc4], a + ldh a, [hQuotient] + sbc [hl] + ld [wcdc3], a + ret + +.AlreadyAtMaxLevel + ld hl, wcdc3 + xor a + ld [hli], a + ld [hli], a + ld [hl], a + ret + +NicknamePointers: + dw wPartyMonNicknames, wOTPartyMonNicknames, wBoxMonNicknames, wBufferMonNickname + +StatusText_StatusType: + db "じょうたい/" + next "タイプ/@" + +StatusText_OK: + db "ふつう@" + +StatusText_ExpPoints: + db " けいけんち @" + +StatusText_Ato: +; This string and the one below are used to present the +; remaining amount of EXP to level up in a grammatical manner. +; Equivalent to the English version's "LEVEL UP - to :L". + db "あと@" + +StatusText_De: + db "で@" + +Function504e5:: + call WaitBGMap + xor a + ldh [hBGMapMode], a + ld b, 2 + call Function505d9 + + hlcoord 8, 0 + ld bc, TextCommands + call ClearBox + + hlcoord 8, 1 + ld de, .Item + call PlaceString + + ld a, [wTempMonItem] + and a + ld de, .NoItem + jr z, .asm_50511 + ld [wNamedObjectIndexBuffer], a + call GetItemName +.asm_50511 + hlcoord 11, 2 + call PlaceString + + ld hl, wTempMonMoves + ld de, wListMoves_MoveIndicesBuffer + ld bc, $0004 + call CopyBytes + + hlcoord 8, 4 + ld b, 12 + ld c, 10 + call DrawTextBox + + hlcoord 11, 4 + ld de, .Moves + call PlaceString + + hlcoord 9, 6 + ld a, $3c + ld [wcdc3], a + call ListMoves + + hlcoord 11, 7 + ld a, $3c + ld [wcdc3], a + call ListMovePP + + call WaitBGMap + ld a, 1 + ldh [hBGMapMode], a + ret + +.Item + db "そうび@" + +.NoItem + db "なし@" + +.Moves + db " もちわざ @" + +Function50562:: + call WaitBGMap + xor a + ldh [hBGMapMode], a + ld b, 3 + call Function505d9 + + hlcoord 8, 0 + ld bc, TextCommands + call ClearBox + + hlcoord 9, 1 + ld de, .IDNo_OT + call PlaceString + + hlcoord 12, 1 + ld de, wTempMonID + ld bc, $8205 + call PrintNumber + + ld hl, .OTPointers + call GetNicknamePointer + + ld de, wStringBuffer1 + push de + ld bc, 6 + call CopyBytes + + pop de + callfar CorrectNickErrors + hlcoord 12, 3 + call PlaceString + + ld d, 0 + call Function50628 + hlcoord 10, 6 + ld de, .Parameters + call PlaceString + + call WaitBGMap + ld a, 1 + ldh [hBGMapMode], a + ret + +.IDNo_OT + db "№/" + next "おや/" + next "@" + +.Parameters + db " パラメータ @" + +.OTPointers + dw wPartyMonOTs + dw wOTPartyMonOT + dw wBoxMonOT + dw wBufferMonOT + +Function505d9:: + hlcoord 1, 14 + ld a, $36 + call .load_square + hlcoord 3, 14 + ld a, $36 + call .load_square + hlcoord 5, 14 + ld a, $36 + call .load_square + ld a, b + cp 2 + ld a, $3a + hlcoord 3, 14 + jr c, .load_square + hlcoord 5, 14 + jr z, .load_square + hlcoord 1, 14 +.load_square + ld [hli], a + inc a + ld [hld], a + push bc + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + inc a + ld [hli], a + inc a + ld [hl], a + ret + +GetNicknamePointer:: + ld a, [wMonType] + add a + ld c, a + ld b, 0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wMonType] + cp 3 + ret z + ld a, [wCurPartyMon] + jp SkipNames + +Function50628:: + ld a, d + and a + jr nz, .asm_5063e + + hlcoord 8, 6 + ld b, 10 + ld c, 10 + call DrawTextBox + + hlcoord 9, 8 + ld bc, $0006 + jr .asm_5064e + +.asm_5063e + hlcoord 9, 0 + ld b, 10 + ld c, 9 + call DrawTextBox + + hlcoord 11, 2 + ld bc, $0004 +.asm_5064e + push bc + push hl + ld de, Data_50684 + call PlaceString + + pop hl + pop bc + add hl, bc + ld de, wTempMonAttack + ld bc, $0203 + call .asm_5067a + + ld de, wTempMonDefense + call .asm_5067a + + ld de, wTempMonSpclAtk + call .asm_5067a + + ld de, wTempMonSpclDef + call .asm_5067a + + ld de, wTempMonSpeed + jp PrintNumber + +.asm_5067a + push hl + call PrintNumber + pop hl + ; Print next numbers two tiles lower + ld de, $0028 + add hl, de + ret + +Data_50684: + db "こうげき" + next "ぼうぎょ" + next "とくこう" + next "とくぼう" + next "すばやさ" + next "@" + +GetGender:: + +; 0: PartyMon + ld hl, wPartyMon1DVs + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [wMonType] + and a + jr z, .PartyMon + +; 1: OTPartyMon + ld hl, wOTPartyMon1DVs + dec a + jr z, .PartyMon + +; 2: wBoxMon + ld hl, wBoxMon1DVs + ld bc, BOXMON_STRUCT_LENGTH + dec a + jr z, .wBoxMon + +; else: WildMon + ld hl, wEnemyMonDVs + jr .DVs + +.PartyMon +.wBoxMon + ld a, [wCurPartyMon] + call AddNTimes + +.DVs +; Attack DV + ld a, [hli] + and $f0 + ld b, a +; Speed DV + ld a, [hl] + and $f0 + swap a + +; Put our DVs together. + or b + ld b, a + + ld a, [wMonHGenderRatio] + cp b + ret + +ListMovePP:: + ld a, [wNumMoves] + inc a + ld c, a + ld a, NUM_MOVES + sub c + ld b, a + push hl + ld a, [wcdc3] + ld e, a + ld d, 0 + ld a, $3e ; P + call .load_loop + ld a, b + and a + jr z, .skip + ld c, a + ld a, "ー" + call .load_loop + +.skip + pop hl + inc hl + inc hl + inc hl + ld d, h + ld e, l + ld hl, wTempMonMoves + ld b, 0 +.loop + ld a, [hli] + and a + jr z, .done + push bc + push hl + push de + ld hl, wMenuCursorY + ld a, [hl] + push af + ld [hl], b + push hl + callfar GetMaxPPOfMove + pop hl + pop af + ld [hl], a + pop de + pop hl + push hl + ld bc, $0014 + add hl, bc + ld a, [hl] + and $3f + ld [wStringBuffer1 + 4], a + ld h, d + ld l, e + push hl + ld de, wStringBuffer1 + 4 + lb bc, 1, 2 + call PrintNumber + ld a, "/" + ld [hli], a + ld de, wNamedObjectIndexBuffer + lb bc, 1, 2 + call PrintNumber + pop hl + ld a, [wcdc3] + ld e, a + ld d, 0 + add hl, de + ld d, h + ld e, l + pop hl + pop bc + inc b + ld a, b + cp NUM_MOVES + jr nz, .loop +.done + ret + +.load_loop:: + ld [hli], a + ld [hld], a + add hl, de + dec c + jr nz, .load_loop + ret + +SECTION "engine/dumps/bank14.asm@Party Menu Routines", ROMX + +ClearGraphicsForPartyMenu:: + ldh a, [rLCDC] + bit rLCDC_ENABLE, a + jr z, .asm_5075f + call ClearBGPalettes + +.asm_5075f + ld hl, wVramState + res 0, [hl] + call ClearSprites + xor a + ldh [hBGMapMode], a + call ClearTileMap + call UpdateSprites + ret + +PartyMenuInBattle_Setup:: + call ClearGraphicsForPartyMenu + ; Fallthrough +PartyMenuInBattle:: + ldh a, [hMapAnims] + push af + xor a + ldh [hMapAnims], a + ld hl, wce5f + set 4, [hl] + + call PartyMenuInBattle_SetMenuAttributes + call Function5081f + call Function507cf + + ld hl, wce5f + res 4, [hl] + pop bc + ld a, b + ldh [hMapAnims], a + ret + +PartyMenuInBattle_SetMenuAttributes:: + call LoadFontsBattleExtra + xor a + ld [wMonType], a + ld de, Data_507c7 + call SetMenuAttributes + + ld a, [wPartyCount] + ld [w2DMenuNumRows], a + + ld b, a + ld a, [wce38] + and a + ld a, $03 + jr z, .asm_507b4 + xor a + ld [wce38], a + ld a, $01 +.asm_507b4 + ld [wMenuJoypadFilter], a + ld a, [wcd3c] + and a + jr z, .asm_507c1 + inc b + cp b + jr c, .asm_507c3 +.asm_507c1 + ld a, $01 +.asm_507c3 + ld [wMenuCursorY], a + ret + +Data_507c7: + db $01, $00, $00, $01, $60, $00, $20, $00 + +Function507cf:: + call Get2DMenuJoypad + call PlaceHollowCursor + ld a, [wMenuCursorY] + ld [wcd3c], a + ldh a, [hJoySum] + ld b, a + ld a, [wSelectedSwapPosition] + and a + jp nz, .asm_50808 + ld a, [wPartyCount] + and a + jr z, .asm_50806 + bit 1, b + jr nz, .asm_50806 + + ld a, [wMenuCursorY] + dec a + ld [wCurPartyMon], a + + ld c, a + ld b, $00 + ld hl, wPartySpecies + add hl, bc + ld a, [hl] + ld [wCurPartySpecies], a + ld [wTempBattleMonSpecies], a + and a + ret + +.asm_50806 + scf + ret +.asm_50808 + bit 1, b + jr nz, .asm_5080f + call _SwitchPartyMons +.asm_5080f + call Function50eca + xor a + ld [wSelectedSwapPosition], a + ld [wcdb9], a + call Function5081f + jp Function507cf + +Function5081f:: + ld a, [wcdb9] + cp $04 + jp z, Function509dd + callfar Function8f0cc + call Function50eca + callfar Function95f8 + hlcoord 3, 1 + ld de, wPartySpecies + ld a, [wCurPartyMon] + push af + xor a + ld [wCurPartyMon], a + ld [wcce1], a +.asm_5084b + ld a, [de] + cp $FF + jp z, .asm_50877 + push de + call Function508c4 + pop de + ld a, [wCurPartyMon] + ldh [hEventID], a + push hl + push de + + ld hl, Function8f0e3 + ld a, BANK(Function8f0e3) ; ...What macro do I use here? + ld e, 0 + call FarCall_hl + + pop de + inc de + pop hl + ld bc, $0028 + add hl, bc + ld a, [wCurPartyMon] + inc a + ld [wCurPartyMon], a + + jr .asm_5084b + +.asm_50877 + pop af + ld [wCurPartyMon], a + jp Function509d8 + +Function5087e:: + ld a, [wcdb9] + cp $04 + jp z, Function509dd + callfar Function95f8 + ld hl, $c2b7 + ld de, wPartySpecies + ld a, [wCurPartyMon] + push af + xor a + ld [wCurPartyMon], a + ld [wcce1], a +.asm_5089f + ld a, [de] + cp $FF + jp z, .asm_508bd + push de + call Function508c4 + pop de + ld a, [wCurPartyMon] + ldh [hEventID], a + inc de + ld bc, $0028 + add hl, bc + ld a, [wCurPartyMon] + inc a + ld [wCurPartyMon], a + jr .asm_5089f +.asm_508bd + pop af + ld [wCurPartyMon], a + jp Function509d8 + +Function508c4:: + push bc + push hl + push hl + ld hl, wPartyMonNicknames + ld a, [wCurPartyMon] + call GetNick + pop hl + call PlaceString + call CopyMonToTempMon + pop hl + push hl + ld a, [wSelectedSwapPosition] + and a + jr z, .asm_508ef + dec a + ld b, a + ld a, [wCurPartyMon] + cp b + jr nz, .asm_508ef + dec hl + dec hl + dec hl + ld a, "▷" ; $ec + ld [hli], a + inc hl + inc hl +.asm_508ef + ld a, [wcdb9] + cp $03 + jr z, .asm_50922 + cp $05 + jr z, .DetermineCompatibility + cp $06 + jp z, .asm_509b5 + cp $07 + jp z, .asm_509b5 + push hl + ld bc, hRTCRandom + add hl, bc + ld de, wTempMonStatus + call Function50b7d + pop hl + push hl + ld bc, hCurMapTextSubroutinePtr + 1 + add hl, bc + ld b, $00 + call DrawEnemyHP + push de + call Function50b66 + pop de + pop hl + jr .asm_5093c + +.asm_50922 + push hl + ld a, $1a + call Predef + pop hl + ld de, .text_50948 + ld a, c + and a + jr nz, .asm_50933 + ld de, .text_5094f +.asm_50933 + push hl + ld bc, $0009 + add hl, bc + call PlaceString + pop hl +.asm_5093c + ld bc, $0005 + add hl, bc + push de + call PrintLevel + pop de + pop hl + pop bc + ret + +.text_50948: + db "おぼえられる@" + ;db $b5, $3e, $b4, $d7, $da, $d9, $50 + +.text_5094f: + db "おぼえられない@" + ;db $b5, $3e, $b4, $d7, $da, $c5, $b2, $50 + +.DetermineCompatibility: + push hl + ld hl, EvosAttacksPointers + ld a, [wTempMonSpecies] ; Species of selected pokemon? + dec a + ld c, a + ld b, $00 + add hl, bc + add hl, bc + ld de, wStringBuffer1 + ld a, BANK(EvosAttacksPointers) + ld bc, 2 + call FarCopyBytes + ld hl, wStringBuffer1 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, wStringBuffer1 + ld a, BANK(EvosAttacks) + ld bc, 10 + call FarCopyBytes + ld hl, wStringBuffer1 + ld de, .string_not_able + ; Fallthrough +.asm_50986 + ld a, [hli] + and a + jr z, .asm_5099e + inc hl + inc hl + cp EVOLVE_STONE + jr nz, .asm_50986 + dec hl + dec hl + ld b, [hl] + ld a, [wCurItem] + inc hl + inc hl + cp b + jr nz, .asm_50986 + ld de, .string_able +.asm_5099e + pop hl + push hl + ld bc, $0009 + add hl, bc + call PlaceString + pop hl + jr .asm_5093c + +.string_able + db "つかえる@" +.string_not_able + db "つかえない@" + +.asm_509b5 + xor a + ld [wMonType], a + push hl + call GetGender + pop hl + ld de, .male + jr c, .got_gender + ld de, .female +.got_gender + push hl + ld bc, $0009 + add hl, bc + call PlaceString + pop hl + jp .asm_5093c + +.male + db "オス@" + +.female + db "メス@" + +Function509d8:: + ld b, $0a + call GetSGBLayout +Function509dd:: + ld hl, wce5f + ld a, [hl] + push af + push hl + set 4, [hl] + ld a, [wcdb9] + cp $f0 + jr nc, .asm_509fc + add a + ld c, a + ld b, $00 + ld hl, .data_50a33 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + jr .asm_50a17 + +.asm_509fc + and $0f + add a + ld c, a + ld b, $00 + ld hl, .data_50a21 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + push hl + ld a, [wCurPartyMon] + ld hl, wPartyMonNicknames + call GetNick + pop hl + call PrintText +.asm_50a17 + pop hl + pop af + ld [hl], a + call WaitBGMap + call SetPalettes + ret + +.data_50a21 + dw Text_50acb + dw Text_50af9 + dw Text_50b09 + dw Text_50b1d + dw Text_50ae5 + dw Text_50ab0 + dw Text_50b2b + dw Text_50b3b + dw Text_50b4e + +.data_50a33 + dw Text_50a43 + dw Text_50a51 + dw Text_50a5f + dw Text_50a6c + dw Text_50a7a + dw Text_50a51 + dw Text_50a88 + dw Text_50a9c + +Text_50a43: ; Choose a pokemon + text "#を えらんで ください" + done + +Text_50a51: + text "どの#に つかいますか?" + done + +Text_50a5f: + text "どの#を だしますか?" + done + +Text_50a6c: + text "どの#に おしえますか?" + done + +Text_50a7a: + text "どこに いどうしますか?" + done + +Text_50a88: ; first Pokemon in Daycare? + text "1ぴきめの #を" + line "えらんで ください" + done + +Text_50a9c: ; second Pokemon in Daycare? + text "2ひきめの #を" + line "えらんで ください" + done + +Text_50ab0: ; restored hp + text_from_ram wStringBuffer1 + text "の たいりょくが" + line "@" + deciram wHPBarHPDifference, 2, 3 + text " かいふくした" + done + +Text_50acb: ; cured poison + text_from_ram wStringBuffer1 + text "の どくは" + line "きれい さっぱり なくなった!" + done + +Text_50ae5: ; cured paralysis + text_from_ram wStringBuffer1 + text "の からだの" + line "しびれが とれた" + done + +Text_50af9: ; cured burn + text_from_ram wStringBuffer1 + text "の" + line "やけどが なおった" + done + +Text_50b09: ; cured frozen + text_from_ram wStringBuffer1 + text "の からだの" + line "こおりが とけた" + done + +Text_50b1d: ; cured asleep + text_from_ram wStringBuffer1 + text "は" + line "めを さました" + done + +Text_50b2b: ; health returned (presumably for Sacred Fire) + text_from_ram wStringBuffer1 + text "は" + line "けんこうになった!" + done + +Text_50b3b: ; revived + text_from_ram wStringBuffer1 + text "は" + line "げんきを とりもどした!" + done + +Text_50b4e: ; leveled up + text_from_ram wStringBuffer1 + text "の レべルが@" + deciram wCurPartyLevel, 1, 3 + text "になった@" + sound_dex_fanfare_50_79 + text_waitbutton + db "@" + +Function50b66:: + ld hl, wccd3 + ld a, [wcce1] + ld c, a + ld b, $00 + add hl, bc + call SetHPPal + ld b, SGB_PARTY_MENU_HP_PALS + call GetSGBLayout + ld hl, wcce1 + inc [hl] + ret + +Function50b7d:: + push de + inc de + inc de + ld a, [de] + ld b, a + inc de + ld a, [de] + or b + pop de + jr nz, Function50b92 + ld a, $cb + ld [hli], a + ld a, $de + ld [hli], a + ld [hl], $bc + and a + ret + +Function50b92:: + ld a, [de] + bit 3, a + jr nz, .asm_50baf + bit 4, a + jr nz, .asm_50bb5 + bit 5, a + jr nz, .asm_50bbe + bit 6, a + jr nz, .asm_50bc7 + and %111 + ret z + ld a, $c8 + ld [hli], a + ld a, $d1 + ld [hli], a + ld [hl], $d8 + ret + +.asm_50baf + ld a, $70 + ld [hli], a + ld [hl], $b8 + ret + +.asm_50bb5 + ld a, $d4 + ld [hli], a + ld a, $b9 + ld [hli], a + ld [hl], $70 + ret + +.asm_50bbe + ld a, $ba + ld [hli], a + ld a, $b5 + ld [hli], a + ld [hl], $d8 + ret + +.asm_50bc7 + ld a, $cf + ld [hli], a + ld [hl], $cb + ret + +Function50bcd:: + ld a, $00 + call OpenSRAM + push hl + ld hl, $a188 ; SRAM_188 + ld de, $a000 ; SRAM_0 + ld bc, $0188 + call CopyBytes + ld hl, $a310 ; SRAM_310 + ld de, $a188 ; SRAM_188 + ld bc, $0188 + call CopyBytes + call _InterlaceMergeSpriteBuffers + pop hl + ld de, $a188 ; SRAM_188 + ld c, $24 + ldh a, [hROMBank] + ld b, a + call Get2bpp + call CloseSRAM + ret + +ListMoves:: + ld de, wListMoves_MoveIndicesBuffer + ld b, $00 +.asm_50c03 + ld a, [de] + inc de + and a + jr z, .asm_50c36 + push de + push hl + push hl + ld [wCurSpecies], a + ld a, MOVE_NAME + ld [wNamedObjectTypeBuffer], a + call GetName + ld de, wStringBuffer1 + pop hl + push bc + call PlaceString + pop bc + ld a, b + ld [wNumMoves], a + inc b + pop hl + push bc + ld a, [wHPBarMaxHP] + ld c, a + ld b, $00 + add hl, bc + pop bc + pop de + ld a, b + cp $04 + jr z, .asm_50c47 + jr .asm_50c03 + +.asm_50c36 + ld a, b +.asm_50c37 + push af + ld [hl], $e3 + ld a, [wHPBarMaxHP] + ld c, a + ld b, $00 + add hl, bc + pop af + inc a + cp $04 + jr nz, .asm_50c37 +.asm_50c47 + ret + +Function50c48:: + ld a, [wce34] + cp $01 + jr nz, .asm_50c59 + ld hl, wOTPartyCount + ld de, wOTPartyMonOT + ld a, $06 + jr .asm_50c8b + + +.asm_50c59 + cp $04 + jr nz, .asm_50c67 + ld hl, wPartyCount + ld de, wPartyMonOTs + ld a, $05 + jr .asm_50c8b + + +.asm_50c67 + cp $05 + jr nz, .asm_50c75 + ld hl, wcd60 + ld de, PokemonNames + ld a, $01 + jr .asm_50c8b + + +.asm_50c75 + cp $02 + jr nz, .asm_50c83 + + ld hl, wItems + ld de, $6fec ; ItemNames? + ld a, $04 + jr .asm_50c8b + + +.asm_50c83 + ld hl, wcd60 + ld de, $6fec + ld a, $04 +.asm_50c8b + ld [wNamedObjectTypeBuffer], a + ld a, l + ld [wcd70], a + ld a, h + ld [wcd71], a + ld a, e + ld [wcd72], a + ld a, d + ld [wcd72 + 1], a + ld bc, $68F3 ; ItemAttributes? + ld a, c + ld [wcd74], a + ld a, b + ld [wcd75], a + ret + +Function50caa:: + ld a, [wTempMonSpecies] + ld [wCurSpecies], a + call GetBaseData + ld d, $01 +.asm_50cb5 + inc d + call CalcExpAtLevel + push hl + ld hl, wTempMonExp + 2 + ldh a, [hQuotient + 2] + ld c, a + ld a, [hld] + sub c + ldh a, [hQuotient + 1] + ld c, a + ld a, [hld] + sbc c + ldh a, [hQuotient] + ld c, a + ld a, [hl] + sbc c + pop hl + jr nc, .asm_50cb5 + dec d + ret + +CalcExpAtLevel:: + ld a, [wMonHGrowthRate] + add a + add a + ld c, a + ld b, 0 + ld hl, GrowthRates + add hl, bc +; Cube the level + call .LevelSquared + ld a, d + ldh [hMultiplier], a + call Multiply + +; Multiply by a + ld a, [hl] + and $f0 + swap a + ldh [hMultiplier], a + call Multiply +; Divide by b + ld a, [hli] + and $f + ldh [hDivisor], a + ld b, 4 + call Divide +; Push the cubic term to the stack + ldh a, [hQuotient] + push af + ldh a, [hQuotient + 1] + push af + ldh a, [hQuotient + 2] + push af +; Square the level and multiply by the lower 7 bits of c + call .LevelSquared + ld a, [hl] + and $7f + ldh [hPrintNumDivisor], a + call Multiply +; Push the absolute value of hte quadratic term to the stack + ldh a, [hProduct + 1] + push af + ldh a, [hProduct + 2] + push af + ldh a, [hProduct + 3] + push af + ld a, [hli] + push af +; Multiply the level by d + xor a + ldh [hMultiplicand + 0], a + ldh [hMultiplicand + 1], a + ld a, d + ldh [hMultiplicand + 2], a + ld a, [hli] + ldh [hMultiplier], a + call Multiply +; Subtract e + ld b, [hl] + ldh a, [hProduct + 3] + sub b + ldh [hMultiplicand + 2], a + ld b, 0 + ldh a, [hProduct + 2] + sbc b + ldh [hMultiplicand + 1], a + ldh a, [hProduct + 1] + sbc b + ldh [hMultiplicand], a +; If bit 7 of c is set, c is negative; otherwise, it's positive + pop af + and $80 + jr nz, .subtract +; Add c*n**2 to (d*n - e) + pop bc + ldh a, [hProduct + 3] + add b + ldh [hMultiplicand + 2], a + pop bc + ldh a, [hProduct + 2] + adc b + ldh [hMultiplicand + 1], a + pop bc + ldh a, [hProduct + 1] + adc b + ldh [hMultiplicand], a + jr .done_quadratic + +.subtract +; Subtract c*n**2 from (d*n - e) + pop bc + ldh a, [hProduct + 3] + sub b + ldh [hMultiplicand + 2], a + pop bc + ldh a, [hProduct + 2] + sbc b + ldh [hMultiplicand + 1], a + pop bc + ldh a, [hProduct + 1] + sbc b + ldh [hMultiplicand], a + +.done_quadratic +; Add (a/b)*n**3 to (d*n - e +/- c*n**2) + pop bc + ldh a, [hProduct + 3] + add b + ldh [hMultiplicand + 2], a + pop bc + ldh a, [hProduct + 2] + adc b + ldh [hMultiplicand + 1], a + pop bc + ldh a, [hProduct + 1] + adc b + ldh [hMultiplicand], a + ret + +.LevelSquared:: + xor a + ldh [hMultiplicand + 0], a + ldh [hMultiplicand + 1], a + ld a, d + ldh [hMultiplicand + 2], a + ldh [hMultiplier], a + jp Multiply + +MACRO growth_rate +; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5] + dn \1, \2 + if \3 < 0 + db -\3 | $80 ; signed magnitude + else + db \3 + endc + db \4, \5 +ENDM + +GrowthRates: +; entries correspond to GROWTH_* (see constants/pokemon_data_constants.asm) + growth_rate 1, 1, 0, 0, 0 ; Medium Fast + growth_rate 3, 4, 10, 0, 30 ; Slightly Fast + growth_rate 3, 4, 20, 0, 70 ; Slightly Slow + growth_rate 6, 5, -15, 100, 140 ; Medium Slow + growth_rate 4, 5, 0, 0, 0 ; Fast + growth_rate 5, 4, 0, 0, 0 ; Slow + +_SwitchPartyMons:: + ; replace instances of wHPBarOldHP with wcdc5, perhaps? + ld a, [wSelectedSwapPosition] + dec a + ld [wHPBarOldHP], a + ld b, a + ld a, [wMenuCursorY] + dec a + ld [wcdc4], a + cp b + jr z, .skip + call .SwapMonAndMail + ld a, [wcdc5] + call .ClearSprite + ld a, [wcdc4] + call .ClearSprite +.skip + ret + +.ClearSprite: + push af + hlcoord 0, 0 + ld bc, 2 * SCREEN_WIDTH + call AddNTimes + ld bc, 2 * SCREEN_WIDTH + ld a, " " + call ByteFill + pop af + ld hl, wShadowOAMSprite00 + ld bc, 4 * SPRITEOAMSTRUCT_LENGTH + call AddNTimes + ld de, SPRITEOAMSTRUCT_LENGTH + ld c, 4 +.gfx_loop + ld [hl], OAM_YCOORD_HIDDEN + add hl, de + dec c + jr nz, .gfx_loop + ld de, SFX_SWITCH_POKEMON + call WaitPlaySFX + ret + +.SwapMonAndMail:: + push hl + push de + push bc + ld bc, wPartySpecies + ld a, [wcdc4] + ld l, a + ld h, 0 + add hl, bc + ld d, h + ld e, l + ld a, [wcdc5] + ld l, a + ld h, 0 + add hl, bc + ld a, [hl] + push af + ld a, [de] + ld [hl], a + pop af + ld [de], a + ld a, [wcdc4] + ld hl, wPartyMon1Species + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + push hl + ld de, wcc3a + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + ld a, [wcdc5] + ld hl, wPartyMon1 + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop de + push hl + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + pop de + ld hl, wcc3a + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + ld a, [wcdc4] + ld hl, wPartyMonOTs + call SkipNames + push hl + call .CopyNameToSwitchMonBuffer + ld a, [wcdc5] + ld hl, wPartyMonOTs + call SkipNames + pop de + push hl + call .CopyName + pop de + ld hl, wcc3a + call .CopyName + ld hl, wPartyMonNicknames + ld a, [wcdc4] + call SkipNames + push hl + call .CopyNameToSwitchMonBuffer + ld hl, wPartyMonNicknames + ld a, [wcdc5] + call SkipNames + pop de + push hl + call .CopyName + pop de + ld hl, wcc3a + call .CopyName + ld hl, $ba68 ; Buffer somewhere in SRAM. Needs investigation + ld a, [wcdc4] + ld bc, $0028 ; todo: Constantify this + call AddNTimes + push hl + ld de, wcc3a + ld bc, $0028 + ld a, $02 + call OpenSRAM + call CopyBytes + ld hl, $ba68 + ld a, [wcdc5] + ld bc, $0028 + call AddNTimes + pop de + push hl + ld bc, $0028 + call CopyBytes + pop de + ld hl, wcc3a + ld bc, $0028 + call CopyBytes + call CloseSRAM + pop bc + pop de + pop hl + ret + +.CopyNameToSwitchMonBuffer + ld de, wcc3a + +.CopyName + ld bc, PLAYER_NAME_LENGTH + call CopyBytes + ret + +Function50eca:: + hlcoord 0, 1 + ld bc, $0028 + ld a, $06 +.asm_50ed2 + ld [hl], $7f + add hl, bc + dec a + jr nz, .asm_50ed2 + ret + +GetUnownLetter:: +; Return Unown letter in wUnownLetter based on DVs at hl + +; Take the middle 2 bits of each DV and place them in order: +; atk def spd spc +; .ww..xx. .yy..zz. + + ; atk + ld a, [hl] + and %01100000 + sla a + ld b, a + ; def + ld a, [hli] + and %00000110 + swap a + srl a + or b + ld b, a + + ; spd + ld a, [hl] + and %01100000 + swap a + sla a + or b + ld b, a + ; spc + ld a, [hl] + and %00000110 + srl a + or b + +; Divide by 10 to get 0-25 + ldh [hDividend + 3], a + xor a + ldh [hDividend], a + ldh [hDividend + 1], a + ldh [hDividend + 2], a + ld a, $0a + ldh [hDivisor], a + ld b, 4 + call Divide + +; Increment to get 1-26 + ldh a, [hQuotient + 2] + inc a + ld [wAnnonID], a ; $d874 + ret diff --git a/engine/events/field_moves.asm b/engine/events/field_moves.asm index ca964426..57335a8a 100755 --- a/engine/events/field_moves.asm +++ b/engine/events/field_moves.asm @@ -152,7 +152,7 @@ CutScript: ld hl, wPartyMonNicknames ld a, BOXMON ld [wMonType], a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call GetNick call CopyStringToStringBuffer2 ld hl, Text_CutItDown @@ -242,7 +242,7 @@ SurfScript: ld hl, wPartyMonNicknames ld a, BOXMON ld [wMonType], a - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call GetNick call CopyStringToStringBuffer2 ld hl, Text_UsedSurf @@ -273,7 +273,7 @@ MovePlayerIntoWater: ld hl, wMovementBuffer call LoadMovementDataPointer .get_movement_direction - ld a, [wPlayerWalking] + ld a, [wPlayerDirection] srl a srl a ld e, a @@ -328,7 +328,7 @@ TryFly: ShowFlyMap: call LoadStandardMenuHeader call ClearSprites - callab FlyMap + callfar FlyMap call ClearPalettes call GetMemSGBLayout call ExitMenu @@ -375,7 +375,7 @@ Text_CantUseFlyHere: FlyScript: ld a, MAPSETUP_TELEPORT ldh [hMapEntryMethod], a - jpab Functionfcc24 + jpfar Functionfcc24 DigFunction: @@ -441,7 +441,7 @@ DigScript: call CopyBytes ld a, MAPSETUP_WARP ldh [hMapEntryMethod], a - jpab Functionfcc24 + jpfar Functionfcc24 EmptyFunctiond2da: ret @@ -487,7 +487,7 @@ CheckIfSpawnPoint: ld d, a ld a, [wLastSpawnMapNumber] ld e, a - callab IsSpawnPoint + callfar IsSpawnPoint jr c, .not_spawn ld hl, Text_CantFindDestination call MenuTextBoxBackup @@ -534,7 +534,7 @@ TeleportScript: call Function1fea ld a, MAPSETUP_TELEPORT ldh [hMapEntryMethod], a - jpab Functionfcc24 + jpfar Functionfcc24 Text_ReturnToLastMonCenter: text "さいごに たちよった" diff --git a/engine/events/pokecenter_pc.asm b/engine/events/pokecenter_pc.asm index 28a33431..23142148 100644 --- a/engine/events/pokecenter_pc.asm +++ b/engine/events/pokecenter_pc.asm @@ -139,7 +139,7 @@ PC_Demo: done BillsPC: - callab _BillsPC + callfar _BillsPC and a ret @@ -241,8 +241,8 @@ PlayerWithdrawItemMenu: ret .Submenu: - callab _CheckTossableItem - ld a, [wItemAttributeParamBuffer] + callfar _CheckTossableItem + ld a, [wItemAttributeValue] and a jr z, .AskQuantity ld a, 1 @@ -252,7 +252,7 @@ PlayerWithdrawItemMenu: .AskQuantity: ld hl, .HowManyToWithdrawText call MenuTextBox - callab SelectQuantityToToss + callfar SelectQuantityToToss call ExitMenu call ExitMenu jr c, .done @@ -307,7 +307,7 @@ PlayerTossItemMenu: call PCItemsJoypad jr c, .quit ld de, wUnknownListLengthd1ea - callab TryTossItem + callfar TryTossItem jr .loop .quit ld hl, wVramState @@ -324,10 +324,10 @@ PlayerDepositItemMenu: call .CheckItemsInBag ret c call LoadStandardMenuHeader - callab GetPocket2Status - callab DrawBackpack + callfar GetPocket2Status + callfar DrawBackpack .loop - callab DebugBackpackLoop + callfar DebugBackpackLoop jr c, .quit call .TryDepositItem jr .loop @@ -340,7 +340,7 @@ PlayerDepositItemMenu: ret .CheckItemsInBag: - callab CheckItemsQuantity + callfar CheckItemsQuantity ret nc ; no item to deposit @@ -355,8 +355,8 @@ PlayerDepositItemMenu: prompt .TryDepositItem: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .Jumptable jp CallJumptable @@ -390,7 +390,7 @@ PlayerDepositItemMenu: prompt .SwapPockets: - callab FlipPocket2Status + callfar FlipPocket2Status xor a ld [wSelectedSwapPosition], a ret @@ -400,8 +400,8 @@ PlayerDepositItemMenu: ret .DepositItem: - callab _CheckTossableItem - ld a, [wItemAttributeParamBuffer] + callfar _CheckTossableItem + ld a, [wItemAttributeValue] and a jr z, .AskQuantity ld a, 1 @@ -411,7 +411,7 @@ PlayerDepositItemMenu: .AskQuantity: ld hl, .HowManyDepositText call MenuTextBox - callab SelectQuantityToToss + callfar SelectQuantityToToss push af call ExitMenu call ExitMenu @@ -479,12 +479,12 @@ PCItemsJoypad: jr z, .select jr .next .select - callab SwitchItemsInBag + callfar SwitchItemsInBag jp .next .next jp PCItemsJoypad .a_button - callab ScrollingMenu_ClearLeftColumn + callfar ScrollingMenu_ClearLeftColumn call PlaceHollowCursor and a ret diff --git a/engine/games/memory_minigame.asm b/engine/games/memory_minigame.asm index 84f1f69d..caedba22 100644 --- a/engine/games/memory_minigame.asm +++ b/engine/games/memory_minigame.asm @@ -35,7 +35,7 @@ MemoryMinigame: call DisableLCD ld b, SGB_DIPLOMA call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject ld hl, MemoryGameGFX ld de, vChars2 @@ -79,7 +79,7 @@ MemoryMinigame: bit MEMORYGAME_END_LOOP_F, a jr nz, .quit call .ExecuteJumptable - callab EffectObjectJumpNoDelay + callfar EffectObjectJumpNoDelay call DelayFrame and a ret diff --git a/engine/games/picross_minigame.asm b/engine/games/picross_minigame.asm index 6494703b..19860233 100644 --- a/engine/games/picross_minigame.asm +++ b/engine/games/picross_minigame.asm @@ -43,7 +43,7 @@ PicrossMinigame: .Init: call DisableLCD - callba InitEffectObject + farcall InitEffectObject call .InitGFX call .PlacePlayerBG call .InitRAM @@ -203,13 +203,13 @@ PicrossMinigame: ; load Gold sprites ld de, vSprites + $100 - ld hl, GoldSpriteGFX + $40 + ld hl, GoldSpriteGFX + LEN_2BPP_TILE * 4 ; Gold's back-facing standing sprite ld bc, 4 tiles ld a, BANK(GoldSpriteGFX) call FarCopyData ld de, vSprites + $140 - ld hl, GoldSpriteGFX + $100 + ld hl, GoldSpriteGFX + LEN_2BPP_TILE * 16 ; Gold's back-facing walking sprite ld bc, 4 tiles ld a, BANK(GoldSpriteGFX) call FarCopyData @@ -265,7 +265,7 @@ PicrossMinigame: jr nz, .quit call .ExecuteJumptable - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay call DelayFrame and a ret diff --git a/engine/games/pikachu_minigame.asm b/engine/games/pikachu_minigame.asm index b737db52..88121fa6 100644 --- a/engine/games/pikachu_minigame.asm +++ b/engine/games/pikachu_minigame.asm @@ -38,7 +38,7 @@ PikachuMiniGame:: call DisableLCD ld b, SGB_PIKACHU_MINIGAME call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject call PikachuMiniGame_ClearBothTilemaps ld hl, IntroForestGFX @@ -362,7 +362,7 @@ PikachuMiniGame_RunFrame: .skip_playing_sfx call PikachuMiniGame_PerformGameFunction - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay ld a, 1 ldh [hBGMapMode], a @@ -382,7 +382,7 @@ PikachuMiniGame_RunFrame: ret .Done: - callab InitEffectObject + callfar InitEffectObject ld hl, wShadowOAM ld c, SPRITEOAMSTRUCT_LENGTH * NUM_SPRITE_OAM_STRUCTS @@ -857,7 +857,7 @@ MinigamePikachuDoMovement:: dec [hl] ld d, $30 ld e, a - callba BattleAnim_Sine_e + farcall BattleAnim_Sine_e ld a, e ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc diff --git a/engine/games/slot_machine_game.asm b/engine/games/slot_machine_game.asm index 34da0422..bd031cc1 100644 --- a/engine/games/slot_machine_game.asm +++ b/engine/games/slot_machine_game.asm @@ -111,7 +111,7 @@ SlotMachineGame_Init: call DisableLCD ld b, SGB_SLOT_MACHINE call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject ld hl, wSlots ld bc, wSlotsDataEnd - wSlots xor a @@ -193,7 +193,7 @@ SlotsLoop: call Slots_SpinReels ld a, $60 ld [wc4bd], a - callab DoNextFrameForFirst16Sprites + callfar DoNextFrameForFirst16Sprites call Slots_PrintCoinsAndPayout call Slots_FlashPaletteOnMatchingSevens call Slots_AnimateReelSpritesAfterSpin @@ -2030,7 +2030,7 @@ Slots_AnimateGolem: dec [hl] ld e, a ld d, 14 * 8 - callba BattleAnim_Sine_e + farcall BattleAnim_Sine_e ld a, e ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index a4faf2a2..01ae67a0 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -58,7 +58,7 @@ SGB_BattleColors: call CopyBytes ld a, [wca3f] - ld hl, wca02 + ld hl, wBattleMon call Function9567 jr c, .sub_92f7 @@ -67,7 +67,7 @@ SGB_BattleColors: .sub_92f7 ld b, a ld a, [wca44] - ld hl, wcdd7 + ld hl, wTempEnemyMonSpecies call Function9567 jr c, .sub_9308 ld e, $01 @@ -120,7 +120,7 @@ SGB_StatsScreenHPPals: ld de, wcce1 ld bc, PALPACKET_LENGTH call CopyBytes - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] call Function956d call Function957e push af @@ -145,7 +145,7 @@ SGB_Pokedex: ld de, wcce1 ld bc, PALPACKET_LENGTH call CopyBytes - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] call Function956d ld hl, wcce4 ld [hl], a @@ -264,7 +264,7 @@ SGB12: call GetMapPalsIndex ld hl, wcce2 ld [hl], a - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] call Function956d ld hl, wcce4 ld [hl], a @@ -436,7 +436,7 @@ Function957e: push bc push af ld hl, wPartyMon1DVs - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld bc, $0030 call AddNTimes call Function95b0 @@ -490,11 +490,11 @@ Function95b0: ret Function95cc: - ld hl, wcddf + ld hl, wEnemyMonDVs ldh a, [hBattleTurn] and a jr nz, .sub_95d7 - ld hl, wca08 + ld hl, wBattleMonDVs .sub_95d7 call Function95b0 ld hl, wcae1 diff --git a/engine/items/inventory.asm b/engine/items/inventory.asm index 3ecf4e28..5bdd06bb 100755 --- a/engine/items/inventory.asm +++ b/engine/items/inventory.asm @@ -6,8 +6,8 @@ _ReceiveItem: call DoesHLEqualwNumBagItems jp nz, PutItemInPocket push hl - callab CheckItemPocket - ld a, [wItemAttributeParamBuffer] + callfar CheckItemPocket + ld a, [wItemAttributeValue] dec a ld hl, .Pockets jp CallJumptable @@ -45,8 +45,8 @@ _TossItem: call DoesHLEqualwNumBagItems jr nz, .remove_item push hl - callab CheckItemPocket - ld a, [wItemAttributeParamBuffer] + callfar CheckItemPocket + ld a, [wItemAttributeValue] dec a ld hl, .Pockets jp CallJumptable @@ -86,8 +86,8 @@ _CheckItem: call DoesHLEqualwNumBagItems jr nz, .not_bag push hl - callab CheckItemPocket - ld a, [wItemAttributeParamBuffer] + callfar CheckItemPocket + ld a, [wItemAttributeValue] dec a ld hl, .Pockets jp CallJumptable @@ -636,7 +636,7 @@ CheckAmountInKeyItems: SECTION "engine/items/inventory.asm@_CheckTossableItem", ROMX -; Return 1 in wItemAttributeParamBuffer and +; Return 1 in wItemAttributeValue and ; carry if wCurItem can't be removed from the bag. _CheckTossableItem: ld a, ITEMATTR_PERMISSIONS @@ -646,7 +646,7 @@ _CheckTossableItem: and a ret -; Return 1 in wItemAttributeParamBuffer +; Return 1 in wItemAttributeValue ; and carry if wCurItem can't be selected. CheckSelectableItem: ld a, ITEMATTR_PERMISSIONS @@ -656,29 +656,29 @@ CheckSelectableItem: and a ret -; Return the pocket for wCurItem in wItemAttributeParamBuffer. +; Return the pocket for wCurItem in wItemAttributeValue. CheckItemPocket: ld a, ITEMATTR_POCKET call GetItemAttr and $f - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a ret -; Return the context for wCurItem in wItemAttributeParamBuffer. +; Return the context for wCurItem in wItemAttributeValue. CheckItemContext: ld a, ITEMATTR_HELP call GetItemAttr and $f - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a ret -; Return the menu for wCurItem in wItemAttributeParamBuffer. +; Return the menu for wCurItem in wItemAttributeValue. CheckItemMenu: ld a, ITEMATTR_HELP call GetItemAttr swap a and $f - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a ret ; Get attribute a of wCurItem. @@ -690,7 +690,7 @@ GetItemAttr: ld b, 0 add hl, bc xor a - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a ld a, [wCurItem] dec a ld c, a @@ -704,7 +704,7 @@ GetItemAttr: ItemAttr_ReturnCarry: ld a, 1 - ld [wItemAttributeParamBuffer], a + ld [wItemAttributeValue], a scf ret diff --git a/engine/items/tmhm.asm b/engine/items/tmhm.asm index b49b9299..ae31482c 100644 --- a/engine/items/tmhm.asm +++ b/engine/items/tmhm.asm @@ -4,16 +4,16 @@ SECTION "engine/items/tmhm.asm", ROMX CanLearnTMHMMove: ; Gets the index of TM or HM with move ID wce32, -; then checks the corresponding flag in wMonDexIndex's learnset. +; then checks the corresponding flag in wCurPartySpecies's learnset. ; Sets register c to 1 if TM/HM is in learnset OR if debug is enabled. ld a, [wDebugFlags] ld c, 01 bit 1, a ret nz - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld [wCurSpecies], a - call GetMonHeader + call GetBaseData ld hl, wMonHLearnset push hl diff --git a/engine/landmarks.asm b/engine/landmarks.asm index 99238a65..f0e6ef66 100644 --- a/engine/landmarks.asm +++ b/engine/landmarks.asm @@ -36,7 +36,7 @@ DebugMenu_WarpMenuHeader:: db 4 ; items dw $0100 ; ??? - dba Data_3f_4bc6 + dba WarpMenuOptions dba PlaceSelectedMapName db $00, $00, $00 ; ??? @@ -60,51 +60,58 @@ GetLandmarkName:: SECTION "engine/landmarks.asm@2", ROMX -Data_3f_4bc6:: - db 16 ; # - db $01 - db $02 - db $03 - db $04 - db $05 - db $06 - db $07 - db $08 - db $09 - db $0a - db $0b - db $0e - db $0f - db $10 - db $11 - db $2d +WarpMenuOptions:: + + db 16 ; Number of options in the menu - 43 total stored in data, but most are unused + + db SPAWN_POINT_SILENT + db SPAWN_POINT_OLD + db SPAWN_POINT_WEST + db SPAWN_POINT_HIGH_TECH + db SPAWN_POINT_FOUNT + db SPAWN_POINT_BIRDON + db SPAWN_POINT_NEW_TYPE + db SPAWN_POINT_SUGAR + db SPAWN_POINT_BLUE_FOREST + db SPAWN_POINT_STAND + db SPAWN_POINT_KANTO + + ; PRINCE and MT_FUJI are skipped in the menu + + db SPAWN_POINT_SOUTH + db SPAWN_POINT_NORTH + db SPAWN_POINT_ROUTE_15 + db SPAWN_POINT_ROUTE_18 + db SPAWN_POINT_SILENT_HILL db $ff - db $12 - db $13 - db $14 - db $15 - db $16 - db $17 - db $18 - db $19 - db $1a - db $1b - db $1c - db $1d - db $1e - db $1f - db $20 - db $21 - db $22 - db $23 - db $24 - db $25 - db $26 - db $27 - db $28 - db $29 - db $2a - db $2b - db $2c + ; The demo's options stop here, but the spawn points included actually extend far beyond what is available + + db SPAWN_POINT_POWER_PLANT_1 + db SPAWN_POINT_POWER_PLANT_2 + db SPAWN_POINT_POWER_PLANT_3 + db SPAWN_POINT_POWER_PLANT_4 + db SPAWN_POINT_RUINS_1 + db SPAWN_POINT_RUINS_2 + db SPAWN_POINT_MINES_1 + db SPAWN_POINT_MINES_2 + db SPAWN_POINT_MINES_3 + db SPAWN_POINT_MINES_4 + db SPAWN_POINT_MINES_5 + db SPAWN_POINT_MINES_6 + db SPAWN_POINT_MINES_7 + db SPAWN_POINT_HIDEOUT_1 + db SPAWN_POINT_HIDEOUT_2 + db SPAWN_POINT_HIDEOUT_3 + db SPAWN_POINT_SLOWPOKE_WELL_1 + db SPAWN_POINT_SLOWPOKE_WELL_2 + db SPAWN_POINT_POKEMON_LEAGUE_1 + db SPAWN_POINT_POKEMON_LEAGUE_1_2 + db SPAWN_POINT_POKEMON_LEAGUE_2 + db SPAWN_POINT_POKEMON_LEAGUE_3 + db SPAWN_POINT_POKEMON_LEAGUE_4 + db SPAWN_POINT_POKEMON_LEAGUE_5 + db SPAWN_POINT_POKEMON_LEAGUE_6 + db SPAWN_POINT_POKEMON_LEAGUE_7 + db SPAWN_POINT_POKEMON_LEAGUE_7_2 db $ff diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index ffb9849c..567feb00 100644 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -42,13 +42,13 @@ InitializeNewGameWRAM: call DelayFrame ldh a, [hRandomSub] - ld [wce73], a + ld [wPlayerID], a ldh a, [rLY] ldh [hRTCRandom], a call DelayFrame ldh a, [hRandomAdd] - ld [wce74], a + ld [wPlayerID + 1], a ld hl, wPartyCount call InitializeByteList @@ -67,13 +67,13 @@ InitializeNewGameWRAM: ld [wKantoBadges], a ld [wCoins], a ld [wd15c], a - ld [wd15d], a + ld [wMoney], a ld a, $0B - ld [wd15e], a + ld [wMoney + 1], a ld a, $B8 - ld [wd15f], a + ld [wMoney + 2], a ld hl, wUnknownListLengthd1ea ld a, ITEM_REPEL @@ -192,11 +192,11 @@ PlayPokemonSetTimeMenu: db -1 MainMenuOptionSetTime:: - callab SetTime + callfar SetTime ret MainMenuOptionContinue:: - callab Function14624 + callfar Function14624 call DisplayContinueGameInfo .loop call ClearJoypad @@ -256,17 +256,17 @@ PrintNumBadges:: ld b, $01 ; only Johto Badges call CountSetBits pop hl - ld de, wCountSetBitsResult + ld de, wNumSetBits ld bc, $0102 ; flags and constants for this? 1 byte source, 2 digit display jp PrintNumber PrintNumOwnedMons:: push hl - ld hl, wPokedexOwned + ld hl, wPokedexCaught ld b, $20 ; flag_array NUM_POKEMON? call CountSetBits pop hl - ld de, wCountSetBitsResult + ld de, wNumSetBits ld bc, $0103 ; 1 byte, 3 digit jp PrintNumber @@ -295,7 +295,7 @@ StartNewGame:: call LoadFontExtra xor a ldh [hBGMapMode], a - callba InitializeNewGameWRAM + farcall InitializeNewGameWRAM call ClearTileMap call ClearWindowData xor a diff --git a/engine/menu/start_menu.asm b/engine/menu/start_menu.asm index 65ebf6c8..b91b1b77 100644 --- a/engine/menu/start_menu.asm +++ b/engine/menu/start_menu.asm @@ -174,14 +174,17 @@ StartMenu_Exit: ret StartMenu_SetFrame: - callab FrameTypeDialog + callfar FrameTypeDialog ld a, 0 ret StartMenu_Reset: +; This SHOULD be the setup for a FarCall_hl to DisplayResetDialog. +; Instead, it mistakenly calls DisplayResetDialog prior to loading its bank. +; This causes it to read data as code, specifically from the middle of MapGroup_Newtype in vanilla. ld hl, DisplayResetDialog ld a, BANK(DisplayResetDialog) - call DisplayResetDialog ; should be farcall + call DisplayResetDialog ; the problematic line ld a, 0 ret @@ -197,7 +200,7 @@ StartMenu_Settings: ldh [hBGMapMode], a call ClearTileMap call UpdateSprites - callab MenuCallSettings + callfar MenuCallSettings call ClearPalettes call Call_ExitMenu call LoadTilesetGFX @@ -219,7 +222,7 @@ _TrainerCard: push af xor a ldh [hMapAnims], a - callab TrainerCardLoop + callfar TrainerCardLoop call ClearPalettes call LoadFont call ReloadFontAndTileset @@ -338,7 +341,7 @@ DrawBackpack: res 0, [hl] call ClearSprites call ClearTileMap - callab LoadBackpackGraphics + callfar LoadBackpackGraphics hlcoord 2, 2 ld b, 08 ld c, $0F @@ -476,7 +479,7 @@ HandleBackpackInput: jp .exit .BackpackSelect - callab SwitchItemsInBag + callfar SwitchItemsInBag jp .exit .exit @@ -496,11 +499,11 @@ HandleBackpackInput: ret BackpackSelected: - callab ScrollingMenu_ClearLeftColumn + callfar ScrollingMenu_ClearLeftColumn call PlaceHollowCursor call LoadItemData - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .BagSelectJumptable jp CallJumptable @@ -522,7 +525,7 @@ BackpackSelected: .UnknownSelection call LoadStandardMenuHeader - callab Function2d2fc + callfar Function2d2fc call ExitMenu call DrawBackpack and a @@ -577,7 +580,7 @@ DebugSelectedItemMenu: db 01 .DebugSelectedItemMenuText - db $C0 + db (STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING) db 3 db "つかう@" ; use db "すてる@" ; toss @@ -590,7 +593,7 @@ SelectedItemMenu: db 01 .SelectedItemMenuText - db $C0 + db (STATICMENU_CURSOR | STATICMENU_NO_TOP_SPACING) db 2 db "つかう@" ; use db "すてる@" ; toss @@ -607,8 +610,8 @@ RegisterItemSelection: ret UseItemSelection: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .UseItemJumptable jp CallJumptable @@ -658,13 +661,13 @@ UseItemSelection: TryTossItem: push de call LoadItemData - callab _CheckTossableItem - ld a, [wItemAttributeParamBuffer] + callfar _CheckTossableItem + ld a, [wItemAttributeValue] and a jr nz, .TossFail ld hl, .TossedText call MenuTextBox - callab SelectQuantityToToss + callfar SelectQuantityToToss push af call CloseWindow call ExitMenu @@ -823,7 +826,7 @@ StartMenuLoadSprites: call DisableLCD ld a, 6 call UpdateSoundNTimes - callab Function140d9 + callfar Function140d9 call LoadTilesetGFX call LoadFontExtra call ClearSprites @@ -835,8 +838,8 @@ StartMenuLoadSprites: ret TryRegisterItem: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .RegisterItemJumptable jp CallJumptable @@ -892,23 +895,23 @@ StartMenu_Party: ret .partynonzero call LoadStandardMenuHeader - callab Function50756 + callfar ClearGraphicsForPartyMenu HandleSelectedPokemon: xor a ld [wcdb9], a ld [wSelectedSwapPosition], a - predef Function50774 + predef PartyMenuInBattle jr PartyPrompt.partypromptreturn PartyPrompt: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] inc a ld [wSelectedSwapPosition], a - callab Function8f1f2 + callfar Function8f1f2 ld a, 4 ld [wcdb9], a - predef Function50774 + predef PartyMenuInBattle .partypromptreturn jr c, .return jp SelectedPokemonSubmenu @@ -932,7 +935,7 @@ SelectedPokemonSubmenu: hlcoord 1, 13 lb bc, 4, $12 call ClearBox - callab Function24955 + callfar MonSubmenu call GetCurNick ld a, [wMenuSelection] ld hl, PartyJumpTable @@ -972,7 +975,7 @@ PartyCheckLessThanTwo: jp PartyPrompt PartyHeldItem: - callab Function_8f1cb + callfar FreezeMonIcons ld hl, .HoldItemMenu call LoadMenuHeader call VerticalMenu @@ -1009,7 +1012,7 @@ PartyHeldItem: call SpeechTextBox call LoadItemData call CheckTossableItem - ld a, [wItemAttributeParamBuffer] + ld a, [wItemAttributeValue] and a jp nz, .CantGive call GetPartyItemOffset @@ -1198,8 +1201,8 @@ PartyRecieveItem: ret UnusedHandleItemJumptable: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, UnusedItemJumptable jp CallJumptable @@ -1233,13 +1236,13 @@ PartyBallPocket: PartyGiveMail: call LoadStandardMenuHeader ld de, wMovementBufferCount - callab ComposeMailMessage + callfar ComposeMailMessage xor a ldh [hBGMapMode], a call LoadFontsBattleExtra call Call_ExitMenu call WaitBGMap - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, $BA68 ld bc, $0028 call AddNTimes @@ -1269,7 +1272,7 @@ PartyMailMenu: call YesNoBox call CloseWindow jp c, .exit - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMon1 + MON_ITEM ld bc, $0030 call AddNTimes @@ -1289,7 +1292,7 @@ PartyMailMenu: call MenuTextBoxBackup jr .exit .GiveMail - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, $BA68 ld bc, $0028 call AddNTimes @@ -1365,7 +1368,7 @@ PartyPokemonSummary: jp HandleSelectedPokemon PartyTryCut: - callab CutFunction + callfar CutFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon @@ -1375,7 +1378,7 @@ PartyTryCut: PartyTryFly: bit 2, a jp z, PrintNeedNewBadgeText - callab FlyFunction + callfar FlyFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon @@ -1387,7 +1390,7 @@ PartyCantUseMove: jp HandleSelectedPokemon PartyTryTeleport: - callab TeleportFunction + callfar TeleportFunction ld a, [wFieldMoveSucceeded] and a jp z, HandleSelectedPokemon @@ -1397,7 +1400,7 @@ PartyTryTeleport: PartyTrySurf: bit 4, a jp z, PrintNeedNewBadgeText - callab SurfFunction + callfar SurfFunction ld a, [wFieldMoveSucceeded] and a jp z, HandleSelectedPokemon @@ -1405,7 +1408,7 @@ PartyTrySurf: jp PartyPromptExit PartyTryDig: - callab DigFunction + callfar DigFunction ld a, [wFieldMoveSucceeded] cp $F jp nz, HandleSelectedPokemon @@ -1429,9 +1432,9 @@ PartyCalculateHealth: sub [hl] dec hl ldh a, [hQuotient + 1] - sbc a, [hl] + sbc [hl] jp nc, PrintNotHealthyEnoughText - callab Functionf218 + callfar Functionf218 jp HandleSelectedPokemon PrintNotHealthyEnoughText: @@ -1468,9 +1471,9 @@ PokeSummary: call ClearSprites xor a ldh [hBGMapMode], a - callab LoadOnlyPokemonStatsGraphics - callab Function8f0cc - ld a, [wWhichPokemon] + callfar LoadOnlyPokemonStatsGraphics + callfar Function8f0cc + ld a, [wCurPartyMon] ld e, a ld d, 0 ld hl, wPartySpecies @@ -1498,7 +1501,7 @@ PokeSummary: lb bc, 1, 9 call ClearBox hlcoord 16, 0 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] and a jr z, .FirstPokeChosen ld [hl], "」" @@ -1519,20 +1522,20 @@ SummaryDrawPoke: ldh [hBGMapMode], a ld [wSelectedSwapPosition], a ld [wMonType], a - predef Function50000 - ld hl, wcd81 - ld de, wce2e + predef CopyMonToTempMon + ld hl, wTempMonMoves + ld de, wListMoves_MoveIndicesBuffer ld bc, $0004 call CopyBytes ld a, $28 ld [wHPBarMaxHP], a hlcoord 2, 3 - predef Function50bfe + predef ListMoves hlcoord 11, 3 - predef Function506d4 + predef ListMovePP call WaitBGMap call SetPalettes - ld a, [wcd57] + ld a, [wNumMoves] inc a ld [w2DMenuNumRows], a hlcoord 0, 10 @@ -1555,7 +1558,7 @@ PartySelectionInputs: .PartySelectSkipInputs ld hl, wPartyMon1 + MON_MOVES lb bc, 0, $30 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes ld a, [wMenuCursorY] dec a @@ -1576,13 +1579,13 @@ PartySelectionInputs: ld a, [wCurSpecies] ld b, a hlcoord 5, 12 - predef Function500a0 + predef PrintMoveType ld a, [wCurSpecies] dec a - ld hl, Data418b8 - ld bc, $7 + ld hl, Moves + MOVE_POWER + ld bc, MOVE_LENGTH call AddNTimes - ld a, BANK(Data418b8) + ld a, BANK(Moves) call GetFarByte hlcoord 15, 12 cp 2 @@ -1610,7 +1613,7 @@ PartySelectionInputs: jp PartySelectionInputs .PartyPokeDetailsAdvancePage - ld hl, wWhichPokemon + ld hl, wCurPartyMon inc [hl] ld a, [wPartyCount] cp [hl] @@ -1619,7 +1622,7 @@ PartySelectionInputs: jp PartySelectionInputs .PartyPokeDetailsBackPage - ld hl, wWhichPokemon + ld hl, wCurPartyMon ld a, [hl] and a jp z, PartySelectionInputs @@ -1637,7 +1640,7 @@ PartySelectionInputs: .swap ld hl, wPartyMon1 + MON_MOVES ld bc, $0030 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes push hl call SwapEntries @@ -1647,9 +1650,9 @@ PartySelectionInputs: call SwapEntries ld a, [wBattleMode] jr z, .NotInBattle - ld hl, wca04 + ld hl, wBattleMonMoves ld bc, $0020 - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes push hl call SwapEntries @@ -1792,8 +1795,8 @@ GetRegisteredItemID: ret UseRegisteredItem: - callab CheckItemMenu - ld a, [wItemAttributeParamBuffer] + callfar CheckItemMenu + ld a, [wItemAttributeValue] ld hl, .RegisteredItemJumptable jp CallJumptable @@ -2110,15 +2113,15 @@ DrawTrainerCardMainPage: ld de, wPlayerName call PlaceString hlcoord 5, 4 - ld de, wce73 + ld de, wPlayerID lb bc, 2, 5 call PrintNumber hlcoord 7, 6 - ld de, wd15d + ld de, wMoney lb bc, 3, 6 call PrintNumber ld [hl], $F0 - ld hl, wPokedexOwned + ld hl, wPokedexCaught ld b, $1C call CountSetBits ld de, wce37 diff --git a/engine/menu/text_entry.asm b/engine/menu/text_entry.asm index cbfcacbc..3b60d2d0 100644 --- a/engine/menu/text_entry.asm +++ b/engine/menu/text_entry.asm @@ -247,7 +247,7 @@ NamingScreenJoypadLoop: bit 7, a jr nz, .leap call .RunJumpTable - callba PlaySpriteAnimationsAndDelayFrame + farcall PlaySpriteAnimationsAndDelayFrame call .UpdateStringEntry call DelayFrame and a @@ -255,7 +255,7 @@ NamingScreenJoypadLoop: .leap ; kills sprites and resets screen position - callab InitEffectObject + callfar InitEffectObject call ClearSprites xor a ldh [hSCX], a @@ -620,7 +620,7 @@ NamingScreenGetLastCharacter: LoadNamingScreenGFX: call ClearSprites - callab InitEffectObject + callfar InitEffectObject call LoadFont ld de, TextScreenGFX_End @@ -811,14 +811,14 @@ DoMailEntry: bit 7, a jr nz, .exit_mail call .DoJumpTable - callba PlaySpriteAnimationsAndDelayFrame + farcall PlaySpriteAnimationsAndDelayFrame call .Update call DelayFrame and a ret .exit_mail - callab InitEffectObject + callfar InitEffectObject call ClearSprites xor a ldh [hSCX], a diff --git a/engine/movie/game_freak_intro.asm b/engine/movie/game_freak_intro.asm index 6863b8d6..f46aec43 100644 --- a/engine/movie/game_freak_intro.asm +++ b/engine/movie/game_freak_intro.asm @@ -26,7 +26,7 @@ GameFreakIntro:: ld b, SGB_GF_INTRO call GetSGBLayout - callab IntroCopyRightInfo + callfar IntroCopyRightInfo ld a, 1 ldh [hBGMapMode], a @@ -77,7 +77,7 @@ GameFreakIntro:: ld a, BANK(GameFreakLogoSparkleGFX) call FarCopyData - callba InitEffectObject + farcall InitEffectObject ld hl, wSpriteAnimDict ld a, SPRITE_ANIM_DICT_GS_SPLASH @@ -119,7 +119,7 @@ GameFreakIntro:: bit 7, a jr nz, .Finished - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay call GameFreakPresentsScene call DelayFrame @@ -131,7 +131,7 @@ GameFreakIntro:: set 6, [hl] .Finished: - callab InitEffectObject + callfar InitEffectObject call ClearTileMap call ClearSprites diff --git a/engine/movie/oak_speech.asm b/engine/movie/oak_speech.asm index b3f1ff5f..c4314f93 100644 --- a/engine/movie/oak_speech.asm +++ b/engine/movie/oak_speech.asm @@ -31,8 +31,8 @@ GameStart:: call ClearTileMap ld a, DEX_YADOKING ld [wCurSpecies], a - ld [wMonDexIndex], a - call GetMonHeader + ld [wCurPartySpecies], a + call GetBaseData hlcoord 6, 4 hlcoord 6, 4 call PrepMonFrontpic @@ -69,7 +69,7 @@ GameStart:: call FadeInIntroPic ld hl, OakSpeech6 call PrintText - callba SetClockDialog + farcall SetClockDialog call Function04ac call GBFadeOutToWhite call ClearTileMap @@ -162,11 +162,11 @@ GameStartPlacement:: DebugSetUpPlayer:: call SetPlayerNamesDebug ld a, $0F - ld [wd15d], a + ld [wMoney], a ld a, $42 - ld [wd15e], a + ld [wMoney + 1], a ld a, $3F - ld [wd15f], a + ld [wMoney + 2], a ld a, $FF ; give all badges ld [wJohtoBadges], a ld [wKantoBadges], a @@ -176,11 +176,11 @@ DebugSetUpPlayer:: call FillTMs ld de, DebugBagItems call FillBagWithList - ld hl, wPokedexOwned + ld hl, wPokedexCaught call DebugFillPokedex ld hl, wPokedexSeen call DebugFillPokedex - ld hl, wAnnonDex + ld hl, wUnownDex ld [hl], $01 call Function40fd ret @@ -276,7 +276,7 @@ GiveKantoStarters:: ret GivePokemon:: - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ld a, b ld [wCurPartyLevel], a ld a, $10 @@ -291,13 +291,13 @@ AddRandomPokemonToBox: xor a ld [wca44], a call RandomUnder246 - ld [wcdd7], a + ld [wTempEnemyMonSpecies], a ld a, $05 ld [wCurPartyLevel], a - callab AddPokemonToBox - ld a, [wcdd7] - ld [wMonDexIndex], a - callab Functiondd5c + callfar AddPokemonToBox + ld a, [wTempEnemyMonSpecies] + ld [wCurPartySpecies], a + callfar Functiondd5c pop af dec a jr nz, .loop @@ -494,7 +494,7 @@ ChoosePlayerName:: .loop ld b, $01 ld de, wPlayerName - callba NamingScreen + farcall NamingScreen ld a, [wPlayerName] cp "@" jr z, .loop @@ -547,7 +547,7 @@ ChooseRivalName:: .loop ld b, $02 ld de, wRivalName - callba NamingScreen + farcall NamingScreen ld a, [wRivalName] cp "@" jr z, .loop @@ -599,14 +599,14 @@ MomNamePrompt:: .loop ld b, $03 ld de, wMomsName - callba NamingScreen + farcall NamingScreen ld a, [wMomsName] cp "@" jr z, .loop call ClearPalettes call ClearTileMap - callab Function140d9 + callfar Function140d9 call LoadFontExtra call GetMemSGBLayout call WaitBGMap diff --git a/engine/movie/opening_cutscene.asm b/engine/movie/opening_cutscene.asm index 2e13082c..ac15bcfd 100644 --- a/engine/movie/opening_cutscene.asm +++ b/engine/movie/opening_cutscene.asm @@ -10,7 +10,7 @@ OpeningCutscene:: ret .Init: - callba InitEffectObject + farcall InitEffectObject xor a ld [wIntroJumptableIndex], a ldh [hBGMapMode], a @@ -27,14 +27,14 @@ OpeningCutscene:: bit 7, a jr nz, .Finish - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay call IntroSceneJumper call DelayFrame and a ret .Finish: - callab InitEffectObject + callfar InitEffectObject call ClearSprites call DelayFrame xor a @@ -80,7 +80,7 @@ IntroScene1: ld c, 0 call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject call Intro_ResetLYOverrides @@ -330,7 +330,7 @@ IntroScene3_Jumper: call Intro_InitMagikarps ret .load_palettes - callab LoadMagikarpPalettes_Intro + callfar LoadMagikarpPalettes_Intro ret .scene3_5: @@ -547,7 +547,7 @@ Intro_InitSineLYOverrides: .loop push af push de - callba BattleAnim_Sine_e + farcall BattleAnim_Sine_e ld a, e ld [bc], a inc bc @@ -602,7 +602,7 @@ IntroScene6: ld b, SGB_GS_INTRO ld c, 1 call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject call Intro_ResetLYOverrides ld hl, vChars2 ld de, IntroForestGFX @@ -700,7 +700,7 @@ IntroScene8: ld [wIntroFrameCounter1], a ld hl, wIntroJumptableIndex inc [hl] - callab LoadForestPalettes2_Intro + callfar LoadForestPalettes2_Intro ret IntroScene9: @@ -791,7 +791,7 @@ IntroScene10: ld b, SGB_GS_INTRO ld c, 2 call GetSGBLayout - callab InitEffectObject + callfar InitEffectObject call Intro_ResetLYOverrides call Intro_BlankTilemapAndBGMap @@ -1057,11 +1057,11 @@ Intro_FlashSilhouette: ret Intro_LoadVenusaurPalette: - callab LoadVenusaurPalettes_Intro + callfar LoadVenusaurPalettes_Intro ret Intro_LoadCharizardPalette: - callab LoadCharizardPalettes_Intro + callfar LoadCharizardPalettes_Intro ret DrawIntroCharizardGraphic: diff --git a/engine/movie/title.asm b/engine/movie/title.asm index 8ddf2603..4938abaa 100644 --- a/engine/movie/title.asm +++ b/engine/movie/title.asm @@ -3,22 +3,22 @@ INCLUDE "constants.asm" SECTION "engine/movie/title.asm@Title screen", ROMX IntroSequence:: - callab GameFreakIntro + callfar GameFreakIntro jr c, TitleSequenceStart ld a, [wTitleSequenceOpeningType] and a jr z, .opening_sequence .pikachu_minigame - callab PikachuMiniGame + callfar PikachuMiniGame jr TitleSequenceStart .opening_sequence - callab OpeningCutscene + callfar OpeningCutscene TitleSequenceStart:: call TitleSequenceInit - callab SetTitleBGDecorationBorder + callfar SetTitleBGDecorationBorder .loop call TitleScreenMain @@ -64,7 +64,7 @@ TitleSequenceInit:: call DisableLCD call ClearSprites - callba InitEffectObject + farcall InitEffectObject ld hl, vChars0 ld bc, vBGMap0 - vChars0 @@ -176,7 +176,7 @@ TitleScreenMain:: bit 7, a jr nz, .exit call TitleScreenSequence - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay call DelayFrame and a ret @@ -540,7 +540,7 @@ SRAMClearMenu:: cp $01 jp z, Init - callab InitAllSRAMBanks + callfar InitAllSRAMBanks jp Init SRAMClear_Message:: diff --git a/engine/overworld/player_movement.asm b/engine/overworld/player_movement.asm index 49bbf8f6..6e841cfe 100644 --- a/engine/overworld/player_movement.asm +++ b/engine/overworld/player_movement.asm @@ -8,7 +8,7 @@ OverworldMovementCheck:: UnusedOverworldMovementCheck:: ld a, PLAYER_OBJECT_INDEX ldh [hEventCollisionException], a - ld a, [wPlayerDirection] + ld a, [wPlayerStepType] and a jr z, SetPlayerIdle ; player movement is disabled ldh a, [hJoyState] @@ -514,7 +514,7 @@ IsPlayerCollisionTileSolid:: ; c - solid/sometimes solid push de ld bc, wPlayerStruct - callab _IsObjectCollisionTileSolid + callfar _IsObjectCollisionTileSolid ld a, e pop de ret @@ -526,7 +526,7 @@ CheckPlayerObjectCollision:: ; nc - no collision ; c - collision push de - callab _CheckPlayerObjectCollision + callfar _CheckPlayerObjectCollision pop de ret nc jp CheckCompanionObjectCollision @@ -565,7 +565,7 @@ CheckCompanionObjectCollision:: _OverworldMovementCheck:: ld a, PLAYER_OBJECT_INDEX ldh [hEventCollisionException], a - ld a, [wPlayerDirection] + ld a, [wPlayerStepType] and a jp z, SetPlayerIdle ldh a, [hJoyState] @@ -1040,7 +1040,7 @@ CheckObjectCollision:: ld a, [wPlayerMapY] add e ld e, a - callab _CheckObjectCollision + callfar _CheckObjectCollision ret nc jp CheckCompanionObjectCollision diff --git a/engine/pokemon/health.asm b/engine/pokemon/health.asm index cf503109..155cb41d 100755 --- a/engine/pokemon/health.asm +++ b/engine/pokemon/health.asm @@ -80,7 +80,7 @@ HealParty: .party_done xor a - ld [wWhichPokemon], a + ld [wCurPartyMon], a ld [wce37], a ld a, [wPartyCount] ld b, a @@ -89,7 +89,7 @@ HealParty: push bc call ApplyPPUp pop bc - ld hl, wWhichPokemon + ld hl, wCurPartyMon inc [hl] dec b jr nz, .pp_up @@ -236,7 +236,7 @@ UpdateHPBar_AnimateHPBar: push af push de ld d, HP_BAR_LENGTH - ld a, [wHPBarType] + ld a, [wWhichHPBar] and BATTLE_HP_BAR ld b, a call DrawBattleHPBar @@ -300,7 +300,7 @@ UpdateHPBar_CalcHPDifference: UpdateHPBar_PrintHPNumber: push af push de - ld a, [wHPBarType] + ld a, [wWhichHPBar] and a jr z, .done ld a, [wHPBarOldHP] diff --git a/engine/sprites/sprites.asm b/engine/sprites/sprites.asm index 87bf7b35..ae803ebc 100644 --- a/engine/sprites/sprites.asm +++ b/engine/sprites/sprites.asm @@ -107,25 +107,25 @@ AddOutdoorSprites: ret Function140d9: - ld hl, wcdaf + ld hl, wSpriteFlags ld a, [hl] push af res 7, [hl] set 6, [hl] call LoadUsedSpritesGfx pop af - ld [wcdaf], a + ld [wSpriteFlags], a ret Function140ea: - ld hl, wcdaf + ld hl, wSpriteFlags ld a, [hl] push af set 7, [hl] res 6, [hl] call LoadUsedSpritesGfx pop af - ld [wcdaf], a + ld [wSpriteFlags], a ret LoadUsedSpritesGfx: @@ -197,7 +197,7 @@ LoadOverworldSprite: push bc push hl push de - ld a, [wcdaf] + ld a, [wSpriteFlags] bit 7, a jr nz, .dont_copy call Get2bpp @@ -214,7 +214,7 @@ LoadOverworldSprite: pop af call IsAnimatedSprite ret c - ld a, [wcdaf] + ld a, [wSpriteFlags] bit 6, a ret nz call Get2bpp diff --git a/engine/trainer_gear.asm b/engine/trainer_gear.asm index 46a3c2ba..a2053535 100644 --- a/engine/trainer_gear.asm +++ b/engine/trainer_gear.asm @@ -169,13 +169,13 @@ TrainerGear_Loop: bit TRAINERGEAR_END_LOOP_F, a jr nz, .done call TrainerGear_Jumptable - callba EffectObjectJumpNoDelay + farcall EffectObjectJumpNoDelay call TrainerGear_UpdateTime call DelayFrame and a ret .done - callab InitEffectObject + callfar InitEffectObject call ClearSprites xor a ldh [hSCX], a @@ -224,7 +224,7 @@ TrainerGear_Next: ret TrainerGear_InitPointerSprite: - callab InitEffectObject + callfar InitEffectObject ld de, PointerGFX ld hl, vChars0 tile TRAINERGEAR_GFX_POINTER lb bc, BANK(PointerGFX), 4 @@ -623,7 +623,7 @@ TrainerGear_PhoneJoypad: ret TrainerGear_ClearView: - callab InitEffectObject + callfar InitEffectObject call ClearSprites call WaitForAutoBgMapTransfer coord hl, 0, 3 diff --git a/engine/unknown_boxes.asm b/engine/unknown_boxes.asm index d2a6ede5..d5233f45 100644 --- a/engine/unknown_boxes.asm +++ b/engine/unknown_boxes.asm @@ -10,13 +10,13 @@ Function1130b: cp PARTY_LENGTH jr c, .bigjump ld a, [wBoxListLength] - cp $1E + cp MONS_PER_BOX jr nc, .fullbox xor a ld [wca44], a - ld a, [wMonDexIndex] - ld [wcdd7], a - callab AddPokemonToBox + ld a, [wCurPartySpecies] + ld [wTempEnemyMonSpecies], a + callfar AddPokemonToBox call RecievePokemon predef Functiondd5c and $7F @@ -40,12 +40,12 @@ Function1130b: ret RecievePokemon: - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] push af ld [wNamedObjectIndexBuffer], a dec a ld c, a - ld hl, wPokedexOwned + ld hl, wPokedexCaught ld b, 01 ;SET_FLAG predef SmallFarFlagAction pop af diff --git a/home/copy2.asm b/home/copy2.asm index a55ecb83..89b47abb 100644 --- a/home/copy2.asm +++ b/home/copy2.asm @@ -3,19 +3,19 @@ INCLUDE "constants.asm" SECTION "home/copy2.asm", ROM0 RedrawPlayerSprite:: - jpab _RedrawPlayerSprite + jpfar _RedrawPlayerSprite LoadFont:: - jpab LoadFontGraphics + jpfar LoadFontGraphics LoadFontsBattleExtra:: - jpab LoadPokemonMenuGraphics + jpfar LoadPokemonMenuGraphics LoadFontExtra:: - jpab LoadFontExtraGraphicsWithCursor + jpfar LoadFontExtraGraphicsWithCursor LoadToolgearGraphics:: - jpab LoadToolgearGraphicsDebug + jpfar LoadToolgearGraphicsDebug FarCopyData: ; Identical to FarCopyBytes except for tail call optimization. diff --git a/home/cry.asm b/home/cry.asm index 706187b6..aa8a192c 100644 --- a/home/cry.asm +++ b/home/cry.asm @@ -64,7 +64,7 @@ GetCryIndex:: push af ld a, d ld [wce37], a - callba Function40b45 + farcall ConvertMon_2to1 ld a, [wce37] dec a ld c, a @@ -77,7 +77,7 @@ PrintLevel:: ld a, $6e ; ":L" ld [hli], a ld c, 2 - ld a, [wLoadedMonLevel] + ld a, [wTempMonLevel] cp 100 jr c, _PrintLevelCommon dec hl @@ -88,15 +88,15 @@ PrintLevelFullWidth:: ld a, $6e ; ":L" ld [hli], a ld c, 3 - ld a, [wLoadedMonLevel] + ld a, [wTempMonLevel] _PrintLevelCommon: ld [wce37], a ld de, wce37 ld b, PRINTNUM_RIGHTALIGN | 1 jp PrintNumber -Function3a42:: - ld hl, wce2e +GetNthMove:: ; unreferenced? + ld hl, wListMoves_MoveIndicesBuffer ld c, a ld b, 0 add hl, bc diff --git a/home/map.asm b/home/map.asm index f5bd473e..5042301d 100644 --- a/home/map.asm +++ b/home/map.asm @@ -325,13 +325,13 @@ MapSetup_22af:: ret MapSetup_22de:: - callab OverworldFadeOut + callfar OverworldFadeOut MapSetup_Continue:: call DisableLCD call DisableAudio call VolumeOff - callab LoadSpawnPoint + callfar LoadSpawnPoint call CopyMapPartialAndAttributes call SetUpMapBuffer call InitUnknownBuffercc9e @@ -348,19 +348,19 @@ MapSetup_Continue:: ld b, 9 ; TODO: constantify this call GetSGBLayout call LoadWildMons - call $242C ; TODO + call Function242c ; TODO call FadeIn ret MapSetup_Warp:: - callab OverworldFadeOut + callfar OverworldFadeOut call DisableLCD call Function27C7 ; TODO ld a, [wNextWarp] ld [wWarpNumber], a ld a, [wNextMapGroup] ld [wMapGroup], a - ld a, [wNextMapId] + ld a, [wNextMapNumber] ld [wMapId], a call CopyMapPartialAndAttributes call SetUpMapBuffer @@ -381,7 +381,7 @@ MapSetup_Warp:: ret LoadMapTimeOfDay:: - callab ReplaceTimeOfDayPals + callfar ReplaceTimeOfDayPals call LoadMapPart call .ClearBGMap call .PushAttrMap @@ -422,18 +422,18 @@ LoadMapTimeOfDay:: ret LoadWildMons:: - callab _LoadWildMons + callfar _LoadWildMons ret LoadGraphics:: call LoadTileset call LoadTilesetGFX - callba RefreshSprites + farcall RefreshSprites call LoadFontExtra ret InitializeVisibleSprites:: - callab _InitializeVisibleSprites + callfar _InitializeVisibleSprites ret FadeIn:: ; This is not OverworldFadeIn, but I don't know what it is @@ -442,16 +442,16 @@ FadeIn:: ; This is not OverworldFadeIn, but I don't know what it is ld hl, wVramState set 0, [hl] call Function2407 - callab _UpdateSprites + callfar _UpdateSprites call DelayFrame - callab OverworldFadeIn + callfar OverworldFadeIn ret Function2407:: ld a, NO_MOVEMENT ld [wPlayerMovement], a xor a - ld [wPlayerAction], a + ld [wPlayerStepFrame], a ld a, [wPlayerFacing] and $c ld [wPlayerFacing], a @@ -466,6 +466,7 @@ Function2407:: ret z cp $78 ret z +Function242c:: ld a, $0 ld [wPlayerFacing], a ld a, $0 @@ -692,7 +693,7 @@ WarpCheck:: ld a, [hli] ld [wNextMapGroup], a ld a, [hli] - ld [wNextMapId], a + ld [wNextMapNumber], a ld a, c ld [wPrevWarp], a ld a, MAPSETUP_WARP @@ -894,7 +895,7 @@ ReadObjectEvents:: .skip ld a, [wCurrMapObjectCount] ld c, a - ld a, NUM_OBJECTS + ld a, NUM_OBJECTS sub c jr z, .finish @@ -1092,7 +1093,7 @@ Function27C7:: ; TODO .interior ld a, [wNextMapGroup] ld b, a - ld a, [wNextMapId] + ld a, [wNextMapNumber] ld c, a call GetAnyMapEnvironment cp 3 @@ -1114,7 +1115,7 @@ Function27C7:: ; TODO ret LoadMapPart:: - callab UpdateTimeOfDayPal + callfar UpdateTimeOfDayPal ldh a, [hROMBank] push af @@ -1612,13 +1613,13 @@ Function2ae5:: ret nz call OverworldStartButtonCheck ret nz - callab OverworldMovementCheck + callfar OverworldMovementCheck ldh a, [hMapEntryMethod] and a ret nz call Function2c4a jr nc, .loop - callba Function824c + farcall Function824c ld a, [wc5ed] bit 6, a jr nz, .loop @@ -1652,7 +1653,7 @@ Function2b52:: ret nz call Function2c4a jr nc, .asm_2b52 - callba Function824c + farcall Function824c call CheckMovingOffEdgeOfMap ret c call WarpCheck @@ -1666,7 +1667,7 @@ Function2b78:: ret Function2b79:: - callab DebugMapViewer + callfar DebugMapViewer ld a, $4 call WriteIntod637 ret @@ -1677,10 +1678,10 @@ Function2b87:: call GetJoypad call OverworldStartButtonCheck ret nz - callab OverworldMovementCheck + callfar OverworldMovementCheck call Function2ba8 jr nc, .asm_2b87 - callba Function824c + farcall Function824c jr .asm_2b87 Function2ba8:: diff --git a/home/map_objects.asm b/home/map_objects.asm index f311dc6f..665e721c 100644 --- a/home/map_objects.asm +++ b/home/map_objects.asm @@ -3,7 +3,7 @@ INCLUDE "constants.asm" SECTION "home/map_objects.asm", ROM0 Function15b5:: - callab SpawnPlayer + callfar SpawnPlayer ret GetMapObject:: @@ -28,7 +28,7 @@ Function15d1:: Function15da:: ldh [hMapObjectIndex], a - callab Function8131 + callfar Function8131 ldh a, [hMapObjectIndex] call GetMapObject call Function40eb @@ -40,7 +40,7 @@ Function15ed:: ld a, $0 ldh [hObjectStructIndex], a ld de, wObjectStructs - callab CopyMapObjectToObjectStruct + callfar CopyMapObjectToObjectStruct ret Function1602:: @@ -49,7 +49,7 @@ Function1602:: ld a, FOLLOWER_STRUCT ldh [hObjectStructIndex], a ld de, wObject1Struct - callab CopyMapObjectToObjectStruct + callfar CopyMapObjectToObjectStruct ret Function1617:: @@ -84,7 +84,7 @@ Function1617:: Function164a:: call Function1617 - callab Function8125 + callfar Function8125 ret CopyPlayerObjectTemplate:: @@ -134,7 +134,7 @@ Function1680:: and a ret -Function169f:: +DeleteMapObject:: call GetMapObject ld hl, MAPOBJECT_OBJECT_STRUCT_ID add hl, bc @@ -200,7 +200,7 @@ Function16fb:: ld hl, OBJECT_MOVEMENT_TYPE add hl, bc ld [hl], $19 - ld hl, OBJECT_DIRECTION + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], $0 .asm_171f: @@ -310,8 +310,8 @@ UpdateSprites:: ld a, [wVramState] bit 0, a ret z - callab Function5007 - callab _UpdateSprites + callfar Function5007 + callfar _UpdateSprites ret GetObjectStruct:: @@ -522,12 +522,12 @@ Function18cc:: res 5, [hl] ld hl, wPlayerMovementType ld [hl], $10 - ld hl, wPlayerDirection + ld hl, wPlayerStepType ld [hl], $0 ret Function18e5:: - ld hl, OBJECT_WALKING + ld hl, OBJECT_DIRECTION add hl, bc ld a, [hl] srl a @@ -541,7 +541,7 @@ Function18e5:: ld hl, OBJECT_MOVEMENT_TYPE add hl, bc ld [hl], a - ld hl, OBJECT_DIRECTION + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], $0 ret @@ -581,7 +581,7 @@ StartFollow:: pop bc ld a, c call SetFollowerIfVisible - callab QueueFollowerFirstStep + callfar QueueFollowerFirstStep ret SetLeaderIfVisible:: @@ -605,7 +605,7 @@ SetFollowerIfVisible:: ld hl, OBJECT_MOVEMENT_TYPE add hl, bc ld [hl], $18 - ld hl, OBJECT_DIRECTION + ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], $0 ldh a, [hObjectStructIndex] @@ -680,7 +680,7 @@ SetObjectFacing:: add a add a and $c - ld hl, OBJECT_WALKING + ld hl, OBJECT_DIRECTION add hl, bc ld [hl], a ret diff --git a/home/math.asm b/home/math.asm index 7e655f09..040af51a 100644 --- a/home/math.asm +++ b/home/math.asm @@ -5,7 +5,7 @@ SECTION "home/math.asm", ROM0 Multiply:: push hl push bc - callab _Multiply + callfar _Multiply pop bc pop hl ret diff --git a/home/menu_window.asm b/home/menu_window.asm index 91685525..811ed67f 100644 --- a/home/menu_window.asm +++ b/home/menu_window.asm @@ -69,7 +69,7 @@ Menu_WasButtonPressed:: ld a, [w2DMenuFlags] bit 6, a jr z, .asm_1ad6 - callba PlaySpriteAnimationsAndDelayFrame + farcall PlaySpriteAnimationsAndDelayFrame .asm_1ad6: call GetJoypadDebounced ldh a, [hJoySum] @@ -285,7 +285,7 @@ PushWindow:: ExitMenu:: push af - callab _ExitMenu + callfar _ExitMenu call Function1c0a pop af ret @@ -327,7 +327,7 @@ Function1c0a:: ret InitVerticalMenuCursor:: - jpab _InitVerticalMenuCursor + jpfar _InitVerticalMenuCursor CloseWindow:: push af @@ -338,7 +338,7 @@ CloseWindow:: ret Function1c58:: - jpab Function24185 + jpfar Function24185 RestoreTileBackup:: call MenuBoxCoord2Tile diff --git a/home/misc_32c8.asm b/home/misc_32c8.asm index 0e3802d3..352a6e12 100644 --- a/home/misc_32c8.asm +++ b/home/misc_32c8.asm @@ -28,12 +28,12 @@ SECTION "home/misc_32c8.asm@Unknown 3686", ROM0 GiveMonToPlayer:: ; Give to the player Pokemon of species b at level c. ld a, b - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ld a, c ld [wCurPartyLevel], a xor a ld [wMonType], a - jpba Function1130a + farjp Function1130a WaitPressedAny:: ; Waits for one of the buttons in d to be pressed. @@ -70,7 +70,7 @@ WaitPressedAny:: CountSetBits:: ; Count the number of bits set in b bytes at hl. -; Return to a, c, and wCountSetBitsResult. +; Return to a, c, and wNumSetBits. ld c, $0 .asm_36b3: ld a, [hli] @@ -86,5 +86,5 @@ CountSetBits:: dec b jr nz, .asm_36b3 ld a, c - ld [wCountSetBitsResult], a + ld [wNumSetBits], a ret diff --git a/home/misc_3c43.asm b/home/misc_3c43.asm index 315856f5..b4741ce6 100644 --- a/home/misc_3c43.asm +++ b/home/misc_3c43.asm @@ -10,19 +10,19 @@ GetPartyParamLocation:: ld b, 0 add hl, bc ld bc, PARTYMON_STRUCT_LENGTH - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] call AddNTimes pop bc ret UseItem:: - jpba _UseItem + farjp _UseItem CheckTossableItem:: push hl push de push bc - callab _CheckTossableItem + callfar _CheckTossableItem pop bc pop de pop hl diff --git a/home/mon_stats.asm b/home/mon_stats.asm index ce4cc992..4214dc9e 100644 --- a/home/mon_stats.asm +++ b/home/mon_stats.asm @@ -53,7 +53,7 @@ PrepMonFrontpic:: ld a, $1 ld [wSpriteFlipped], a _PrepMonFrontpic:: - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] and a jr z, .asm_39a8 cp NUM_POKEMON + 1 @@ -74,5 +74,5 @@ _PrepMonFrontpic:: xor a ld [wSpriteFlipped], a inc a - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ret diff --git a/home/names.asm b/home/names.asm index be029bea..0b889137 100644 --- a/home/names.asm +++ b/home/names.asm @@ -9,7 +9,7 @@ NamesPointers:: dba MoveNames ; MOVE_NAME dbw 0, 0 ; DUMMY_NAME dba ItemNames ; ITEM_NAME - dbw $00, wPartyMonOT ; PARTY_OT_NAME + dbw $00, wPartyMonOTs ; PARTY_OT_NAME dbw $00, wOTPartyMonOT ; ENEMY_OT_NAME dba TrainerClassNames ; TRAINER_NAME dbw $04, $5677 ; MOVE_DESC_NAME_BROKEN (wrong bank..?) @@ -245,7 +245,7 @@ Unreferenced_GetMoveName:: SECTION "home/names.asm@GetNick", ROM0 GetCurNick:: - ld a, [wWhichPokemon] + ld a, [wCurPartyMon] ld hl, wPartyMonNicknames GetNick: @@ -258,7 +258,7 @@ GetNick: ld bc, MON_NAME_LENGTH call CopyBytes pop de - callab CorrectNickErrors + callfar CorrectNickErrors pop bc pop hl ret diff --git a/home/overworld.asm b/home/overworld.asm index ee111a87..f081402e 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -13,13 +13,13 @@ OverworldStartButtonCheck:: ld a, [wDebugFlags] bit DEBUG_FIELD_F, a ret z ; debug disabled - callba FieldDebugMenu + farcall FieldDebugMenu jr CheckStartmenuSelectHook .regularMenu - callba DisplayStartMenu + farcall DisplayStartMenu jr CheckStartmenuSelectHook SelectButtonFunction:: - callab CheckRegisteredItem + callfar CheckRegisteredItem CheckStartmenuSelectHook: ldh a, [hStartmenuCloseAndSelectHookEnable] and a diff --git a/home/pokemon.asm b/home/pokemon.asm index 3e2ac23a..31757fc3 100644 --- a/home/pokemon.asm +++ b/home/pokemon.asm @@ -3,7 +3,7 @@ INCLUDE "constants.asm" SECTION "home/pokemon.asm@3A4B", ROM0 -GetMonHeader:: +GetBaseData:: ; copies the base stat data of a pokemon to wMonHeader ; INPUT: ; [wCurSpecies] = pokemon ID in dex order @@ -14,9 +14,13 @@ GetMonHeader:: push af ld a, BANK(BaseData) call Bankswitch + +; Egg doesn't have BaseData ld a, [wCurSpecies] cp DEX_EGG jr z, .egg + +; Get BaseData dec a ld bc, BaseData.FirstEntryEnd - BaseData ld hl, BaseData @@ -24,20 +28,27 @@ GetMonHeader:: ld de, wMonHeader ld bc, BaseData.FirstEntryEnd - BaseData call CopyBytes - jr .done + jr .end + .egg ld de, EggPicFront + +; Sprite dimensions ln b, 5, 5 ; egg sprite dimension ld hl, wMonHSpriteDim ld [hl], b + +; front sprite ld hl, wMonHFrontSprite ld [hl], e inc hl ld [hl], d - jr .done ; useless -.done + jr .end ; useless + +.end ld a, [wCurSpecies] ld [wMonHIndex], a + pop af call Bankswitch pop hl @@ -52,7 +63,7 @@ UncompressMonSprite:: ; Uncompresses the front or back sprite of the specified mon ; assumes the corresponding mon header is already loaded ; hl contains offset to sprite pointer ($b for front or $d for back) - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] and a ret z ld bc, wMonHeader @@ -64,7 +75,7 @@ UncompressMonSprite:: ld a, [hl] ld [wSpriteInputPtr + 1], a ld hl, MonSpriteBankList - ld a, [wMonDexIndex] + ld a, [wCurPartySpecies] ld b, a ; get Pokémon picture bank pointer from list .loop diff --git a/home/rtc.asm b/home/rtc.asm index 50686374..0f9b2421 100644 --- a/home/rtc.asm +++ b/home/rtc.asm @@ -9,9 +9,9 @@ UpdateTimeOfDayPalettes: ; fallthrough TimeOfDayPals:: - callab _TimeOfDayPals + callfar _TimeOfDayPals ret UpdateTimePals:: - callab _UpdateTimePals + callfar _UpdateTimePals ret diff --git a/home/scrolling_menu.asm b/home/scrolling_menu.asm index 2ea69ef5..2b2d82f3 100644 --- a/home/scrolling_menu.asm +++ b/home/scrolling_menu.asm @@ -59,7 +59,7 @@ Function385a:: jr asm_3865 Function385d:: - callab Function_8f1cb + callfar FreezeMonIcons asm_3865: pop hl call MenuTextBox @@ -73,7 +73,7 @@ Function3872:: jr asm_387d Function3875:: - callab PlaySpriteAnimationsAndDelayFrame + callfar PlaySpriteAnimationsAndDelayFrame asm_387d: pop bc call GetJoypad diff --git a/home/serial.asm b/home/serial.asm index 09a9d941..0ec3e32c 100644 --- a/home/serial.asm +++ b/home/serial.asm @@ -237,7 +237,7 @@ Serial_ExchangeLinkMenuSelection:: Serial_PrintWaitingTextAndSyncAndExchangeNybble:: call BackUpTilesToBuffer - callab PlaceWaitingText + callfar PlaceWaitingText call WaitLinkTransfer jp ReloadTilesFromBuffer diff --git a/home/talk_to_npc.asm b/home/talk_to_npc.asm index 4c75ffbf..73b0ca59 100644 --- a/home/talk_to_npc.asm +++ b/home/talk_to_npc.asm @@ -147,7 +147,7 @@ Function30e8:: ret GetFacingPersonText:: - callba Function776e + farcall Function776e ret nc call TurnNPCTalkingTo scf @@ -208,7 +208,7 @@ PrepareTextbox:: ret TextboxCleanup: - callab ReanchorBGMap_NoOAMUpdate + callfar ReanchorBGMap_NoOAMUpdate call UpdateSprites xor a ldh [hBGMapMode], a @@ -221,7 +221,7 @@ TextboxCleanup: ret Function318f: - callab Function140ea + callfar Function140ea call RedrawPlayerSprite ret @@ -234,9 +234,9 @@ TurnNPCTalkingTo:: ld a, [hl] call IsAnimatedSprite jr c, .Jump - ld a, [wPlayerWalking] + ld a, [wPlayerDirection] xor 04 - ld hl, OBJECT_WALKING + ld hl, OBJECT_DIRECTION add hl, bc ld [hl], a push bc diff --git a/home/text.asm b/home/text.asm index c809b2d0..8cb195da 100644 --- a/home/text.asm +++ b/home/text.asm @@ -267,7 +267,7 @@ asm_0fbb: push de and a jr nz, .asm_0fc4 - ld de, wEnemyMonNickname + ld de, wBattleMonNickname jr PlaceCommandCharacter .asm_0fc4: @@ -275,7 +275,7 @@ asm_0fbb: call PlaceString ld h, b ld l, c - ld de, wBattleMonNickname + ld de, wEnemyMonNickname PlaceCommandCharacter: call PlaceString ld h, b diff --git a/home/tilemap.asm b/home/tilemap.asm index c9b5ae16..566f7121 100644 --- a/home/tilemap.asm +++ b/home/tilemap.asm @@ -59,7 +59,7 @@ SetHPPal:: Function3657:: call DisableLCD - callab Function140d9 + callfar Function140d9 call LoadFont call UpdateSprites call EnableLCD diff --git a/home/tileset.asm b/home/tileset.asm index 7fb1d0f2..c715ee38 100644 --- a/home/tileset.asm +++ b/home/tileset.asm @@ -250,7 +250,7 @@ RefreshTiles:: GetFacingTileCoord:: - ld a, [wPlayerWalking] ; TODO: wPlayerDirection in Crystal. Not here? + ld a, [wPlayerDirection] ; TODO: wPlayerDirection in Crystal. Not here? and %1100 srl a srl a diff --git a/home/unknown_388f.asm b/home/unknown_388f.asm index 66864940..96c70260 100644 --- a/home/unknown_388f.asm +++ b/home/unknown_388f.asm @@ -6,35 +6,35 @@ Function388f:: ret Function3890:: - callba Function14cac + farcall Function14cac ret Function3899:: - callba Function14dac + farcall Function14dac ret Function38a2:: - callba Function14dc4 + farcall Function14dc4 ret Function38ab:: - callba Function14ddd + farcall Function14ddd ret Function38b4:: - callba Function14e00 + farcall Function14e00 ret Function38bd:: - callba Function14e5f + farcall Function14e5f ret Function38c6:: - callba Function14e27 + farcall Function14e27 ret Function38cf:: - callba Function14e4a + farcall Function14e4a ret Function38d8:: @@ -50,7 +50,7 @@ TestWildBattleStart:: ret z ; if no directions are down, don't try and trigger a wild encounter call CheckBPressedDebug jp nz, ClearAccumulator ; if b button is down, clear acc - callab Function3ee3e + callfar Function3ee3e ld a, [wBattleMode] and a ret z ; if no battle, return diff --git a/layout.link b/layout.link index e55aa034..578c14db 100644 --- a/layout.link +++ b/layout.link @@ -123,7 +123,10 @@ ROMX $02 "gfx.asm@Bank 2 Misc GFX" "engine/dumps/bank02.asm@QueueFollowerFirstStep" "gfx.asm@Mon Nest Icon" - "engine/dumps/bank02.asm@Data8a17" + + "data/maps/flypoints.asm" + "data/maps/landmarks.asm" + "engine/trainer_gear.asm@OpenTrainerGear" "gfx.asm@Trainer Gear GFX" "engine/trainer_gear.asm@TrainerGear_RadioText" @@ -140,9 +143,9 @@ ROMX $03 "engine/overworld/player_movement.asm@Player Movement" "data/collision/collision_type_table.asm" "engine/overworld/player_movement.asm@Rest of Player Movement" - "engine/dumps/bank03.asm@Functionc77d" + "engine/dumps/bank03.asm@GetFlyPointMapLocation" "engine/overworld/spawn_points.asm" - "engine/dumps/bank03.asm@SpawnPoints" + "data/maps/spawn_points.asm" "data/tileset_headers.asm" "engine/dumps/bank03.asm@Functionc9c1" "engine/items/inventory.asm@Inventory" @@ -155,7 +158,7 @@ ROMX $03 "engine/items/inventory.asm@_CheckTossableItem" "engine/dumps/bank03.asm@Functiond41d" "engine/items/item_effects.asm" - "engine/dumps/bank03.asm@Functionf960" + "engine/dumps/bank03.asm@GetMaxPPOfMove" ROMX $04 org $4000 @@ -307,8 +310,13 @@ ROMX $13 ROMX $14 org $4000 + "engine/dumps/bank14.asm@CopyMonToTempMon" org $40dd "data/types/names.asm" + org $4162 + "engine/dumps/bank14.asm@GetTrainerClassName_Old" + org $4756 + "engine/dumps/bank14.asm@Party Menu Routines" org $4f10 "data/pokemon/base_stats.asm" "data/pokemon/names.asm" @@ -951,7 +959,7 @@ ROMX $3f "engine/menu/reset_dialog.asm" "engine/debug/field/change_tileset.inc@FieldDebug_ChangeTileset" "engine/landmarks.asm@1" - "data/maps/landmarks.asm" + "data/maps/landmarks.asm@LandmarkNames" "engine/landmarks.asm@2" "engine/debug/field/warp.inc@FieldDebug_ShowWarpToText" "gfx.asm@Town Map Cursor" diff --git a/macros/const.asm b/macros/const.asm index 8a2ead47..11818e73 100644 --- a/macros/const.asm +++ b/macros/const.asm @@ -20,7 +20,7 @@ ENDM MACRO shift_const DEF \1 EQU (1 << const_value) - DEF const_value += const_inc + const \1_F ENDM MACRO const_skip diff --git a/macros/farcall.asm b/macros/farcall.asm index 9cb68368..866923ba 100644 --- a/macros/farcall.asm +++ b/macros/farcall.asm @@ -1,11 +1,11 @@ -MACRO callba ; bank, address +MACRO farcall ; bank, address ld a, BANK(\1) ld hl, \1 call FarCall_hl ENDM -MACRO callab ; address, bank +MACRO callfar ; address, bank ld hl, \1 ld a, BANK(\1) call FarCall_hl @@ -21,13 +21,13 @@ MACRO homecall call Bankswitch ENDM -MACRO jpba +MACRO farjp ld a, BANK(\1) ld hl, \1 jp FarCall_hl ENDM -MACRO jpab +MACRO jpfar ld hl, \1 ld a, BANK(\1) jp FarCall_hl diff --git a/macros/wram.asm b/macros/wram.asm index 34702e56..6dd6ffcc 100644 --- a/macros/wram.asm +++ b/macros/wram.asm @@ -265,13 +265,13 @@ MACRO object_struct \1SpriteTile:: db \1MovementType:: db \1Flags:: dw -\1Palette:: db \1Walking:: db \1Direction:: db \1StepType:: db \1StepDuration:: db \1Action:: db \1StepFrame:: db +\1Object12:: db \1Facing:: db \1Tile:: db ; collision \1LastTile:: db ; collision @@ -281,13 +281,13 @@ MACRO object_struct \1LastMapY:: db \1InitX:: db \1InitY:: db -\1Radius:: db +\1RadiusX:: db +\1RadiusY:: db \1SpriteX:: db \1SpriteY:: db \1SpriteXOffset:: db \1SpriteYOffset:: db \1MovementIndex:: db -\1Object28:: db \1Object29:: db \1Object30:: db \1Object31:: db @@ -305,7 +305,7 @@ MACRO map_object \1ObjectRadius:: db \1ObjectHour:: db \1ObjectTimeOfDay:: db -\1ObjectPalette:: db +\1ObjectPalette:: db ; ...Questionable. Needs investigation \1ObjectSightRange:: db \1ObjectScript:: dw \1ObjectEventFlag:: dw diff --git a/ram/wram.asm b/ram/wram.asm index b8efd547..5d9d8b16 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -91,7 +91,7 @@ SECTION "OAM Buffer", WRAM0 wShadowOAM:: ; wShadowOAMSprite00 - wShadowOAMSprite39 for n, NUM_SPRITE_OAM_STRUCTS - wShadowOAMSprite{02d:n}:: sprite_oam_struct wShadowOAMSprite{02d:n} +wShadowOAMSprite{02d:n}:: sprite_oam_struct wShadowOAMSprite{02d:n} endr wShadowOAMEnd:: @@ -375,83 +375,25 @@ wBattleAnimEnd:: ds $1a3 ; TODO -wc9e8:: ds 1 -wc9e9:: ds 1 -wc9ea:: ds 1 -wc9eb:: ds 1 -wc9ec:: ds 1 -wc9ed:: ds 1 -wc9ee:: ds 1 -wc9ef:: ds 1 -wc9f0:: ds 1 -wc9f1:: ds 1 -wc9f2:: ds 1 -wc9f3:: ds 1 +wBattle:: +wEnemyMoveStruct:: move_struct wEnemyMoveStruct +wPlayerMoveStruct:: move_struct wPlayerMoveStruct - ds 1 - -wc9f5:: ds 1 - -wBattleMonNickname:: ds 6 wEnemyMonNickname:: ds 6 - -wca02:: ds 1 -wca03:: ds 1 -wca04:: ds 1 -wca05:: ds 1 - - ds 2 - -wca08:: ds 1 -wca09:: ds 1 -wca0a:: ds 1 - - ds 3 - -wca0e:: ds 1 -wca0f:: ds 1 - -wIntroJumptableIndex:: -wca10:: ds 1 +wBattleMonNickname:: ds 6 UNION -wIntroBGMapPointer:: ds 2 +wBattleMon:: battle_struct wBattleMon NEXTU -wca11:: ds 1 -wca12:: ds 1 -ENDU - -UNION + ds 14 +wIntroJumptableIndex:: db +wIntroBGMapPointer:: ds 2 wIntroTilemapPointer:: ds 2 -NEXTU -wca13:: ds 1 -wca14:: ds 1 -ENDU - -UNION wIntroTilesPointer:: ds 2 wIntroFrameCounter1:: ds 1 -NEXTU - -wca15:: ds 1 -wca16:: ds 1 -wca17:: ds 1 - -ENDU - -wca18:: wIntroFrameCounter2:: ds 1 - wIntroSpriteStateFlag:: ds 1 - -wca1a:: ds 1 -wca1b:: ds 1 -wca1c:: ds 1 - ds 1 -wca1e:: ds 1 - ds 1 -wca20:: ds 1 -wca21:: ds 1 +ENDU wca22:: ds 1 wca23:: ds 1 wca24:: ds 1 @@ -508,7 +450,10 @@ wca58:: ds 1 wca59:: ds 1 wca5a:: ds 1 wca5b:: ds 1 + +wBattleAnimParam:: wca5c:: ds 1 + wca5d:: ds 1 ds $1d @@ -557,7 +502,11 @@ wcabe:: ds 1 ds 1 wcac0:: ds 1 + +wCurPlayerSelectedMove:: wcac1:: ds 1 + +wCurEnemySelectedMove:: wcac2:: ds 1 wLinkBattleRNCount:: db @@ -569,11 +518,15 @@ wcac4:: ds 1 wcac7:: ds 1 wcac8:: ds 1 wcac9:: ds 1 -wcaca:: ds 1 - - ds 1 +UNION +wPayDayMoney:: ds 3 +NEXTU +wcaca:: ds 1 +wcacb:: ds 1 wcacc:: ds 1 +ENDU + wcacd:: ds 1 wcace:: ds 1 @@ -581,12 +534,21 @@ wcace:: ds 1 wcad0:: ds 1 wcad1:: ds 1 + +wAlreadyDisobeyed:: wcad2:: ds 1 + wcad3:: ds 1 wcad4:: ds 1 wcad5:: ds 1 + +UNION +wCurPlayerMove:: ds 1 +wCurEnemyMove:: ds 1 +NEXTU wcad6:: ds 1 wcad7:: ds 1 +ENDU wcad8:: ds 1 wcad9:: ds 1 wcada:: ds 1 @@ -770,10 +732,10 @@ wDefaultSpawnPoint:: UNION -wcc40:: ; XXX fix this to cc3a +wcc3a:: wMovementBufferCount:: db -wcc41:: ; XXX fix this to cc3b +wcc3b:: wMovementBufferObject:: db ptrba wMovementBufferPointer @@ -822,8 +784,8 @@ wSpriteOutputPtrCached:: ds 2 wSpriteDecodeTable0Ptr:: ds 2 wSpriteDecodeTable1Ptr:: ds 2 -wccc0:: ds 1 -wccc1:: ds 1 +wFXAnimID:: dw + wccc2:: ds 1 wccc3:: ds 1 wccc4:: ds 1 @@ -838,7 +800,7 @@ wBGP:: db wOBP0:: db wOBP1:: db -wcccd:: ds 1 +wNumHits:: db wDisableVBlankWYUpdate:: db wSGB:: db @@ -884,6 +846,11 @@ wcd1d:: ds 8 wStringBuffer1:: ds 1 ; How long is this? wcd27:: ds 1 + + ds 1 + +wcd29:: ds 1 +wcd2a:: ds 1 SECTION "CD31", WRAM0[$CD31] UNION @@ -910,8 +877,10 @@ SECTION "CD3C", WRAM0[$CD3C] wcd3c:: db wRegularItemsCursor:: db wBackpackAndKeyItemsCursor:: db +wBattleMenuCursorPosition:: wStartmenuCursor:: db wcd40:: db +wCurBattleMon:: wcd41:: db wcd42:: db wFieldDebugMenuCursorBuffer:: @@ -941,7 +910,11 @@ wFarCallBCBuffer:: dw wcd56:: ds 1 +wNumMoves:: wcd57:: ds 1 + +wItemEffectSucceeded:: +wBattlePlayerAction:: wFieldMoveSucceeded:: db wVramState:: db @@ -960,36 +933,20 @@ wcd75:: db wCurItem:: db wItemIndex:: db -wMonDexIndex: db -wWhichPokemon: db +wCurPartySpecies: db +wCurPartyMon: db SECTION "CD7B", WRAM0[$CD7B] -wHPBarType:: db -wcd7c:: ds 1 +wWhichHPBar:: db +wPokemonWithdrawDepositParameter:: ds 1 wItemQuantity:: db wItemQuantityBuffer:: db -wcd7f:: db -wcd80:: db -wcd81:: db - - ds 7 - -wcd89:: db - ds 10 - -wcd94:: db - - ds 9 +wTempMon:: party_struct wTempMon -wLoadedMonLevel:: db -wcd9f:: db - - ds 15 - -wcdaf:: db +wSpriteFlags:: db wTalkingTargetType:: db ;bit 0 = has engaged NPC in dialogue @@ -1008,9 +965,12 @@ wcdb6:: ds 1 wcdb9:: ds 1 -wItemAttributeParamBuffer:: db +wItemAttributeValue:: db + wCurPartyLevel:: db -wcdbc:: db + +wScrollingMenuListSize:: db + wLinkMode:: db ; 00 - ; 01 - @@ -1019,20 +979,27 @@ wLinkMode:: db wNextWarp:: db wNextMapGroup:: db -wNextMapId:: db +wNextMapNumber:: db wPrevWarp:: db wcdc2:: db UNION +wListMovesLineSpacing:: wFieldMoveScriptID:: db wMapBlocksAddress:: dw wReplacementBlock:: db +NEXTU +wMonSubmenuCount:: db +wMonSubmenuItems:: ds NUM_MONMENU_ITEMS + 1 NEXTU wHPBarMaxHP:: dw wHPBarOldHP:: dw +wHPBarNewHP:: dw +wHPBarDelta:: dw +wHPBarHPDifference:: dw NEXTU @@ -1044,27 +1011,20 @@ NEXTU wEnemyEffectivenessVsPlayerMons:: db wPlayerEffectivenessVsEnemyMons:: db - + ds 1 wcdc6:: db +wcdc7:: db +wcdc8:: db + ds 1 +wcdca:: db ENDU -UNION - -wHPBarNewHP:: dw - -NEXTU -wcdc7:: db -wcdc8:: db -ENDU -wHPBarDelta:: db -wcdca:: db -wHPBarHPDifference:: dw UNION @@ -1079,53 +1039,14 @@ wcdd4: ds 1 ds 1 ENDU -wcdd7:: ds 1 -wcdd8:: ds 1 -wcdd9:: ds 1 -wcdda:: ds 1 -wcddb:: ds 1 -wcddc:: ds 1 -wcddd:: ds 1 -wcdde:: ds 1 -wcddf:: ds 1 -wcde0:: ds 1 -wcde1:: ds 1 -wcde2:: ds 1 -wcde3:: ds 1 -wcde4:: ds 1 -wcde5:: ds 1 -wcde6:: ds 1 -wcde7:: ds 1 -wcde8:: ds 1 -wcde9:: ds 1 -wcdea:: ds 1 -wcdeb:: ds 1 -wcdec:: ds 1 -wcded:: ds 1 -wcdee:: ds 1 -wcdef:: ds 1 +wTempEnemyMonSpecies:: ds 1 +wTempBattleMonSpecies:: ds 1 - ds 1 -wcdf1:: ds 1 -wcdf2:: ds 1 -wcdf3:: ds 1 +wEnemyMon:: battle_struct wEnemyMon +wEnemyMonBaseStats:: ds NUM_EXP_STATS - ds 1 - -wcdf5:: ds 1 - - ds 1 - -wcdf7:: ds 1 - - ds 1 - -wcdf9:: ds 1 - - ds 4 - -wcdfe:: ds 1 +wEnemyMonCatchRate:: db wcdff:: ds 1 wBattleMode:: db wce01:: ds 1 @@ -1210,10 +1131,8 @@ wce2a:: ds 1 ds 2 wce2d:: ds 1 -wce2e:: ds 1 -wce2f:: ds 1 -wce30:: ds 1 -wce31:: ds 1 + +wListMoves_MoveIndicesBuffer:: ds NUM_MOVES wce32:: ds 1 wce33:: ds 1 wce34:: ds 1 @@ -1221,11 +1140,15 @@ wce35:: ds 1 wce36:: ds 1 wNamedObjectIndexBuffer:: -wCountSetBitsResult:: +wNumSetBits:: +wMoveGrammar:: +wTempByteValue:: wce37:: db wce38:: ds 1 + +wNumFleeAttempts:: wce39:: ds 1 SECTION "CE3A", WRAM0[$CE3A] @@ -1275,8 +1198,12 @@ wMomsName:: ds 6 SECTION "CE73", WRAM0[$CE73] +UNION +wPlayerID:: dw +NEXTU wce73: ds 1 wce74: ds 1 +ENDU wce75: ds 1 wObjectFollow_Leader:: @@ -1352,11 +1279,13 @@ wCoins:: db wd15c:: db -wd15d:: db +wMoney:: ds 3 -wd15e:: db +;wd15d:: db -wd15f:: db +;wd15e:: db + +;wd15f:: db SECTION "D163", WRAM0[$D163] @@ -1590,44 +1519,48 @@ wTilesetAnim:: ds 2 ; TODO wTilesetEnd:: +wPokemonData:: wPartyCount:: db wPartySpecies:: ds PARTY_LENGTH wPartyEnd:: db wPartyMons:: -wPartyMon1:: party_struct wPartyMon1 -wPartyMon2:: party_struct wPartyMon2 -wPartyMon3:: party_struct wPartyMon3 -wPartyMon4:: party_struct wPartyMon4 -wPartyMon5:: party_struct wPartyMon5 -wPartyMon6:: party_struct wPartyMon6 -wPlayerPartyEnd:: - -wPartyMonOT:: - ds PARTY_LENGTH * 6 -wPartyMonOTEnd:: +; wPartyMon1 - wPartyMon6 +for n, 1, PARTY_LENGTH + 1 +wPartyMon{d:n}:: party_struct wPartyMon{d:n} +endr + +wPartyMonOTs:: +; wPartyMon1OT - wPartyMon6OT +for n, 1, PARTY_LENGTH + 1 +wPartyMon{d:n}OT:: ds PLAYER_NAME_LENGTH +endr wPartyMonNicknames:: - ds PARTY_LENGTH * MON_NAME_LENGTH ; = $24 +; wPartyMon1Nickname - wPartyMon6Nickname +for n, 1, PARTY_LENGTH + 1 +wPartyMon{d:n}Nickname:: ds MON_NAME_LENGTH +endr wPartyMonNicknamesEnd:: -wPokedexOwned:: - flag_array NUM_POKEMON -wPokedexOwnedEnd:: +wPokedexCaught:: flag_array NUM_POKEMON +wEndPokedexCaught:: -wPokedexSeen:: - flag_array NUM_POKEMON -wPokedexSeenEnd:: +wPokedexSeen:: flag_array NUM_POKEMON +wEndPokedexSeen:: -wAnnonDex:: ds 26 +wUnownDex:: ds NUM_UNOWN wAnnonID:: ds 1 wd875:: ds 1 + +wBufferMonNickname:: wd876:: ds 1 ds 5 +wBufferMonOT:: wd87c:: ds 1 ds 5 @@ -1641,37 +1574,14 @@ SECTION "D8A2", WRAM0[$D8A2] wd8a2:: ds 1 wd8a3:: ds 1 wd8a4:: ds 1 -wd8a5:: ds 1 - - ds 5 - -wd8ab:: ds 1 - -SECTION "wd8b1", WRAM0[$D8B1] - -wd8b1:: ds 1 - ds 5 - -wd8b7:: ds 1 -wd8b8:: ds 1 - -SECTION "D8D1", WRAM0[$D8D1] - -wd8d1:: ds 1 - - ds 5 - -wd8d7:: ds 1 - - ds 5 +wBreedMon1Nickname:: ds MON_NAME_LENGTH +wBreedMon1OT:: ds PLAYER_NAME_LENGTH +wBreedMon1:: box_struct wBreedMon1 -wd8dd:: ds 1 - -SECTION "D8E3", WRAM0[$D8E3] - -wd8e3:: ds 1 -wd8e4:: ds 1 +wBreedMon2Nickname:: ds MON_NAME_LENGTH +wBreedMon2OT:: ds PLAYER_NAME_LENGTH +wBreedMon2:: box_struct wBreedMon2 SECTION "D8FD", WRAM0[$D8FD] @@ -1680,7 +1590,9 @@ wd8fe:: ds 1 SECTION "D913", WRAM0[$D913] -wd913:: ds 1 +wOTPartyCount:: db +wOTPartySpecies:: ds PARTY_LENGTH +wOTPartySpeciesEnd:: db SECTION "Wild mon buffer", WRAM0[$D91B] @@ -1688,48 +1600,57 @@ UNION wWildMons:: ds 41 NEXTU - ds 1 -wd91c:: ds 1 -wd91d:: ds 1 -wd91e:: ds 1 - ds 19 -wd932:: ds 1 - ds 7 -wd93a:: ds 1 -wd93b:: ds 1 - ds 1 -wd93d:: ds 1 -wd93e:: ds 1 -wd93f:: ds 1 -ENDU - -SECTION "DA3B", WRAM0[$DA3B] - -wOTPartyMonOT:: db +wOTPartyMons:: +; wOTPartyMon1 - wOTPartyMon6 +for n, 1, PARTY_LENGTH + 1 +wOTPartyMon{d:n}:: party_struct wOTPartyMon{d:n} +endr -SECTION "DA5F", WRAM0[$DA5F] +wOTPartyMonOT:: +; wOTPartyMon1OT - wOTPartyMon6OT +for n, 1, PARTY_LENGTH + 1 +wOTPartyMon{d:n}OT:: ds PLAYER_NAME_LENGTH +endr -wda5f:: db +wOTPartyMonNicknames:: +; wOTPartyMon1Nickname - wOTPartyMon6Nickname +for n, 1, PARTY_LENGTH + 1 +wOTPartyMon{d:n}Nickname:: ds MON_NAME_LENGTH +endr +wOTPartyDataEnd:: +ENDU SECTION "DA83", WRAM0[$DA83] wBoxListLength:: db wBoxList:: ds MONS_PER_BOX +wBoxListEnd:: db SECTION "DAA3", WRAM0[$DAA3] -wdaa3:: db -wdaa4:: db -wdaa5:: db +wBoxMons:: +; wBoxMon1 - wBoxMon30 +for n, 1, MONS_PER_BOX + 1 +wBoxMon{d:n}:: box_struct wBoxMon{d:n} +endr + +wBoxDataEnd:: SECTION "DE63", WRAM0[$DE63] -wde63:: db - -SECTION "DF17", WRAM0[$DF17] -wdf17:: ds 1 +wBoxMonOT:: +; wBoxMon1OT - wBoxMon30OT +for n, 1, MONS_PER_BOX + 1 +wBoxMon{d:n}OT:: ds PLAYER_NAME_LENGTH +endr +wBoxMonOTEnd:: -SECTION "DFCB", WRAM0[$DFCB] +wBoxMonNicknames:: +; wBoxMon1Nick - wBoxMon30Nick +for n, 1, MONS_PER_BOX + 1 +wBoxMon{d:n}Nick:: ds MON_NAME_LENGTH +endr +wBoxMonNicknamesEnd:: wdfcb:: ds 1 SECTION "Stack Bottom", WRAM0 diff --git a/scripts/OldCityPokecenter2F.asm b/scripts/OldCityPokecenter2F.asm index 3d0fef79..542a134c 100644 --- a/scripts/OldCityPokecenter2F.asm +++ b/scripts/OldCityPokecenter2F.asm @@ -36,7 +36,7 @@ OldCityPokecenter2FText1: ld [wce37], a ld hl, wJoypadFlags set 5, [hl] - callab Function29abf + callfar Function29abf ld hl, wJoypadFlags res 5, [hl] ret @@ -46,7 +46,7 @@ OldCityPokecenter2FText2: ld [wce37], a ld hl, wJoypadFlags set 5, [hl] - callab Function29abf + callfar Function29abf ld hl, wJoypadFlags res 5, [hl] ret @@ -63,15 +63,15 @@ Text947e3: OldCityPokecenter2FText4: ld hl, OldCityPokecenter2FTextString4 call OpenTextbox - callab Function29a1f + callfar Function29a1f jr c, .asm_9480c ld a, $05 - call Function169f ; something related to follow + call DeleteMapObject jr .asm_9480c ; unreferenced? ld hl, Data14824 ld a, $5 - call Function16fb + call Function16fb ; something related to follow ld hl, $0000 nop .asm_9480c diff --git a/scripts/OldCityPokecenterBattle.asm b/scripts/OldCityPokecenterBattle.asm index 75321fbf..e7762b2c 100644 --- a/scripts/OldCityPokecenterBattle.asm +++ b/scripts/OldCityPokecenterBattle.asm @@ -34,7 +34,7 @@ OldCityPokecenterBattleText1: call OpenTextbox ld hl, wJoypadFlags res 5, [hl] - callab Function28000 + callfar Function28000 ret OldCityPokecenterBattleTextString1: diff --git a/scripts/OldCityPokecenterTimeMachine.asm b/scripts/OldCityPokecenterTimeMachine.asm index fccc9b89..b79851ca 100644 --- a/scripts/OldCityPokecenterTimeMachine.asm +++ b/scripts/OldCityPokecenterTimeMachine.asm @@ -31,5 +31,5 @@ OldCityPokecenterTimeMachine_TextPointers: OldCityPokecenterTimeMachineText1: xor a ld [wce37], a - callab Function29abf + callfar Function29abf ret diff --git a/scripts/OldCityPokecenterTrade.asm b/scripts/OldCityPokecenterTrade.asm index ea3f842c..7167c791 100644 --- a/scripts/OldCityPokecenterTrade.asm +++ b/scripts/OldCityPokecenterTrade.asm @@ -34,7 +34,7 @@ OldCityPokecenterTradeText1: call OpenTextbox ld hl, wJoypadFlags res 5, [hl] - callab Function28000 + callfar Function28000 ret OldCityPokecenterTradeTextString1: diff --git a/scripts/PlayerHouse2F.asm b/scripts/PlayerHouse2F.asm index bccb5149..95acd7f5 100644 --- a/scripts/PlayerHouse2F.asm +++ b/scripts/PlayerHouse2F.asm @@ -120,7 +120,7 @@ PlayerHouse2FComputerText: .jump call RefreshScreen - callab PokemonCenterPC + callfar PokemonCenterPC call Function1fea ret diff --git a/scripts/SilentHill.asm b/scripts/SilentHill.asm index 2adea0f1..596193ff 100644 --- a/scripts/SilentHill.asm +++ b/scripts/SilentHill.asm @@ -343,7 +343,7 @@ SilentHillTextRival1: LoadMomNamePromptUnused: call LoadStandardMenuHeader - callab MomNamePrompt + callfar MomNamePrompt call CloseWindow call GetMemSGBLayout call UpdateSprites diff --git a/scripts/SilentHillHouse.asm b/scripts/SilentHillHouse.asm index 2f900683..a348493d 100644 --- a/scripts/SilentHillHouse.asm +++ b/scripts/SilentHillHouse.asm @@ -61,7 +61,7 @@ SilentHillHouseNPCText1: .jump call RefreshScreen - callab PokemonCenterPC + callfar PokemonCenterPC call Function1fea ret diff --git a/scripts/SilentHillLabBack.asm b/scripts/SilentHillLabBack.asm index 9f02818f..c57807ed 100644 --- a/scripts/SilentHillLabBack.asm +++ b/scripts/SilentHillLabBack.asm @@ -219,10 +219,10 @@ ConfirmPokemonSelection: ld hl, wJoypadFlags set 5, [hl] ld a, [wd265] - ld [wMonDexIndex], a + ld [wCurPartySpecies], a ld a, 5 ld [wCurPartyLevel], a - callab Function60a0 + callfar Function60a0 xor a ld [wPartyMon1 + 1], a ld a, 3 @@ -311,7 +311,7 @@ SilentHillLabBackFunc4: ld [wd265], a push hl ld [wNamedObjectIndexBuffer], a - callba Function6734 + farcall Function6734 ld a, [wd265] ld [wNamedObjectIndexBuffer], a call GetPokemonName diff --git a/shim.sym b/shim.sym index 37c8463b..cf243a44 100644 --- a/shim.sym +++ b/shim.sym @@ -50,36 +50,15 @@ 10:40A6 ShowPokedexMenu 10:4AC7 Function40ac7 10:4B07 Function40b07 -10:4B45 Function40b45 -10:4B5C Function40b5c +10:4B45 ConvertMon_2to1 +10:4B5C ConvertMon_1to2 10:5F93 Function4af93 10:5FA1 Function41fa1 10:61F8 Function421f8 10:6252 Function42252 10:58B8 Data418b8 -14:4000 Function50000 -14:4073 Function50073 -14:40A0 Function500a0 -14:40C6 Function500c6 -14:4244 Function50244 -14:4248 Function50248 -14:42B5 Function502b5 ; Pokemon Summary routine? -14:4628 Function50628 -14:469E Function5069e -14:46D4 Function506d4 -14:4756 Function50756 -14:4771 Function50771 -14:4774 Function50774 -14:481F Function5081f -14:487E Function5087e -14:48C4 Function508c4 -14:4B92 Function50b92 -14:4BCD Function50bcd -14:4BFE Function50bfe -14:4CAA Function50caa -14:4CD1 Function50cd1 -14:4ED9 Function50ed9 +14:7274 Unknown53274 23:4325 Function8c325 23:42DC UpdateTimeOfDayPal @@ -97,7 +76,7 @@ 23:60cc MenuMonIconGfx 23:70CC Function8f0cc 23:70E3 Function8f0e3 -23:71CB Function_8f1cb +23:71CB FreezeMonIcons 23:71F2 Function8f1f2 32:76FF Functioncb6ff