summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-06-11 17:49:03 -0700
committerGitHub <noreply@github.com>2016-06-11 17:49:03 -0700
commitdb0ac16b6b4f257de338d1aaac561e681ca8723a (patch)
treed6888723f443557ce45c9a00d873caa5e7a8930e
parent401d6e7f36e86aa246a2c0591195e1f0f01e879f (diff)
parentf5983c0f813d3d908b6016db3ed866e4ca9437dc (diff)
Merge pull request #14 from PikalaxALT/master
Yellow documentation
-rw-r--r--audio.asm4
-rw-r--r--audio/headers/sfxheaders2.asm14
-rw-r--r--audio/sfx/battle_29.asm8
-rw-r--r--audio/sfx/battle_2f.asm12
-rw-r--r--constants/music_constants.asm4
-rw-r--r--constants/pikachu_emotion_constants.asm152
-rwxr-xr-xconstants/type_constants.asm2
-rwxr-xr-xdata/animated_objects_3e_1.asm184
-rw-r--r--data/map_songs.asm2
-rwxr-xr-xdata/mon_palettes.asm2
-rwxr-xr-xdata/mon_party_sprites.asm2
-rwxr-xr-xdata/pikachu_emotions.asm196
-rwxr-xr-xdata/pikachu_pic_animation.asm182
-rwxr-xr-xdata/pikachu_pic_objects.asm300
-rwxr-xr-xdata/pikachu_pic_tilemaps.asm253
-rwxr-xr-xdata/super_rod.asm2
-rwxr-xr-xdata/tileset_headers.asm1
-rw-r--r--engine/bank3c.asm182
-rwxr-xr-xengine/battle/animations.asm1471
-rw-r--r--engine/bcd.asm25
-rw-r--r--engine/display_pokedex.asm2
-rw-r--r--engine/draw_badges.asm2
-rwxr-xr-xengine/gamefreak.asm2
-rw-r--r--engine/get_bag_item_quantity.asm2
-rwxr-xr-xengine/hidden_object_functions17.asm4
-rwxr-xr-xengine/items/items.asm4
-rwxr-xr-xengine/load_pokedex_tiles.asm2
-rw-r--r--engine/menu/diploma_1.asm2
-rw-r--r--engine/menu/swap_items.asm2
-rw-r--r--engine/move_mon.asm2
-rw-r--r--engine/overworld/clear_loadmapdata_vars.asm6
-rw-r--r--engine/overworld/daycare_exp.asm2
-rw-r--r--engine/overworld/dungeon_warps.asm2
-rwxr-xr-xengine/overworld/pokecenter.asm6
-rwxr-xr-xengine/pikachu_emotions.asm208
-rwxr-xr-xengine/pikachu_follow.asm187
-rwxr-xr-xengine/pikachu_movement.asm843
-rwxr-xr-xengine/pikachu_pic_animation.asm850
-rw-r--r--engine/printer.asm10
-rwxr-xr-xengine/printer/serial.asm22
-rw-r--r--engine/remove_pokemon.asm2
-rw-r--r--engine/subtract_paid_money.asm2
-rwxr-xr-xengine/surfing_minigame.asm1666
-rwxr-xr-xengine/titlescreen.asm2
-rwxr-xr-xengine/unknown_ea3ea.asm79
-rwxr-xr-xengine/vermilion_gym_trash_cans.asm108
-rwxr-xr-xengine/yellow_intro.asm18
-rw-r--r--gfx/surfing_pikachu_1a.pngbin0 -> 638 bytes
-rw-r--r--gfx/surfing_pikachu_1b.pngbin0 -> 2002 bytes
-rw-r--r--gfx/surfing_pikachu_1c.t5.pngbin0 -> 1318 bytes
-rw-r--r--home.asm6
-rw-r--r--home/init.asm4
-rw-r--r--home/lcdc.asm25
-rw-r--r--home/overworld.asm12
-rwxr-xr-xhome/pikachu.asm4
-rw-r--r--home/text.asm94
-rw-r--r--macros.asm127
-rwxr-xr-xscripts/celadongamecorner2.asm12
-rwxr-xr-xscripts/daycarem.asm4
-rwxr-xr-xscripts/oakslab.asm6
-rwxr-xr-xscripts/pokemontower2_2.asm12
-rwxr-xr-xscripts/vermiliongym.asm41
-rwxr-xr-xwram.asm264
63 files changed, 3960 insertions, 3686 deletions
diff --git a/audio.asm b/audio.asm
index a9eed760..84db1634 100644
--- a/audio.asm
+++ b/audio.asm
@@ -667,7 +667,9 @@ INCLUDE "audio/engine_3.asm"
SECTION "Audio Engine 4", ROMX, BANK[AUDIO_4]
-SurfingPikachu1Graphics:: INCBIN "gfx/surfing_pikachu_1.t4.2bpp"
+SurfingPikachu1Graphics1:: INCBIN "gfx/surfing_pikachu_1a.2bpp"
+SurfingPikachu1Graphics2:: INCBIN "gfx/surfing_pikachu_1b.2bpp"
+SurfingPikachu1Graphics3:: INCBIN "gfx/surfing_pikachu_1c.t5.2bpp"
INCLUDE "audio/engine_4.asm"
diff --git a/audio/headers/sfxheaders2.asm b/audio/headers/sfxheaders2.asm
index f3d0720e..ca187a51 100644
--- a/audio/headers/sfxheaders2.asm
+++ b/audio/headers/sfxheaders2.asm
@@ -405,9 +405,9 @@ SFX_Battle_28:: ; 20246 (8:4246)
dbw CH5, SFX_Battle_28_Ch2
dbw CH7, SFX_Battle_28_Ch3
-SFX_Battle_29:: ; 2024f (8:424f)
- dbw ( $40 | CH4 ), SFX_Battle_29_Ch1
- dbw CH7, SFX_Battle_29_Ch2
+SFX_Earthquake:: ; 2024f (8:424f)
+ dbw ( $40 | CH4 ), SFX_Earthquake_Ch1
+ dbw CH7, SFX_Earthquake_Ch2
SFX_Battle_2A:: ; 20255 (8:4255)
dbw ( $80 | CH4 ), SFX_Battle_2A_Ch1
@@ -433,10 +433,10 @@ SFX_Battle_2E:: ; 20276 (8:4276)
dbw CH5, SFX_Battle_2E_Ch2
dbw CH7, SFX_Battle_2E_Ch3
-SFX_Battle_2F:: ; 2027f (8:427f)
- dbw ( $80 | CH4 ), SFX_Battle_2F_Ch1
- dbw CH5, SFX_Battle_2F_Ch2
- dbw CH7, SFX_Battle_2F_Ch3
+SFX_Thunderbolt:: ; 2027f (8:427f)
+ dbw ( $80 | CH4 ), SFX_Thunderbolt_Ch1
+ dbw CH5, SFX_Thunderbolt_Ch2
+ dbw CH7, SFX_Thunderbolt_Ch3
SFX_Psychic_M:: ; 20288 (8:4288)
dbw ( $80 | CH4 ), SFX_Psychic_M_Ch1
diff --git a/audio/sfx/battle_29.asm b/audio/sfx/battle_29.asm
index e766a453..80a81950 100644
--- a/audio/sfx/battle_29.asm
+++ b/audio/sfx/battle_29.asm
@@ -1,17 +1,17 @@
-SFX_Battle_29_Ch1: ; 2067e (8:467e)
+SFX_Earthquake_Ch1: ; 2067e (8:467e)
dutycycle 201
unknownsfx0x20 11, 243, 32, 1
unknownsfx0x20 9, 211, 80, 1
- loopchannel 5, SFX_Battle_29_Ch1
+ loopchannel 5, SFX_Earthquake_Ch1
unknownsfx0x20 8, 227, 48, 1
unknownsfx0x20 15, 194, 16, 1
endchannel
-SFX_Battle_29_Ch2: ; 20695 (8:4695)
+SFX_Earthquake_Ch2: ; 20695 (8:4695)
unknownnoise0x20 10, 243, 53
unknownnoise0x20 14, 246, 69
- loopchannel 4, SFX_Battle_29_Ch2
+ loopchannel 4, SFX_Earthquake_Ch2
unknownnoise0x20 12, 244, 188
unknownnoise0x20 12, 245, 156
unknownnoise0x20 15, 244, 172
diff --git a/audio/sfx/battle_2f.asm b/audio/sfx/battle_2f.asm
index 4b1d9b2c..62624870 100644
--- a/audio/sfx/battle_2f.asm
+++ b/audio/sfx/battle_2f.asm
@@ -1,21 +1,21 @@
-SFX_Battle_2F_Ch1: ; 207d1 (8:47d1)
+SFX_Thunderbolt_Ch1: ; 207d1 (8:47d1)
dutycycle 43
unknownsfx0x20 3, 241, 240, 7
unknownsfx0x20 4, 242, 0, 2
- loopchannel 8, SFX_Battle_2F_Ch1
+ loopchannel 8, SFX_Thunderbolt_Ch1
endchannel
-SFX_Battle_2F_Ch2: ; 207e0 (8:47e0)
+SFX_Thunderbolt_Ch2: ; 207e0 (8:47e0)
dutycycle 179
unknownsfx0x20 4, 226, 2, 2
unknownsfx0x20 4, 225, 226, 7
- loopchannel 9, SFX_Battle_2F_Ch2
+ loopchannel 9, SFX_Thunderbolt_Ch2
endchannel
-SFX_Battle_2F_Ch3: ; 207ef (8:47ef)
+SFX_Thunderbolt_Ch3: ; 207ef (8:47ef)
unknownnoise0x20 4, 255, 67
unknownnoise0x20 4, 242, 68
- loopchannel 9, SFX_Battle_2F_Ch3
+ loopchannel 9, SFX_Thunderbolt_Ch3
endchannel
diff --git a/constants/music_constants.asm b/constants/music_constants.asm
index 71ff1aba..955a3899 100644
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -247,13 +247,13 @@ ENDM
music_const SFX_BATTLE_26, SFX_Battle_26
music_const SFX_BATTLE_27, SFX_Battle_27
music_const SFX_BATTLE_28, SFX_Battle_28
- music_const SFX_BATTLE_29, SFX_Battle_29
+ music_const SFX_EARTHQUAKE, SFX_Earthquake
music_const SFX_BATTLE_2A, SFX_Battle_2A
music_const SFX_BATTLE_2B, SFX_Battle_2B
music_const SFX_BATTLE_2C, SFX_Battle_2C
music_const SFX_PSYBEAM, SFX_Psybeam
music_const SFX_BATTLE_2E, SFX_Battle_2E
- music_const SFX_BATTLE_2F, SFX_Battle_2F
+ music_const SFX_THUNDERBOLT, SFX_Thunderbolt
music_const SFX_PSYCHIC_M, SFX_Psychic_M
music_const SFX_BATTLE_31, SFX_Battle_31
music_const SFX_BATTLE_32, SFX_Battle_32
diff --git a/constants/pikachu_emotion_constants.asm b/constants/pikachu_emotion_constants.asm
index c34a08f7..25d9a7aa 100644
--- a/constants/pikachu_emotion_constants.asm
+++ b/constants/pikachu_emotion_constants.asm
@@ -1,6 +1,33 @@
+dpikapic: macro
+ db (\1_id - PikaPicAnimPointers) / 2
+ endm
+
+ldpikapic: macro
+ ld \1, (\2_id - PikaPicAnimPointers) / 2
+ endm
+
+dpikaemotion: macro
+ db (\1_id - PikachuEmotionTable) / 2
+ endm
+
+ldpikaemotion: macro
+ ld \1, (\2_id - PikachuEmotionTable) / 2
+ endm
+
+dpikaanim: macro
+ db (\1_id - PikaPicAnimBGFramesPointers) / 2
+ endm
+
+pikaframeend EQUS "db $e0"
+pikaframe: macro
+ db (\1_id - PikaPicTilemapPointers) / 2, \2
+ endm
+
+pikaframedelay EQUS "db 0,"
+
; Starter Pikachu emotion commands constants
-const_value = 0
+ const_def
const PIKAEMOTION_DUMMY1
const PIKAEMOTION_PRINTTEXT
const PIKAEMOTION_PLAYPCMSOUNDCLIP
@@ -13,7 +40,7 @@ const_value = 0
const PIKAEMOTION_9
const PIKAEMOTION_DUMMY3
-const_value = 0
+ const_def
const PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
const PIKAEMOTION_SUBCMD_LOADFONT
const PIKAEMOTION_SUBCMD_SHOWMAPVIEW
@@ -22,6 +49,16 @@ const_value = 0
const PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
const PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
+ const_def
+ const PIKASTEPDIR_DOWN
+ const PIKASTEPDIR_UP
+ const PIKASTEPDIR_LEFT
+ const PIKASTEPDIR_RIGHT
+ const PIKASTEPDIR_DOWN_LEFT
+ const PIKASTEPDIR_DOWN_RIGHT
+ const PIKASTEPDIR_UP_LEFT
+ const PIKASTEPDIR_UP_RIGHT
+
; Macros for commands
pikaemotion_dummy1: MACRO
@@ -54,7 +91,7 @@ ENDM
pikaemotion_pikapic: MACRO
db PIKAEMOTION_5
- db \1
+ dpikapic \1
ENDM
pikaemotion_subcmd: MACRO
@@ -77,4 +114,111 @@ ENDM
pikaemotion_dummy3: MACRO
db PIKAEMOTION_DUMMY3
-ENDM \ No newline at end of file
+ENDM
+
+pikacry_def: MACRO
+\1_id:: dba \1
+endm
+
+dpikacry: MACRO
+ db (\1_id - PikachuCriesPointerTable) / 3
+ endm
+
+ldpikacry: MACRO
+ ld \1, (\2_id - PikachuCriesPointerTable) / 3
+ ENDM
+
+pikacry: MACRO
+ ldpikacry a, \1
+ endm
+
+
+ enum_start
+ enum pikapic_nop_command
+pikapic_nop: macro
+ db pikapic_nop_command
+ endm
+
+ enum pikapic_writebyte_command
+pikapic_writebyte: macro
+ db pikapic_writebyte_command, \1
+ endm
+
+ enum pikapic_loadgfx_command
+pikapic_loadgfx: macro
+ db pikapic_loadgfx_command, (\1_id - PikaPicAnimGFXHeaders) / 4
+ endm
+
+ enum pikapic_animation_command
+pikapic_animation: macro
+ ; frameset pointer, starting vtile, y offset, x offset
+ db pikapic_animation_command
+ dpikaanim \1
+ db 0, \2, \3, \4
+ endm
+
+ enum pikapic_nop4_command
+pikapic_nop4: macro
+ db pikapic_nop4_command
+ endm
+
+ enum pikapic_nop5_command
+pikapic_nop5: macro
+ db pikapic_nop5_command
+ endm
+
+ enum pikapic_waitbgmapeleteobject_command
+pikapic_waitbgmapeleteobject: macro
+ db pikapic_waitbgmapeleteobject_command, \1
+ endm
+
+ enum pikapic_nop7_command
+pikapic_nop7: macro
+ db pikapic_nop7_command
+ endm
+
+ enum pikapic_nop8_command
+pikapic_nop8: macro
+ db pikapic_nop8_command
+ endm
+
+ enum pikapic_jump_command
+pikapic_jump: macro ; 9
+ dbw pikapic_jump_command, \1
+ endm
+
+ enum pikapic_setduration_command
+pikapic_setduration: macro ; a
+ dbw pikapic_setduration_command, \1
+ endm
+
+ enum pikapic_cry_command
+pikapic_cry: macro ; b
+ db pikapic_cry_command
+IF _NARG == 0
+ db $ff
+else
+ dpikacry \1
+ endc
+ endm
+
+ enum pikapic_thunderbolt_command
+pikapic_thunderbolt: macro ; c
+ db pikapic_thunderbolt_command
+ endm
+
+ enum pikapic_waitbgmap_command
+pikapic_waitbgmap: macro ; d
+ db pikapic_waitbgmap_command
+ endm
+
+ enum pikapic_ret_command
+pikapic_ret: macro ; e
+ db pikapic_ret_command
+ endm
+
+pikapic_looptofinish: macro
+.loop\@
+ pikapic_waitbgmap
+ pikapic_jump .loop\@
+ endm
diff --git a/constants/type_constants.asm b/constants/type_constants.asm
index 66085f8d..b36dc179 100755
--- a/constants/type_constants.asm
+++ b/constants/type_constants.asm
@@ -13,4 +13,4 @@ GRASS EQU $16
ELECTRIC EQU $17
PSYCHIC EQU $18
ICE EQU $19
-DRAGON EQU $1A \ No newline at end of file
+DRAGON EQU $1A
diff --git a/data/animated_objects_3e_1.asm b/data/animated_objects_3e_1.asm
index 2461c469..07b17ce5 100755
--- a/data/animated_objects_3e_1.asm
+++ b/data/animated_objects_3e_1.asm
@@ -1,32 +1,32 @@
-Unkn_f9405:
- dw Unkn_f943d
- dw Unkn_f9440
- dw Unkn_f9445
- dw Unkn_f944a
- dw Unkn_f944f
- dw Unkn_f9454
- dw Unkn_f9459
- dw Unkn_f945e
- dw Unkn_f9463
- dw Unkn_f9468
- dw Unkn_f946d
- dw Unkn_f9472
- dw Unkn_f9477
- dw Unkn_f947c
- dw Unkn_f9481
- dw Unkn_f9486
- dw Unkn_f948b
- dw Unkn_f9494
- dw Unkn_f9499
- dw Unkn_f949e
- dw Unkn_f94fb
- dw Unkn_f94a1
- dw Unkn_f94b0
- dw Unkn_f94bf
- dw Unkn_f94ce
- dw Unkn_f94dd
- dw Unkn_f94ec
- dw Unkn_f94fe
+SurfingPikachuFrames:
+ dw Unkn_f943d ; 00
+ dw Unkn_f9440 ; 01
+ dw Unkn_f9445 ; 02
+ dw Unkn_f944a ; 03
+ dw Unkn_f944f ; 04
+ dw Unkn_f9454 ; 05
+ dw Unkn_f9459 ; 06
+ dw Unkn_f945e ; 07
+ dw Unkn_f9463 ; 08
+ dw Unkn_f9468 ; 09
+ dw Unkn_f946d ; 0a
+ dw Unkn_f9472 ; 0b
+ dw Unkn_f9477 ; 0c
+ dw Unkn_f947c ; 0d
+ dw Unkn_f9481 ; 0e
+ dw Unkn_f9486 ; 0f
+ dw Unkn_f948b ; 10
+ dw Unkn_f9494 ; 11
+ dw Unkn_f9499 ; 12
+ dw Unkn_f949e ; 13
+ dw Unkn_f94fb ; 14
+ dw Unkn_f94a1 ; 15
+ dw Unkn_f94b0 ; 16
+ dw Unkn_f94bf ; 17
+ dw Unkn_f94ce ; 18
+ dw Unkn_f94dd ; 19
+ dw Unkn_f94ec ; 1a
+ dw Unkn_f94fe ; 1b
Unkn_f943d:
frame $00, 32
@@ -199,49 +199,66 @@ Unkn_f94fe:
frame $23, 7
dorestart
-Unkn_f9507:
- dbw $00, Unkn_f9573
- dbw $00, Unkn_f9578
- dbw $36, Unkn_f9578
- dbw $03, Unkn_f9578
- dbw $39, Unkn_f9578
- dbw $06, Unkn_f9578
- dbw $3c, Unkn_f9578
- dbw $09, Unkn_f9578
- dbw $60, Unkn_f9578
- dbw $0c, Unkn_f9578
- dbw $63, Unkn_f9578
- dbw $30, Unkn_f9578
- dbw $66, Unkn_f9578
- dbw $33, Unkn_f9578
- dbw $69, Unkn_f9578
- dbw $6c, Unkn_f9578
- dbw $9c, Unkn_f9578
- dbw $a0, Unkn_f9578
- dbw $a3, Unkn_f9578
- dbw $a7, Unkn_f95db
- dbw $a8, Unkn_f95f4
- dbw $98, Unkn_f9625
- dbw $e0, Unkn_f959d
- dbw $e6, Unkn_f959d
- dbw $ca, Unkn_f959d
- dbw $a7, Unkn_f95ce
- dbw $00, Unkn_f9632
- dbw $00, Unkn_f963f
- dbw $00, Unkn_f9650
- dbw $00, Unkn_f9661
- dbw $00, Unkn_f9672
- dbw $00, Unkn_f9683
- dbw $80, Unkn_f9694
- dbw $84, Unkn_f9694
- dbw $88, Unkn_f9694
- dbw $8c, Unkn_f9694
-
-Unkn_f9573:
+SurfingPikachuOAMData:
+ dbw $00, .Frame0
+ dbw $00, .Frame1
+ dbw $36, .Frame2
+ dbw $03, .Frame3
+ dbw $39, .Frame4
+ dbw $06, .Frame5
+ dbw $3c, .Frame6
+ dbw $09, .Frame7
+ dbw $60, .Frame8
+ dbw $0c, .Frame9
+ dbw $63, .Frame10
+ dbw $30, .Frame11
+ dbw $66, .Frame12
+ dbw $33, .Frame13
+ dbw $69, .Frame14
+ dbw $6c, .Frame15
+ dbw $9c, .Frame16
+ dbw $a0, .Frame17
+ dbw $a3, .Frame18
+ dbw $a7, .Frame19
+ dbw $a8, .Frame20
+ dbw $98, .Frame21
+ dbw $e0, .Frame22
+ dbw $e6, .Frame23
+ dbw $ca, .Frame24
+ dbw $a7, .Frame25
+ dbw $00, .Frame26
+ dbw $00, .Frame27
+ dbw $00, .Frame28
+ dbw $00, .Frame29
+ dbw $00, .Frame30
+ dbw $00, .Frame31
+ dbw $80, .Frame32
+ dbw $84, .Frame33
+ dbw $88, .Frame34
+ dbw $8c, .Frame35
+
+.Frame0:
db 1
db $fc, $fc, $00, $00
-Unkn_f9578:
+.Frame1:
+.Frame2:
+.Frame3:
+.Frame4:
+.Frame5:
+.Frame6:
+.Frame7:
+.Frame8:
+.Frame9:
+.Frame10:
+.Frame11:
+.Frame12:
+.Frame13:
+.Frame14:
+.Frame15:
+.Frame16:
+.Frame17:
+.Frame18:
db 9
db $f4, $f4, $00, $00
db $f4, $fc, $01, $00
@@ -253,7 +270,9 @@ Unkn_f9578:
db $04, $fc, $21, $00
db $04, $04, $22, $00
-Unkn_f959d:
+.Frame22:
+.Frame23:
+.Frame24:
db 12
db $f8, $e8, $00, $00
db $f8, $f0, $01, $00
@@ -268,13 +287,13 @@ Unkn_f959d:
db $00, $08, $14, $00
db $00, $10, $15, $00
-Unkn_f95ce:
+.Frame25:
db 3
db $fc, $0b, $00, $10
db $04, $03, $0f, $10
db $04, $0b, $10, $10
-Unkn_f95db:
+.Frame19:
db 6
db $fc, $f0, $00, $30
db $fc, $08, $00, $10
@@ -283,7 +302,7 @@ Unkn_f95db:
db $04, $00, $0f, $10
db $04, $08, $10, $10
-Unkn_f95f4:
+.Frame20:
db 12
db $f4, $f0, $00, $10
db $f4, $f8, $01, $10
@@ -298,54 +317,57 @@ Unkn_f95f4:
db $04, $00, $21, $30
db $04, $08, $20, $30
-Unkn_f9625:
+.Frame21:
db 3
db $04, $f4, $00, $00
db $04, $fc, $01, $00
db $04, $04, $02, $00
-Unkn_f9632:
+.Frame26:
db 3
db $fc, $f4, $bf, $00
db $fc, $fc, $d5, $00
db $fc, $04, $d0, $00
-Unkn_f963f:
+.Frame27:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d1, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
-Unkn_f9650:
+.Frame28:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d3, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
-Unkn_f9661:
+.Frame29:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d7, $00
db $fc, $00, $d5, $00
db $fc, $08, $d0, $00
-Unkn_f9672:
+.Frame30:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d1, $00
db $fc, $00, $d8, $00
db $fc, $08, $d0, $00
-Unkn_f9683:
+.Frame31:
db 4
db $fc, $f0, $bf, $00
db $fc, $f8, $d5, $00
db $fc, $00, $d0, $00
db $fc, $08, $d0, $00
-Unkn_f9694:
+.Frame32:
+.Frame33:
+.Frame34:
+.Frame35:
db 12
db $f4, $f0, $03, $20
db $f4, $f8, $02, $20
diff --git a/data/map_songs.asm b/data/map_songs.asm
index b65822e7..b7f50c93 100644
--- a/data/map_songs.asm
+++ b/data/map_songs.asm
@@ -247,4 +247,4 @@ MapSongBanks: ; fc000 (3f:4000)
db MUSIC_GYM, BANK(Music_Gym) ; Lorelei
db MUSIC_DUNGEON1, BANK(Music_Dungeon1) ; Bruno
db MUSIC_POKEMON_TOWER, BANK(Music_PokemonTower) ; Agatha
- db MUSIC_ROUTES3, BANK(Music_Routes3) ; BeachHouse \ No newline at end of file
+ db MUSIC_ROUTES3, BANK(Music_Routes3) ; BeachHouse
diff --git a/data/mon_palettes.asm b/data/mon_palettes.asm
index b271aa5a..5980e22e 100755
--- a/data/mon_palettes.asm
+++ b/data/mon_palettes.asm
@@ -151,4 +151,4 @@ MonsterPalettes: ; 72921 (1c:6921)
db PAL_BROWNMON ; DRAGONITE
db PAL_MEWMON ; MEWTWO
db PAL_MEWMON ; MEW
-; 1c:69b9 \ No newline at end of file
+; 1c:69b9
diff --git a/data/mon_party_sprites.asm b/data/mon_party_sprites.asm
index 017c8d7c..2f45619c 100755
--- a/data/mon_party_sprites.asm
+++ b/data/mon_party_sprites.asm
@@ -85,4 +85,4 @@ MonPartyData: ; 719ba (1c:59ba)
dn SPRITE_BIRD_M, SPRITE_BIRD_M ;Zapdos/Moltres
dn SPRITE_SNAKE, SPRITE_SNAKE ;Dratini/Dragonair
dn SPRITE_SNAKE, SPRITE_MON ;Dragonite/Mewtwo
- dn SPRITE_MON, 0 ;Mew/Padding \ No newline at end of file
+ dn SPRITE_MON, 0 ;Mew/Padding
diff --git a/data/pikachu_emotions.asm b/data/pikachu_emotions.asm
index a1d902c3..cb90a4e6 100755
--- a/data/pikachu_emotions.asm
+++ b/data/pikachu_emotions.asm
@@ -1,266 +1,266 @@
-PikachuEmotion0_fd115: ; fd115 (3f:5115)
+PikachuEmotion0: ; fd115 (3f:5115)
db $ff
-PikachuEmotion2_fd116: ; fd116 (3f:5116)
+PikachuEmotion2: ; fd116 (3f:5116)
pikaemotion_dummy2
pikaemotion_emotebubble SMILE_BUBBLE
pikaemotion_pcm PikachuCry35
- pikaemotion_pikapic $2
+ pikaemotion_pikapic PikaPicAnimScript2
db $ff
-PikachuEmotion10_fd11e: ; fd11e (3f:511e)
+PikachuEmotion10: ; fd11e (3f:511e)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
pikaemotion_emotebubble HEART_BUBBLE
pikaemotion_pcm PikachuCry5
- pikaemotion_pikapic $a
+ pikaemotion_pikapic PikaPicAnimScript10
db $ff
-PikachuEmotion7_fd128: ; fd128 (3f:5128)
+PikachuEmotion7: ; fd128 (3f:5128)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_movement Pointer_fd224
+ pikaemotion_movement PikachuMovementData_fd224
pikaemotion_pcm PikachuCry1
- pikaemotion_movement Pointer_fd224
- pikaemotion_pikapic $7
+ pikaemotion_movement PikachuMovementData_fd224
+ pikaemotion_pikapic PikaPicAnimScript7
db $ff
-PikachuEmotion4_fd136: ; fd136 (3f:5136)
+PikachuEmotion4: ; fd136 (3f:5136)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_movement Pointer_fd230
+ pikaemotion_movement PikachuMovementData_fd230
pikaemotion_pcm PikachuCry29
- pikaemotion_pikapic $4
+ pikaemotion_pikapic PikaPicAnimScript4
db $ff
-PikachuEmotion1_fd141: ; fd141 (3f:5141)
+PikachuEmotion1: ; fd141 (3f:5141)
pikaemotion_dummy2
pikaemotion_pcm
- pikaemotion_pikapic $1
+ pikaemotion_pikapic PikaPicAnimScript1
db $ff
-PikachuEmotion8_fd147: ; fd147 (3f:5147)
+PikachuEmotion8: ; fd147 (3f:5147)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry39
- pikaemotion_pikapic $8
+ pikaemotion_pikapic PikaPicAnimScript8
db $ff
-PikachuEmotion5_fd14d: ; fd14d (3f:514d)
+PikachuEmotion5: ; fd14d (3f:514d)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry31
- pikaemotion_pikapic $5
+ pikaemotion_pikapic PikaPicAnimScript5
db $ff
-PikachuEmotion6_fd153: ; fd153 (3f:5153)
+PikachuEmotion6: ; fd153 (3f:5153)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
pikaemotion_pcm
- pikaemotion_movement Pointer_fd21e
+ pikaemotion_movement PikachuMovementData_fd21e
pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_pikapic $6
+ pikaemotion_pikapic PikaPicAnimScript6
db $ff
-PikachuEmotion3_fd160: ; fd160 (3f:5160)
+PikachuEmotion3: ; fd160 (3f:5160)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry40
- pikaemotion_pikapic $3
+ pikaemotion_pikapic PikaPicAnimScript3
db $ff
-PikachuEmotion9_fd166: ; fd166 (3f:5166)
+PikachuEmotion9: ; fd166 (3f:5166)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
pikaemotion_pcm PikachuCry6
- pikaemotion_movement Pointer_fd218
+ pikaemotion_movement PikachuMovementData_fd218
pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_pikapic $9
+ pikaemotion_pikapic PikaPicAnimScript9
db $ff
-PikachuEmotion11_fd173: ; fd173 (3f:5173)
+PikachuEmotion11: ; fd173 (3f:5173)
pikaemotion_emotebubble ZZZ_BUBBLE
pikaemotion_pcm PikachuCry37
- pikaemotion_pikapic $b
+ pikaemotion_pikapic PikaPicAnimScript11
db $ff
-PikachuEmotion12_fd17a: ; fd17a (3f:517a)
+PikachuEmotion12: ; fd17a (3f:517a)
pikaemotion_dummy2
pikaemotion_pcm
- pikaemotion_pikapic $c
+ pikaemotion_pikapic PikaPicAnimScript12
db $ff
-PikachuEmotion13_fd180: ; fd180 (3f:5180)
+PikachuEmotion13: ; fd180 (3f:5180)
pikaemotion_dummy2
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_movement Pointer_fd21e
- pikaemotion_pikapic $d
+ pikaemotion_movement PikachuMovementData_fd21e
+ pikaemotion_pikapic PikaPicAnimScript13
db $ff
-PikachuEmotion14_fd189: ; fd189 (3f:5189)
+PikachuEmotion14: ; fd189 (3f:5189)
pikaemotion_dummy2
pikaemotion_emotebubble BOLT_BUBBLE
pikaemotion_pcm PikachuCry10
- pikaemotion_pikapic $e
+ pikaemotion_pikapic PikaPicAnimScript14
db $ff
-PikachuEmotion15_fd191: ; fd191 (3f:5191)
+PikachuEmotion15: ; fd191 (3f:5191)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry34
- pikaemotion_pikapic $f
+ pikaemotion_pikapic PikaPicAnimScript15
db $ff
-PikachuEmotion16_fd197: ; fd197 (3f:5197)
+PikachuEmotion16: ; fd197 (3f:5197)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry33
- pikaemotion_pikapic $10
+ pikaemotion_pikapic PikaPicAnimScript16
db $ff
-PikachuEmotion17_fd19d: ; fd19d (3f:519d)
+PikachuEmotion17: ; fd19d (3f:519d)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry13
- pikaemotion_pikapic $11
+ pikaemotion_pikapic PikaPicAnimScript17
db $ff
-PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3)
+PikachuEmotion18: ; fd1a3 (3f:51a3)
pikaemotion_dummy2
pikaemotion_pcm
- pikaemotion_pikapic $12
+ pikaemotion_pikapic PikaPicAnimScript18
db $ff
-PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9)
+PikachuEmotion19: ; fd1a9 (3f:51a9)
pikaemotion_dummy2
pikaemotion_emotebubble HEART_BUBBLE
pikaemotion_pcm PikachuCry33
- pikaemotion_pikapic $13
+ pikaemotion_pikapic PikaPicAnimScript19
db $ff
-PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1)
+PikachuEmotion20: ; fd1b1 (3f:51b1)
pikaemotion_dummy2
pikaemotion_emotebubble HEART_BUBBLE
pikaemotion_pcm PikachuCry5
- pikaemotion_pikapic $14
+ pikaemotion_pikapic PikaPicAnimScript20
db $ff
-PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9)
+PikachuEmotion21: ; fd1b9 (3f:51b9)
pikaemotion_dummy2
pikaemotion_emotebubble FISH_BUBBLE
pikaemotion_pcm
- pikaemotion_pikapic $15
+ pikaemotion_pikapic PikaPicAnimScript21
db $ff
-PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1)
+PikachuEmotion22: ; fd1c1 (3f:51c1)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry4
- pikaemotion_pikapic $16
+ pikaemotion_pikapic PikaPicAnimScript22
db $ff
-PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7)
+PikachuEmotion23: ; fd1c7 (3f:51c7)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry19
- pikaemotion_pikapic $17
+ pikaemotion_pikapic PikaPicAnimScript23
pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
db $ff
-PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf)
+PikachuEmotion24: ; fd1cf (3f:51cf)
pikaemotion_dummy2
pikaemotion_emotebubble EXCLAMATION_BUBBLE
pikaemotion_pcm
- pikaemotion_pikapic $18
+ pikaemotion_pikapic PikaPicAnimScript24
db $ff
-PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7)
+PikachuEmotion25: ; fd1d7 (3f:51d7)
pikaemotion_dummy2
pikaemotion_emotebubble BOLT_BUBBLE
pikaemotion_pcm PikachuCry35
- pikaemotion_pikapic $19
+ pikaemotion_pikapic PikaPicAnimScript25
db $ff
-PikachuEmotion26_fd1df: ; fd1df (3f:51df)
+PikachuEmotion26: ; fd1df (3f:51df)
pikaemotion_dummy2
pikaemotion_emotebubble ZZZ_BUBBLE
pikaemotion_pcm PikachuCry37
- pikaemotion_pikapic $1a
+ pikaemotion_pikapic PikaPicAnimScript26
pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER
db $ff
-PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb)
+PikachuEmotion27: ; fd1eb (3f:51eb)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry9
- pikaemotion_pikapic $1b
+ pikaemotion_pikapic PikaPicAnimScript27
db $ff
-PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1)
+PikachuEmotion28: ; fd1f1 (3f:51f1)
pikaemotion_dummy2
pikaemotion_pcm PikachuCry15
- pikaemotion_pikapic $1c
+ pikaemotion_pikapic PikaPicAnimScript28
db $ff
-PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7)
+PikachuEmotion29: ; fd1f7 (3f:51f7)
pikaemotion_pcm PikachuCry5
- pikaemotion_pikapic $a
+ pikaemotion_pikapic PikaPicAnimScript10
db $ff
-PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc)
+PikachuEmotion30: ; fd1fc (3f:51fc)
pikaemotion_9
pikaemotion_emotebubble HEART_BUBBLE
pikaemotion_pcm PikachuCry5
- pikaemotion_pikapic $14
+ pikaemotion_pikapic PikaPicAnimScript20
pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT
pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
db $ff
-PikachuEmotion31_fd20a: ; fd20a (3f:520a)
+PikachuEmotion31: ; fd20a (3f:520a)
pikaemotion_pcm PikachuCry19
- pikaemotion_pikapic $17
+ pikaemotion_pikapic PikaPicAnimScript23
pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
db $ff
-PikachuEmotion32_fd213: ; fd213 (3f:5213)
+PikachuEmotion32: ; fd213 (3f:5213)
pikaemotion_pcm PikachuCry26
- pikaemotion_pikapic $17
+ pikaemotion_pikapic PikaPicAnimScript23
db $ff
-Pointer_fd218: ; fd218 (3f:5218)
+PikachuMovementData_fd218: ; fd218 (3f:5218)
db $00
- db $39, $01
- db $3e, $1e
+ db $39, 2 - 1
+ db $3e, 31 - 1
db $3f
-Pointer_fd21e: ; fd21e (3f:521e)
+PikachuMovementData_fd21e: ; fd21e (3f:521e)
db $00
- db $39, $00
- db $3e, $1e
+ db $39, 1 - 1
+ db $3e, 31 - 1
db $3f
-Pointer_fd224: ; fd224 (3f:5224)
+PikachuMovementData_fd224: ; fd224 (3f:5224)
db $00
- db $3c, $07, $2f
- db $3c, $07, $2f
+ db $3c, 8 - 1, (2 << 4) | (16 - 1)
+ db $3c, 8 - 1, (2 << 4) | (16 - 1)
db $3f
-Pointer_fd22c: ; fd22c (3f:522c)
- db $3b, $1f, $03
+PikachuMovementData_fd22c: ; fd22c (3f:522c)
+ db $3b, 32 - 1, 4 - 1
db $3f
-Pointer_fd230: ; fd230 (3f:5230)
+PikachuMovementData_fd230: ; fd230 (3f:5230)
db $00
- db $3c, $0f, $1f
- db $3c, $0f, $1f
+ db $3c, 16 - 1, (1 << 4) | (16 - 1)
+ db $3c, 16 - 1, (1 << 4) | (16 - 1)
db $3f
-Pointer_fd238: ; fd238 (3f:5238)
+PikachuMovementData_fd238: ; fd238 (3f:5238)
db $00
- db $05, $07
- db $39, $00
- db $05, $07
- db $06, $07
- db $39, $00
- db $06, $07
- db $08, $07
- db $39, $00
- db $08, $07
- db $07, $07
- db $39, $00
- db $07, $07
+ db $05, 8 - 1
+ db $39, 1 - 1
+ db $05, 8 - 1
+ db $06, 8 - 1
+ db $39, 1 - 1
+ db $06, 8 - 1
+ db $08, 8 - 1
+ db $39, 1 - 1
+ db $08, 8 - 1
+ db $07, 8 - 1
+ db $39, 1 - 1
+ db $07, 8 - 1
db $3f
diff --git a/data/pikachu_pic_animation.asm b/data/pikachu_pic_animation.asm
index f1f6bd68..85e67ecb 100755
--- a/data/pikachu_pic_animation.asm
+++ b/data/pikachu_pic_animation.asm
@@ -1,4 +1,4 @@
-Data_fe242:
+PikaPicAnimThunderboltPals:
db 4, %11000000
db 4, %11100100
db 4, %11000000
@@ -25,264 +25,266 @@ Data_fe26b: ; fe26b (3f:626b)
pikapic_loadgfx Pic_e4000
pikapic_loadgfx Pic_e49d1
pikapic_loadgfx PikachuSprite
- pikapic_object $1, $80, $0, $0
- pikapic_object $2, $b2, $5, $5
- pikapic_object $3, $b6, $5, $5
+ pikapic_animation PikaPicAnimBGFrames_1, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_2, $b2, $5, $5
+ pikapic_animation PikaPicAnimBGFrames_3, $b6, $5, $5
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe28a: ; fe28a (3f:628a)
+PikaPicAnimScript0: ; fe28a (3f:628a)
+PikaPicAnimScript1: ; fe28a (3f:628a)
+PikaPicAnimScript29: ; fe28a (3f:628a)
pikapic_setduration 40
pikapic_loadgfx Pic_e4000
pikapic_loadgfx GFX_e40cc
- pikapic_object $4, $80, $0, $0
- pikapic_object $6, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_6, $99, $0, $0
pikapic_waitbgmap
pikapic_cry PikachuCry3
pikapic_looptofinish
-Data_fe2a4: ; fe2a4 (3f:62a4)
+PikaPicAnimScript2: ; fe2a4 (3f:62a4)
pikapic_setduration 44
pikapic_loadgfx Pic_e411c
pikapic_loadgfx GFX_e41d2
- pikapic_object $4, $80, $0, $0
- pikapic_object $7, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_7, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe2be: ; fe2be (3f:62be)
+PikaPicAnimScript3: ; fe2be (3f:62be)
pikapic_setduration 80
pikapic_loadgfx Pic_e4272
pikapic_loadgfx GFX_e4323
- pikapic_object $4, $80, $0, $0
- pikapic_object $8, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_8, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe2d8: ; fe2d8 (3f:62d8)
+PikaPicAnimScript4: ; fe2d8 (3f:62d8)
pikapic_setduration 70
pikapic_loadgfx Pic_e4383
pikapic_loadgfx GFX_e444b
- pikapic_object $4, $80, $0, $0
- pikapic_object $9, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_9, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe2f2: ; fe2f2 (3f:62f2)
+PikaPicAnimScript5: ; fe2f2 (3f:62f2)
pikapic_setduration 32
pikapic_loadgfx Pic_e458b
pikapic_loadgfx GFX_e463b
- pikapic_object $4, $80, $0, $0
- pikapic_object $a, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_10, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe30c: ; fe30c (3f:630c)
+PikaPicAnimScript6: ; fe30c (3f:630c)
pikapic_setduration 50
pikapic_loadgfx Pic_e467b
pikapic_loadgfx GFX_e472e
- pikapic_object $4, $80, $0, $0
- pikapic_object $b, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_11, $99, $0, $0
pikapic_waitbgmap
pikapic_cry PikachuCry38
pikapic_looptofinish
-Data_fe326: ; fe326 (3f:6326)
+PikaPicAnimScript7: ; fe326 (3f:6326)
pikapic_setduration 58
pikapic_loadgfx Pic_e476e
pikapic_loadgfx GFX_e4841
- pikapic_object $4, $80, $0, $0
- pikapic_object $c, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_12, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe340: ; fe340 (3f:6340)
+PikaPicAnimScript8: ; fe340 (3f:6340)
pikapic_setduration 44
pikapic_loadgfx Pic_e49d1
pikapic_loadgfx GFX_e4a99
- pikapic_object $4, $80, $0, $0
- pikapic_object $d, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_13, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe35a: ; fe35a (3f:635a)
+PikaPicAnimScript9: ; fe35a (3f:635a)
pikapic_setduration 56
pikapic_loadgfx Pic_e4b39
pikapic_loadgfx GFX_e4bde
- pikapic_object $4, $80, $0, $0
- pikapic_object $e, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_14, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe374: ; fe374 (3f:6374)
+PikaPicAnimScript10: ; fe374 (3f:6374)
pikapic_setduration 56
pikapic_loadgfx Pic_e4c3e
pikapic_loadgfx GFX_e4ce0
pikapic_loadgfx GFX_e4e70
- pikapic_object $4, $80, $0, $0
- pikapic_object $10, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_16, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe390: ; fe390 (3f:6390)
+PikaPicAnimScript11: ; fe390 (3f:6390)
pikapic_setduration 100
pikapic_loadgfx Pic_e5000
pikapic_loadgfx GFX_e50af
- pikapic_object $4, $80, $0, $0
- pikapic_object $11, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_17, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe3aa: ; fe3aa (3f:63aa)
+PikaPicAnimScript12: ; fe3aa (3f:63aa)
pikapic_setduration 50
pikapic_loadgfx Pic_e523f
pikapic_loadgfx GFX_e52fe
- pikapic_object $4, $80, $0, $0
- pikapic_object $12, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_18, $99, $0, $0
pikapic_waitbgmap
pikapic_cry PikachuCry25
pikapic_looptofinish
-Data_fe3c4: ; fe3c4 (3f:63c4)
+PikaPicAnimScript13: ; fe3c4 (3f:63c4)
pikapic_setduration 50
pikapic_loadgfx Pic_e548e
pikapic_loadgfx GFX_e5541
- pikapic_object $4, $80, $0, $0
- pikapic_object $13, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_19, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe3de: ; fe3de (3f:63de)
+PikaPicAnimScript14: ; fe3de (3f:63de)
pikapic_setduration 40
pikapic_loadgfx Pic_e56d1
pikapic_loadgfx GFX_e5794
- pikapic_object $4, $80, $0, $0
- pikapic_object $14, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_20, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe3f8: ; fe3f8 (3f:63f8)
+PikaPicAnimScript15: ; fe3f8 (3f:63f8)
pikapic_setduration 50
pikapic_loadgfx Pic_e5924
pikapic_loadgfx GFX_e59ed
- pikapic_object $4, $80, $0, $0
- pikapic_object $15, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_21, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe412: ; fe412 (3f:6412)
+PikaPicAnimScript16: ; fe412 (3f:6412)
pikapic_setduration 32
pikapic_loadgfx Pic_e5b7d
pikapic_loadgfx GFX_e5c4d
- pikapic_object $4, $80, $0, $0
- pikapic_object $16, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_22, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe42c: ; fe42c (3f:642c)
+PikaPicAnimScript17: ; fe42c (3f:642c)
pikapic_setduration 100
pikapic_loadgfx Pic_e5ddd
pikapic_loadgfx GFX_e5e90
- pikapic_object $4, $80, $0, $0
- pikapic_object $17, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_23, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe446: ; fe446 (3f:6446)
+PikaPicAnimScript18: ; fe446 (3f:6446)
pikapic_setduration 32
pikapic_loadgfx GFX_e6020
pikapic_loadgfx GFX_e61b0
- pikapic_object $5, $80, $0, $0
- pikapic_object $18, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_5, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_24, $99, $0, $0
pikapic_waitbgmap
pikapic_cry PikachuCry18
pikapic_looptofinish
-Data_fe460: ; fe460 (3f:6460)
+PikaPicAnimScript19: ; fe460 (3f:6460)
pikapic_setduration 44
pikapic_loadgfx Pic_e6340
pikapic_loadgfx GFX_e63f7
- pikapic_object $4, $80, $0, $0
- pikapic_object $19, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_25, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe47a: ; fe47a (3f:647a)
+PikaPicAnimScript20: ; fe47a (3f:647a)
pikapic_setduration 50
pikapic_loadgfx Pic_e6587
pikapic_loadgfx GFX_e6646
- pikapic_object $4, $80, $0, $0
- pikapic_object $1a, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_26, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe494: ; fe494 (3f:6494)
+PikaPicAnimScript21: ; fe494 (3f:6494)
pikapic_setduration 40
pikapic_loadgfx Pic_e67d6
pikapic_loadgfx GFX_e682f
pikapic_loadgfx GFX_e69bf
pikapic_loadgfx GFX_e6b4f
pikapic_loadgfx GFX_e6cdf
- pikapic_object $4, $80, $0, $0
- pikapic_object $1b, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_27, $99, $0, $0
pikapic_waitbgmap
pikapic_cry PikachuCry20
pikapic_looptofinish
-Data_fe4b4: ; fe4b4 (3f:64b4)
+PikaPicAnimScript22: ; fe4b4 (3f:64b4)
pikapic_setduration 40
pikapic_loadgfx GFX_e6e6f
pikapic_loadgfx GFX_e6fff
- pikapic_object $5, $80, $0, $0
- pikapic_object $1c, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_5, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_28, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe4ce: ; fe4ce (3f:64ce)
+PikaPicAnimScript23: ; fe4ce (3f:64ce)
pikapic_setduration 70
pikapic_loadgfx GFX_e718f
pikapic_loadgfx GFX_e731f
- pikapic_object $5, $80, $0, $0
- pikapic_object $1d, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_5, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_29, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe4e8: ; fe4e8 (3f:64e8)
+PikaPicAnimScript24: ; fe4e8 (3f:64e8)
pikapic_setduration 60
pikapic_loadgfx GFX_e74af
pikapic_loadgfx GFX_e763f
- pikapic_object $5, $80, $0, $0
- pikapic_object $1e, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_5, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_30, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe502: ; fe502 (3f:6502)
+PikaPicAnimScript25: ; fe502 (3f:6502)
pikapic_setduration 50
pikapic_loadgfx Pic_e77cf
pikapic_loadgfx GFX_e7863
pikapic_loadgfx GFX_e79f3
- pikapic_object $4, $80, $0, $0
- pikapic_object $1f, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_31, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_writebyte 13
@@ -292,35 +294,34 @@ Data_fe502: ; fe502 (3f:6502)
Data_fe51f: ; fe51f (3f:651f)
pikapic_waitbgmap
-
-Data_fe520: ; fe520 (3f:6520)
+PikaPicAnimScript26: ; fe520 (3f:6520)
pikapic_setduration 100
pikapic_loadgfx Pic_e5000
pikapic_loadgfx GFX_e50af
pikapic_loadgfx GFX_e7b83
pikapic_loadgfx GFX_e7d13
- pikapic_object $4, $80, $0, $0
- pikapic_object $20, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_32, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe53e: ; fe53e (3f:653e)
+PikaPicAnimScript27: ; fe53e (3f:653e)
pikapic_setduration 30
pikapic_loadgfx Pic_f0abf
pikapic_loadgfx GFX_f0b64
- pikapic_object $4, $80, $0, $0
- pikapic_object $21, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_33, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
-Data_fe558: ; fe558 (3f:6558)
+PikaPicAnimScript28: ; fe558 (3f:6558)
pikapic_setduration 64
pikapic_loadgfx Pic_f0cf4
pikapic_loadgfx GFX_f0d82
- pikapic_object $4, $80, $0, $0
- pikapic_object $22, $99, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_4, $80, $0, $0
+ pikapic_animation PikaPicAnimBGFrames_34, $99, $0, $0
pikapic_waitbgmap
pikapic_cry
pikapic_looptofinish
@@ -328,10 +329,11 @@ Data_fe558: ; fe558 (3f:6558)
PikaPicAnimGFXHeaders:
pikapicanimgfx: MACRO
\2_id::
- db \1 ; size
+ db \1 ; size (-1 if compressed)
dba \2 ; pointer
endm
+PikaPicAnimGFX_Null_id::
dbbw 1, $39,$0000 ; 00
pikapicanimgfx -1, Pic_e4000 ; 01
pikapicanimgfx 5, GFX_e40cc ; 02
diff --git a/data/pikachu_pic_objects.asm b/data/pikachu_pic_objects.asm
new file mode 100755
index 00000000..940c1141
--- /dev/null
+++ b/data/pikachu_pic_objects.asm
@@ -0,0 +1,300 @@
+PikaPicAnimBGFramesPointers:
+pikaanim_def: macro
+\1_id: dw \1
+ endm
+
+ pikaanim_def PikaPicAnimBGFrames_0 ; 00
+ pikaanim_def PikaPicAnimBGFrames_1 ; 01
+ pikaanim_def PikaPicAnimBGFrames_2 ; 02
+ pikaanim_def PikaPicAnimBGFrames_3 ; 03
+ pikaanim_def PikaPicAnimBGFrames_4 ; 04
+ pikaanim_def PikaPicAnimBGFrames_5 ; 05
+ pikaanim_def PikaPicAnimBGFrames_6 ; 06
+ pikaanim_def PikaPicAnimBGFrames_7 ; 07
+ pikaanim_def PikaPicAnimBGFrames_8 ; 08
+ pikaanim_def PikaPicAnimBGFrames_9 ; 09
+ pikaanim_def PikaPicAnimBGFrames_10 ; 0a
+ pikaanim_def PikaPicAnimBGFrames_11 ; 0b
+ pikaanim_def PikaPicAnimBGFrames_12 ; 0c
+ pikaanim_def PikaPicAnimBGFrames_13 ; 0d
+ pikaanim_def PikaPicAnimBGFrames_14 ; 0e
+ pikaanim_def PikaPicAnimBGFrames_15 ; 0f
+ pikaanim_def PikaPicAnimBGFrames_16 ; 10
+ pikaanim_def PikaPicAnimBGFrames_17 ; 11
+ pikaanim_def PikaPicAnimBGFrames_18 ; 12
+ pikaanim_def PikaPicAnimBGFrames_19 ; 13
+ pikaanim_def PikaPicAnimBGFrames_20 ; 14
+ pikaanim_def PikaPicAnimBGFrames_21 ; 15
+ pikaanim_def PikaPicAnimBGFrames_22 ; 16
+ pikaanim_def PikaPicAnimBGFrames_23 ; 17
+ pikaanim_def PikaPicAnimBGFrames_24 ; 18
+ pikaanim_def PikaPicAnimBGFrames_25 ; 19
+ pikaanim_def PikaPicAnimBGFrames_26 ; 1a
+ pikaanim_def PikaPicAnimBGFrames_27 ; 1b
+ pikaanim_def PikaPicAnimBGFrames_28 ; 1c
+ pikaanim_def PikaPicAnimBGFrames_29 ; 1d
+ pikaanim_def PikaPicAnimBGFrames_30 ; 1e
+ pikaanim_def PikaPicAnimBGFrames_31 ; 1f
+ pikaanim_def PikaPicAnimBGFrames_32 ; 20
+ pikaanim_def PikaPicAnimBGFrames_33 ; 21
+ pikaanim_def PikaPicAnimBGFrames_34 ; 22
+ pikaanim_def PikaPicAnimBGFrames_35 ; 23
+
+PikaPicAnimBGFrames_0:
+PikaPicAnimBGFrames_1:
+ ; Tilemap idx, duration
+ pikaframe PikaAnimTilemap_1, 20
+ pikaframe PikaAnimTilemap_7, 2
+ pikaframe PikaAnimTilemap_1, 1
+ pikaframe PikaAnimTilemap_7, 2
+ pikaframe PikaAnimTilemap_1, 1
+ pikaframe PikaAnimTilemap_7, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_fdc1e: ; unreferenced
+ pikaframe PikaAnimTilemap_2, 2
+ pikaframe PikaAnimTilemap_1, 1
+ pikaframe PikaAnimTilemap_2, 2
+ pikaframe PikaAnimTilemap_1, 1
+ pikaframe PikaAnimTilemap_2, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_2:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_8, 8
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_8, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_3:
+ pikaframe PikaAnimTilemap_8, 8
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_8, 8
+ pikaframedelay 8
+ pikaframeend
+
+PikaPicAnimBGFrames_4:
+PikaPicAnimBGFrames_35:
+ pikaframe PikaAnimTilemap_1, 0
+ pikaframeend
+
+PikaPicAnimBGFrames_5:
+ pikaframe PikaAnimTilemap_9, 0
+ pikaframeend
+
+PikaPicAnimBGFrames_6:
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_14, 4
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_14, 4
+ pikaframedelay 64
+ pikaframe PikaAnimTilemap_14, 4
+ pikaframedelay 64
+ pikaframeend
+
+PikaPicAnimBGFrames_7:
+ pikaframedelay 4
+ pikaframe PikaAnimTilemap_15, 4
+ pikaframedelay 4
+ pikaframe PikaAnimTilemap_15, 4
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_15, 4
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_15, 4
+ pikaframeend
+
+PikaPicAnimBGFrames_8:
+ pikaframe PikaAnimTilemap_16, 1
+ pikaframedelay 1
+ pikaframe PikaAnimTilemap_16, 1
+ pikaframedelay 64
+ pikaframe PikaAnimTilemap_16, 1
+ pikaframedelay 64
+ pikaframeend
+
+PikaPicAnimBGFrames_9:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_17, 8
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_17, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_10:
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_18, 2
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_18, 64
+ pikaframedelay 3
+ pikaframe PikaAnimTilemap_18, 64
+ pikaframeend
+
+PikaPicAnimBGFrames_11:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_19, 64
+ pikaframedelay 4
+ pikaframe PikaAnimTilemap_19, 64
+ pikaframeend
+
+PikaPicAnimBGFrames_12:
+ pikaframe PikaAnimTilemap_20, 8
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_20, 8
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_20, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_13:
+ pikaframe PikaAnimTilemap_21, 4
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_21, 4
+ pikaframedelay 64
+ pikaframe PikaAnimTilemap_21, 4
+ pikaframedelay 64
+ pikaframeend
+
+PikaPicAnimBGFrames_14:
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_22, 2
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_22, 2
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_22, 2
+ pikaframeend
+
+PikaPicAnimBGFrames_15:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_23, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_16:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_23, 3
+ pikaframe PikaAnimTilemap_24, 5
+ pikaframe PikaAnimTilemap_23, 3
+ pikaframedelay 5
+ pikaframeend
+
+PikaPicAnimBGFrames_17:
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_25, 8
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_25, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_18:
+ pikaframedelay 13
+ pikaframe PikaAnimTilemap_26, 12
+ pikaframedelay 100
+ pikaframe PikaAnimTilemap_26, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_19:
+ pikaframedelay 5
+ pikaframe PikaAnimTilemap_27, 5
+ pikaframedelay 5
+ pikaframe PikaAnimTilemap_27, 5
+ pikaframedelay 100
+ pikaframeend
+
+PikaPicAnimBGFrames_20:
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_28, 2
+ pikaframedelay 2
+ pikaframe PikaAnimTilemap_28, 2
+ pikaframeend
+
+PikaPicAnimBGFrames_21:
+ pikaframedelay 5
+ pikaframe PikaAnimTilemap_29, 5
+ pikaframedelay 5
+ pikaframe PikaAnimTilemap_29, 5
+ pikaframeend
+
+PikaPicAnimBGFrames_22:
+ pikaframe PikaAnimTilemap_30, 8
+ pikaframedelay 100
+ pikaframeend
+
+PikaPicAnimBGFrames_23:
+ pikaframedelay 10
+ pikaframe PikaAnimTilemap_31, 3
+ pikaframedelay 3
+ pikaframe PikaAnimTilemap_31, 3
+ pikaframedelay 100
+ pikaframeend
+
+PikaPicAnimBGFrames_24:
+ pikaframedelay 3
+ pikaframe PikaAnimTilemap_32, 100
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_32, 8
+ pikaframeend
+
+PikaPicAnimBGFrames_25:
+ pikaframe PikaAnimTilemap_33, 6
+ pikaframedelay 6
+ pikaframe PikaAnimTilemap_33, 6
+ pikaframedelay 6
+ pikaframeend
+
+PikaPicAnimBGFrames_26:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_34, 12
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_34, 12
+ pikaframeend
+
+PikaPicAnimBGFrames_27:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_9, 2
+ pikaframe PikaAnimTilemap_10, 1
+ pikaframe PikaAnimTilemap_11, 1
+ pikaframe PikaAnimTilemap_12, 100
+ pikaframeend
+
+PikaPicAnimBGFrames_28:
+ pikaframedelay 8
+ pikaframe PikaAnimTilemap_36, 100
+ pikaframeend
+
+PikaPicAnimBGFrames_29:
+ pikaframedelay 16
+ pikaframe PikaAnimTilemap_37, 16
+ pikaframedelay 16
+ pikaframe PikaAnimTilemap_37, 16
+ pikaframeend
+
+PikaPicAnimBGFrames_30:
+ pikaframedelay 6
+ pikaframe PikaAnimTilemap_38, 6
+ pikaframedelay 6
+ pikaframe PikaAnimTilemap_38, 6
+ pikaframedelay 100
+ pikaframeend
+
+PikaPicAnimBGFrames_31:
+ pikaframedelay 6
+ pikaframe PikaAnimTilemap_9, 6
+ pikaframe PikaAnimTilemap_10, 100
+ pikaframeend
+
+PikaPicAnimBGFrames_32:
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_9, 8
+ pikaframedelay 20
+ pikaframe PikaAnimTilemap_9, 8
+ pikaframe PikaAnimTilemap_10, 8
+ pikaframe PikaAnimTilemap_11, 100
+ pikaframeend
+
+PikaPicAnimBGFrames_33:
+ pikaframedelay 4
+ pikaframe PikaAnimTilemap_9, 100
+ pikaframeend
+
+PikaPicAnimBGFrames_34:
+ pikaframedelay 12
+ pikaframe PikaAnimTilemap_9, 12
+ pikaframedelay 12
+ pikaframe PikaAnimTilemap_9, 100
+ pikaframeend
diff --git a/data/pikachu_pic_tilemaps.asm b/data/pikachu_pic_tilemaps.asm
new file mode 100755
index 00000000..95882711
--- /dev/null
+++ b/data/pikachu_pic_tilemaps.asm
@@ -0,0 +1,253 @@
+PikaPicTilemapPointers:
+pikatilemap_def: macro
+\1_id: dw \1
+ endm
+
+ pikatilemap_def PikaAnimTilemap_0
+ pikatilemap_def PikaAnimTilemap_1
+ pikatilemap_def PikaAnimTilemap_2
+ pikatilemap_def PikaAnimTilemap_3
+ pikatilemap_def PikaAnimTilemap_4
+ pikatilemap_def PikaAnimTilemap_5
+ pikatilemap_def PikaAnimTilemap_6
+ pikatilemap_def PikaAnimTilemap_7
+ pikatilemap_def PikaAnimTilemap_8
+ pikatilemap_def PikaAnimTilemap_9
+ pikatilemap_def PikaAnimTilemap_10
+ pikatilemap_def PikaAnimTilemap_11
+ pikatilemap_def PikaAnimTilemap_12
+ pikatilemap_def PikaAnimTilemap_13
+ pikatilemap_def PikaAnimTilemap_14
+ pikatilemap_def PikaAnimTilemap_15
+ pikatilemap_def PikaAnimTilemap_16
+ pikatilemap_def PikaAnimTilemap_17
+ pikatilemap_def PikaAnimTilemap_18
+ pikatilemap_def PikaAnimTilemap_19
+ pikatilemap_def PikaAnimTilemap_20
+ pikatilemap_def PikaAnimTilemap_21
+ pikatilemap_def PikaAnimTilemap_22
+ pikatilemap_def PikaAnimTilemap_23
+ pikatilemap_def PikaAnimTilemap_24
+ pikatilemap_def PikaAnimTilemap_25
+ pikatilemap_def PikaAnimTilemap_26
+ pikatilemap_def PikaAnimTilemap_27
+ pikatilemap_def PikaAnimTilemap_28
+ pikatilemap_def PikaAnimTilemap_29
+ pikatilemap_def PikaAnimTilemap_30
+ pikatilemap_def PikaAnimTilemap_31
+ pikatilemap_def PikaAnimTilemap_32
+ pikatilemap_def PikaAnimTilemap_33
+ pikatilemap_def PikaAnimTilemap_34
+ pikatilemap_def PikaAnimTilemap_35
+ pikatilemap_def PikaAnimTilemap_36
+ pikatilemap_def PikaAnimTilemap_37
+ pikatilemap_def PikaAnimTilemap_38
+ pikatilemap_def PikaAnimTilemap_39
+ pikatilemap_def PikaAnimTilemap_40
+ pikatilemap_def PikaAnimTilemap_41
+ pikatilemap_def PikaAnimTilemap_42
+
+PikaAnimTilemap_0:
+ db $ff ; unused
+
+
+ ; $ff inhibits overwriting that tile
+PikaAnimTilemap_1:
+PikaAnimTilemap_42:
+ db 5, 5
+ db $00, $05, $0a, $0f, $14
+ db $01, $06, $0b, $10, $15
+ db $02, $07, $0c, $11, $16
+ db $03, $08, $0d, $12, $17
+ db $04, $09, $0e, $13, $18
+
+PikaAnimTilemap_2:
+ db 5, 5
+ db $19, $1e, $23, $28, $2d
+ db $1a, $1f, $24, $29, $2e
+ db $1b, $20, $25, $2a, $2f
+ db $1c, $21, $26, $2b, $30
+ db $1d, $22, $27, $2c, $31
+
+PikaAnimTilemap_7:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $20, $25, $ff, $ff
+ db $ff, $21, $26, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_3:
+ db 1, 1
+ db $00
+
+PikaAnimTilemap_4:
+ db 2, 1
+ db $00
+ db $01
+
+PikaAnimTilemap_5:
+ db 1, 2
+ db $00, $01
+
+PikaAnimTilemap_6:
+PikaAnimTilemap_8:
+ db 2, 2
+ db $00, $01
+ db $02, $03
+
+PikaAnimTilemap_fde71: ; unused
+ db 3, 2
+ db $00, $01
+ db $02, $03
+ db $04, $05
+
+PikaAnimTilemap_fde79: ; unused
+ db 2, 3
+ db $00, $01, $02
+ db $03, $04, $05
+
+PikaAnimTilemap_14:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_15:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+
+PikaAnimTilemap_16:
+ db 5, 5
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $04, $05, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_17:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+
+PikaAnimTilemap_18:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $00, $01
+ db $ff, $ff, $ff, $02, $03
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_19:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_20:
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+PikaAnimTilemap_21:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $ff, $ff, $ff, $ff, $ff
+
+PikaAnimTilemap_22:
+ db 5, 5
+ db $ff, $ff, $ff, $ff, $ff
+ db $ff, $ff, $ff, $ff, $ff
+ db $00, $01, $ff, $ff, $ff
+ db $02, $03, $ff, $ff, $ff
+ db $04, $05, $ff, $ff, $ff
+
+PikaAnimTilemap_23:
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+PikaAnimTilemap_24:
+ db 5, 5
+ db $19, $1a, $1b, $1c, $1d
+ db $1e, $1f, $20, $21, $22
+ db $23, $24, $25, $26, $27
+ db $28, $29, $2a, $2b, $2c
+ db $2d, $2e, $2f, $30, $31
+
+PikaAnimTilemap_9:
+PikaAnimTilemap_25:
+PikaAnimTilemap_26:
+PikaAnimTilemap_27:
+PikaAnimTilemap_28:
+PikaAnimTilemap_29:
+PikaAnimTilemap_30:
+PikaAnimTilemap_31:
+PikaAnimTilemap_32:
+PikaAnimTilemap_33:
+PikaAnimTilemap_34:
+PikaAnimTilemap_35:
+PikaAnimTilemap_36:
+PikaAnimTilemap_37:
+PikaAnimTilemap_38:
+PikaAnimTilemap_39:
+ db 5, 5
+ db $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09
+ db $0a, $0b, $0c, $0d, $0e
+ db $0f, $10, $11, $12, $13
+ db $14, $15, $16, $17, $18
+
+PikaAnimTilemap_10:
+PikaAnimTilemap_40:
+ db 5, 5
+ db $19, $1a, $1b, $1c, $1d
+ db $1e, $1f, $20, $21, $22
+ db $23, $24, $25, $26, $27
+ db $28, $29, $2a, $2b, $2c
+ db $2d, $2e, $2f, $30, $31
+
+PikaAnimTilemap_11:
+PikaAnimTilemap_41:
+ db 5, 5
+ db $32, $33, $34, $35, $36
+ db $37, $38, $39, $3a, $3b
+ db $3c, $3d, $3e, $3f, $40
+ db $41, $42, $43, $44, $45
+ db $46, $47, $48, $49, $4a
+
+PikaAnimTilemap_12:
+ db 5, 5
+ db $4b, $4c, $4d, $4e, $4f
+ db $50, $51, $52, $53, $54
+ db $55, $56, $57, $58, $59
+ db $5a, $5b, $5c, $5d, $5e
+ db $5f, $60, $61, $62, $63
+
+PikaAnimTilemap_13:
+ db 5, 5
+ db $64, $65, $66, $67, $68
+ db $69, $6a, $6b, $6c, $6d
+ db $6e, $6f, $70, $71, $72
+ db $73, $74, $75, $76, $77
+ db $78, $79, $7a, $7b, $7c
diff --git a/data/super_rod.asm b/data/super_rod.asm
index 14a3b9b7..fa133c77 100755
--- a/data/super_rod.asm
+++ b/data/super_rod.asm
@@ -30,4 +30,4 @@ FishingSlots:: ; f5eda (3d:5eda)
db SEAFOAM_ISLANDS_5,KRABBY,25,STARYU,20,KINGLER,35,STARYU,40
db UNKNOWN_DUNGEON_1,GOLDEEN,25,SEAKING,35,SEAKING,45,SEAKING,55
db UNKNOWN_DUNGEON_3,GOLDEEN,30,SEAKING,40,SEAKING,50,SEAKING,60
- db $ff \ No newline at end of file
+ db $ff
diff --git a/data/tileset_headers.asm b/data/tileset_headers.asm
index e81d11ff..73e51e86 100755
--- a/data/tileset_headers.asm
+++ b/data/tileset_headers.asm
@@ -1,5 +1,4 @@
Tilesets: ; c558 (3:4558)
- ; dr $c558,$c684
tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, OUTDOOR
tileset RedsHouse1_Block, RedsHouse1_GFX, RedsHouse1_Coll, $FF,$FF,$FF, $FF, INDOOR
diff --git a/engine/bank3c.asm b/engine/bank3c.asm
index 1f3c967f..d3bcc897 100644
--- a/engine/bank3c.asm
+++ b/engine/bank3c.asm
@@ -1,7 +1,7 @@
INCLUDE "engine/pikachu_pcm.asm"
INCLUDE "engine/overworld/advance_player_sprite.asm"
-ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
+ResetStatusAndHalveMoneyOnBlackout: ; f0274 (3c:4274)
; Reset player status on blackout.
xor a
ld [wd435], a
@@ -50,31 +50,31 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
ld [wJoyIgnore], a
predef_jump HealParty
-Func_f02da:: ; f02da (3c:42da)
+SetMapSpecificScriptFlagsOnMapReload: ; f02da (3c:42da)
ld a, [wCurMap]
cp VERMILION_GYM ; ??? new thing about verm gym?
- jr z, .asm_f02ee
+ jr z, .verm_gym
ld c, a
- ld hl, Pointer_f02fa
-.asm_f02e5
+ ld hl, .MapList
+.search_loop
ld a, [hli]
cp c
- jr z, .asm_f02f4
+ jr z, .in_list
cp a, $ff
- jr nz, .asm_f02e5
+ jr nz, .search_loop
ret
-.asm_f02ee
+.verm_gym
ld hl, wCurrentMapScriptFlags
set 6, [hl]
ret
-.asm_f02f4
+.in_list
ld hl, wCurrentMapScriptFlags
set 5, [hl]
ret
-Pointer_f02fa:: ; f02fa (3c:42fa)
+.MapList ; f02fa (3c:42fa)
db SILPH_CO_2F
db SILPH_CO_3F
db SILPH_CO_4F
@@ -102,18 +102,18 @@ Pointer_f02fa:: ; f02fa (3c:42fa)
db AGATHAS_ROOM
db $ff
-BeachHouse_GFX:: ; f0314 (3c:4314)
+BeachHouse_GFX: ; f0314 (3c:4314)
INCBIN "gfx/tilesets/beachhouse.2bpp"
-BeachHouse_Block:: ; f0914 (3c:4914)
+BeachHouse_Block: ; f0914 (3c:4914)
INCBIN "gfx/blocksets/beachhouse.bst"
-Func_f0a54:: ; f0a54 (3c:4a54)
+Func_f0a54: ; f0a54 (3c:4a54)
ret
-Func_f0a55:: ; f0a55 (3c:4a55)
+LoadUnusedBluesHouseMissableObjectData: ; f0a55 (3c:4a55)
; referenced in an unused function
- ld hl, Pointer_f0a76 ; 3c:4a76
+ ld hl, .MissableObjectsMaps
.loop
ld a, [hli]
cp a, $ff
@@ -121,13 +121,13 @@ Func_f0a55:: ; f0a55 (3c:4a55)
ld b, a
ld a, [wCurMap]
cp b
- jr z, .asm_f0a68
+ jr z, .found
inc hl
inc hl
inc hl
jr .loop
-.asm_f0a68
+.found
ld a, [hli]
ld c, a
ld b, 0
@@ -138,16 +138,16 @@ Func_f0a55:: ; f0a55 (3c:4a55)
call CopyData
ret
-Pointer_f0a76:: ; f0a76 (3c:4a76)
- dbbw BLUES_HOUSE, Pointer_f0a7bEnd - Pointer_f0a7b, Pointer_f0a7b
+.MissableObjectsMaps:
+ dbbw BLUES_HOUSE, .End - .Start, .Start
db $ff
-Pointer_f0a7b:
+.Start:
db 1, HS_DAISY_SITTING_COPY
db 2, HS_DAISY_WALKING_COPY
db 3, HS_TOWN_MAP_COPY
db $ff
-Pointer_f0a7bEnd:
+.End:
TryApplyPikachuMovementData: ; f0a82
ld a, [wd472]
@@ -209,41 +209,14 @@ INCLUDE "scripts/oakslab2.asm"
INCLUDE "scripts/school2.asm"
INCLUDE "scripts/museum1f2.asm"
INCLUDE "scripts/pewterpokecenter2.asm"
-
-Func_f1e22:
- ld hl, PikachuMovementData_f1e2b
- ld b, SPRITE_FACING_RIGHT
- call TryApplyPikachuMovementData
- ret
-
-PikachuMovementData_f1e2b:
- db $00
- db $1d
- db $1f
- db $38
- db $3f
-
+INCLUDE "scripts/pokemontower2_2.asm"
INCLUDE "scripts/celadonmart3_2.asm"
INCLUDE "scripts/celadonmansion1_2.asm"
INCLUDE "scripts/celadonmansion3_2.asm"
-
-Func_f1f23:
- ld hl, PikachuMovementData_f1f2c
- ld b, SPRITE_FACING_DOWN
- call TryApplyPikachuMovementData
- ret
-
-PikachuMovementData_f1f2c:
- db $00
- db $20
- db $1e
- db $35
- db $3f
-
+INCLUDE "scripts/celadongamecorner2.asm"
INCLUDE "scripts/celadondiner2.asm"
INCLUDE "scripts/safarizoneentrance2.asm"
INCLUDE "scripts/cinnabargym3.asm"
-
INCLUDE "scripts/mtmoonpokecenter2.asm"
INCLUDE "data/mapHeaders/beach_house.asm"
@@ -259,111 +232,4 @@ INCLUDE "scripts/ssanne9_2.asm"
INCLUDE "scripts/silphco11_2.asm"
INCLUDE "engine/overworld/hidden_objects.asm"
-
-Func_f2cd0:
- ld d, 0
- ld hl, Jumptable_f2ce1
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- ld e, a
- ld d, 0
- ret
-
-Jumptable_f2ce1:
- dw Func_f2ceb
- dw Func_f2ceb
- dw Func_f2cee
- dw Func_f2cf4
- dw Func_f2d06
-
-Func_f2ceb:
- ld a, 0
- ret
-
-Func_f2cee:
- call Random
- and $1
- ret
-
-Func_f2cf4: ; should return to a, instead returns to b
- call Random
- swap a
- cp 1 * $ff / 3
- ld b, 0
- ret c
- cp 2 * $ff / 3
- ld b, 1
- ret c
- ld b, 2
- ret
-
-Func_f2d06:
- call Random
- and $3
- ret
-
-Func_f2d0c:
- ld hl, GymTrashCans3c
- ld a, [wGymTrashCanIndex]
- ld c, a
- ld b, 0
- ld a, 9
- call AddNTimes
- call AddNTimes ; ????
- ld a, [hli]
- ld [hGymTrashCanRandNumMask], a
- ld e, a
- push hl
- call Func_f2cd0
- pop hl
- add hl, de
- add hl, de
- ld a, [hli]
- ld [wSecondLockTrashCanIndex], a
- ld a, [hl]
- ld [wSecondLockTrashCanIndex + 1], a
- ret
-
-GymTrashCans3c: ; f2d31 (3c:6d31)
-; First byte: number of trashcan entries
-; Following four byte pairs: indices for the second trash can.
-; BUG: Rows that have 3 trashcan entries are sampled incorrectly.
-; The sampling occurs by taking a random number and seeing which
-; third of the range 0-255 the number falls in. However, it returns
-; that value to the wrong register, so the result is never used.
-; Instead of using an offset in [0,1,2], the offset is instead
-; in the full range 0-255. This results in truly random behavior.
- db 4
- db 1,3, 3,1, 1,-1, 3,-1
- db 3
- db 0,2, 2,4, 4,0, -1,-1
- db 4
- db 1,5, 5,1, 1,-1, 5,-1
- db 3
- db 0,4, 4,6, 6,0, -1,-1
- db 4
- db 1,3, 3,1, 5,5, 7,7
- db 3
- db 2,4, 4,8, 8,2, -1,-1
- db 3
- db 3,7, 7,9, 9,3, -1,-1
- db 4
- db 4,8, 6,10, 8,4, 10,6
- db 3
- db 5,7, 7,11, 11,5, -1,-1
- db 3
- db 6,10, 10,12, 12,6, -1,-1
- db 4
- db 7,9, 9,7, 11,13, 13,11
- db 3
- db 8,10, 10,14, 14,8, -1,-1
- db 4
- db 9,13, 13,9, 9,-1, 13,-1
- db 3
- db 10,12, 12,14, 14,10, -1,-1
- db 4
- db 11,13, 13,11, 11,-1, 13,-1
+INCLUDE "engine/vermilion_gym_trash_cans.asm"
diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm
index 4f7cd2c8..74bb0573 100755
--- a/engine/battle/animations.asm
+++ b/engine/battle/animations.asm
@@ -1,53 +1,53 @@
; Draws a "frame block". Frame blocks are blocks of tiles that are put
; together to form frames in battle animations.
DrawFrameBlock: ; 78000 (1e:4000)
- ld l,c
- ld h,b
- ld a,[hli]
- ld [wNumFBTiles],a
- ld a,[wFBDestAddr + 1]
- ld e,a
- ld a,[wFBDestAddr]
- ld d,a
+ ld l, c
+ ld h, b
+ ld a, [hli]
+ ld [wNumFBTiles], a
+ ld a, [wFBDestAddr + 1]
+ ld e, a
+ ld a, [wFBDestAddr]
+ ld d, a
xor a
- ld [wFBTileCounter],a ; loop counter
+ ld [wFBTileCounter], a ; loop counter
.loop
- ld a,[wFBTileCounter]
+ ld a, [wFBTileCounter]
inc a
- ld [wFBTileCounter],a
+ ld [wFBTileCounter], a
ld a, $2
ld [wdef5], a
- ld a,[wSubAnimTransform]
+ ld a, [wSubAnimTransform]
dec a
- jr z,.flipHorizontalAndVertical ; 1
+ jr z, .flipHorizontalAndVertical ; 1
dec a
- jp z,.flipHorizontalTranslateDown ; 2
+ jp z, .flipHorizontalTranslateDown ; 2
dec a
- jr z,.flipBaseCoords ; 3
+ jr z, .flipBaseCoords ; 3
.noTransformation
- ld a,[wBaseCoordY]
+ ld a, [wBaseCoordY]
add [hl]
- ld [de],a ; store Y
+ ld [de], a ; store Y
inc hl
inc de
- ld a,[wBaseCoordX]
+ ld a, [wBaseCoordX]
jr .finishCopying
.flipBaseCoords
- ld a,[wBaseCoordY]
- ld b,a
- ld a,136
+ ld a, [wBaseCoordY]
+ ld b, a
+ ld a, 136
sub b ; flip Y base coordinate
add [hl] ; Y offset
- ld [de],a ; store Y
+ ld [de], a ; store Y
inc hl
inc de
- ld a,[wBaseCoordX]
- ld b,a
- ld a,168
+ ld a, [wBaseCoordX]
+ ld b, a
+ ld a, 168
sub b ; flip X base coordinate
.finishCopying ; finish copying values to OAM (when [wSubAnimTransform] not 1 or 2)
add [hl] ; X offset
- ld [de],a ; store X
+ ld [de], a ; store X
cp 88
jr c, .asm_78056
ld a, [wdef5]
@@ -56,32 +56,32 @@ DrawFrameBlock: ; 78000 (1e:4000)
.asm_78056
inc hl
inc de
- ld a,[hli]
- add a,$31 ; base tile ID for battle animations
- ld [de],a ; store tile ID
+ ld a, [hli]
+ add a, $31 ; base tile ID for battle animations
+ ld [de], a ; store tile ID
inc de
- ld a,[hli]
+ ld a, [hli]
ld b, a
ld a, [wdef5]
or b
- ld [de],a ; store flags
+ ld [de], a ; store flags
inc de
jp .nextTile
.flipHorizontalAndVertical
- ld a,[wBaseCoordY]
+ ld a, [wBaseCoordY]
add [hl] ; Y offset
- ld b,a
- ld a,136
+ ld b, a
+ ld a, 136
sub b ; flip Y coordinate
- ld [de],a ; store Y
+ ld [de], a ; store Y
inc hl
inc de
- ld a,[wBaseCoordX]
+ ld a, [wBaseCoordX]
add [hl] ; X offset
- ld b,a
- ld a,168
+ ld b, a
+ ld a, 168
sub b ; flip X coordinate
- ld [de],a ; store X
+ ld [de], a ; store X
cp 88
jr c, .asm_78087
ld a, [wdef5]
@@ -90,41 +90,41 @@ DrawFrameBlock: ; 78000 (1e:4000)
.asm_78087
inc hl
inc de
- ld a,[hli]
- add a,$31 ; base tile ID for battle animations
- ld [de],a ; store tile ID
+ ld a, [hli]
+ add a, $31 ; base tile ID for battle animations
+ ld [de], a ; store tile ID
inc de
; toggle horizontal and vertical flip
- ld a,[hli] ; flags
+ ld a, [hli] ; flags
and a
- ld b,OAM_VFLIP | OAM_HFLIP
- jr z,.storeFlags1
- cp a,OAM_HFLIP
- ld b,OAM_VFLIP
- jr z,.storeFlags1
- cp a,OAM_VFLIP
- ld b,OAM_HFLIP
- jr z,.storeFlags1
- ld b,0
+ ld b, OAM_VFLIP | OAM_HFLIP
+ jr z, .storeFlags1
+ cp a, OAM_HFLIP
+ ld b, OAM_VFLIP
+ jr z, .storeFlags1
+ cp a, OAM_VFLIP
+ ld b, OAM_HFLIP
+ jr z, .storeFlags1
+ ld b, 0
.storeFlags1
ld a, [wdef5]
or b
- ld [de],a
+ ld [de], a
inc de
jp .nextTile
.flipHorizontalTranslateDown
- ld a,[wBaseCoordY]
+ ld a, [wBaseCoordY]
add [hl]
- add a,40 ; translate Y coordinate downwards
- ld [de],a ; store Y
+ add a, 40 ; translate Y coordinate downwards
+ ld [de], a ; store Y
inc hl
inc de
- ld a,[wBaseCoordX]
+ ld a, [wBaseCoordX]
add [hl]
- ld b,a
- ld a,168
+ ld b, a
+ ld a, 168
sub b ; flip X coordinate
- ld [de],a ; store X
+ ld [de], a ; store X
cp 88
jr c, .asm_780c8
ld a, [wdef5]
@@ -133,97 +133,97 @@ DrawFrameBlock: ; 78000 (1e:4000)
.asm_780c8
inc hl
inc de
- ld a,[hli]
- add a,$31 ; base tile ID for battle animations
- ld [de],a ; store tile ID
+ ld a, [hli]
+ add a, $31 ; base tile ID for battle animations
+ ld [de], a ; store tile ID
inc de
- ld a,[hli]
- bit 5,a ; is horizontal flip enabled?
- jr nz,.disableHorizontalFlip
+ ld a, [hli]
+ bit 5, a ; is horizontal flip enabled?
+ jr nz, .disableHorizontalFlip
.enableHorizontalFlip
- set 5,a
+ set 5, a
jr .storeFlags2
.disableHorizontalFlip
- res 5,a
+ res 5, a
.storeFlags2
ld b, a
ld a, [wdef5]
or b
- ld [de],a
+ ld [de], a
inc de
.nextTile
- ld a,[wFBTileCounter]
- ld c,a
- ld a,[wNumFBTiles]
+ ld a, [wFBTileCounter]
+ ld c, a
+ ld a, [wNumFBTiles]
cp c
- jp nz,.loop ; go back up if there are more tiles to draw
+ jp nz, .loop ; go back up if there are more tiles to draw
.afterDrawingTiles
- ld a,[wFBMode]
- cp a,2
- jr z,.advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer
- ld a,[wSubAnimFrameDelay]
- ld c,a
+ ld a, [wFBMode]
+ cp a, 2
+ jr z, .advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer
+ ld a, [wSubAnimFrameDelay]
+ ld c, a
call DelayFrames
- ld a,[wFBMode]
- cp a,3
- jr z,.advanceFrameBlockDestAddr ; skip cleaning OAM buffer
- cp a,4
- jr z,.done ; skip cleaning OAM buffer and don't advance the frame block destination address
- ld a,[wAnimationID]
- cp a,GROWL
- jr z,.resetFrameBlockDestAddr
+ ld a, [wFBMode]
+ cp a, 3
+ jr z, .advanceFrameBlockDestAddr ; skip cleaning OAM buffer
+ cp a, 4
+ jr z, .done ; skip cleaning OAM buffer and don't advance the frame block destination address
+ ld a, [wAnimationID]
+ cp a, GROWL
+ jr z, .resetFrameBlockDestAddr
call AnimationCleanOAM
.resetFrameBlockDestAddr
- ld hl,wOAMBuffer ; OAM buffer
- ld a,l
- ld [wFBDestAddr + 1],a
- ld a,h
- ld [wFBDestAddr],a ; set destination address to beginning of OAM buffer
+ ld hl, wOAMBuffer ; OAM buffer
+ ld a, l
+ ld [wFBDestAddr + 1], a
+ ld a, h
+ ld [wFBDestAddr], a ; set destination address to beginning of OAM buffer
ret
.advanceFrameBlockDestAddr
- ld a,e
- ld [wFBDestAddr + 1],a
- ld a,d
- ld [wFBDestAddr],a
+ ld a, e
+ ld [wFBDestAddr + 1], a
+ ld a, d
+ ld [wFBDestAddr], a
.done
ret
PlayAnimation: ; 78124 (1e:4124)
xor a
- ld [$FF8B],a ; it looks like nothing reads this
- ld [wSubAnimTransform],a
- ld a,[wAnimationID] ; get animation number
+ ld [$FF8B], a ; it looks like nothing reads this
+ ld [wSubAnimTransform], a
+ ld a, [wAnimationID] ; get animation number
dec a
- ld l,a
- ld h,0
- add hl,hl
- ld de,AttackAnimationPointers ; animation command stream pointers
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, AttackAnimationPointers ; animation command stream pointers
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
.animationLoop
- ld a,[hli]
- cp a,$FF
- jr z,.AnimationOver
- cp a,$C0 ; is this subanimation or a special effect?
- jr c,.playSubanimation
+ ld a, [hli]
+ cp a, $FF
+ jr z, .AnimationOver
+ cp a, $C0 ; is this subanimation or a special effect?
+ jr c, .playSubanimation
.doSpecialEffect
- ld c,a
- ld de,SpecialEffectPointers
+ ld c, a
+ ld de, SpecialEffectPointers
.searchSpecialEffectTableLoop
- ld a,[de]
+ ld a, [de]
cp c
- jr z,.foundMatch
+ jr z, .foundMatch
inc de
inc de
inc de
jr .searchSpecialEffectTableLoop
.foundMatch
- ld a,[hli]
- cp a,$FF ; is there a sound to play?
- jr z,.skipPlayingSound
- ld [wAnimSoundID],a ; store sound
+ ld a, [hli]
+ cp a, $FF ; is there a sound to play?
+ jr z, .skipPlayingSound
+ ld [wAnimSoundID], a ; store sound
push hl
push de
call GetMoveSound
@@ -233,51 +233,51 @@ PlayAnimation: ; 78124 (1e:4124)
.skipPlayingSound
push hl
inc de
- ld a,[de]
- ld l,a
+ ld a, [de]
+ ld l, a
inc de
- ld a,[de]
- ld h,a
- ld de,.nextAnimationCommand
+ ld a, [de]
+ ld h, a
+ ld de, .nextAnimationCommand
push de
jp [hl] ; jump to special effect function
.playSubanimation
- ld c,a
- and a,%00111111
- ld [wSubAnimFrameDelay],a
+ ld c, a
+ and a, %00111111
+ ld [wSubAnimFrameDelay], a
xor a
sla c
rla
sla c
rla
- ld [wWhichBattleAnimTileset],a
- ld a,[hli] ; sound
- ld [wAnimSoundID],a ; store sound
- ld a,[hli] ; subanimation ID
- ld c,l
- ld b,h
- ld l,a
- ld h,0
- add hl,hl
- ld de,SubanimationPointers
- add hl,de
- ld a,l
- ld [wSubAnimAddrPtr],a
- ld a,h
- ld [wSubAnimAddrPtr + 1],a
- ld l,c
- ld h,b
+ ld [wWhichBattleAnimTileset], a
+ ld a, [hli] ; sound
+ ld [wAnimSoundID], a ; store sound
+ ld a, [hli] ; subanimation ID
+ ld c, l
+ ld b, h
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, SubanimationPointers
+ add hl, de
+ ld a, l
+ ld [wSubAnimAddrPtr], a
+ ld a, h
+ ld [wSubAnimAddrPtr + 1], a
+ ld l, c
+ ld h, b
push hl
- ld a,[rOBP0]
+ ld a, [rOBP0]
push af
- ld a,[wAnimPalette]
- ld [rOBP0],a
+ ld a, [wAnimPalette]
+ ld [rOBP0], a
call UpdateGBCPal_OBP0
call LoadAnimationTileset
call LoadSubanimation
call PlaySubanimation
pop af
- ld [rOBP0],a
+ ld [rOBP0], a
call UpdateGBCPal_OBP0
.nextAnimationCommand
pop hl
@@ -286,22 +286,22 @@ PlayAnimation: ; 78124 (1e:4124)
ret
LoadSubanimation: ; 781b5 (1e:41b5)
- ld a,[wSubAnimAddrPtr + 1]
- ld h,a
- ld a,[wSubAnimAddrPtr]
- ld l,a
- ld a,[hli]
- ld e,a
- ld a,[hl]
- ld d,a ; de = address of subanimation
- ld a,[de]
- ld b,a
- and a,31
- ld [wSubAnimCounter],a ; number of frame blocks
- ld a,b
- and a,%11100000
- cp a,5 << 5 ; is subanimation type 5?
- jr nz,.isNotType5
+ ld a, [wSubAnimAddrPtr + 1]
+ ld h, a
+ ld a, [wSubAnimAddrPtr]
+ ld l, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a ; de = address of subanimation
+ ld a, [de]
+ ld b, a
+ and a, 31
+ ld [wSubAnimCounter], a ; number of frame blocks
+ ld a, b
+ and a, %11100000
+ cp a, 5 << 5 ; is subanimation type 5?
+ jr nz, .isNotType5
.isType5
call GetSubanimationTransform2
jr .saveTransformation
@@ -311,35 +311,35 @@ LoadSubanimation: ; 781b5 (1e:41b5)
; place the upper 3 bits of a into bits 0-2 of a before storing
srl a
swap a
- ld [wSubAnimTransform],a
- cp a,4 ; is the animation reversed?
- ld hl,0
- jr nz,.storeSubentryAddr
+ ld [wSubAnimTransform], a
+ cp a, 4 ; is the animation reversed?
+ ld hl, 0
+ jr nz, .storeSubentryAddr
; if the animation is reversed, then place the initial subentry address at the end of the list of subentries
- ld a,[wSubAnimCounter]
+ ld a, [wSubAnimCounter]
dec a
- ld bc,3
+ ld bc, 3
.loop
- add hl,bc
+ add hl, bc
dec a
- jr nz,.loop
+ jr nz, .loop
.storeSubentryAddr
inc de
- add hl,de
- ld a,l
- ld [wSubAnimSubEntryAddr],a
- ld a,h
- ld [wSubAnimSubEntryAddr + 1],a
+ add hl, de
+ ld a, l
+ ld [wSubAnimSubEntryAddr], a
+ ld a, h
+ ld [wSubAnimSubEntryAddr + 1], a
ret
; called if the subanimation type is not 5
; sets the transform to 0 (i.e. no transform) if it's the player's turn
; sets the transform to the subanimation type if it's the enemy's turn
GetSubanimationTransform1: ; 781fb (1e:41fb)
- ld b,a
- ld a,[H_WHOSETURN]
+ ld b, a
+ ld a, [H_WHOSETURN]
and a
- ld a,b
+ ld a, b
ret nz
xor a
ret
@@ -348,32 +348,32 @@ GetSubanimationTransform1: ; 781fb (1e:41fb)
; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn
; sets the transform to 0 (i.e. no transform) if it's the enemy's turn
GetSubanimationTransform2: ; 78203 (1e:4203)
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
and a
- ld a,2 << 5
+ ld a, 2 << 5
ret z
xor a
ret
; loads tile patterns for battle animations
LoadAnimationTileset: ; 7820b (1e:420b)
- ld a,[wWhichBattleAnimTileset]
+ ld a, [wWhichBattleAnimTileset]
add a
add a
- ld hl,AnimationTilesetPointers
- ld e,a
- ld d,0
- add hl,de
- ld a,[hli]
- ld [wTempTilesetNumTiles],a ; number of tiles
- ld a,[hli]
- ld e,a
- ld a,[hl]
- ld d,a ; de = address of tileset
- ld hl,vSprites + $310
+ ld hl, AnimationTilesetPointers
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hli]
+ ld [wTempTilesetNumTiles], a ; number of tiles
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a ; de = address of tileset
+ ld hl, vSprites + $310
ld b, BANK(AnimationTileset1) ; ROM bank
- ld a,[wTempTilesetNumTiles]
- ld c,a ; number of tiles
+ ld a, [wTempTilesetNumTiles]
+ ld c, a ; number of tiles
jp CopyVideoData ; load tileset
AnimationTilesetPointers: ; 7822b (1e:422b)
@@ -405,12 +405,12 @@ MoveAnimation: ; 78d97 (1e:4d97)
push af
call WaitForSoundToFinish
call SetAnimationPalette
- ld a,[wAnimationID]
+ ld a, [wAnimationID]
and a
jr z, .animationFinished
; if throwing a Poké Ball, skip the regular animation code
- cp a,TOSS_ANIM
+ cp a, TOSS_ANIM
jr nz, .moveAnimation
ld de, .animationFinished
push de
@@ -418,25 +418,25 @@ MoveAnimation: ; 78d97 (1e:4d97)
.moveAnimation
; check if battle animations are disabled in the options
- ld a,[wOptions]
- bit 7,a
+ ld a, [wOptions]
+ bit 7, a
jr nz, .animationsDisabled
call ShareMoveAnimations
call PlayAnimation
jr .next4
.animationsDisabled
- ld c,30
+ ld c, 30
call DelayFrames
.next4
call PlayApplyingAttackAnimation ; shake the screen or flash the pic in and out (to show damage)
.animationFinished
call WaitForSoundToFinish
xor a
- ld [wSubAnimSubEntryAddr],a
- ld [wUnusedD09B],a
- ld [wSubAnimTransform],a
+ ld [wSubAnimSubEntryAddr], a
+ ld [wUnusedD09B], a
+ ld [wSubAnimTransform], a
dec a
- ld [wAnimSoundID],a
+ ld [wAnimSoundID], a
pop af
pop bc
pop de
@@ -445,42 +445,42 @@ MoveAnimation: ; 78d97 (1e:4d97)
ShareMoveAnimations: ; 78ddf (1e:4ddf)
; some moves just reuse animations from status conditions
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
and a
ret z
; opponent’s turn
- ld a,[wAnimationID]
+ ld a, [wAnimationID]
- cp a,AMNESIA
- ld b,CONF_ANIM
+ cp a, AMNESIA
+ ld b, CONF_ANIM
jr z, .replaceAnim
- cp a,REST
- ld b,SLP_ANIM
+ cp a, REST
+ ld b, SLP_ANIM
ret nz
.replaceAnim
- ld a,b
- ld [wAnimationID],a
+ ld a, b
+ ld [wAnimationID], a
ret
PlayApplyingAttackAnimation: ; 78df6 (1e:4df6)
; Generic animation that shows after the move's individual animation
; Different animation depending on whether the move has an additional effect and on whose turn it is
- ld a,[wAnimationType]
+ ld a, [wAnimationType]
and a
ret z
dec a
add a
- ld c,a
- ld b,0
- ld hl,AnimationTypePointerTable
- add hl,bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld c, a
+ ld b, 0
+ ld hl, AnimationTypePointerTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
jp [hl]
AnimationTypePointerTable: ; 78e08 (1e:4e08)
@@ -595,69 +595,69 @@ WriteLowerByteOfBGMapAndEnableBGTransfer: ; 78eb1 (1e:4eb1)
ret
PlaySubanimation: ; 78ebb (1e:4ebb)
- ld a,[wAnimSoundID]
- cp a,$FF
- jr z,.skipPlayingSound
+ ld a, [wAnimSoundID]
+ cp a, $FF
+ jr z, .skipPlayingSound
call GetMoveSound
call PlaySound
.skipPlayingSound
- ld hl,wOAMBuffer ; base address of OAM buffer
- ld a,l
- ld [wFBDestAddr + 1],a
- ld a,h
- ld [wFBDestAddr],a
- ld a,[wSubAnimSubEntryAddr + 1]
- ld h,a
- ld a,[wSubAnimSubEntryAddr]
- ld l,a
+ ld hl, wOAMBuffer ; base address of OAM buffer
+ ld a, l
+ ld [wFBDestAddr + 1], a
+ ld a, h
+ ld [wFBDestAddr], a
+ ld a, [wSubAnimSubEntryAddr + 1]
+ ld h, a
+ ld a, [wSubAnimSubEntryAddr]
+ ld l, a
.loop
push hl
- ld c,[hl] ; frame block ID
- ld b,0
- ld hl,FrameBlockPointers
- add hl,bc
- add hl,bc
- ld a,[hli]
- ld c,a
- ld a,[hli]
- ld b,a
+ ld c, [hl] ; frame block ID
+ ld b, 0
+ ld hl, FrameBlockPointers
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
pop hl
inc hl
push hl
- ld e,[hl] ; base coordinate ID
- ld d,0
- ld hl,FrameBlockBaseCoords ; base coordinate table
- add hl,de
- add hl,de
- ld a,[hli]
- ld [wBaseCoordY],a
- ld a,[hl]
- ld [wBaseCoordX],a
+ ld e, [hl] ; base coordinate ID
+ ld d, 0
+ ld hl, FrameBlockBaseCoords ; base coordinate table
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [wBaseCoordY], a
+ ld a, [hl]
+ ld [wBaseCoordX], a
pop hl
inc hl
- ld a,[hl] ; frame block mode
- ld [wFBMode],a
+ ld a, [hl] ; frame block mode
+ ld [wFBMode], a
call DrawFrameBlock
call DoSpecialEffectByAnimationId ; run animation-specific function (if there is one)
- ld a,[wSubAnimCounter]
+ ld a, [wSubAnimCounter]
dec a
- ld [wSubAnimCounter],a
+ ld [wSubAnimCounter], a
ret z
- ld a,[wSubAnimSubEntryAddr + 1]
- ld h,a
- ld a,[wSubAnimSubEntryAddr]
- ld l,a
- ld a,[wSubAnimTransform]
- cp a,4 ; is the animation reversed?
- ld bc,3
- jr nz,.nextSubanimationSubentry
- ld bc,-3
+ ld a, [wSubAnimSubEntryAddr + 1]
+ ld h, a
+ ld a, [wSubAnimSubEntryAddr]
+ ld l, a
+ ld a, [wSubAnimTransform]
+ cp a, 4 ; is the animation reversed?
+ ld bc, 3
+ jr nz, .nextSubanimationSubentry
+ ld bc, -3
.nextSubanimationSubentry
- add hl,bc
- ld a,h
- ld [wSubAnimSubEntryAddr + 1],a
- ld a,l
- ld [wSubAnimSubEntryAddr],a
+ add hl, bc
+ ld a, h
+ ld [wSubAnimSubEntryAddr + 1], a
+ ld a, l
+ ld [wSubAnimSubEntryAddr], a
jp .loop
AnimationCleanOAM: ; 78f30 (1e:4f30)
@@ -679,16 +679,16 @@ DoSpecialEffectByAnimationId: ; 78f3f (1e:4f3f)
push hl
push de
push bc
- ld a,[wAnimationID]
- ld hl,AnimationIdSpecialEffects
- ld de,3
+ ld a, [wAnimationID]
+ ld hl, AnimationIdSpecialEffects
+ ld de, 3
call IsInArray
- jr nc,.done
+ jr nc, .done
inc hl
- ld a,[hli]
- ld h,[hl]
- ld l,a
- ld de,.done
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, .done
push de
jp [hl]
.done
@@ -774,39 +774,39 @@ AnimationIdSpecialEffects: ; 78f5d (1e:4f5d)
db $FF ; terminator
DoBallTossSpecialEffects: ; 78fa6 (1e:4fa6)
- ld a,[wcf91]
- cp a,3 ; is it a Master Ball or Ultra Ball?
- jr nc,.skipFlashingEffect
+ ld a, [wcf91]
+ cp a, 3 ; is it a Master Ball or Ultra Ball?
+ jr nc, .skipFlashingEffect
.flashingEffect ; do a flashing effect if it's Master Ball or Ultra Ball
- ld a,[rOBP0]
- xor a,%00111100 ; complement colors 1 and 2
- ld [rOBP0],a
+ ld a, [rOBP0]
+ xor a, %00111100 ; complement colors 1 and 2
+ ld [rOBP0], a
call UpdateGBCPal_OBP0
.skipFlashingEffect
- ld a,[wSubAnimCounter]
- cp a,11 ; is it the beginning of the subanimation?
- jr nz,.skipPlayingSound
+ ld a, [wSubAnimCounter]
+ cp a, 11 ; is it the beginning of the subanimation?
+ jr nz, .skipPlayingSound
; if it is the beginning of the subanimation, play a sound
- ld a,SFX_BALL_TOSS
+ ld a, SFX_BALL_TOSS
call PlaySound
.skipPlayingSound
- ld a,[wIsInBattle]
- cp a,02 ; is it a trainer battle?
- jr z,.isTrainerBattle
- ld a,[wd11e]
- cp a,$10 ; is the enemy pokemon the Ghost Marowak?
+ ld a, [wIsInBattle]
+ cp a, 02 ; is it a trainer battle?
+ jr z, .isTrainerBattle
+ ld a, [wd11e]
+ cp a, $10 ; is the enemy pokemon the Ghost Marowak?
ret nz
; if the enemy pokemon is the Ghost Marowak, make it dodge during the last 3 frames
- ld a,[wSubAnimCounter]
- cp a,3
- jr z,.moveGhostMarowakLeft
- cp a,2
- jr z,.moveGhostMarowakLeft
- cp a,1
+ ld a, [wSubAnimCounter]
+ cp a, 3
+ jr z, .moveGhostMarowakLeft
+ cp a, 2
+ jr z, .moveGhostMarowakLeft
+ cp a, 1
ret nz
.moveGhostMarowakLeft
coord hl, 17, 0
- ld de,20
+ ld de, 20
lb bc, 7, 7
.loop
push hl
@@ -814,152 +814,152 @@ DoBallTossSpecialEffects: ; 78fa6 (1e:4fa6)
call AnimCopyRowRight ; move row of tiles left
pop bc
pop hl
- add hl,de
+ add hl, de
dec b
- jr nz,.loop
- ld a,%00001000
- ld [rNR10],a ; Channel 1 sweep register
+ jr nz, .loop
+ ld a, %00001000
+ ld [rNR10], a ; Channel 1 sweep register
ret
.isTrainerBattle ; if it's a trainer battle, shorten the animation by one frame
- ld a,[wSubAnimCounter]
- cp a,3
+ ld a, [wSubAnimCounter]
+ cp a, 3
ret nz
dec a
- ld [wSubAnimCounter],a
+ ld [wSubAnimCounter], a
ret
DoBallShakeSpecialEffects: ; 79001 (1e:5001)
- ld a,[wSubAnimCounter]
- cp a,4 ; is it the beginning of a shake?
- jr nz,.skipPlayingSound
+ ld a, [wSubAnimCounter]
+ cp a, 4 ; is it the beginning of a shake?
+ jr nz, .skipPlayingSound
; if it is the beginning of a shake, play a sound and wait 2/3 of a second
- ld a,SFX_TINK
+ ld a, SFX_TINK
call PlaySound
- ld c,40
+ ld c, 40
call DelayFrames
.skipPlayingSound
- ld a,[wSubAnimCounter]
+ ld a, [wSubAnimCounter]
dec a
ret nz
; if it's the end of the ball shaking subanimation, check if more shakes are left and restart the subanimation
- ld a,[wNumShakes] ; number of shakes
+ ld a, [wNumShakes] ; number of shakes
dec a ; decrement number of shakes
- ld [wNumShakes],a
+ ld [wNumShakes], a
ret z
; if there are shakes left, restart the subanimation
- ld a,[wSubAnimSubEntryAddr]
- ld l,a
- ld a,[wSubAnimSubEntryAddr + 1]
- ld h,a
- ld de,-(4 * 3) ; 4 subentries and 3 bytes per subentry
- add hl,de
- ld a,l
- ld [wSubAnimSubEntryAddr],a
- ld a,h
- ld [wSubAnimSubEntryAddr + 1],a
- ld a,5 ; number of subentries in the ball shaking subanimation plus one
- ld [wSubAnimCounter],a
+ ld a, [wSubAnimSubEntryAddr]
+ ld l, a
+ ld a, [wSubAnimSubEntryAddr + 1]
+ ld h, a
+ ld de, -(4 * 3) ; 4 subentries and 3 bytes per subentry
+ add hl, de
+ ld a, l
+ ld [wSubAnimSubEntryAddr], a
+ ld a, h
+ ld [wSubAnimSubEntryAddr + 1], a
+ ld a, 5 ; number of subentries in the ball shaking subanimation plus one
+ ld [wSubAnimCounter], a
ret
; plays a sound after the second frame of the poof animation
DoPoofSpecialEffects: ; 79039 (1e:5039)
- ld a,[wSubAnimCounter]
- cp a,5
+ ld a, [wSubAnimCounter]
+ cp a, 5
ret nz
- ld a,SFX_BALL_POOF
+ ld a, SFX_BALL_POOF
jp PlaySound
DoRockSlideSpecialEffects: ; 79044 (1e:5044)
- ld a,[wSubAnimCounter]
- cp a,12
+ ld a, [wSubAnimCounter]
+ cp a, 12
ret nc
- cp a,8
- jr nc,.shakeScreen
- cp a,1
- jp z,AnimationFlashScreen ; if it's the end of the subanimation, flash the screen
+ cp a, 8
+ jr nc, .shakeScreen
+ cp a, 1
+ jp z, AnimationFlashScreen ; if it's the end of the subanimation, flash the screen
ret
; if the subaninmation counter is between 8 and 11, shake the screen horizontally and vertically
.shakeScreen
- ld b,1
+ ld b, 1
predef PredefShakeScreenHorizontally ; shake horizontally
- ld b,1
+ ld b, 1
predef_jump PredefShakeScreenVertically ; shake vertically
FlashScreenEveryEightFrameBlocks: ; 79062 (1e:5062)
- ld a,[wSubAnimCounter]
- and a,7 ; is the subanimation counter exactly 8?
- call z,AnimationFlashScreen ; if so, flash the screen
+ ld a, [wSubAnimCounter]
+ and a, 7 ; is the subanimation counter exactly 8?
+ call z, AnimationFlashScreen ; if so, flash the screen
ret
; flashes the screen if the subanimation counter is divisible by 4
FlashScreenEveryFourFrameBlocks: ; 7906b (1e:506b)
- ld a,[wSubAnimCounter]
- and a,3
- call z,AnimationFlashScreen
+ ld a, [wSubAnimCounter]
+ and a, 3
+ call z, AnimationFlashScreen
ret
; used for Explosion and Selfdestruct
DoExplodeSpecialEffects: ; 79074 (1e:5074)
- ld a,[wSubAnimCounter]
- cp a,1 ; is it the end of the subanimation?
- jr nz,FlashScreenEveryFourFrameBlocks
+ ld a, [wSubAnimCounter]
+ cp a, 1 ; is it the end of the subanimation?
+ jr nz, FlashScreenEveryFourFrameBlocks
; if it's the end of the subanimation, make the attacking pokemon disappear
coord hl, 1, 5
jp AnimationHideMonPic ; make pokemon disappear
; flashes the screen when subanimation counter is 1 modulo 4
DoBlizzardSpecialEffects: ; 79081 (1e:5081)
- ld a,[wSubAnimCounter]
- cp a,13
- jp z,AnimationFlashScreen
- cp a,9
- jp z,AnimationFlashScreen
- cp a,5
- jp z,AnimationFlashScreen
- cp a,1
- jp z,AnimationFlashScreen
+ ld a, [wSubAnimCounter]
+ cp a, 13
+ jp z, AnimationFlashScreen
+ cp a, 9
+ jp z, AnimationFlashScreen
+ cp a, 5
+ jp z, AnimationFlashScreen
+ cp a, 1
+ jp z, AnimationFlashScreen
ret
; flashes the screen at 3 points in the subanimation
; unused
FlashScreenUnused: ; 79099 (1e:5099)
- ld a,[wSubAnimCounter]
- cp a,14
- jp z,AnimationFlashScreen
- cp a,9
- jp z,AnimationFlashScreen
- cp a,2
- jp z,AnimationFlashScreen
+ ld a, [wSubAnimCounter]
+ cp a, 14
+ jp z, AnimationFlashScreen
+ cp a, 9
+ jp z, AnimationFlashScreen
+ cp a, 2
+ jp z, AnimationFlashScreen
ret
; function to make the pokemon disappear at the beginning of the animation
TradeHidePokemon: ; 790ac (1e:50ac)
- ld a,[wSubAnimCounter]
- cp a,6
+ ld a, [wSubAnimCounter]
+ cp a, 6
ret nz
- ld a,2 * SCREEN_WIDTH + 7
+ ld a, 2 * SCREEN_WIDTH + 7
jp ClearMonPicFromTileMap ; make pokemon disappear
; function to make a shaking pokeball jump up at the end of the animation
TradeShakePokeball: ; 790b7 (1e:50b7)
- ld a,[wSubAnimCounter]
- cp a,1
+ ld a, [wSubAnimCounter]
+ cp a, 1
ret nz
; if it's the end of the animation, make the ball jump up
- ld de,BallMoveDistances1
+ ld de, BallMoveDistances1
.loop
- ld hl,wOAMBuffer ; OAM buffer
- ld bc,4
+ ld hl, wOAMBuffer ; OAM buffer
+ ld bc, 4
.innerLoop
- ld a,[de]
- cp a,$ff
- jr z,.done
+ ld a, [de]
+ cp a, $ff
+ jr z, .done
add [hl] ; add to Y value of OAM entry
- ld [hl],a
- add hl,bc
- ld a,l
- cp a,4 * 4 ; there are 4 entries, each 4 bytes
- jr nz,.innerLoop
+ ld [hl], a
+ add hl, bc
+ ld a, l
+ cp a, 4 * 4 ; there are 4 entries, each 4 bytes
+ jr nz, .innerLoop
inc de
push bc
call Delay3
@@ -967,71 +967,71 @@ TradeShakePokeball: ; 790b7 (1e:50b7)
jr .loop
.done
call AnimationCleanOAM
- ld a,SFX_TRADE_MACHINE
+ ld a, SFX_TRADE_MACHINE
jp PlaySound
BallMoveDistances1: ; 790e3 (1e:50e3)
- db -12,-12,-8
+ db -12, -12, -8
db $ff ; terminator
; function to make the pokeball jump up
TradeJumpPokeball: ; 790e7 (1e:50e7)
- ld de,BallMoveDistances2
+ ld de, BallMoveDistances2
.loop
- ld hl,wOAMBuffer ; OAM buffer
- ld bc,4
+ ld hl, wOAMBuffer ; OAM buffer
+ ld bc, 4
.innerLoop
- ld a,[de]
- cp a,$ff
- jp z,ClearScreen
+ ld a, [de]
+ cp a, $ff
+ jp z, ClearScreen
add [hl]
- ld [hl],a
- add hl,bc
- ld a,l
- cp a,4 * 4 ; there are 4 entries, each 4 bytes
- jr nz,.innerLoop
+ ld [hl], a
+ add hl, bc
+ ld a, l
+ cp a, 4 * 4 ; there are 4 entries, each 4 bytes
+ jr nz, .innerLoop
inc de
push de
- ld a,[de]
- cp a,12
- jr z,.playSound
- cp a,$ff
- jr nz,.skipPlayingSound
+ ld a, [de]
+ cp a, 12
+ jr z, .playSound
+ cp a, $ff
+ jr nz, .skipPlayingSound
.playSound ; play sound if next move distance is 12 or this is the last one
- ld a,SFX_BATTLE_18
+ ld a, SFX_BATTLE_18
call PlaySound
.skipPlayingSound
push bc
- ld c,5
+ ld c, 5
call DelayFrames
pop bc
- ld a,[hSCX] ; background scroll X
- sub a,8 ; scroll to the left
- ld [hSCX],a
+ ld a, [hSCX] ; background scroll X
+ sub a, 8 ; scroll to the left
+ ld [hSCX], a
pop de
jr .loop
BallMoveDistances2: ; 7911f (1e:511f)
- db 11,12,-12,-7,7,12,-8,8
+ db 11, 12, -12, -7, 7, 12, -8, 8
db $ff ; terminator
; this function copies the current musical note graphic
; so that there are two musical notes flying towards the defending pokemon
DoGrowlSpecialEffects: ; 79127 (1e:5127)
- ld hl,wOAMBuffer ; OAM buffer
- ld de,wOAMBuffer + $10
- ld bc,$10
+ ld hl, wOAMBuffer ; OAM buffer
+ ld de, wOAMBuffer + $10
+ ld bc, $10
call CopyData ; copy the musical note graphic
- ld a,[wSubAnimCounter]
+ ld a, [wSubAnimCounter]
dec a
- call z,AnimationCleanOAM ; clean up at the end of the subanimation
+ call z, AnimationCleanOAM ; clean up at the end of the subanimation
ret
; this is associated with Tail Whip, but Tail Whip doesn't use any subanimations
TailWhipAnimationUnused: ; 7913b (1e:513b)
- ld a,1
- ld [wSubAnimCounter],a
- ld c,20
+ ld a, 1
+ ld [wSubAnimCounter], a
+ ld c, 20
jp DelayFrames
SpecialEffectPointers: ; 79145 (1e:5145)
@@ -1116,49 +1116,49 @@ SpecialEffectPointers: ; 79145 (1e:5145)
db $FF
AnimationDelay10: ; 791bb (1e:51bb)
- ld c,10
+ ld c, 10
jp DelayFrames
; calls a function with the turn flipped from player to enemy or vice versa
; input - hl - address of function to call
CallWithTurnFlipped: ; 791c0 (1e:51c0)
- ld a,[H_WHOSETURN]
+ ld a, [H_WHOSETURN]
push af
- xor a,1
- ld [H_WHOSETURN],a
- ld de,.returnAddress
+ xor a, 1
+ ld [H_WHOSETURN], a
+ ld de, .returnAddress
push de
jp [hl]
.returnAddress
pop af
- ld [H_WHOSETURN],a
+ ld [H_WHOSETURN], a
ret
; flashes the screen for an extended period (48 frames)
AnimationFlashScreenLong: ; 791d0 (1e:51d0)
- ld a,3 ; cycle through the palettes 3 times
- ld [wFlashScreenLongCounter],a
- ld a,[wOnSGB] ; running on SGB?
+ ld a, 3 ; cycle through the palettes 3 times
+ ld [wFlashScreenLongCounter], a
+ ld a, [wOnSGB] ; running on SGB?
and a
- ld hl,FlashScreenLongMonochrome
- jr z,.loop
- ld hl,FlashScreenLongSGB
+ ld hl, FlashScreenLongMonochrome
+ jr z, .loop
+ ld hl, FlashScreenLongSGB
.loop
push hl
.innerLoop
- ld a,[hli]
- cp a,$01 ; is it the end of the palettes?
- jr z,.endOfPalettes
- ld [rBGP],a
+ ld a, [hli]
+ cp a, $01 ; is it the end of the palettes?
+ jr z, .endOfPalettes
+ ld [rBGP], a
call UpdateGBCPal_BGP
call FlashScreenLongDelay
jr .innerLoop
.endOfPalettes
- ld a,[wFlashScreenLongCounter]
+ ld a, [wFlashScreenLongCounter]
dec a
- ld [wFlashScreenLongCounter],a
+ ld [wFlashScreenLongCounter], a
pop hl
- jr nz,.loop
+ jr nz, .loop
ret
; BG palettes
@@ -1196,33 +1196,33 @@ FlashScreenLongSGB: ; 79209 (1e:5209)
; causes a delay of 2 frames for the first cycle
; causes a delay of 1 frame for the second and third cycles
FlashScreenLongDelay: ; 79216 (1e:5216)
- ld a,[wFlashScreenLongCounter]
- cp a,4 ; never true since [wFlashScreenLongCounter] starts at 3
- ld c,4
- jr z,.delayFrames
- cp a,3
- ld c,2
- jr z,.delayFrames
- cp a,2 ; nothing is done with this
- ld c,1
+ ld a, [wFlashScreenLongCounter]
+ cp a, 4 ; never true since [wFlashScreenLongCounter] starts at 3
+ ld c, 4
+ jr z, .delayFrames
+ cp a, 3
+ ld c, 2
+ jr z, .delayFrames
+ cp a, 2 ; nothing is done with this
+ ld c, 1
.delayFrames
jp DelayFrames
AnimationFlashScreen: ; 7922c (1e:522c)
- ld a,[rBGP]
+ ld a, [rBGP]
push af ; save initial palette
- ld a,%00011011 ; 0, 1, 2, 3 (inverted colors)
- ld [rBGP],a
+ ld a, %00011011 ; 0, 1, 2, 3 (inverted colors)
+ ld [rBGP], a
call UpdateGBCPal_BGP
- ld c,2
+ ld c, 2
call DelayFrames
xor a ; white out background
- ld [rBGP],a
+ ld [rBGP], a
call UpdateGBCPal_BGP
- ld c,2
+ ld c, 2
call DelayFrames
pop af
- ld [rBGP],a ; restore initial palette
+ ld [rBGP], a ; restore initial palette
call UpdateGBCPal_BGP
ret
@@ -2033,7 +2033,7 @@ _AnimationSlideMonOff: ; 796c7 (1e:56c7)
jr nz, .slideLoop
ret
-; Since mon pic tile numbers go from top to bottom, left to right in order,
+; Since mon pic tile numbers go from top to bottom, left to right in order,
; adding the height of the mon pic in tiles to a tile number gives the tile
; number of the tile one column to the right (and thus subtracting the height
; gives the reverse). If the next tile would be past the edge of the pic, the 2
@@ -2399,7 +2399,7 @@ ClearMonPicFromTileMap: ; 79968 (1e:5968)
ret
; puts the tile map destination address of a mon sprite in hl, given the row count in b
-; The usual row count is 7, but it may be smaller when sliding a mon sprite in/out,
+; The usual row count is 7, but it may be smaller when sliding a mon sprite in/out,
; in order to show only a portion of the mon sprite.
GetMonSpriteTileMapPointerFromRowCount: ; 7997c (1e:597c)
push de
@@ -2481,52 +2481,52 @@ GetMoveSoundB: ; 799c5 (1e:59c5)
ret
GetMoveSound: ; 799cb (1e:59cb)
- ld hl,MoveSoundTable
- ld e,a
- ld d,0
- add hl,de
- add hl,de
- add hl,de
- ld a,[hli]
- ld b,a
+ ld hl, MoveSoundTable
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld b, a
call IsCryMove
- jr nc,.NotCryMove
- ld a,[H_WHOSETURN]
+ jr nc, .NotCryMove
+ ld a, [H_WHOSETURN]
and a
- jr nz,.next
- ld a,[wBattleMonSpecies] ; get number of current monster
+ jr nz, .next
+ ld a, [wBattleMonSpecies] ; get number of current monster
jr .Continue
.next
- ld a,[wEnemyMonSpecies]
+ ld a, [wEnemyMonSpecies]
.Continue
push hl
call GetCryData
- ld b,a
+ ld b, a
pop hl
- ld a,[wFrequencyModifier]
+ ld a, [wFrequencyModifier]
add [hl]
- ld [wFrequencyModifier],a
+ ld [wFrequencyModifier], a
inc hl
- ld a,[wTempoModifier]
+ ld a, [wTempoModifier]
add [hl]
- ld [wTempoModifier],a
+ ld [wTempoModifier], a
jr .done
.NotCryMove
- ld a,[hli]
- ld [wFrequencyModifier],a
- ld a,[hli]
- ld [wTempoModifier],a
+ ld a, [hli]
+ ld [wFrequencyModifier], a
+ ld a, [hli]
+ ld [wTempoModifier], a
.done
- ld a,b
+ ld a, b
ret
IsCryMove: ; 79a09 (1e:5a09)
; set carry if the move animation involves playing a monster cry
- ld a,[wAnimationID]
- cp a,GROWL
- jr z,.CryMove
- cp a,ROAR
- jr z,.CryMove
+ ld a, [wAnimationID]
+ cp a, GROWL
+ jr z, .CryMove
+ cp a, ROAR
+ jr z, .CryMove
and a ; clear carry
ret
.CryMove
@@ -2534,172 +2534,173 @@ IsCryMove: ; 79a09 (1e:5a09)
ret
MoveSoundTable: ; 79a18 (1e:5a18)
- db SFX_POUND, $00,$80 ; POUND
- db SFX_BATTLE_0C, $10,$80 ; KARATE_CHOP
- db SFX_DOUBLESLAP, $00,$80 ; DOUBLESLAP
- db SFX_BATTLE_0B, $01,$80 ; COMET_PUNCH
- db SFX_BATTLE_0D, $00,$40 ; MEGA_PUNCH
- db SFX_SILPH_SCOPE, $00,$ff ; PAY_DAY
- db SFX_BATTLE_0D, $10,$60 ; FIRE_PUNCH
- db SFX_BATTLE_0D, $20,$80 ; ICE_PUNCH
- db SFX_BATTLE_0D, $00,$a0 ; THUNDERPUNCH
- db SFX_DAMAGE, $00,$80 ; SCRATCH
- db SFX_BATTLE_0F, $20,$40 ; VICEGRIP
- db SFX_BATTLE_0F, $00,$80 ; GUILLOTINE
- db SFX_BATTLE_0E, $00,$a0 ; RAZOR_WIND
- db SFX_NOT_VERY_EFFECTIVE,$10,$c0 ; SWORDS_DANCE
- db SFX_NOT_VERY_EFFECTIVE,$00,$a0 ; CUT
- db SFX_BATTLE_12, $00,$c0 ; GUST
- db SFX_BATTLE_12, $10,$a0 ; WING_ATTACK
- db SFX_BATTLE_13, $00,$e0 ; WHIRLWIND
- db SFX_NOT_VERY_EFFECTIVE,$20,$c0 ; FLY
- db SFX_BATTLE_14, $00,$80 ; BIND
- db SFX_BATTLE_22, $00,$80 ; SLAM
- db SFX_VINE_WHIP, $01,$80 ; VINE_WHIP
- db SFX_BATTLE_20, $00,$80 ; STOMP
- db SFX_BATTLE_17, $f0,$40 ; DOUBLE_KICK
- db SFX_SUPER_EFFECTIVE, $00,$80 ; MEGA_KICK
- db SFX_BATTLE_17, $00,$80 ; JUMP_KICK
- db SFX_BATTLE_21, $10,$80 ; ROLLING_KICK
- db SFX_BATTLE_1B, $01,$a0 ; SAND_ATTACK
- db SFX_BATTLE_18, $00,$80 ; HEADBUTT
- db SFX_BATTLE_1E, $00,$60 ; HORN_ATTACK
- db SFX_BATTLE_1E, $01,$40 ; FURY_ATTACK
- db SFX_HORN_DRILL, $00,$a0 ; HORN_DRILL
- db SFX_SUPER_EFFECTIVE, $10,$a0 ; TACKLE
- db SFX_BATTLE_20, $00,$c0 ; BODY_SLAM
- db SFX_BATTLE_14, $10,$60 ; WRAP
- db SFX_SUPER_EFFECTIVE, $00,$a0 ; TAKE_DOWN
- db SFX_BATTLE_22, $11,$c0 ; THRASH
- db SFX_SUPER_EFFECTIVE, $20,$c0 ; DOUBLE_EDGE
- db SFX_BATTLE_21, $00,$80 ; TAIL_WHIP
- db SFX_BATTLE_1B, $00,$80 ; POISON_STING
- db SFX_BATTLE_1B, $20,$c0 ; TWINEEDLE
- db SFX_BATTLE_19, $00,$80 ; PIN_MISSILE
- db SFX_BATTLE_31, $ff,$40 ; LEER
- db SFX_BATTLE_1E, $00,$80 ; BITE
- db SFX_BATTLE_0B, $00,$c0 ; GROWL
- db SFX_BATTLE_0B, $00,$40 ; ROAR
- db SFX_BATTLE_35, $00,$80 ; SING
- db SFX_BATTLE_27, $40,$60 ; SUPERSONIC
- db SFX_BATTLE_27, $00,$80 ; SONICBOOM
- db SFX_BATTLE_27, $ff,$40 ; DISABLE
- db SFX_BATTLE_2A, $80,$c0 ; ACID
- db SFX_BATTLE_19, $10,$a0 ; EMBER
- db SFX_BATTLE_19, $21,$e0 ; FLAMETHROWER
- db SFX_BATTLE_29, $00,$80 ; MIST
- db SFX_BATTLE_24, $20,$60 ; WATER_GUN
- db SFX_BATTLE_2A, $00,$80 ; HYDRO_PUMP
- db SFX_BATTLE_2C, $00,$80 ; SURF
- db SFX_BATTLE_28, $40,$80 ; ICE_BEAM
- db SFX_BATTLE_29, $f0,$e0 ; BLIZZARD
- db SFX_PSYBEAM, $00,$80 ; PSYBEAM
- db SFX_BATTLE_2A, $f0,$60 ; BUBBLEBEAM
- db SFX_BATTLE_28, $00,$80 ; AURORA_BEAM
- db SFX_BATTLE_36, $00,$80 ; HYPER_BEAM
- db SFX_PECK,$01, $a0 ; PECK
- db SFX_BATTLE_13, $f0,$20 ; DRILL_PECK
- db SFX_BATTLE_23, $01,$c0 ; SUBMISSION
- db SFX_BATTLE_23, $00,$80 ; LOW_KICK
- db SFX_SUPER_EFFECTIVE, $00,$e0 ; COUNTER
- db SFX_BATTLE_26, $01,$60 ; SEISMIC_TOSS
- db SFX_BATTLE_26, $20,$40 ; STRENGTH
- db SFX_BATTLE_24, $00,$80 ; ABSORB
- db SFX_BATTLE_24, $40,$c0 ; MEGA_DRAIN
- db SFX_BATTLE_1B, $03,$60 ; LEECH_SEED
- db SFX_BATTLE_25, $11,$e0 ; GROWTH
- db SFX_BATTLE_12, $20,$e0 ; RAZOR_LEAF
- db SFX_BATTLE_2E, $00,$80 ; SOLARBEAM
- db SFX_BATTLE_1C, $00,$80 ; POISONPOWDER
- db SFX_BATTLE_1C, $11,$a0 ; STUN_SPORE
- db SFX_BATTLE_1C, $01,$c0 ; SLEEP_POWDER
- db SFX_BATTLE_13, $14,$c0 ; PETAL_DANCE
- db SFX_BATTLE_1B, $02,$a0 ; STRING_SHOT
- db SFX_BATTLE_29, $f0,$80 ; DRAGON_RAGE
- db SFX_BATTLE_29, $20,$c0 ; FIRE_SPIN
- db SFX_BATTLE_2F, $00,$20 ; THUNDERSHOCK
- db SFX_BATTLE_2F, $20,$80 ; THUNDERBOLT
- db SFX_BATTLE_2E, $12,$60 ; THUNDER_WAVE
- db SFX_BATTLE_26, $00,$80 ; THUNDER
- db SFX_BATTLE_14, $01,$e0 ; ROCK_THROW
- db SFX_BATTLE_29, $0f,$e0 ; EARTHQUAKE
- db SFX_BATTLE_29, $11,$20 ; FISSURE
- db SFX_DAMAGE, $10,$40 ; DIG
- db SFX_BATTLE_0F, $10,$c0 ; TOXIC
- db SFX_BATTLE_14, $00,$20 ; CONFUSION
- db SFX_PSYCHIC_M, $00,$80 ; PSYCHIC_M
- db SFX_BATTLE_35, $11,$18 ; HYPNOSIS
- db SFX_BATTLE_09, $20,$c0 ; MEDITATE
- db SFX_FAINT_FALL, $20,$c0 ; AGILITY
- db SFX_BATTLE_25, $00,$10 ; QUICK_ATTACK
- db SFX_BATTLE_26, $f0,$20 ; RAGE
- db SFX_BATTLE_33, $f0,$c0 ; TELEPORT
- db SFX_NOT_VERY_EFFECTIVE,$f0,$e0 ; NIGHT_SHADE
- db SFX_BATTLE_09, $f0,$40 ; MIMIC
- db SFX_BATTLE_31, $00,$80 ; SCREECH
- db SFX_BATTLE_33, $80,$40 ; DOUBLE_TEAM
- db SFX_BATTLE_33, $00,$80 ; RECOVER
- db SFX_BATTLE_14, $11,$20 ; HARDEN
- db SFX_BATTLE_14, $22,$10 ; MINIMIZE
- db SFX_BATTLE_1B, $f1,$ff ; SMOKESCREEN
- db SFX_BATTLE_13, $f1,$ff ; CONFUSE_RAY
- db SFX_BATTLE_14, $33,$30 ; WITHDRAW
- db SFX_BATTLE_32, $40,$c0 ; DEFENSE_CURL
- db SFX_BATTLE_0E, $20,$20 ; BARRIER
- db SFX_BATTLE_0E, $f0,$10 ; LIGHT_SCREEN
- db SFX_BATTLE_0F, $f8,$10 ; HAZE
- db SFX_NOT_VERY_EFFECTIVE,$f0,$10 ; REFLECT
- db SFX_BATTLE_25, $00,$80 ; FOCUS_ENERGY
- db SFX_BATTLE_18, $00,$c0 ; BIDE
- db SFX_BATTLE_32, $c0,$ff ; METRONOME
- db SFX_BATTLE_09, $f2,$20 ; MIRROR_MOVE
- db SFX_BATTLE_34, $00,$80 ; SELFDESTRUCT
- db SFX_BATTLE_34, $00,$40 ; EGG_BOMB
- db SFX_BATTLE_09, $00,$40 ; LICK
- db SFX_NOT_VERY_EFFECTIVE,$10,$ff ; SMOG
- db SFX_BATTLE_2A, $20,$20 ; SLUDGE
- db SFX_BATTLE_32, $00,$80 ; BONE_CLUB
- db SFX_BATTLE_29, $1f,$20 ; FIRE_BLAST
- db SFX_BATTLE_25, $2f,$80 ; WATERFALL
- db SFX_BATTLE_0F, $1f,$ff ; CLAMP
- db SFX_BATTLE_2B, $1f,$60 ; SWIFT
- db SFX_BATTLE_26, $1e,$20 ; SKULL_BASH
- db SFX_BATTLE_26, $1f,$18 ; SPIKE_CANNON
- db SFX_BATTLE_14, $0f,$80 ; CONSTRICT
- db SFX_BATTLE_09, $f8,$10 ; AMNESIA
- db SFX_FAINT_FALL, $18,$20 ; KINESIS
- db SFX_BATTLE_32, $08,$40 ; SOFTBOILED
- db SFX_BATTLE_17, $01,$e0 ; HI_JUMP_KICK
- db SFX_NOT_VERY_EFFECTIVE,$09,$ff ; GLARE
- db SFX_BATTLE_35, $42,$01 ; DREAM_EATER
- db SFX_BATTLE_1C, $00,$ff ; POISON_GAS
- db SFX_BATTLE_32, $08,$e0 ; BARRAGE
- db SFX_BATTLE_24, $00,$80 ; LEECH_LIFE
- db SFX_BATTLE_09, $88,$10 ; LOVELY_KISS
- db SFX_BATTLE_25, $48,$ff ; SKY_ATTACK
- db SFX_FAINT_FALL, $ff,$ff ; TRANSFORM
- db SFX_BATTLE_24, $ff,$10 ; BUBBLE
- db SFX_FAINT_FALL, $ff,$04 ; DIZZY_PUNCH
- db SFX_BATTLE_1C, $01,$ff ; SPORE
- db SFX_BATTLE_13, $f8,$ff ; FLASH
- db SFX_BATTLE_0C, $f0,$f0 ; PSYWAVE
- db SFX_BATTLE_0F, $08,$10 ; SPLASH
- db SFX_BATTLE_0D, $f0,$ff ; ACID_ARMOR
- db SFX_SUPER_EFFECTIVE, $f0,$ff ; CRABHAMMER
- db SFX_BATTLE_34, $10,$ff ; EXPLOSION
- db SFX_BATTLE_0E, $f0,$20 ; FURY_SWIPES
- db SFX_BATTLE_2B, $f0,$60 ; BONEMERANG
- db SFX_BATTLE_21, $12,$10 ; REST
- db SFX_BATTLE_36, $f0,$20 ; ROCK_SLIDE
- db SFX_BATTLE_1E, $12,$ff ; HYPER_FANG
- db SFX_BATTLE_31, $80,$04 ; SHARPEN
- db SFX_BATTLE_33, $f0,$10 ; CONVERSION
- db SFX_BATTLE_29, $f8,$ff ; TRI_ATTACK
- db SFX_BATTLE_26, $f0,$ff ; SUPER_FANG
- db SFX_NOT_VERY_EFFECTIVE,$01,$ff ; SLASH
- db SFX_BATTLE_2C, $d8,$04 ; SUBSTITUTE
- db SFX_BATTLE_0B, $00,$80 ; STRUGGLE
- db SFX_BATTLE_0B, $00,$80
+ ; ID, pitch mod, tempo mod
+ db SFX_POUND, $00, $80 ; POUND
+ db SFX_BATTLE_0C, $10, $80 ; KARATE_CHOP
+ db SFX_DOUBLESLAP, $00, $80 ; DOUBLESLAP
+ db SFX_BATTLE_0B, $01, $80 ; COMET_PUNCH
+ db SFX_BATTLE_0D, $00, $40 ; MEGA_PUNCH
+ db SFX_SILPH_SCOPE, $00, $ff ; PAY_DAY
+ db SFX_BATTLE_0D, $10, $60 ; FIRE_PUNCH
+ db SFX_BATTLE_0D, $20, $80 ; ICE_PUNCH
+ db SFX_BATTLE_0D, $00, $a0 ; THUNDERPUNCH
+ db SFX_DAMAGE, $00, $80 ; SCRATCH
+ db SFX_BATTLE_0F, $20, $40 ; VICEGRIP
+ db SFX_BATTLE_0F, $00, $80 ; GUILLOTINE
+ db SFX_BATTLE_0E, $00, $a0 ; RAZOR_WIND
+ db SFX_NOT_VERY_EFFECTIVE, $10, $c0 ; SWORDS_DANCE
+ db SFX_NOT_VERY_EFFECTIVE, $00, $a0 ; CUT
+ db SFX_BATTLE_12, $00, $c0 ; GUST
+ db SFX_BATTLE_12, $10, $a0 ; WING_ATTACK
+ db SFX_BATTLE_13, $00, $e0 ; WHIRLWIND
+ db SFX_NOT_VERY_EFFECTIVE, $20, $c0 ; FLY
+ db SFX_BATTLE_14, $00, $80 ; BIND
+ db SFX_BATTLE_22, $00, $80 ; SLAM
+ db SFX_VINE_WHIP, $01, $80 ; VINE_WHIP
+ db SFX_BATTLE_20, $00, $80 ; STOMP
+ db SFX_BATTLE_17, $f0, $40 ; DOUBLE_KICK
+ db SFX_SUPER_EFFECTIVE, $00, $80 ; MEGA_KICK
+ db SFX_BATTLE_17, $00, $80 ; JUMP_KICK
+ db SFX_BATTLE_21, $10, $80 ; ROLLING_KICK
+ db SFX_BATTLE_1B, $01, $a0 ; SAND_ATTACK
+ db SFX_BATTLE_18, $00, $80 ; HEADBUTT
+ db SFX_BATTLE_1E, $00, $60 ; HORN_ATTACK
+ db SFX_BATTLE_1E, $01, $40 ; FURY_ATTACK
+ db SFX_HORN_DRILL, $00, $a0 ; HORN_DRILL
+ db SFX_SUPER_EFFECTIVE, $10, $a0 ; TACKLE
+ db SFX_BATTLE_20, $00, $c0 ; BODY_SLAM
+ db SFX_BATTLE_14, $10, $60 ; WRAP
+ db SFX_SUPER_EFFECTIVE, $00, $a0 ; TAKE_DOWN
+ db SFX_BATTLE_22, $11, $c0 ; THRASH
+ db SFX_SUPER_EFFECTIVE, $20, $c0 ; DOUBLE_EDGE
+ db SFX_BATTLE_21, $00, $80 ; TAIL_WHIP
+ db SFX_BATTLE_1B, $00, $80 ; POISON_STING
+ db SFX_BATTLE_1B, $20, $c0 ; TWINEEDLE
+ db SFX_BATTLE_19, $00, $80 ; PIN_MISSILE
+ db SFX_BATTLE_31, $ff, $40 ; LEER
+ db SFX_BATTLE_1E, $00, $80 ; BITE
+ db SFX_BATTLE_0B, $00, $c0 ; GROWL
+ db SFX_BATTLE_0B, $00, $40 ; ROAR
+ db SFX_BATTLE_35, $00, $80 ; SING
+ db SFX_BATTLE_27, $40, $60 ; SUPERSONIC
+ db SFX_BATTLE_27, $00, $80 ; SONICBOOM
+ db SFX_BATTLE_27, $ff, $40 ; DISABLE
+ db SFX_BATTLE_2A, $80, $c0 ; ACID
+ db SFX_BATTLE_19, $10, $a0 ; EMBER
+ db SFX_BATTLE_19, $21, $e0 ; FLAMETHROWER
+ db SFX_EARTHQUAKE, $00, $80 ; MIST
+ db SFX_BATTLE_24, $20, $60 ; WATER_GUN
+ db SFX_BATTLE_2A, $00, $80 ; HYDRO_PUMP
+ db SFX_BATTLE_2C, $00, $80 ; SURF
+ db SFX_BATTLE_28, $40, $80 ; ICE_BEAM
+ db SFX_EARTHQUAKE, $f0, $e0 ; BLIZZARD
+ db SFX_PSYBEAM, $00, $80 ; PSYBEAM
+ db SFX_BATTLE_2A, $f0, $60 ; BUBBLEBEAM
+ db SFX_BATTLE_28, $00, $80 ; AURORA_BEAM
+ db SFX_BATTLE_36, $00, $80 ; HYPER_BEAM
+ db SFX_PECK, $01, $a0 ; PECK
+ db SFX_BATTLE_13, $f0, $20 ; DRILL_PECK
+ db SFX_BATTLE_23, $01, $c0 ; SUBMISSION
+ db SFX_BATTLE_23, $00, $80 ; LOW_KICK
+ db SFX_SUPER_EFFECTIVE, $00, $e0 ; COUNTER
+ db SFX_BATTLE_26, $01, $60 ; SEISMIC_TOSS
+ db SFX_BATTLE_26, $20, $40 ; STRENGTH
+ db SFX_BATTLE_24, $00, $80 ; ABSORB
+ db SFX_BATTLE_24, $40, $c0 ; MEGA_DRAIN
+ db SFX_BATTLE_1B, $03, $60 ; LEECH_SEED
+ db SFX_BATTLE_25, $11, $e0 ; GROWTH
+ db SFX_BATTLE_12, $20, $e0 ; RAZOR_LEAF
+ db SFX_BATTLE_2E, $00, $80 ; SOLARBEAM
+ db SFX_BATTLE_1C, $00, $80 ; POISONPOWDER
+ db SFX_BATTLE_1C, $11, $a0 ; STUN_SPORE
+ db SFX_BATTLE_1C, $01, $c0 ; SLEEP_POWDER
+ db SFX_BATTLE_13, $14, $c0 ; PETAL_DANCE
+ db SFX_BATTLE_1B, $02, $a0 ; STRING_SHOT
+ db SFX_EARTHQUAKE, $f0, $80 ; DRAGON_RAGE
+ db SFX_EARTHQUAKE, $20, $c0 ; FIRE_SPIN
+ db SFX_THUNDERBOLT, $00, $20 ; THUNDERSHOCK
+ db SFX_THUNDERBOLT, $20, $80 ; THUNDERBOLT
+ db SFX_BATTLE_2E, $12, $60 ; THUNDER_WAVE
+ db SFX_BATTLE_26, $00, $80 ; THUNDER
+ db SFX_BATTLE_14, $01, $e0 ; ROCK_THROW
+ db SFX_EARTHQUAKE, $0f, $e0 ; EARTHQUAKE
+ db SFX_EARTHQUAKE, $11, $20 ; FISSURE
+ db SFX_DAMAGE, $10, $40 ; DIG
+ db SFX_BATTLE_0F, $10, $c0 ; TOXIC
+ db SFX_BATTLE_14, $00, $20 ; CONFUSION
+ db SFX_PSYCHIC_M, $00, $80 ; PSYCHIC_M
+ db SFX_BATTLE_35, $11, $18 ; HYPNOSIS
+ db SFX_BATTLE_09, $20, $c0 ; MEDITATE
+ db SFX_FAINT_FALL, $20, $c0 ; AGILITY
+ db SFX_BATTLE_25, $00, $10 ; QUICK_ATTACK
+ db SFX_BATTLE_26, $f0, $20 ; RAGE
+ db SFX_BATTLE_33, $f0, $c0 ; TELEPORT
+ db SFX_NOT_VERY_EFFECTIVE, $f0, $e0 ; NIGHT_SHADE
+ db SFX_BATTLE_09, $f0, $40 ; MIMIC
+ db SFX_BATTLE_31, $00, $80 ; SCREECH
+ db SFX_BATTLE_33, $80, $40 ; DOUBLE_TEAM
+ db SFX_BATTLE_33, $00, $80 ; RECOVER
+ db SFX_BATTLE_14, $11, $20 ; HARDEN
+ db SFX_BATTLE_14, $22, $10 ; MINIMIZE
+ db SFX_BATTLE_1B, $f1, $ff ; SMOKESCREEN
+ db SFX_BATTLE_13, $f1, $ff ; CONFUSE_RAY
+ db SFX_BATTLE_14, $33, $30 ; WITHDRAW
+ db SFX_BATTLE_32, $40, $c0 ; DEFENSE_CURL
+ db SFX_BATTLE_0E, $20, $20 ; BARRIER
+ db SFX_BATTLE_0E, $f0, $10 ; LIGHT_SCREEN
+ db SFX_BATTLE_0F, $f8, $10 ; HAZE
+ db SFX_NOT_VERY_EFFECTIVE, $f0, $10 ; REFLECT
+ db SFX_BATTLE_25, $00, $80 ; FOCUS_ENERGY
+ db SFX_BATTLE_18, $00, $c0 ; BIDE
+ db SFX_BATTLE_32, $c0, $ff ; METRONOME
+ db SFX_BATTLE_09, $f2, $20 ; MIRROR_MOVE
+ db SFX_BATTLE_34, $00, $80 ; SELFDESTRUCT
+ db SFX_BATTLE_34, $00, $40 ; EGG_BOMB
+ db SFX_BATTLE_09, $00, $40 ; LICK
+ db SFX_NOT_VERY_EFFECTIVE, $10, $ff ; SMOG
+ db SFX_BATTLE_2A, $20, $20 ; SLUDGE
+ db SFX_BATTLE_32, $00, $80 ; BONE_CLUB
+ db SFX_EARTHQUAKE, $1f, $20 ; FIRE_BLAST
+ db SFX_BATTLE_25, $2f, $80 ; WATERFALL
+ db SFX_BATTLE_0F, $1f, $ff ; CLAMP
+ db SFX_BATTLE_2B, $1f, $60 ; SWIFT
+ db SFX_BATTLE_26, $1e, $20 ; SKULL_BASH
+ db SFX_BATTLE_26, $1f, $18 ; SPIKE_CANNON
+ db SFX_BATTLE_14, $0f, $80 ; CONSTRICT
+ db SFX_BATTLE_09, $f8, $10 ; AMNESIA
+ db SFX_FAINT_FALL, $18, $20 ; KINESIS
+ db SFX_BATTLE_32, $08, $40 ; SOFTBOILED
+ db SFX_BATTLE_17, $01, $e0 ; HI_JUMP_KICK
+ db SFX_NOT_VERY_EFFECTIVE, $09, $ff ; GLARE
+ db SFX_BATTLE_35, $42, $01 ; DREAM_EATER
+ db SFX_BATTLE_1C, $00, $ff ; POISON_GAS
+ db SFX_BATTLE_32, $08, $e0 ; BARRAGE
+ db SFX_BATTLE_24, $00, $80 ; LEECH_LIFE
+ db SFX_BATTLE_09, $88, $10 ; LOVELY_KISS
+ db SFX_BATTLE_25, $48, $ff ; SKY_ATTACK
+ db SFX_FAINT_FALL, $ff, $ff ; TRANSFORM
+ db SFX_BATTLE_24, $ff, $10 ; BUBBLE
+ db SFX_FAINT_FALL, $ff, $04 ; DIZZY_PUNCH
+ db SFX_BATTLE_1C, $01, $ff ; SPORE
+ db SFX_BATTLE_13, $f8, $ff ; FLASH
+ db SFX_BATTLE_0C, $f0, $f0 ; PSYWAVE
+ db SFX_BATTLE_0F, $08, $10 ; SPLASH
+ db SFX_BATTLE_0D, $f0, $ff ; ACID_ARMOR
+ db SFX_SUPER_EFFECTIVE, $f0, $ff ; CRABHAMMER
+ db SFX_BATTLE_34, $10, $ff ; EXPLOSION
+ db SFX_BATTLE_0E, $f0, $20 ; FURY_SWIPES
+ db SFX_BATTLE_2B, $f0, $60 ; BONEMERANG
+ db SFX_BATTLE_21, $12, $10 ; REST
+ db SFX_BATTLE_36, $f0, $20 ; ROCK_SLIDE
+ db SFX_BATTLE_1E, $12, $ff ; HYPER_FANG
+ db SFX_BATTLE_31, $80, $04 ; SHARPEN
+ db SFX_BATTLE_33, $f0, $10 ; CONVERSION
+ db SFX_EARTHQUAKE, $f8, $ff ; TRI_ATTACK
+ db SFX_BATTLE_26, $f0, $ff ; SUPER_FANG
+ db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH
+ db SFX_BATTLE_2C, $d8, $04 ; SUBSTITUTE
+ db SFX_BATTLE_0B, $00, $80 ; STRUGGLE
+ db SFX_BATTLE_0B, $00, $80
CopyPicTiles: ; 79c0a (1e:5c0a)
ld a, [H_WHOSETURN]
@@ -2758,96 +2759,96 @@ CopyTileIDs: ; 79ace (1e:5ace)
TileIDListPointerTable: ; 79c46 (1e:5c46)
dw DownscaledMonTiles_7x7
- db $77
+ dn 7, 7
dw DownscaledMonTiles_5x7
- db $57
+ dn 5, 7
dw DownscaledMonTiles_3x7
- db $37
+ dn 3, 7
dw DownscaledMonTiles_79ce9
- db $77
+ dn 7, 7
dw DownscaledMonTiles_79d1a
- db $77
+ dn 7, 7
dw DownscaledMonTiles_79d4b
- db $77
+ dn 7, 7
dw DownscaledMonTiles_79d7c
- db $86
+ dn 8, 6
dw DownscaledMonTiles_79dac
- db $3C
+ dn 3, 12
DownscaledMonTiles_5x5: ; 79b02 (1e:5b02)
- db $31,$38,$46,$54,$5B
- db $32,$39,$47,$55,$5C
- db $34,$3B,$49,$57,$5E
- db $36,$3D,$4B,$59,$60
- db $37,$3E,$4C,$5A,$61
+ db $31, $38, $46, $54, $5B
+ db $32, $39, $47, $55, $5C
+ db $34, $3B, $49, $57, $5E
+ db $36, $3D, $4B, $59, $60
+ db $37, $3E, $4C, $5A, $61
DownscaledMonTiles_3x3: ; 79b1b (1e:5b1b)
- db $31,$46,$5B
- db $34,$49,$5E
- db $37,$4C,$61
+ db $31, $46, $5B
+ db $34, $49, $5E
+ db $37, $4C, $61
DownscaledMonTiles_7x7: ; 79c80 (1e:5c80)
- db $00,$07,$0E,$15,$1C,$23,$2A
- db $01,$08,$0F,$16,$1D,$24,$2B
- db $02,$09,$10,$17,$1E,$25,$2C
- db $03,$0A,$11,$18,$1F,$26,$2D
- db $04,$0B,$12,$19,$20,$27,$2E
- db $05,$0C,$13,$1A,$21,$28,$2F
- db $06,$0D,$14,$1B,$22,$29,$30
+ db $00, $07, $0E, $15, $1C, $23, $2A
+ db $01, $08, $0F, $16, $1D, $24, $2B
+ db $02, $09, $10, $17, $1E, $25, $2C
+ db $03, $0A, $11, $18, $1F, $26, $2D
+ db $04, $0B, $12, $19, $20, $27, $2E
+ db $05, $0C, $13, $1A, $21, $28, $2F
+ db $06, $0D, $14, $1B, $22, $29, $30
DownscaledMonTiles_5x7: ; 79cb1 (1e:5cb1)
- db $00,$07,$0E,$15,$1C,$23,$2A
- db $01,$08,$0F,$16,$1D,$24,$2B
- db $03,$0A,$11,$18,$1F,$26,$2D
- db $04,$0B,$12,$19,$20,$27,$2E
- db $05,$0C,$13,$1A,$21,$28,$2F
+ db $00, $07, $0E, $15, $1C, $23, $2A
+ db $01, $08, $0F, $16, $1D, $24, $2B
+ db $03, $0A, $11, $18, $1F, $26, $2D
+ db $04, $0B, $12, $19, $20, $27, $2E
+ db $05, $0C, $13, $1A, $21, $28, $2F
DownscaledMonTiles_3x7: ; 79cd4 (1e:5cd4)
- db $00,$07,$0E,$15,$1C,$23,$2A
- db $02,$09,$10,$17,$1E,$25,$2C
- db $04,$0B,$12,$19,$20,$27,$2E
+ db $00, $07, $0E, $15, $1C, $23, $2A
+ db $02, $09, $10, $17, $1E, $25, $2C
+ db $04, $0B, $12, $19, $20, $27, $2E
DownscaledMonTiles_79ce9: ; 79ce9 (1e:5ce9)
- db $00,$00,$00,$00,$00,$00,$00
- db $00,$00,$00,$00,$00,$19,$00
- db $02,$06,$0B,$10,$14,$1A,$00
- db $00,$07,$0C,$11,$15,$1B,$00
- db $03,$08,$0D,$12,$16,$1C,$00
- db $04,$09,$0E,$13,$17,$1D,$1F
- db $05,$0A,$0F,$01,$18,$1E,$20
+ db $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $19, $00
+ db $02, $06, $0B, $10, $14, $1A, $00
+ db $00, $07, $0C, $11, $15, $1B, $00
+ db $03, $08, $0D, $12, $16, $1C, $00
+ db $04, $09, $0E, $13, $17, $1D, $1F
+ db $05, $0A, $0F, $01, $18, $1E, $20
DownscaledMonTiles_79d1a: ; 79d1a (1e:5d1a)
- db $00,$00,$00,$30,$00,$37,$00
- db $00,$00,$2B,$31,$34,$38,$3D
- db $21,$26,$2C,$01,$35,$39,$3E
- db $22,$27,$2D,$32,$36,$01,$00
- db $23,$28,$2E,$33,$01,$3A,$00
- db $24,$29,$2F,$01,$01,$3B,$00
- db $25,$2A,$01,$01,$01,$3C,$00
+ db $00, $00, $00, $30, $00, $37, $00
+ db $00, $00, $2B, $31, $34, $38, $3D
+ db $21, $26, $2C, $01, $35, $39, $3E
+ db $22, $27, $2D, $32, $36, $01, $00
+ db $23, $28, $2E, $33, $01, $3A, $00
+ db $24, $29, $2F, $01, $01, $3B, $00
+ db $25, $2A, $01, $01, $01, $3C, $00
DownscaledMonTiles_79d4b: ; 79d4b (1e:5d4b)
- db $00,$00,$00,$00,$00,$00,$00
- db $00,$00,$47,$4D,$00,$00,$00
- db $00,$00,$48,$4E,$52,$56,$5B
- db $3F,$43,$49,$4F,$53,$57,$5C
- db $40,$44,$4A,$50,$54,$58,$00
- db $41,$45,$4B,$51,$4C,$59,$5D
- db $42,$46,$4C,$4C,$55,$5A,$5E
+ db $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $47, $4D, $00, $00, $00
+ db $00, $00, $48, $4E, $52, $56, $5B
+ db $3F, $43, $49, $4F, $53, $57, $5C
+ db $40, $44, $4A, $50, $54, $58, $00
+ db $41, $45, $4B, $51, $4C, $59, $5D
+ db $42, $46, $4C, $4C, $55, $5A, $5E
DownscaledMonTiles_79d7c: ; 79d7c (1e:5d7c)
- db $31,$32,$32,$32,$32,$33
- db $34,$35,$36,$36,$37,$38
- db $34,$39,$3A,$3A,$3B,$38
- db $3C,$3D,$3E,$3E,$3F,$40
- db $41,$42,$43,$43,$44,$45
- db $46,$47,$43,$48,$49,$4A
- db $41,$43,$4B,$4C,$4D,$4E
- db $4F,$50,$50,$50,$51,$52
+ db $31, $32, $32, $32, $32, $33
+ db $34, $35, $36, $36, $37, $38
+ db $34, $39, $3A, $3A, $3B, $38
+ db $3C, $3D, $3E, $3E, $3F, $40
+ db $41, $42, $43, $43, $44, $45
+ db $46, $47, $43, $48, $49, $4A
+ db $41, $43, $4B, $4C, $4D, $4E
+ db $4F, $50, $50, $50, $51, $52
DownscaledMonTiles_79dac: ; 79dac (1e:5dac)
- db $43,$55,$56,$53,$53,$53,$53,$53,$53,$53,$53,$53
- db $43,$57,$58,$54,$54,$54,$54,$54,$54,$54,$54,$54
- db $43,$59,$5A,$43,$43,$43,$43,$43,$43,$43,$43,$43
+ db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
+ db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
+ db $43, $59, $5A, $43, $43, $43, $43, $43, $43, $43, $43, $43
AnimationLeavesFalling: ; 79dd0 (1e:5dd0)
; Makes leaves float down from the top of the screen. This is used
@@ -3013,7 +3014,7 @@ FallingObjects_InitXCoords: ; 79eb3 (1e:5eb3)
ret
FallingObjects_InitialXCoords: ; 79ec7 (1e:5ec7)
- db $38,$40,$50,$60,$70,$88,$90,$56,$67,$4A,$77,$84,$98,$32,$22,$5C,$6C,$7D,$8E,$99
+ db $38, $40, $50, $60, $70, $88, $90, $56, $67, $4A, $77, $84, $98, $32, $22, $5C, $6C, $7D, $8E, $99
FallingObjects_InitMovementData: ; 79edb (1e:5edb)
ld hl, wFallingObjectsMovementData
@@ -3029,7 +3030,7 @@ FallingObjects_InitMovementData: ; 79edb (1e:5edb)
ret
FallingObjects_InitialMovementData: ; 79eec (1e:5eec)
- db $00,$84,$06,$81,$02,$88,$01,$83,$05,$89,$09,$80,$07,$87,$03,$82,$04,$85,$08,$86
+ db $00, $84, $06, $81, $02, $88, $01, $83, $05, $89, $09, $80, $07, $87, $03, $82, $04, $85, $08, $86
AnimationShakeEnemyHUD: ; 79f00 (1e:5f00)
; Shakes the enemy HUD.
@@ -3155,60 +3156,60 @@ BattleAnimCopyTileMapToVRAM: ; 79fae (1e:5fae)
jp Delay3
TossBallAnimation: ; 79fb7 (1e:5fb7)
- ld a,[wIsInBattle]
- cp a,2
- jr z,.BlockBall ; if in trainer battle, play different animation
- ld a,[wPokeBallAnimData]
- ld b,a
+ ld a, [wIsInBattle]
+ cp a, 2
+ jr z, .BlockBall ; if in trainer battle, play different animation
+ ld a, [wPokeBallAnimData]
+ ld b, a
; upper nybble: how many animations (from PokeBallAnimations) to play
; this will be 4 for successful capture, 6 for breakout
- and a,$F0
+ and a, $F0
swap a
- ld c,a
+ ld c, a
; lower nybble: number of shakes
; store these for later
- ld a,b
- and a,$F
- ld [wNumShakes],a
+ ld a, b
+ and a, $F
+ ld [wNumShakes], a
- ld hl,.PokeBallAnimations
+ ld hl, .PokeBallAnimations
; choose which toss animation to use
- ld a,[wcf91]
- cp a,POKE_BALL
- ld b,TOSS_ANIM
- jr z,.done
- cp a,GREAT_BALL
- ld b,GREATTOSS_ANIM
- jr z,.done
- ld b,ULTRATOSS_ANIM
+ ld a, [wcf91]
+ cp a, POKE_BALL
+ ld b, TOSS_ANIM
+ jr z, .done
+ cp a, GREAT_BALL
+ ld b, GREATTOSS_ANIM
+ jr z, .done
+ ld b, ULTRATOSS_ANIM
.done
- ld a,b
+ ld a, b
.PlayNextAnimation
- ld [wAnimationID],a
+ ld [wAnimationID], a
push bc
push hl
call PlayAnimation
pop hl
- ld a,[hli]
+ ld a, [hli]
pop bc
dec c
- jr nz,.PlayNextAnimation
+ jr nz, .PlayNextAnimation
ret
.PokeBallAnimations: ; 79ff1 (1e:5ff1)
; sequence of animations that make up the Poké Ball toss
- db POOF_ANIM,HIDEPIC_ANIM,SHAKE_ANIM,POOF_ANIM,SHOWPIC_ANIM
+ db POOF_ANIM, HIDEPIC_ANIM, SHAKE_ANIM, POOF_ANIM, SHOWPIC_ANIM
.BlockBall ; 79ff6 (1e:5ff6)
- ld a,TOSS_ANIM
- ld [wAnimationID],a
+ ld a, TOSS_ANIM
+ ld [wAnimationID], a
call PlayAnimation
- ld a,SFX_FAINT_THUD
+ ld a, SFX_FAINT_THUD
call PlaySound
- ld a,BLOCKBALL_ANIM
- ld [wAnimationID],a
+ ld a, BLOCKBALL_ANIM
+ ld [wAnimationID], a
jp PlayAnimation
PlayApplyingAttackSound: ; 7a00b (1e:600b)
diff --git a/engine/bcd.asm b/engine/bcd.asm
index a5322702..8757de7c 100644
--- a/engine/bcd.asm
+++ b/engine/bcd.asm
@@ -13,10 +13,10 @@ DivideBCD:: ; f5a8 (3:75a8)
ld [hDivideBCDBuffer + 1], a
ld [hDivideBCDBuffer + 2], a
ld d, $1
-.asm_f5b0
+.loop1
ld a, [hDivideBCDDivisor]
and $f0
- jr nz, .asm_f5e1
+ jr nz, .go
inc d
ld a, [hDivideBCDDivisor]
swap a
@@ -40,8 +40,9 @@ DivideBCD:: ; f5a8 (3:75a8)
ld a, [hDivideBCDDivisor + 2]
and $f0
ld [hDivideBCDDivisor + 2], a
- jr .asm_f5b0
-.asm_f5e1
+ jr .loop1
+
+.go
push de
push de
call DivideBCD_f686
@@ -51,7 +52,7 @@ DivideBCD:: ; f5a8 (3:75a8)
and $f0
ld [hDivideBCDBuffer], a
dec d
- jr z, .asm_f642
+ jr z, .skip
push de
call DivideBCD_f65d
call DivideBCD_f686
@@ -60,7 +61,7 @@ DivideBCD:: ; f5a8 (3:75a8)
or b
ld [hDivideBCDBuffer], a
dec d
- jr z, .asm_f642
+ jr z, .skip
push de
call DivideBCD_f65d
call DivideBCD_f686
@@ -70,7 +71,7 @@ DivideBCD:: ; f5a8 (3:75a8)
and $f0
ld [hDivideBCDBuffer + 1], a
dec d
- jr z, .asm_f642
+ jr z, .skip
push de
call DivideBCD_f65d
call DivideBCD_f686
@@ -79,7 +80,7 @@ DivideBCD:: ; f5a8 (3:75a8)
or b
ld [hDivideBCDBuffer + 1], a
dec d
- jr z, .asm_f642
+ jr z, .skip
push de
call DivideBCD_f65d
call DivideBCD_f686
@@ -89,7 +90,7 @@ DivideBCD:: ; f5a8 (3:75a8)
and $f0
ld [hDivideBCDBuffer + 2], a
dec d
- jr z, .asm_f642
+ jr z, .skip
push de
call DivideBCD_f65d
call DivideBCD_f686
@@ -97,7 +98,7 @@ DivideBCD:: ; f5a8 (3:75a8)
ld a, [hDivideBCDBuffer + 2]
or b
ld [hDivideBCDBuffer + 2], a
-.asm_f642
+.skip
ld a, [hDivideBCDBuffer]
ld [hDivideBCDQuotient], a
ld a, [hDivideBCDBuffer + 1]
@@ -109,12 +110,12 @@ DivideBCD:: ; f5a8 (3:75a8)
sub d
and a
ret z
-.asm_f654
+.loop2
push af
call DivideBCD_f65d
pop af
dec a
- jr nz, .asm_f654
+ jr nz, .loop2
ret
DivideBCD_f65d: ; f65d (3:765d)
diff --git a/engine/display_pokedex.asm b/engine/display_pokedex.asm
index a252f684..0d0039f6 100644
--- a/engine/display_pokedex.asm
+++ b/engine/display_pokedex.asm
@@ -16,4 +16,4 @@ _DisplayPokedex: ; 7abf (1:7abf)
predef FlagActionPredef
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ret \ No newline at end of file
+ ret
diff --git a/engine/draw_badges.asm b/engine/draw_badges.asm
index 3134ae0a..2abecf50 100644
--- a/engine/draw_badges.asm
+++ b/engine/draw_badges.asm
@@ -117,4 +117,4 @@ DrawBadges: ; e880 (3:6880)
db $20, $28, $30, $38, $40, $48, $50, $58
GymLeaderFaceAndBadgeTileGraphics: ; e91b (3:691b)
- INCBIN "gfx/badges.2bpp" \ No newline at end of file
+ INCBIN "gfx/badges.2bpp"
diff --git a/engine/gamefreak.asm b/engine/gamefreak.asm
index e2db39de..ea83734f 100755
--- a/engine/gamefreak.asm
+++ b/engine/gamefreak.asm
@@ -28,7 +28,7 @@ LoadShootingStarGraphics: ; 70000 (1c:4000)
AnimateShootingStar: ; 7004a (1c:404a)
call LoadShootingStarGraphics
- ld a, $c2 ; (SFX_1f_67 - SFX_Headers_1f) / 3
+ ld a, SFX_SHOOTING_STAR
call PlaySound
; Move the big star down and left across the screen.
diff --git a/engine/get_bag_item_quantity.asm b/engine/get_bag_item_quantity.asm
index 2a462b5d..1540f7b1 100644
--- a/engine/get_bag_item_quantity.asm
+++ b/engine/get_bag_item_quantity.asm
@@ -15,4 +15,4 @@ GetQuantityOfItemInBag: ; f735 (3:7735)
ret
.notInBag
ld b, 0
- ret \ No newline at end of file
+ ret
diff --git a/engine/hidden_object_functions17.asm b/engine/hidden_object_functions17.asm
index 78950150..7753cad1 100755
--- a/engine/hidden_object_functions17.asm
+++ b/engine/hidden_object_functions17.asm
@@ -11,7 +11,7 @@ OpenRedsPC: ; 5db86 (17:5b86)
tx_pre_jump RedBedroomPCText
RedBedroomPCText: ; 5db8e (17:5b8e)
- db $fc ; FuncTX_ItemStoragePC
+ TX_PLAYERS_PC
Route15GateLeftBinoculars: ; 5db8f (17:5b8f)
ld a, [wPlayerFacingDirection]
@@ -365,7 +365,7 @@ GymTrashScript: ; 5ddfc (17:5dfc)
.openFirstLock
; Next can is trying for the second switch.
SetEvent EVENT_1ST_LOCK_OPENED
- callab Func_f2d0c
+ callab Yellow_SampleSecondTrashCan
tx_pre_id VermilionGymTrashSuccessText1
jr .done
diff --git a/engine/items/items.asm b/engine/items/items.asm
index 1858c5f0..e3fe4655 100755
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -1928,8 +1928,8 @@ ItemUsePokeflute: ; dfbd (3:5fbd)
ld hl, PlayedFluteHadEffectText
call PrintText
call ItemUseReloadOverworldData
- ld e, $1a
- callab Func_fd001
+ ldpikaemotion e, PikachuEmotion26
+ callab PlaySpecificPikachuEmotion
ret
.noSnorlaxOrPikachuToWakeUp
diff --git a/engine/load_pokedex_tiles.asm b/engine/load_pokedex_tiles.asm
index 43d87f09..de9dce37 100755
--- a/engine/load_pokedex_tiles.asm
+++ b/engine/load_pokedex_tiles.asm
@@ -8,4 +8,4 @@ LoadPokedexTilePatterns: ; 14000 (5:4000)
ld de,PokeballTileGraphics
ld hl,vChars2 + $720
lb bc, BANK(PokeballTileGraphics), $01
- jp CopyVideoData ; load pokeball tile for marking caught mons \ No newline at end of file
+ jp CopyVideoData ; load pokeball tile for marking caught mons
diff --git a/engine/menu/diploma_1.asm b/engine/menu/diploma_1.asm
index db156115..97ecb7ae 100644
--- a/engine/menu/diploma_1.asm
+++ b/engine/menu/diploma_1.asm
@@ -14,4 +14,4 @@ DisplayDiploma: ; 56714 (15:6714)
call ReloadTilesetTilePatterns
call RestoreScreenTilesAndReloadTilePatterns
call Delay3
- jp GBPalNormal \ No newline at end of file
+ jp GBPalNormal
diff --git a/engine/menu/swap_items.asm b/engine/menu/swap_items.asm
index 73304118..bcadc453 100644
--- a/engine/menu/swap_items.asm
+++ b/engine/menu/swap_items.asm
@@ -146,4 +146,4 @@ HandleItemListSwapping: ; 68c9 (1:68c9)
ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
pop de
pop hl
- jp DisplayListMenuIDLoop \ No newline at end of file
+ jp DisplayListMenuIDLoop
diff --git a/engine/move_mon.asm b/engine/move_mon.asm
index a14ed9ca..718e9b16 100644
--- a/engine/move_mon.asm
+++ b/engine/move_mon.asm
@@ -169,4 +169,4 @@ _MoveMon: ; f3a4 (3:73a4)
call CalcStats
.asm_f4ea
and a
- ret \ No newline at end of file
+ ret
diff --git a/engine/overworld/clear_loadmapdata_vars.asm b/engine/overworld/clear_loadmapdata_vars.asm
index 2e7cd165..5ef2076c 100644
--- a/engine/overworld/clear_loadmapdata_vars.asm
+++ b/engine/overworld/clear_loadmapdata_vars.asm
@@ -14,7 +14,7 @@ ClearVariablesAfterLoadingMapData: ; c07c (3:407c)
ld hl, wCardKeyDoorY
ld [hli], a
ld [hl], a
- ld hl, wWhichTrade
- ld bc, $1e
+ ld hl, wUnusedCD3D
+ ld bc, wStandingOnWarpPadOrHole - wUnusedCD3D
call FillMemory
- ret \ No newline at end of file
+ ret
diff --git a/engine/overworld/daycare_exp.asm b/engine/overworld/daycare_exp.asm
index a7c7bd91..e7bf8dff 100644
--- a/engine/overworld/daycare_exp.asm
+++ b/engine/overworld/daycare_exp.asm
@@ -15,4 +15,4 @@ IncrementDayCareMonExp: ; c684 (3:4684)
ret c
ld a, $50
ld [hl], a
- ret \ No newline at end of file
+ ret
diff --git a/engine/overworld/dungeon_warps.asm b/engine/overworld/dungeon_warps.asm
index b234c3a1..d9bbe7d7 100644
--- a/engine/overworld/dungeon_warps.asm
+++ b/engine/overworld/dungeon_warps.asm
@@ -12,4 +12,4 @@ IsPlayerOnDungeonWarp: ; 46bf3 (11:6bf3)
set 4, [hl]
ld hl, wd732
set 4, [hl]
- ret \ No newline at end of file
+ ret
diff --git a/engine/overworld/pokecenter.asm b/engine/overworld/pokecenter.asm
index 65dfcd87..0f355889 100755
--- a/engine/overworld/pokecenter.asm
+++ b/engine/overworld/pokecenter.asm
@@ -32,7 +32,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
call LoadCurrentMapView
call Delay3
call UpdateSprites
- callab Func_fd252 ; todo
+ callab PikachuWalksToNurseJoy ; todo
.notHealingPlayerPikachu
ld hl, NeedYourPokemonText
call PrintText
@@ -40,7 +40,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
call DelayFrames
call CheckPikachuFollowingPlayer
jr nz, .playerPikachuNotOnScreen
- call Func_152d
+ call DisablePikachuOverworldSpriteDrawing
callab IsStarterPikachuInOurParty
call c, Func_6eaa
.playerPikachuNotOnScreen
@@ -64,7 +64,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97)
call c, Func_6eaa
ld a, $5
ld [wPikachuSpawnState], a
- call Func_1525
+ call EnablePikachuOverworldSpriteDrawing
.doNotReturnPikachu
lb bc, 1, 0
call Func_6ebb
diff --git a/engine/pikachu_emotions.asm b/engine/pikachu_emotions.asm
index 9040e612..0525d667 100755
--- a/engine/pikachu_emotions.asm
+++ b/engine/pikachu_emotions.asm
@@ -1,4 +1,4 @@
-IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c)
+IsPlayerTalkingToPikachu: ; fcf0c (3f:4f0c)
ld a, [wd436]
and a
ret z
@@ -25,7 +25,7 @@ InitializePikachuTextID: ; fcf20 (3f:4f20)
DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
ld e, a
- ld d, $0
+ ld d, 0
add hl, de
add hl, de
ld e, [hl]
@@ -37,7 +37,7 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
cp $ff
jr z, .done
ld c, a
- ld b, $0
+ ld b, 0
ld hl, StarterPikachuEmotionsJumptable
add hl, bc
add hl, bc
@@ -46,6 +46,7 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
ld l, a
call JumpToAddress
jr .loop
+
.done
ret
@@ -110,7 +111,7 @@ StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d)
ShowPikachuEmoteBubble: ; fcfa2 (3f:4fa2)
ld [wWhichEmotionBubble], a
- ld a, $f
+ ld a, $f ; Pikachu
ld [wEmotionBubbleSpriteIndex], a
predef EmotionBubble
ret
@@ -142,8 +143,8 @@ StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7)
inc de
push de
ld e, a
- ld d, $0
- ld hl, Jumptable_fcfda
+ ld d, 0
+ ld hl, .Subcommands
add hl, de
add hl, de
ld a, [hli]
@@ -153,7 +154,7 @@ StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7)
pop de
ret
-Jumptable_fcfda:
+.Subcommands:
dw LoadPikachuSpriteIntoVRAM
dw LoadFontTilePatterns
dw Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3
@@ -185,11 +186,11 @@ DeletedFunction_fcffb: ; fcffb (3f:4ffb)
endr
ret
-Func_fd001:: ; fd001 (3f:5001)
+PlaySpecificPikachuEmotion: ; fd001 (3f:5001)
ld a, e
jr load_expression
-Func_fd004:: ; fd004 (3f:5004)
+TalkToPikachu: ; fd004 (3f:5004)
call MapSpecificPikachuExpression
jr c, load_expression
call GetPikaPicAnimationScriptIndex
@@ -201,42 +202,46 @@ load_expression: ; fd00f (3f:500f)
ret
PikachuEmotionTable: ; fd019 (3f:4019)
- dw PikachuEmotion0_fd115
- dw PikachuEmotion1_fd141
- dw PikachuEmotion2_fd116
- dw PikachuEmotion3_fd160
- dw PikachuEmotion4_fd136
- dw PikachuEmotion5_fd14d
- dw PikachuEmotion6_fd153
- dw PikachuEmotion7_fd128
- dw PikachuEmotion8_fd147
- dw PikachuEmotion9_fd166
- dw PikachuEmotion10_fd11e
- dw PikachuEmotion11_fd173
- dw PikachuEmotion12_fd17a
- dw PikachuEmotion13_fd180
- dw PikachuEmotion14_fd189
- dw PikachuEmotion15_fd191
- dw PikachuEmotion16_fd197
- dw PikachuEmotion17_fd19d
- dw PikachuEmotion18_fd1a3
- dw PikachuEmotion19_fd1a9
- dw PikachuEmotion20_fd1b1
- dw PikachuEmotion21_fd1b9 ; used a fishing rod
- dw PikachuEmotion22_fd1c1
- dw PikachuEmotion23_fd1c7
- dw PikachuEmotion24_fd1cf
- dw PikachuEmotion25_fd1d7
- dw PikachuEmotion26_fd1df ; wake up pikachu in pewter pokemon center
- dw PikachuEmotion27_fd1eb
- dw PikachuEmotion28_fd1f1
- dw PikachuEmotion29_fd1f7
- dw PikachuEmotion30_fd1fc
- dw PikachuEmotion31_fd20a
- dw PikachuEmotion32_fd213
- dw PikachuEmotion33_fd05d
+pikaemotion_def: MACRO
+\1_id: dw \1
+ endm
+
+ pikaemotion_def PikachuEmotion0
+ pikaemotion_def PikachuEmotion1
+ pikaemotion_def PikachuEmotion2
+ pikaemotion_def PikachuEmotion3
+ pikaemotion_def PikachuEmotion4
+ pikaemotion_def PikachuEmotion5
+ pikaemotion_def PikachuEmotion6
+ pikaemotion_def PikachuEmotion7
+ pikaemotion_def PikachuEmotion8
+ pikaemotion_def PikachuEmotion9
+ pikaemotion_def PikachuEmotion10
+ pikaemotion_def PikachuEmotion11
+ pikaemotion_def PikachuEmotion12
+ pikaemotion_def PikachuEmotion13
+ pikaemotion_def PikachuEmotion14
+ pikaemotion_def PikachuEmotion15
+ pikaemotion_def PikachuEmotion16
+ pikaemotion_def PikachuEmotion17
+ pikaemotion_def PikachuEmotion18
+ pikaemotion_def PikachuEmotion19
+ pikaemotion_def PikachuEmotion20
+ pikaemotion_def PikachuEmotion21 ; used a fishing rod
+ pikaemotion_def PikachuEmotion22
+ pikaemotion_def PikachuEmotion23
+ pikaemotion_def PikachuEmotion24
+ pikaemotion_def PikachuEmotion25
+ pikaemotion_def PikachuEmotion26 ; wake up pikachu in pewter pokemon center
+ pikaemotion_def PikachuEmotion27
+ pikaemotion_def PikachuEmotion28
+ pikaemotion_def PikachuEmotion29
+ pikaemotion_def PikachuEmotion30
+ pikaemotion_def PikachuEmotion31
+ pikaemotion_def PikachuEmotion32
+ pikaemotion_def PikachuEmotion33
-PikachuEmotion33_fd05d: ; fd05d (3f:505d)
+PikachuEmotion33: ; fd05d (3f:505d)
db $ff
MapSpecificPikachuExpression: ; fd05e (3f:505e)
@@ -245,11 +250,11 @@ MapSpecificPikachuExpression: ; fd05e (3f:505e)
jr nz, .notFanClub
ld hl, wd492
bit 7, [hl]
- ld a, $1d
- jr z, .set_carry
+ ldpikaemotion a, PikachuEmotion29
+ jr z, .play_emotion
call CheckPikachuFollowingPlayer
- ld a, $1e
- jr nz, .set_carry
+ ldpikaemotion a, PikachuEmotion30
+ jr nz, .play_emotion
jr .check_pikachu_status
.notFanClub
@@ -257,60 +262,64 @@ MapSpecificPikachuExpression: ; fd05e (3f:505e)
cp PEWTER_POKECENTER
jr nz, .notPewterPokecenter
call CheckPikachuFollowingPlayer
- ld a, $1a
- jr nz, .set_carry
+ ldpikaemotion a, PikachuEmotion26
+ jr nz, .play_emotion
jr .check_pikachu_status
.notPewterPokecenter
callab Func_f24ae
ld a, e
cp $ff
- jr nz, .set_carry
+ jr nz, .play_emotion
jr .check_pikachu_status ; useless
.check_pikachu_status
call IsPlayerPikachuAsleepInParty
- ld a, $b
- jr c, .set_carry
+ ldpikaemotion a, PikachuEmotion11
+ jr c, .play_emotion
callab CheckPikachuFaintedOrStatused ; same bank
- ld a, $1c
- jr c, .set_carry
+ ldpikaemotion a, PikachuEmotion28
+ jr c, .play_emotion
ld a, [wCurMap]
cp POKEMONTOWER_1
jr c, .notInLavenderTower
cp POKEMONTOWER_7 + 1
- ld a, $16
- jr c, .set_carry
+ ldpikaemotion a, PikachuEmotion22
+ jr c, .play_emotion
.notInLavenderTower
ld a, [wd49c]
and a
- jr z, .no_carry
+ jr z, .mood_based_emotion
dec a
ld c, a
ld b, $0
- ld hl, Pointer_fd0cb
+ ld hl, .Emotions
add hl, bc
ld a, [hl]
- jr .set_carry
+ jr .play_emotion
-.no_carry
+.mood_based_emotion
and a
ret
-.set_carry
+.play_emotion
scf
ret
-Pointer_fd0cb:
- db $12, $15, $17, $18, $19
+.Emotions:
+ dpikaemotion PikachuEmotion18
+ dpikaemotion PikachuEmotion21
+ dpikaemotion PikachuEmotion23
+ dpikaemotion PikachuEmotion24
+ dpikaemotion PikachuEmotion25
-IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
+IsPlayerPikachuAsleepInParty: ; fd0d0 (3f:50d0)
xor a
ld [wWhichPokemon], a
.loop
ld a, [wWhichPokemon]
ld c, a
- ld b, $0
+ ld b, 0
ld hl, wPartySpecies
add hl, bc
ld a, [hl]
@@ -328,6 +337,7 @@ IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
and SLP
jr z, .done
jr .curMonSleepingPikachu
+
.curMonNotStarterPikachu
ld a, [wWhichPokemon]
cp PARTY_LENGTH - 1
@@ -335,75 +345,77 @@ IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
inc a
ld [wWhichPokemon], a
jr .loop
+
.curMonSleepingPikachu
scf
ret
+
.done
and a
ret
INCLUDE "data/pikachu_emotions.asm"
-Func_fd252: ; fd252 (3f:5252)
+PikachuWalksToNurseJoy: ; fd252 (3f:5252)
ld a, $40
ld [h_0xFFFC], a
call LoadPikachuSpriteIntoVRAM
- call Func_fd266
+ call .GetMovementData
and a
- jr z, .asm_fd262
+ jr z, .skip
call ApplyPikachuMovementData
-.asm_fd262
+.skip
xor a
ld [h_0xFFFC], a
ret
-Func_fd266:
- ld a, [wSpriteStateData2 + 15 * 16 + 4]
+.GetMovementData:
+ ld a, [wPikachuMapY]
ld e, a
- ld a, [wSpriteStateData2 + 15 * 16 + 5]
+ ld a, [wPikachuMapX]
ld d, a
ld a, [wYCoord]
add 4
cp e
- jr z, .asm_fd280
- jr nc, .asm_fd27e
- ld hl, Data_fd294
+ jr z, .pikachu_at_same_y_as_player
+ jr nc, .pikachu_above_player
+ ld hl, .PikaMovementData1
ld a, 1
ret
-.asm_fd27e
+.pikachu_above_player
xor a
ret
-.asm_fd280
+.pikachu_at_same_y_as_player
ld a, [wXCoord]
add 4
cp d
- jr c, .asm_fd28e
- ld hl, Data_fd299
+ jr c, .pikachu_to_right_of_player
+ ld hl, .PikaMovementData2
ld a, 2
ret
-.asm_fd28e
- ld hl, Data_fd29d
+.pikachu_to_right_of_player
+ ld hl, .PikaMovementData3
ld a, 3
ret
-Data_fd294:
- db $00
- db $36
- db $2b
- db $34
- db $3f
+.PikaMovementData1:
+ db $00 ; init
+ db $36 ; look up
+ db $2b ; walk up left
+ db $34 ; hop up right
+ db $3f ; ret
-Data_fd299:
- db $00
- db $36
- db $34
- db $3f
+.PikaMovementData2:
+ db $00 ; init
+ db $36 ; look up
+ db $34 ; hop up right
+ db $3f ; ret
-Data_fd29d:
- db $00
- db $36
- db $33
- db $3f
+.PikaMovementData3:
+ db $00 ; init
+ db $36 ; look up
+ db $33 ; hop up left
+ db $3f ; ret
diff --git a/engine/pikachu_follow.asm b/engine/pikachu_follow.asm
index a715b0a3..3be960f3 100755
--- a/engine/pikachu_follow.asm
+++ b/engine/pikachu_follow.asm
@@ -1,4 +1,4 @@
-Func_fc4dd:: ; fc4dd (3f:44dd)
+ShouldPikachuSpawn:: ; fc4dd (3f:44dd)
; possibly to test if pika should be out?
ld a, [wPikachuOverworldStateFlags]
bit 5, a
@@ -18,7 +18,7 @@ Func_fc4dd:: ; fc4dd (3f:44dd)
and a
ret
-Func_fc4fa:: ; fc4fa (3f:44fa)
+SchedulePikachuSpawnForAfterText:: ; fc4fa (3f:44fa)
ld hl, wPikachuOverworldStateFlags
bit 4, [hl]
res 4, [hl]
@@ -49,7 +49,7 @@ ClearPikachuSpriteStateData:: ; fc523 (3f:4523)
call FillMemory
ret
-Func_fc534:: ; fc534 (3f:4534)
+CalculatePikachuSpawnCoordsAndFacing:: ; fc534 (3f:4534)
call CalculatePikachuPlacementCoords
call CalculatePikachuFacingDirection
xor a
@@ -350,7 +350,7 @@ ResetPikachuOverworldStateFlag2:: ; fc6cd (3f:46cd)
SpawnPikachu_:: ; fc6d5 (3f:46d5)
call ResetPikachuOverworldStateFlag2
- call Func_fc727
+ call TrySpawnPikachu
ret nc
push bc
@@ -358,16 +358,16 @@ SpawnPikachu_:: ; fc6d5 (3f:46d5)
pop bc
ret c
- ld bc, wPikachuPictureID
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld bc, wPikachuSpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
bit 7, [hl]
- jp nz, asm_fc745
+ jp nz, Func_fc745
ld a, [wFontLoaded]
bit 0, a
- jp nz, asm_fc76a
+ jp nz, Func_fc76a
call CheckPikachuFollowingPlayer
- jp nz, asm_fc76a
+ jp nz, Func_fc76a
ld a, [hl]
and $7f
cp $a
@@ -395,20 +395,20 @@ PointerTable_fc710: ; fc710 (3f:4710)
dw asm_fc904
dw asm_fc937
dw asm_fc969
- dw Func_fc726
+ dw .nop
-Func_fc726: ; fc726 (3f:4726)
+.nop: ; fc726 (3f:4726)
ret
-Func_fc727: ; fc727 (3f:4727)
- call Func_fc4dd
+TrySpawnPikachu: ; fc727 (3f:4727)
+ call ShouldPikachuSpawn
jr nc, .dont_spawn
ld a, [wPikachuMovementStatus]
and a
jr nz, .already_spawned
push bc
push hl
- call Func_fc534
+ call CalculatePikachuSpawnCoordsAndFacing
pop hl
pop bc
.already_spawned
@@ -423,46 +423,47 @@ Func_fc727: ; fc727 (3f:4727)
xor a
ret
-asm_fc745: ; fc745 (3f:4745)
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+Func_fc745: ; fc745 (3f:4745)
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
res 7, [hl]
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
call CheckPikachuFollowingPlayer
- jr nz, .asm_fc75f
+ jr nz, .okay
+ ; Have Pikachu face in the opposite direction of you
ld a, [wPlayerFacingDirection]
xor $4
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
-.asm_fc75f
+.okay
xor a
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld [hli], a
ld [hl], a
call UpdatePikachuWalkingSprite
ret
-asm_fc76a: ; fc76a (3f:476a)
+Func_fc76a: ; fc76a (3f:476a)
xor a
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld [hli], a
ld [hl], a
call UpdatePikachuWalkingSprite
call Func_fc82e
- jr c, .asm_fc783
+ jr c, .skip
push bc
callab InitializeSpriteScreenPosition
pop bc
-.asm_fc783
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+.skip
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $1
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $0
call RefreshPikachuFollow
@@ -473,7 +474,7 @@ Func_fc793: ; fc793 (3f:4793)
push bc
callab InitializeSpriteScreenPosition
pop bc
- ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1
+ ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1
add hl, bc
ld [hl], $ff
dec hl
@@ -494,12 +495,12 @@ Func_fc7aa: ; fc7aa (3f:47aa)
ld e, l
ld a, [de]
inc de
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
ld a, [de]
inc de
- ld hl, wSprite01XStepVector - wSprite01SpriteStateData1
+ ld hl, wPikachuXStepVector - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
dec hl
@@ -508,7 +509,7 @@ Func_fc7aa: ; fc7aa (3f:47aa)
ld [hl], a
inc de
ld a, [de]
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
cp $4
@@ -538,7 +539,7 @@ Pointer_fc7e3: ; fc7e3 (3f:47e3)
Func_fc803: ; fc803 (3f:4803)
call Func_fcae2
ret c
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
jr nz, .asm_fc823
@@ -550,12 +551,12 @@ Func_fc803: ; fc803 (3f:4803)
ld [hl], $20
call Random
and $c
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
.asm_fc823
xor a
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld [hli], a
ld [hl], a
@@ -570,10 +571,10 @@ Func_fc82e: ; fc82e (3f:482e)
ret
Func_fc835: ; fc835 (3f:4835)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $10
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $1
ret
@@ -606,16 +607,16 @@ Func_fc862: ; fc862 (3f:4862)
add a
add a
and $c
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld [hl], a
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $6
xor a
ld [wd432], a
ld [wd433], a
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $11
asm_fc87f: ; fc87f (3f:487f)
@@ -626,7 +627,7 @@ asm_fc87f: ; fc87f (3f:487f)
call Func_fc82e
jr c, Func_fc8c7
call SetPikachuOverworldStateFlag2
- ld hl, wSprite01YPixels - wSprite01SpriteStateData1
+ ld hl, wPikachuYPixels - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
sub e
@@ -636,7 +637,7 @@ asm_fc87f: ; fc87f (3f:487f)
ld a, [hl]
sub d
ld d, a
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
dec a
@@ -654,20 +655,20 @@ asm_fc87f: ; fc87f (3f:487f)
ld [wd433], a
add d
ld d, a
- ld hl, wSprite01YPixels - wSprite01SpriteStateData1
+ ld hl, wPikachuYPixels - wPikachuSpriteStateData1
add hl, bc
ld [hl], e
inc hl
inc hl
ld [hl], d
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
jp Func_fc835
Func_fc8c7: ; fc8c7 (3f:48c7)
- ld hl, wSprite01YPixels - wSprite01SpriteStateData1
+ ld hl, wPikachuYPixels - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
sub e
@@ -699,17 +700,17 @@ Pointer_fc8d6: ; fc8d6 (3f:48d6)
db 0, 0
Func_fc8f8: ; fc8f8 (3f:48f8)
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $7
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $30
asm_fc904: ; fc904 (3f:4904)
call Func_fc82e
jp c, Func_fc835
call SetPikachuOverworldStateFlag2
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
inc a
@@ -724,24 +725,24 @@ asm_fc904: ; fc904 (3f:4904)
ld [hl], a
.asm_fc91f
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
jp Func_fc835
Func_fc92b: ; fc92b (3f:492b)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $20
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $8
asm_fc937: ; fc937 (3f:4937)
call Func_fc82e
jp c, Func_fc835
call SetPikachuOverworldStateFlag2
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
inc a
@@ -755,48 +756,48 @@ asm_fc937: ; fc937 (3f:4937)
ld [hl], a
.asm_fc951
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
jp Func_fc835
Func_fc95d: ; fc95d (3f:495d)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $20
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $9
asm_fc969: ; fc969 (3f:4969)
call Func_fc82e
jp c, Func_fc835
call SetPikachuOverworldStateFlag2
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
inc a
cp $8
ld [hl], a
- jr nz, .asm_fc988
+ jr nz, .skip
xor a
ld [hl], a
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
- call Func_fc994
+ call .TurnClockwise
ld [hl], a
-.asm_fc988
+.skip
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
jp Func_fc835
-Func_fc994: ; fc994 (3f:4994)
+.TurnClockwise: ; fc994 (3f:4994)
push hl
- ld hl, Pointer_fc9ac
+ ld hl, .Facings
ld d, a
.loop
ld a, [hli]
@@ -806,28 +807,28 @@ Func_fc994: ; fc994 (3f:4994)
pop hl
ret
-Func_fc9a0: ; fc9a0 (3f:49a0)
+.TurnCounterclockwise: ; fc9a0 (3f:49a0)
push hl
- ld hl, Pointer_fc9ac_End
+ ld hl, .Facings_End
ld d, a
-.loop
+.loop_
ld a, [hld]
cp d
- jr nz, .loop
+ jr nz, .loop_
ld a, [hl]
pop hl
ret
-Pointer_fc9ac: ; fc9ac (3f:49ac)
+.Facings: ; fc9ac (3f:49ac)
db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
-Pointer_fc9ac_End:
+.Facings_End:
NormalPikachuFollow: ; fc9b4 (3f:49b4)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $8
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $3
call AddPikachuStepVector
@@ -835,22 +836,22 @@ asm_fc9c3: ; fc9c3 (3f:49c3)
call TryDoubleAddPikachuStepVectorToScreenPixelCoords
call GetPikachuWalkingAnimationSpeed
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
call ResetPikachuStepVector
call ComputePikachuFacingDirection
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $1
ret
FastPikachuFollow: ; fc9df (3f:49df)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $4
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $5
call AddPikachuStepVector
@@ -858,22 +859,22 @@ asm_fc9ee: ; fc9ee (3f:49ee)
call DoubleAddPikachuStepVectorToScreenPixelCoords
call GetPikachuWalkingAnimationSpeed
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
call ResetPikachuStepVector
call ComputePikachuFacingDirection
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $1
ret
Func_fca0a: ; fca0a (3f:4a0a)
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
ld [hl], $8
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $4
call AddPikachuStepVector
@@ -882,25 +883,25 @@ asm_fca1c: ; fca1c (3f:4a1c)
call DoubleAddPikachuStepVectorToScreenPixelCoords
call GetPikachuWalkingAnimationSpeed
call UpdatePikachuWalkingSprite
- ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1
add hl, bc
dec [hl]
ret nz
call ResetPikachuStepVector
call ComputePikachuFacingDirection
- ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1
+ ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1
add hl, bc
ld [hl], $1
ret
AddPikachuStepVector: ; fca38 (3f:4a38)
- ld hl, wSprite01YStepVector - wSprite01SpriteStateData1
+ ld hl, wPikachuYStepVector - wPikachuSpriteStateData1
add hl, bc
ld e, [hl]
inc hl
inc hl
ld d, [hl]
- ld hl, wSprite01MapY - wSprite01SpriteStateData1
+ ld hl, wPikachuMapY - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
add e
@@ -918,7 +919,7 @@ TryDoubleAddPikachuStepVectorToScreenPixelCoords: ; fca4b (3f:4a4b)
bit 6, a
jr nz, AddPikachuStepVectorToScreenPixelCoords
DoubleAddPikachuStepVectorToScreenPixelCoords: ; fca59 (3f:4a59)
- ld hl, wSprite01YStepVector - wSprite01SpriteStateData1
+ ld hl, wPikachuYStepVector - wPikachuSpriteStateData1
add hl, bc
ld a, [hli]
add a
@@ -933,7 +934,7 @@ DoubleAddPikachuStepVectorToScreenPixelCoords: ; fca59 (3f:4a59)
ret
AddPikachuStepVectorToScreenPixelCoords: ; fca68 (3f:4a68)
- ld hl, wSprite01YStepVector - wSprite01SpriteStateData1
+ ld hl, wPikachuYStepVector - wPikachuSpriteStateData1
add hl, bc
ld a, [hli]
add a
@@ -946,7 +947,7 @@ AddPikachuStepVectorToScreenPixelCoords: ; fca68 (3f:4a68)
ret
ResetPikachuStepVector: ; fca75 (3f:4a75)
- ld hl, wSprite01YStepVector - wSprite01SpriteStateData1
+ ld hl, wPikachuYStepVector - wPikachuSpriteStateData1
add hl, bc
xor a
ld [hli], a
@@ -960,7 +961,7 @@ GetPikachuWalkingAnimationSpeed: ; fca7e (3f:4a7e)
jr nc, .happy
ld d, $5
.happy
- ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
inc a
@@ -980,7 +981,7 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99)
ld a, [wPikachuOverworldStateFlags]
bit 3, a
jr nz, .uninitialized
- ld hl, wSprite01SpriteImageBaseOffset - wSprite01SpriteStateData1
+ ld hl, wPikachuSpriteImageBaseOffset - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
dec a
@@ -989,7 +990,7 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99)
ld a, [wd736]
bit 7, a
jr nz, .copy_player
- ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1
+ ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1
add hl, bc
ld a, [hl]
or d
@@ -1002,19 +1003,19 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99)
jr .load_sprite_index
.normal_get_sprite_index
- ld hl, wSprite01AnimFrameCounter - wSprite01SpriteStateData1
+ ld hl, wPikachuAnimFrameCounter - wPikachuSpriteStateData1
add hl, bc
ld a, d
or [hl]
ld d, a
.load_sprite_index
- ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1
+ ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1
add hl, bc
ld [hl], d
ret
.uninitialized
- ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1
+ ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1
add hl, bc
ld [hl], $ff
ret
@@ -1027,7 +1028,7 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99)
ret
Func_fcae2: ; fcae2 (3f:4ae2)
- ld hl, wSprite01MapY - wSprite01SpriteStateData1
+ ld hl, wPikachuMapY - wPikachuSpriteStateData1
add hl, bc
ld a, [wYCoord]
add $4
@@ -1038,7 +1039,7 @@ Func_fcae2: ; fcae2 (3f:4ae2)
add $4
cp [hl]
jr nz, .on_screen
- ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1
+ ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1
add hl, bc
ld [hl], $ff
scf
diff --git a/engine/pikachu_movement.asm b/engine/pikachu_movement.asm
index fbb71ffd..65640cbd 100755
--- a/engine/pikachu_movement.asm
+++ b/engine/pikachu_movement.asm
@@ -5,7 +5,7 @@ ApplyPikachuMovementData_:: ; fd2a1 (3f:52a1)
ld [wPikachuMovementScriptAddress], a
ld a, h
ld [wPikachuMovementScriptAddress + 1], a
- call PikachuSwapSpriteStateData
+ call .SwapSpriteStateData
.loop
call LoadPikachuMovementCommandData
jr nc, .done
@@ -13,11 +13,11 @@ ApplyPikachuMovementData_:: ; fd2a1 (3f:52a1)
jr .loop
.done
- call PikachuSwapSpriteStateData
+ call .SwapSpriteStateData
call DelayFrame
ret
-PikachuSwapSpriteStateData:
+.SwapSpriteStateData:
ld a, [wUpdateSpritesEnabled]
push af
ld a, $ff
@@ -26,15 +26,15 @@ PikachuSwapSpriteStateData:
push de
push bc
- ld hl, wSpriteStateData1
+ ld hl, wPlayerSpriteStateData1
ld de, wPikachuSpriteStateData1
ld c, $10
- call SwapBytes3f
+ call .SwapBytes
- ld hl, wSpriteStateData2
+ ld hl, wPlayerSpriteStateData2
ld de, wPikachuSpriteStateData2
ld c, $10
- call SwapBytes3f
+ call .SwapBytes
pop bc
pop de
@@ -43,8 +43,7 @@ PikachuSwapSpriteStateData:
ld [wUpdateSpritesEnabled], a
ret
-SwapBytes3f:
-.loop
+.SwapBytes:
ld b, [hl]
ld a, [de]
ld [hli], a
@@ -52,7 +51,7 @@ SwapBytes3f:
ld [de], a
inc de
dec c
- jr nz, .loop
+ jr nz, .SwapBytes
ret
LoadPikachuMovementCommandData:
@@ -61,52 +60,52 @@ LoadPikachuMovementCommandData:
ret z
ld c, a
ld b, 0
- ld hl, Data_fd3b0
+ ld hl, PikachuMovementDatabase
add hl, bc
add hl, bc
add hl, bc
add hl, bc
ld a, [hli]
- ld [wPikaPicAnimPointer + 1], a
+ ld [wCurPikaMovementFunc1], a
ld a, [hli]
cp $80
jr nz, .no_param
call GetPikachuMovementScriptByte
.no_param
- ld [wPikaPicAnimPointer], a
+ ld [wCurPikaMovementParam1], a
ld a, [hli]
- ld [wPikaPicAnimCurGraphicID], a
+ ld [wCurPikaMovementFunc2], a
ld a, [hli]
cp $80
jr nz, .no_param2
call GetPikachuMovementScriptByte
.no_param2
- ld [wPikaPicAnimPointerSetupFinished], a
+ ld [wCurPikaMovementParam2], a
xor a
- ld [wPikaPicAnimTimer], a
+ ld [wd451], a
scf
ret
ExecutePikachuMovementCommand:
xor a
- ld [wd44d], a
- ld [wd457], a
- ld [wd458], a
+ ld [wPikachuMovementFlags], a
+ ld [wPikachuStepTimer], a
+ ld [wPikachuStepSubtimer], a
ld a, [wPlayerGrassPriority]
push af
.loop
- ld bc, wSpriteStateData1
- ld a, [wPikaPicAnimPointer + 1]
- ld hl, Jumptable_fd4ac
+ ld bc, wPlayerSpriteStateData1 ; Currently holds Pikachu's sprite state data
+ ld a, [wCurPikaMovementFunc1]
+ ld hl, PikaMovementFunc1Jumptable
call .JumpTable
- ld a, [wPikaPicAnimCurGraphicID]
- ld hl, Jumptable_fd65c
+ ld a, [wCurPikaMovementFunc2]
+ ld hl, PikaMovementFunc2Jumptable
call .JumpTable
- call Func_fd36e
- call Func_fd39d
+ call GetCoordsForPikachuShadow
+ call AnimatePikachuShadow
call DelayFrame
call DelayFrame
- ld hl, wd44d
+ ld hl, wPikachuMovementFlags
bit 7, [hl]
jr z, .loop
pop af
@@ -124,62 +123,65 @@ ExecutePikachuMovementCommand:
ld l, a
jp [hl]
-Func_fd36e:
- ld hl, 2
+GetCoordsForPikachuShadow:
+ ld hl, wPlayerSpriteImageIdx - wPlayerSpriteStateData1
add hl, bc
- ld a, [wPikaPicAnimTimer + 1]
+ ld a, [wCurPikaMovementSpriteImageIdx]
ld [hl], a
ld a, [wPikaSpriteY]
ld d, a
- ld a, [wd456]
+ ld a, [wPikachuMovementYOffset]
add d
- ld hl, 4
+ ld hl, wPlayerYPixels - wPlayerSpriteStateData1
add hl, bc
ld [hl], a
- ld a, [wPikaPicAnimDelay]
+ ld a, [wPikaSpriteX]
ld d, a
- ld a, [wPikaPicTextboxStartY]
+ ld a, [wPikachuMovementXOffset]
add d
- ld hl, 6
+ ld hl, wPlayerXPixels - wPlayerSpriteStateData1
add hl, bc
ld [hl], a
- ld hl, wd44d
+ ld hl, wPikachuMovementFlags
bit 6, [hl]
ret z
- ld hl, wPlayerGrassPriority - wSpriteStateData1
+ ld hl, wPlayerGrassPriority - wPlayerSpriteStateData1
add hl, bc
ld [hl], 0
ret
-Func_fd39d:
- ld hl, wd44d
+AnimatePikachuShadow:
+ ld hl, wPikachuMovementFlags
bit 6, [hl]
res 6, [hl]
ld hl, wd736
res 6, [hl]
ret z
set 6, [hl]
- call Func_fd7f3
+ call LoadPikachuShadowOAMData
ret
-Data_fd3b0:
- db $01, $00, $00, $00 ; $00
- db $03, $80, $01, $00 ; $01
- db $04, $80, $01, $00 ; $02
- db $05, $80, $01, $00 ; $03
- db $06, $80, $01, $00 ; $04
- db $07, $80, $01, $00 ; $05
- db $08, $80, $01, $00 ; $06
- db $09, $80, $01, $00 ; $07
- db $0a, $80, $01, $00 ; $08
- db $03, $80, $06, $00 ; $09
- db $04, $80, $06, $00 ; $0a
- db $05, $80, $06, $00 ; $0b
- db $06, $80, $06, $00 ; $0c
- db $07, $80, $06, $00 ; $0d
- db $08, $80, $06, $00 ; $0e
- db $09, $80, $06, $00 ; $0f
- db $0a, $80, $06, $00 ; $10
+PikachuMovementDatabase:
+ db $01, 1 - 1, $00, 1 - 1 ; $00 start
+
+ db $03, $80, $01, 1 - 1 ; $01
+ db $04, $80, $01, 1 - 1 ; $02
+ db $05, $80, $01, 1 - 1 ; $03
+ db $06, $80, $01, 1 - 1 ; $04
+ db $07, $80, $01, 1 - 1 ; $05
+ db $08, $80, $01, 1 - 1 ; $06
+ db $09, $80, $01, 1 - 1 ; $07
+ db $0a, $80, $01, 1 - 1 ; $08
+
+ db $03, $80, $06, 1 - 1 ; $09
+ db $04, $80, $06, 1 - 1 ; $0a
+ db $05, $80, $06, 1 - 1 ; $0b
+ db $06, $80, $06, 1 - 1 ; $0c
+ db $07, $80, $06, 1 - 1 ; $0d
+ db $08, $80, $06, 1 - 1 ; $0e
+ db $09, $80, $06, 1 - 1 ; $0f
+ db $0a, $80, $06, 1 - 1 ; $10
+
db $03, $80, $03, $80 ; $11
db $04, $80, $03, $80 ; $12
db $05, $80, $03, $80 ; $13
@@ -188,290 +190,296 @@ Data_fd3b0:
db $08, $80, $03, $80 ; $16
db $09, $80, $03, $80 ; $17
db $0a, $80, $03, $80 ; $18
+
db $03, $80, $07, $80 ; $19
db $04, $80, $07, $80 ; $1a
db $05, $80, $07, $80 ; $1b
db $06, $80, $07, $80 ; $1c
- db $0b, $27, $02, $00 ; $1d step down
- db $0c, $27, $02, $00 ; $1e step up
- db $0d, $27, $02, $00 ; $1f step left
- db $0e, $27, $02, $00 ; $20 step right
- db $0f, $27, $02, $00 ; $21
- db $10, $27, $02, $00 ; $22
- db $11, $27, $02, $00 ; $23
- db $12, $27, $02, $00 ; $24
- db $0b, $0f, $02, $00 ; $25
- db $0c, $0f, $02, $00 ; $26
- db $0d, $0f, $02, $00 ; $27
- db $0e, $0f, $02, $00 ; $28
- db $0f, $0f, $02, $00 ; $29
- db $10, $0f, $02, $00 ; $2a
- db $11, $0f, $02, $00 ; $2b
- db $12, $0f, $02, $00 ; $2c
- db $0b, $0f, $08, $17 ; $2d
- db $0c, $0f, $08, $17 ; $2e
- db $0d, $0f, $08, $17 ; $2f
- db $0e, $0f, $08, $17 ; $30
- db $0f, $0f, $08, $17 ; $31
- db $10, $0f, $08, $17 ; $32
- db $11, $0f, $08, $17 ; $33
- db $12, $0f, $08, $17 ; $34
- db $13, $0f, $06, $00 ; $35 look down
- db $14, $0f, $06, $00 ; $36 look up
- db $15, $0f, $06, $00 ; $37 look left
- db $16, $0f, $06, $00 ; $38 look right
- db $02, $80, $04, $00 ; $39
- db $02, $80, $05, $00 ; $3a
+
+ db $0b, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1d step down
+ db $0c, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1e step up
+ db $0d, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1f step left
+ db $0e, (1 << 5) | 8 - 1, $02, 1 - 1 ; $20 step right
+ db $0f, (1 << 5) | 8 - 1, $02, 1 - 1 ; $21 step down left
+ db $10, (1 << 5) | 8 - 1, $02, 1 - 1 ; $22 step down right
+ db $11, (1 << 5) | 8 - 1, $02, 1 - 1 ; $23 step up left
+ db $12, (1 << 5) | 8 - 1, $02, 1 - 1 ; $24 step up right
+
+ db $0b, 16 - 1, $02, 1 - 1 ; $25 slide down
+ db $0c, 16 - 1, $02, 1 - 1 ; $26 slide up
+ db $0d, 16 - 1, $02, 1 - 1 ; $27 slide left
+ db $0e, 16 - 1, $02, 1 - 1 ; $28 slide right
+ db $0f, 16 - 1, $02, 1 - 1 ; $29 slide down left
+ db $10, 16 - 1, $02, 1 - 1 ; $2a slide down right
+ db $11, 16 - 1, $02, 1 - 1 ; $2b slide up left
+ db $12, 16 - 1, $02, 1 - 1 ; $2c slide up right
+
+ db $0b, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2d hop down
+ db $0c, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2e hop up
+ db $0d, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2f hop left
+ db $0e, 16 - 1, $08, (1 << 4) | 8 - 1 ; $30 hop right
+ db $0f, 16 - 1, $08, (1 << 4) | 8 - 1 ; $31 hop down left
+ db $10, 16 - 1, $08, (1 << 4) | 8 - 1 ; $32 hop down right
+ db $11, 16 - 1, $08, (1 << 4) | 8 - 1 ; $33 hop up left
+ db $12, 16 - 1, $08, (1 << 4) | 8 - 1 ; $34 hop up right
+
+ db $13, 16 - 1, $06, 1 - 1 ; $35 look down
+ db $14, 16 - 1, $06, 1 - 1 ; $36 look up
+ db $15, 16 - 1, $06, 1 - 1 ; $37 look left
+ db $16, 16 - 1, $06, 1 - 1 ; $38 look right
+
+ db $02, $80, $04, 1 - 1 ; $39
+ db $02, $80, $05, 1 - 1 ; $3a
db $02, $80, $03, $80 ; $3b
db $02, $80, $07, $80 ; $3c
db $02, $80, $09, $80 ; $3d
- db $02, $80, $06, $00 ; $3e
-
-Jumptable_fd4ac:
- dw Func_fd4e5
- dw Func_fd4e9
- dw Func_fd504
- dw Func_fd50c
- dw Func_fd511
- dw Func_fd518
- dw Func_fd52c
- dw Func_fd540
- dw Func_fd553
- dw Func_fd566
- dw Func_fd579
- dw Func_fd5b1
- dw Func_fd5b5
- dw Func_fd5b9
- dw Func_fd5bd
- dw Func_fd5c1
- dw Func_fd5c5
- dw Func_fd5c9
- dw Func_fd5cd
- dw Func_fd5ea
- dw Func_fd5ee
- dw Func_fd5f2
- dw Func_fd5f6
- dw Func_fd4e5
-
-Func_fd4dc:
- ld a, [wd44d]
+ db $02, $80, $06, 1 - 1 ; $3e
+
+PikaMovementFunc1Jumptable:
+ dw PikaMovementFunc1_EndCommand_ ; 00
+ dw PikaMovementFunc1_LoadPikachuCurrentPosition ; 01
+ dw PikaMovementFunc1_DelayFrames ; 02
+ dw PikaMovementFunc1_WalkInCurrentFacingDirection ; 03
+ dw PikaMovementFunc1_WalkInOppositeFacingDirection ; 04
+ dw PikaMovementFunc1_StepTurningCounterclockwise ; 05
+ dw PikaMovementFunc1_StepTurningClockwise ; 06
+ dw PikaMovementFunc1_StepForwardLeft ; 07
+ dw PikaMovementFunc1_StepForwardRight ; 08
+ dw PikaMovementFunc1_StepBackwardLeft ; 09
+ dw PikaMovementFunc1_StepBackwardRight ; 0a
+ dw PikaMovementFunc1_MoveDown ; 0b
+ dw PikaMovementFunc1_MoveUp ; 0c
+ dw PikaMovementFunc1_MoveLeft ; 0d
+ dw PikaMovementFunc1_MoveRight ; 0e
+ dw PikaMovementFunc1_MoveDownLeft ; 0f
+ dw PikaMovementFunc1_MoveDownRight ; 10
+ dw PikaMovementFunc1_MoveUpLeft ; 11
+ dw PikaMovementFunc1_MoveUpRight ; 12
+ dw PikaMovementFunc1_LookDown ; 13
+ dw PikaMovementFunc1_LookUp ; 14
+ dw PikaMovementFunc1_LookLeft ; 15
+ dw PikaMovementFunc1_LookRight ; 16
+ dw PikaMovementFunc1_EndCommand_ ; 17
+
+PikaMovementFunc1_EndCommand:
+ ld a, [wPikachuMovementFlags]
set 7, a
- ld [wd44d], a
+ ld [wPikachuMovementFlags], a
ret
-Func_fd4e5:
- call Func_fd4dc
+PikaMovementFunc1_EndCommand_:
+ call PikaMovementFunc1_EndCommand
ret
-Func_fd4e9:
- ld hl, 4
+PikaMovementFunc1_LoadPikachuCurrentPosition:
+ ld hl, wPlayerYPixels - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
ld [wPikaSpriteY], a
- ld hl, 6
+ ld hl, wPlayerXPixels - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
- ld [wPikaPicAnimDelay], a
+ ld [wPikaSpriteX], a
xor a
- ld [wd456], a
- ld [wPikaPicTextboxStartY], a
- call Func_fd4dc
+ ld [wPikachuMovementYOffset], a
+ ld [wPikachuMovementXOffset], a
+ call PikaMovementFunc1_EndCommand
ret
-Func_fd504:
- call Func_fd775
+PikaMovementFunc1_DelayFrames:
+ call CheckPikachuStepTimer1
ret nz
- call Func_fd4dc
+ call PikaMovementFunc1_EndCommand
ret
-Func_fd50c:
- call GetObjectFacing
- jr asm_fd58c
+PikaMovementFunc1_WalkInCurrentFacingDirection:
+ call GetPikachuFacing
+ jr PikaMovementFunc1_ApplyStepVector
-Func_fd511:
- call GetObjectFacing
+PikaMovementFunc1_WalkInOppositeFacingDirection:
+ call GetPikachuFacing
xor %100
- jr asm_fd58c
-
-Func_fd518:
- call GetObjectFacing
- ld hl, Data_fd523
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd523:
- db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT
- db SPRITE_FACING_UP, SPRITE_FACING_LEFT
- db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN
- db SPRITE_FACING_RIGHT, SPRITE_FACING_UP
+ jr PikaMovementFunc1_ApplyStepVector
+
+PikaMovementFunc1_StepTurningCounterclockwise:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_RIGHT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_LEFT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP << 2
db $ff
-Func_fd52c:
- call GetObjectFacing
- ld hl, Data_fd537
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd537:
- db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT
- db SPRITE_FACING_UP, SPRITE_FACING_RIGHT
- db SPRITE_FACING_LEFT, SPRITE_FACING_UP
- db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN
+PikaMovementFunc1_StepTurningClockwise:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_LEFT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_RIGHT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_UP << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN << 2
db $ff
-Func_fd540:
- call GetObjectFacing
- ld hl, Data_fd54b
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd54b:
- db SPRITE_FACING_DOWN, SPRITE_FACING_UP | $10
- db SPRITE_FACING_UP, SPRITE_FACING_LEFT | $10
- db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN | $10
- db SPRITE_FACING_RIGHT, SPRITE_FACING_RIGHT | $10
-
-Func_fd553:
- call GetObjectFacing
- ld hl, Data_fd55e
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd55e:
- db SPRITE_FACING_DOWN, SPRITE_FACING_DOWN | $10
- db SPRITE_FACING_UP, SPRITE_FACING_RIGHT | $10
- db SPRITE_FACING_LEFT, SPRITE_FACING_LEFT | $10
- db SPRITE_FACING_RIGHT, SPRITE_FACING_UP | $10
-
-Func_fd566:
- call GetObjectFacing
- ld hl, Data_fd571
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd571:
- db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT | $10
- db SPRITE_FACING_UP, SPRITE_FACING_DOWN | $10
- db SPRITE_FACING_LEFT, SPRITE_FACING_UP | $10
- db SPRITE_FACING_RIGHT, SPRITE_FACING_LEFT | $10
-
-Func_fd579:
- call GetObjectFacing
- ld hl, Data_fd584
- call Func_fd5a0
- jr asm_fd58c
-
-Data_fd584:
- db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT | $10
- db SPRITE_FACING_UP, SPRITE_FACING_UP | $10
- db SPRITE_FACING_LEFT, SPRITE_FACING_RIGHT | $10
- db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN | $10
-
-asm_fd58c
+PikaMovementFunc1_StepForwardLeft:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_RIGHT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_UP_LEFT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_LEFT << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_RIGHT << 2
+
+PikaMovementFunc1_StepForwardRight:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_LEFT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_UP_RIGHT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_LEFT << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_RIGHT << 2
+
+PikaMovementFunc1_StepBackwardLeft:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_RIGHT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_LEFT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_RIGHT << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_LEFT << 2
+
+PikaMovementFunc1_StepBackwardRight:
+ call GetPikachuFacing
+ ld hl, .Data
+ call PikaMovementFunc1_GetNextFacing
+ jr PikaMovementFunc1_ApplyStepVector
+
+.Data:
+ db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_LEFT << 2
+ db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_RIGHT << 2
+ db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_RIGHT << 2
+ db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_LEFT << 2
+
+PikaMovementFunc1_ApplyStepVector:
rrca
rrca
and $7
ld e, a
- call Func_fd784
+ call GetPikachuStepVectorMagnitude
ld d, a
call UpdatePikachuPosition
- call Func_fd775
+ call CheckPikachuStepTimer1
ret nz
- call Func_fd4dc
+ call PikaMovementFunc1_EndCommand
ret
-Func_fd5a0:
+PikaMovementFunc1_GetNextFacing:
push de
ld d, a
-.asm_fd5a2
+.loop
ld a, [hli]
cp d
- jr z, .asm_fd5ad
+ jr z, .found
inc hl
cp $ff
- jr nz, .asm_fd5a2
+ jr nz, .loop
pop de
ret
-.asm_fd5ad
+.found
ld a, [hl]
pop de
scf
ret
-Func_fd5b1:
- ld a, SPRITE_FACING_DOWN >> 2
- jr asm_fd5d1
+PikaMovementFunc1_MoveDown:
+ ld a, PIKASTEPDIR_DOWN
+ jr PikaMovementFunc1_ApplyFacingAndMove
-Func_fd5b5:
- ld a, SPRITE_FACING_UP >> 2
- jr asm_fd5d1
+PikaMovementFunc1_MoveUp:
+ ld a, PIKASTEPDIR_UP
+ jr PikaMovementFunc1_ApplyFacingAndMove
-Func_fd5b9:
- ld a, SPRITE_FACING_LEFT >> 2
- jr asm_fd5d1
+PikaMovementFunc1_MoveLeft:
+ ld a, PIKASTEPDIR_LEFT
+ jr PikaMovementFunc1_ApplyFacingAndMove
-Func_fd5bd:
- ld a, SPRITE_FACING_RIGHT >> 2
- jr asm_fd5d1
+PikaMovementFunc1_MoveRight:
+ ld a, PIKASTEPDIR_RIGHT
+ jr PikaMovementFunc1_ApplyFacingAndMove
-Func_fd5c1:
- ld e, 4
- jr asm_fd5d5
+PikaMovementFunc1_MoveDownLeft:
+ ld e, PIKASTEPDIR_DOWN_LEFT
+ jr PikaMovementFunc1_MoveDiagonally
-Func_fd5c5:
- ld e, 5
- jr asm_fd5d5
+PikaMovementFunc1_MoveDownRight:
+ ld e, PIKASTEPDIR_DOWN_RIGHT
+ jr PikaMovementFunc1_MoveDiagonally
-Func_fd5c9:
- ld e, 6
- jr asm_fd5d5
+PikaMovementFunc1_MoveUpLeft:
+ ld e, PIKASTEPDIR_UP_LEFT
+ jr PikaMovementFunc1_MoveDiagonally
-Func_fd5cd:
- ld e, 7
- jr asm_fd5d5
+PikaMovementFunc1_MoveUpRight:
+ ld e, PIKASTEPDIR_UP_RIGHT
+ jr PikaMovementFunc1_MoveDiagonally
-asm_fd5d1
+PikaMovementFunc1_ApplyFacingAndMove:
ld e, a
- call SetObjectFacing
-asm_fd5d5
- call Func_fd784
+ call SetPikachuFacing
+PikaMovementFunc1_MoveDiagonally:
+ call GetPikachuStepVectorMagnitude
ld d, a
push de
call UpdatePikachuPosition
pop de
- call Func_fd775
+ call CheckPikachuStepTimer1
ret nz
ld a, e
- call Func_fd7cb
- call Func_fd4dc
+ call ApplyPikachuStepVector
+ call PikaMovementFunc1_EndCommand
ret
-Func_fd5ea:
- ld a, SPRITE_FACING_DOWN >> 2
- jr asm_fd5fa
+PikaMovementFunc1_LookDown:
+ ld a, PIKASTEPDIR_DOWN
+ jr PikaMovementFunc1_ApplyFacing
-Func_fd5ee:
- ld a, SPRITE_FACING_UP >> 2
- jr asm_fd5fa
+PikaMovementFunc1_LookUp:
+ ld a, PIKASTEPDIR_UP
+ jr PikaMovementFunc1_ApplyFacing
-Func_fd5f2:
- ld a, SPRITE_FACING_LEFT >> 2
- jr asm_fd5fa
+PikaMovementFunc1_LookLeft:
+ ld a, PIKASTEPDIR_LEFT
+ jr PikaMovementFunc1_ApplyFacing
-Func_fd5f6:
- ld a, SPRITE_FACING_RIGHT >> 2
- jr asm_fd5fa
+PikaMovementFunc1_LookRight:
+ ld a, PIKASTEPDIR_RIGHT
+ jr PikaMovementFunc1_ApplyFacing
-asm_fd5fa
- call SetObjectFacing
- call Func_fd4dc
+PikaMovementFunc1_ApplyFacing:
+ call SetPikachuFacing
+ call PikaMovementFunc1_EndCommand
ret
UpdatePikachuPosition:
push de
ld d, 0
- ld hl, Jumptable_fd60f
+ ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
@@ -481,217 +489,217 @@ UpdatePikachuPosition:
ld a, d
jp [hl]
-Jumptable_fd60f:
- dw MovePikachuSpriteDown
- dw MovePikachuSpriteUp
- dw MovePikachuSpriteLeft
- dw MovePikachuSpriteRight
- dw MovePikachuSpriteDownLeft
- dw MovePikachuSpriteDownRight
- dw MovePikachuSpriteUpLeft
- dw MovePikachuSpriteUpRight
-
-MovePikachuSpriteDown:
+.Jumptable:
+ dw .Down
+ dw .Up
+ dw .Left
+ dw .Right
+ dw .DownLeft
+ dw .DownRight
+ dw .UpLeft
+ dw .UpRight
+
+.Down:
ld d, 0
ld e, a
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteUp:
+.Up:
ld d, 0
cpl
inc a
ld e, a
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteLeft:
+.Left:
cpl
inc a
ld d, a
ld e, 0
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteRight:
+.Right:
ld d, a
ld e, 0
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteDownLeft:
+.DownLeft:
ld e, a
cpl
inc a
ld d, a
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteDownRight:
+.DownRight:
ld e, a
ld d, a
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteUpLeft:
+.UpLeft:
cpl
inc a
ld e, a
ld d, a
- jr asm_fd64d
+ jr .ApplyVector
-MovePikachuSpriteUpRight:
+.UpRight:
ld d, a
cpl
inc a
ld e, a
- jr asm_fd64d
+ jr .ApplyVector
-asm_fd64d
- ld a, [wPikaPicAnimDelay]
+.ApplyVector:
+ ld a, [wPikaSpriteX]
add d
- ld [wPikaPicAnimDelay], a
+ ld [wPikaSpriteX], a
ld a, [wPikaSpriteY]
add e
ld [wPikaSpriteY], a
ret
-Jumptable_fd65c:
- dw Func_fd678
- dw Func_fd6a3
- dw Func_fd698
- dw Func_fd6f4
- dw Func_fd6ff
- dw Func_fd718
- dw Func_fd68c
- dw Func_fd6c6
- dw Func_fd6c0
- dw Func_fd6e2
- dw Func_fd68b
-
-Func_fd672:
- ld hl, wd44d
+PikaMovementFunc2Jumptable:
+ dw PikaMovementFunc2_ResetFrameCounterAndFaceCurrent ; 0
+ dw PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection ; 1
+ dw PikaMovementFunc2_UpdateSpriteImageIdxWithFacing ; 2
+ dw PikaMovementFunc2_TurnParameter ; 3
+ dw PikaMovementFunc2_TurnClockwise ; 4
+ dw PikaMovementFunc2_TurnCounterClockwise ; 5
+ dw PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx ; 6
+ dw PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection ; 7
+ dw PikaMovementFunc2_UpdateJumpWithFacing ; 8
+ dw PikaMovementFunc2_CopyFacingToJump ; 9
+ dw PikaMovementFunc2_nop ; 10
+
+PikaMovement_SetSpawnShadow:
+ ld hl, wPikachuMovementFlags
set 6, [hl]
ret
-Func_fd678:
- ld hl, 7
+PikaMovementFunc2_ResetFrameCounterAndFaceCurrent:
+ ld hl, wPlayerIntraAnimFrameCounter - wPlayerSpriteStateData1
add hl, bc
xor a
ld [hli], a
ld [hl], a
- call Func_fd74a
+ call PikaMovementFunc2_GetImageBaseOffset
ld d, a
- call GetObjectFacing
+ call GetPikachuFacing
or d
- ld [wPikaPicAnimTimer + 1], a
+ ld [wCurPikaMovementSpriteImageIdx], a
ret
-Func_fd68b:
+PikaMovementFunc2_nop:
ret
-Func_fd68c:
- call Func_fd74a
+PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx:
+ call PikaMovementFunc2_GetImageBaseOffset
ld d, a
- call Func_fd755
+ call PikaMovementFunc2_GetSpriteImageIdxDirection
or d
- ld [wPikaPicAnimTimer + 1], a
+ ld [wCurPikaMovementSpriteImageIdx], a
ret
-Func_fd698:
- call Func_fd74a
+PikaMovementFunc2_UpdateSpriteImageIdxWithFacing:
+ call PikaMovementFunc2_GetImageBaseOffset
ld d, a
- call GetObjectFacing
+ call GetPikachuFacing
or d
ld d, a
- jr asm_fd6ac
+ jr PikaMovementFunc2_UpdateSpriteImageIdx
-Func_fd6a3:
- call Func_fd74a
+PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection:
+ call PikaMovementFunc2_GetImageBaseOffset
ld d, a
- call Func_fd755
+ call PikaMovementFunc2_GetSpriteImageIdxDirection
or d
ld d, a
-asm_fd6ac
- ld hl, 8
+PikaMovementFunc2_UpdateSpriteImageIdx:
+ ld hl, wPlayerAnimFrameCounter - wPlayerSpriteStateData1
add hl, bc
- call Func_fd78e
- jr nz, .asm_fd6b6
+ call CheckPikachuStepTimer2 ; does not preserve hl
+ jr nz, .skip
inc [hl]
-.asm_fd6b6
+.skip
ld a, [hl]
rrca
rrca
and 3
or d
- ld [wPikaPicAnimTimer + 1], a
+ ld [wCurPikaMovementSpriteImageIdx], a
ret
-Func_fd6c0:
- call GetObjectFacing
+PikaMovementFunc2_UpdateJumpWithFacing:
+ call GetPikachuFacing
ld d, a
- jr asm_fd6ca
+ jr PikaMovementFunc2_UpdateJump
-Func_fd6c6:
- call Func_fd755
+PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection:
+ call PikaMovementFunc2_GetSpriteImageIdxDirection
ld d, a
-asm_fd6ca
- call Func_fd74a
+PikaMovementFunc2_UpdateJump:
+ call PikaMovementFunc2_GetImageBaseOffset
or d
ld d, a
- call Func_fd736
+ call PikaMovementFunc2_Timer
or d
- ld [wPikaPicAnimTimer + 1], a
- call Func_fd79d
- ld [wd456], a
+ ld [wCurPikaMovementSpriteImageIdx], a
+ call PikaMovementFunc_Sine
+ ld [wPikachuMovementYOffset], a
and a
ret z
- call Func_fd672
+ call PikaMovement_SetSpawnShadow
ret
-Func_fd6e2:
- call GetObjectFacing
+PikaMovementFunc2_CopyFacingToJump:
+ call GetPikachuFacing
ld d, a
- call Func_fd74a
+ call PikaMovementFunc2_GetImageBaseOffset
or d
- ld [wPikaPicAnimTimer + 1], a
- call Func_fd79d
- ld [wd456], a
+ ld [wCurPikaMovementSpriteImageIdx], a
+ call PikaMovementFunc_Sine
+ ld [wPikachuMovementYOffset], a
ret
-Func_fd6f4:
- ld a, [wPikaPicAnimPointerSetupFinished]
+PikaMovementFunc2_TurnParameter:
+ ld a, [wCurPikaMovementParam2]
and $40
cp $40
- jr z, Func_fd6ff
- jr Func_fd718
+ jr z, PikaMovementFunc2_TurnClockwise
+ jr PikaMovementFunc2_TurnCounterClockwise
-Func_fd6ff:
- call Func_fd755
+PikaMovementFunc2_TurnClockwise:
+ call PikaMovementFunc2_GetSpriteImageIdxDirection
ld d, a
- call Func_fd78e
- jr nz, .asm_fd710
+ call CheckPikachuStepTimer2
+ jr nz, .skip
ld hl, Data_fd731
-.asm_fd70b
+.loop
ld a, [hli]
cp d
- jr nz, .asm_fd70b
+ jr nz, .loop
ld d, [hl]
-.asm_fd710
- call Func_fd74a
+.skip
+ call PikaMovementFunc2_GetImageBaseOffset
or d
- ld [wPikaPicAnimTimer + 1], a
+ ld [wCurPikaMovementSpriteImageIdx], a
ret
-Func_fd718:
- call Func_fd755
+PikaMovementFunc2_TurnCounterClockwise:
+ call PikaMovementFunc2_GetSpriteImageIdxDirection
ld d, a
- call Func_fd78e
- jr nz, .asm_fd529
+ call CheckPikachuStepTimer2
+ jr nz, .skip
ld hl, Data_fd731End
-.asm_fd524
+.loop
ld a, [hld]
cp d
- jr nz, .asm_fd524
+ jr nz, .loop
ld d, [hl]
-.asm_fd529
- call Func_fd74a
+.skip
+ call PikaMovementFunc2_GetImageBaseOffset
or d
- ld [wPikaPicAnimTimer + 1], a
+ ld [wCurPikaMovementSpriteImageIdx], a
ret
Data_fd731:
@@ -702,27 +710,27 @@ Data_fd731:
db SPRITE_FACING_DOWN
Data_fd731End:
-Func_fd736:
+PikaMovementFunc2_Timer:
push hl
- ld hl, 7
+ ld hl, wPlayerIntraAnimFrameCounter - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
inc a
and $3
ld [hli], a
- jr nz, .asm_fd747
+ jr nz, .load_pop
ld a, [hl]
inc a
and $3
ld [hl], a
-.asm_fd747
+.load_pop
ld a, [hl]
pop hl
ret
-Func_fd74a:
+PikaMovementFunc2_GetImageBaseOffset:
push hl
- ld hl, wSpriteStateData2 - wSpriteStateData1 + 14
+ ld hl, wPlayerSpriteImageBaseOffset - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
dec a
@@ -730,27 +738,27 @@ Func_fd74a:
pop hl
ret
-Func_fd755:
+PikaMovementFunc2_GetSpriteImageIdxDirection:
push hl
- ld hl, 2
+ ld hl, wPlayerSpriteImageIdx - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
and $c
pop hl
ret
-GetObjectFacing:
+GetPikachuFacing:
push hl
- ld hl, 9
+ ld hl, wPlayerFacingDirection - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
and $c
pop hl
ret
-SetObjectFacing:
+SetPikachuFacing:
push hl
- ld hl, 9
+ ld hl, wPlayerFacingDirection - wPlayerSpriteStateData1
add hl, bc
add a
add a
@@ -759,10 +767,10 @@ SetObjectFacing:
pop hl
ret
-Func_fd775:
- ld hl, wd457
+CheckPikachuStepTimer1:
+ ld hl, wPikachuStepTimer
inc [hl]
- ld a, [wPikaPicAnimPointer]
+ ld a, [wCurPikaMovementParam1]
and $1f
inc a
cp [hl]
@@ -770,18 +778,19 @@ Func_fd775:
ld [hl], 0
ret
-Func_fd784:
- ld a, [wPikaPicAnimPointer]
+GetPikachuStepVectorMagnitude:
+ ; *XX*****
+ ld a, [wCurPikaMovementParam1]
swap a
rrca
and $3
inc a
ret
-Func_fd78e:
- ld hl, wd458
+CheckPikachuStepTimer2:
+ ld hl, wPikachuStepSubtimer
inc [hl]
- ld a, [wPikaPicAnimPointerSetupFinished]
+ ld a, [wCurPikaMovementParam2]
and $f
inc a
cp [hl]
@@ -789,11 +798,11 @@ Func_fd78e:
ld [hl], 0
ret
-Func_fd79d:
- call Func_fd7b2
- ld a, [wd458]
+PikaMovementFunc_Sine:
+ call .GetArgument
+ ld a, [wPikachuStepSubtimer]
add e
- ld [wd458], a
+ ld [wPikachuStepSubtimer], a
add $20
ld e, a
push hl
@@ -803,37 +812,37 @@ Func_fd79d:
pop hl
ret
-Func_fd7b2:
- ld a, [wPikaPicAnimPointerSetupFinished]
+.GetArgument:
+ ld a, [wCurPikaMovementParam2]
and $f
inc a
ld d, a
- ld a, [wPikaPicAnimPointerSetupFinished]
+ ld a, [wCurPikaMovementParam2]
swap a
and $7
ld e, a
ld a, 1
- jr z, .asm_fd7c9
-.asm_fd7c5
+ jr z, .okay
+.loop
add a
dec e
- jr nz, .asm_fd7c5
-.asm_fd7c9
+ jr nz, .loop
+.okay
ld e, a
ret
-Func_fd7cb:
+ApplyPikachuStepVector:
push bc
ld c, a
ld b, 0
- ld hl, Data_fd7e3
+ ld hl, .StepVectors
add hl, bc
add hl, bc
ld d, [hl]
inc hl
ld e, [hl]
pop bc
- ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ ld hl, wPlayerMapY - wPlayerSpriteStateData1
add hl, bc
ld a, [hl]
add e
@@ -843,7 +852,7 @@ Func_fd7cb:
ld [hl], a
ret
-Data_fd7e3:
+.StepVectors:
db 0, 1
db 0, -1
db -1, 0
@@ -853,7 +862,7 @@ Data_fd7e3:
db -1, -1
db 1, -1
-Func_fd7f3:
+LoadPikachuShadowOAMData:
push bc
push de
push hl
@@ -861,22 +870,22 @@ Func_fd7f3:
ld bc, wOAMBuffer + 4 * 36
ld a, [wPikaSpriteY]
ld e, a
- ld a, [wPikaPicAnimDelay]
+ ld a, [wPikaSpriteX]
ld d, a
- ld hl, Data_fd80b
- call Func_fd814
+ ld hl, .OAMData
+ call .LoadOAMData
pop hl
pop de
pop bc
ret
-Data_fd80b:
- db $02
+.OAMData:
+ db 2
db $0c, $00, $ff, 0
db $0c, $08, $ff, 1 << OAM_X_FLIP
-Func_fd814:
+.LoadOAMData:
ld a, e
add $10
ld e, a
@@ -884,7 +893,7 @@ Func_fd814:
add $8
ld d, a
ld a, [hli]
-.asm_fd81d
+.loop
push af
ld a, [hli]
add e
@@ -902,7 +911,7 @@ Func_fd814:
inc bc
pop af
dec a
- jr nz, .asm_fd81d
+ jr nz, .loop
ret
LoadPikachuShadowIntoVRAM:
@@ -924,7 +933,7 @@ LoadPikachuBallIconIntoVRAM:
Func_fd851:
ld hl, vNPCSprites + $c * $10
ld a, 3
-.asm_fd856
+.loop
push af
push hl
ld de, GFX_fd86b
@@ -935,7 +944,7 @@ Func_fd851:
add hl, de
pop af
dec a
- jr nz, .asm_fd856
+ jr nz, .loop
ret
GFX_fd86b:
diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm
index a49e9bc2..be31e7d7 100755
--- a/engine/pikachu_pic_animation.asm
+++ b/engine/pikachu_pic_animation.asm
@@ -2,25 +2,25 @@ GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978)
ld hl, PikachuMoodLookupTable
ld a, [wPikachuMood]
ld d, a
-.asm_fd97f
+.get_mood_param
ld a, [hli]
inc hl
cp d
- jr c, .asm_fd97f
+ jr c, .get_mood_param
dec hl
ld e, [hl]
ld hl, PikaPicAnimationScriptPointerLookupTable
ld a, [wPikachuHappiness]
ld d, a
ld bc, 6
-.asm_fd990
+.get_happiness_param
ld a, [hl]
cp d
- jr nc, .asm_fd997
+ jr nc, .got_animation
add hl, bc
- jr .asm_fd990
+ jr .get_happiness_param
-.asm_fd997
+.got_animation
ld d, 0
add hl, de
ld a, [hl]
@@ -29,22 +29,63 @@ GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978)
PikachuMoodLookupTable:
; First byte: mood threshold
; Second byte: column index in PikaPicAnimationScriptPointerLookupTable
- db $28, 1
- db $7f, 2
- db $80, 3
- db $d2, 4
- db $ff, 5
+ db 40, 1
+ db 127, 2
+ db 128, 3
+ db 210, 4
+ db 255, 5
PikaPicAnimationScriptPointerLookupTable:
; First byte: happiness threshold
; Remaining bytes: loaded based on Pikachu's mood
- db $32, $0e, $0e, $06, $0d, $0d
- db $64, $09, $09, $05, $0c, $0c
- db $82, $03, $03, $01, $08, $08
- db $a0, $03, $03, $04, $0f, $0f
- db $c8, $11, $11, $07, $02, $02
- db $fa, $11, $11, $10, $0a, $0a
- db $ff, $11, $11, $13, $14, $14
+ db 50
+ dpikapic PikaPicAnimScript14
+ dpikapic PikaPicAnimScript14
+ dpikapic PikaPicAnimScript6
+ dpikapic PikaPicAnimScript13
+ dpikapic PikaPicAnimScript13
+
+ db 100
+ dpikapic PikaPicAnimScript9
+ dpikapic PikaPicAnimScript9
+ dpikapic PikaPicAnimScript5
+ dpikapic PikaPicAnimScript12
+ dpikapic PikaPicAnimScript12
+
+ db 130
+ dpikapic PikaPicAnimScript3
+ dpikapic PikaPicAnimScript3
+ dpikapic PikaPicAnimScript1
+ dpikapic PikaPicAnimScript8
+ dpikapic PikaPicAnimScript8
+
+ db 160
+ dpikapic PikaPicAnimScript3
+ dpikapic PikaPicAnimScript3
+ dpikapic PikaPicAnimScript4
+ dpikapic PikaPicAnimScript15
+ dpikapic PikaPicAnimScript15
+
+ db 200
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript7
+ dpikapic PikaPicAnimScript2
+ dpikapic PikaPicAnimScript2
+
+ db 250
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript16
+ dpikapic PikaPicAnimScript10
+ dpikapic PikaPicAnimScript10
+
+ db 255
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript17
+ dpikapic PikaPicAnimScript19
+ dpikapic PikaPicAnimScript20
+ dpikapic PikaPicAnimScript20
StarterPikachuEmotionCommand_pikapic: ; fd9d0 (3f:59d0)
ld a, [H_AUTOBGTRANSFERENABLED]
@@ -52,21 +93,21 @@ StarterPikachuEmotionCommand_pikapic: ; fd9d0 (3f:59d0)
xor a
ld [H_AUTOBGTRANSFERENABLED], a
ld a, [de]
- ld [wExpressionNumber2], a
+ ld [wPikaPicAnimNumber], a
inc de
push de
- call Func_fd9e4
+ call .RunPikapic
pop de
pop af
ld [H_AUTOBGTRANSFERENABLED], a
ret
-Func_fd9e4:
+.RunPikapic:
call PlacePikapicTextBoxBorder
callab LoadOverworldPikachuFrontpicPalettes
call ResetPikaPicAnimBuffer
call LoadCurrentPikaPicAnimScriptPointer
- call Func_fda9a
+ call ExecutePikaPicAnimScript
call PlacePikapicTextBoxBorder
call RunDefaultPaletteCommand
ret
@@ -86,10 +127,10 @@ ResetPikaPicAnimBuffer:
ld [wPikaPicAnimTimer], a
ld a, h
ld [wPikaPicAnimTimer + 1], a
- ld a, $07
- ld [wPikaSpriteY], a
- ld a, $06
- ld [wPikaPicTextboxStartY], a
+ ld a, $7
+ ld [wPikaPicPikaDrawStartX], a
+ ld a, $6
+ ld [wPikaPicPikaDrawStartY], a
ret
PlacePikapicTextBoxBorder:
@@ -100,20 +141,20 @@ PlacePikapicTextBoxBorder:
call TextBoxBorder
call Delay3
call UpdateSprites
- ld a, $01
+ ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call Delay3
ret
LoadCurrentPikaPicAnimScriptPointer:
- ld a, [wExpressionNumber2]
+ ld a, [wPikaPicAnimNumber]
cp $1d
jr c, .valid
- ld a, 0
+ ld a, $0
.valid
ld e, a
ld d, 0
- ld hl, Pointers_fda5e
+ ld hl, PikaPicAnimPointers
add hl, de
add hl, de
ld a, [hli]
@@ -122,48 +163,51 @@ LoadCurrentPikaPicAnimScriptPointer:
call UpdatePikaPicAnimPointer
ret
-Pointers_fda5e:
- dw Data_fe28a ; 00
- dw Data_fe28a ; 01
- dw Data_fe2a4 ; 02
- dw Data_fe2be ; 03
- dw Data_fe2d8 ; 04
- dw Data_fe2f2 ; 05
- dw Data_fe30c ; 06
- dw Data_fe326 ; 07
- dw Data_fe340 ; 08
- dw Data_fe35a ; 09
- dw Data_fe374 ; 0a
- dw Data_fe390 ; 0b
- dw Data_fe3aa ; 0c
- dw Data_fe3c4 ; 0d
- dw Data_fe3de ; 0e
- dw Data_fe3f8 ; 0f
- dw Data_fe412 ; 10
- dw Data_fe42c ; 11
- dw Data_fe446 ; 12
- dw Data_fe460 ; 13
- dw Data_fe47a ; 14
- dw Data_fe494 ; 15
- dw Data_fe4b4 ; 16
- dw Data_fe4ce ; 17
- dw Data_fe4e8 ; 18
- dw Data_fe502 ; 19
- dw Data_fe520 ; 1a
- dw Data_fe53e ; 1b
- dw Data_fe558 ; 1c
- dw Data_fe28a ; 1d
-
-
-Func_fda9a:
+PikaPicAnimPointers:
+pikapic_def: macro
+\1_id: dw \1
+endm
+
+ pikapic_def PikaPicAnimScript0 ; 00
+ pikapic_def PikaPicAnimScript1 ; 01
+ pikapic_def PikaPicAnimScript2 ; 02
+ pikapic_def PikaPicAnimScript3 ; 03
+ pikapic_def PikaPicAnimScript4 ; 04
+ pikapic_def PikaPicAnimScript5 ; 05
+ pikapic_def PikaPicAnimScript6 ; 06
+ pikapic_def PikaPicAnimScript7 ; 07
+ pikapic_def PikaPicAnimScript8 ; 08
+ pikapic_def PikaPicAnimScript9 ; 09
+ pikapic_def PikaPicAnimScript10 ; 0a
+ pikapic_def PikaPicAnimScript11 ; 0b
+ pikapic_def PikaPicAnimScript12 ; 0c
+ pikapic_def PikaPicAnimScript13 ; 0d
+ pikapic_def PikaPicAnimScript14 ; 0e
+ pikapic_def PikaPicAnimScript15 ; 0f
+ pikapic_def PikaPicAnimScript16 ; 10
+ pikapic_def PikaPicAnimScript17 ; 11
+ pikapic_def PikaPicAnimScript18 ; 12
+ pikapic_def PikaPicAnimScript19 ; 13
+ pikapic_def PikaPicAnimScript20 ; 14
+ pikapic_def PikaPicAnimScript21 ; 15
+ pikapic_def PikaPicAnimScript22 ; 16
+ pikapic_def PikaPicAnimScript23 ; 17
+ pikapic_def PikaPicAnimScript24 ; 18
+ pikapic_def PikaPicAnimScript25 ; 19
+ pikapic_def PikaPicAnimScript26 ; 1a
+ pikapic_def PikaPicAnimScript27 ; 1b
+ pikapic_def PikaPicAnimScript28 ; 1c
+ pikapic_def PikaPicAnimScript29 ; 1d
+
+ExecutePikaPicAnimScript:
.loop
xor a
ld [H_AUTOBGTRANSFERENABLED], a
- call RunPikaPicAnimScript
- call Func_fdad5
- call Func_fdad6
- call Func_fdad5
- ld a, $01
+ call RunPikaPicAnimSetupScript
+ call DummyFunction_fdad5
+ call AnimateCurrentPikaPicAnimFrame
+ call DummyFunction_fdad5
+ ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call PikaPicAnimTimerAndJoypad
and a
@@ -194,57 +238,57 @@ CheckPikaPicAnimTimer:
ret
.timer_expired
- ld a, $01
+ ld a, $1
ret
-Func_fdad5:
+DummyFunction_fdad5:
ret
-Func_fdad6:
+AnimateCurrentPikaPicAnimFrame:
ld bc, wPikaPicAnimObjectDataBuffer
ld a, 4
-.asm_fdadb
+.loop
push af
push bc
- ld hl, 0
+ ld hl, 0 ; struct index
add hl, bc
ld a, [hli]
and a
- jr z, .asm_fdb26
+ jr z, .skip
ld a, [hli]
- ld [wCurPikaPicAnimObject], a
+ ld [wCurPikaPicAnimObjectScriptIdx], a
ld a, [hli]
- ld [wCurPikaPicAnimObject + 1], a
+ ld [wCurPikaPicAnimObjectFrameIdx], a
ld a, [hli]
- ld [wCurPikaPicAnimObject + 2], a
+ ld [wCurPikaPicAnimObjectFrameTimer], a
ld a, [hli]
- ld [wd456], a
+ ld [wCurPikaPicAnimObjectVTileOffset], a
ld a, [hli]
- ld [wd457], a
+ ld [wCurPikaPicAnimObjectXOffset], a
ld a, [hli]
- ld [wd458], a
+ ld [wCurPikaPicAnimObjectYOffset], a
ld a, [hli]
- ld [wCurPikaPicAnimObject + 3], a
+ ld [wCurPikaPicAnimObject + 6], a
push bc
- call Func_fdb7e
+ call LoadPikaPicAnimObjectData
pop bc
- ld hl, 1
+ ld hl, 1 ; script index
add hl, bc
- ld a, [wCurPikaPicAnimObject]
+ ld a, [wCurPikaPicAnimObjectScriptIdx]
ld [hli], a
- ld a, [wCurPikaPicAnimObject + 1]
+ ld a, [wCurPikaPicAnimObjectFrameIdx]
ld [hli], a
- ld a, [wCurPikaPicAnimObject + 2]
+ ld a, [wCurPikaPicAnimObjectFrameTimer]
ld [hli], a
- ld a, [wd456]
+ ld a, [wCurPikaPicAnimObjectVTileOffset]
ld [hli], a
- ld a, [wd457]
+ ld a, [wCurPikaPicAnimObjectXOffset]
ld [hli], a
- ld a, [wd458]
+ ld a, [wCurPikaPicAnimObjectYOffset]
ld [hli], a
- ld a, [wCurPikaPicAnimObject + 3]
+ ld a, [wCurPikaPicAnimObject + 6]
ld [hl], a
-.asm_fdb26
+.skip
pop bc
ld hl, 8
add hl, bc
@@ -252,7 +296,7 @@ Func_fdad6:
ld c, l
pop af
dec a
- jr nz, .asm_fdadb
+ jr nz, .loop
ret
PikaPicAnimCommand_object:
@@ -279,7 +323,7 @@ PikaPicAnimCommand_object:
call GetPikaPicAnimByte
ld [hl], a
xor a
- ld [hli], a
+ ld [hli], a ; overloads
ld [hli], a
call GetPikaPicAnimByte
ld [hli], a
@@ -311,323 +355,65 @@ PikaPicAnimCommand_deleteobject:
ld [hl], a
ret
-Func_fdb7e:
-.asm_fdb7e
- ld a, [wCurPikaPicAnimObject]
+LoadPikaPicAnimObjectData:
+.loop
+ ld a, [wCurPikaPicAnimObjectScriptIdx]
cp $23
- jr c, .asm_fdb87
- ld a, $04
-.asm_fdb87
+ jr c, .valid
+ ld a, $4
+.valid
ld e, a
- ld d, $00
- ld hl, Pointers_fdbc9
+ ld d, 0
+ ld hl, PikaPicAnimBGFramesPointers
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wCurPikaPicAnimObject + 1]
+ ld a, [wCurPikaPicAnimObjectFrameIdx]
ld e, a
ld d, 0
add hl, de
add hl, de
ld a, [hli]
cp $e0
- jr z, .asm_fdba1
- jr .asm_fdbaa
+ jr z, .end
+ jr .init
-.asm_fdba1
+.end
xor a
- ld [wCurPikaPicAnimObject + 1], a
- ld [wCurPikaPicAnimObject + 2], a
- jr .asm_fdb7e
+ ld [wCurPikaPicAnimObjectFrameIdx], a
+ ld [wCurPikaPicAnimObjectFrameTimer], a
+ jr .loop
-.asm_fdbaa
+.init
push hl
- call Func_fdd62
+ call LoadCurPikaPicObjectTilemap
pop hl
ld a, [hl]
and a
- jr z, .asm_fdbc8
- ld a, [wCurPikaPicAnimObject + 2]
+ jr z, .not_done ; lasts forever
+ ld a, [wCurPikaPicAnimObjectFrameTimer]
inc a
- ld [wCurPikaPicAnimObject + 2], a
+ ld [wCurPikaPicAnimObjectFrameTimer], a
cp [hl]
- jr nz, .asm_fdbc8
+ jr nz, .not_done
xor a
- ld [wCurPikaPicAnimObject + 2], a
- ld a, [wCurPikaPicAnimObject + 1]
+ ld [wCurPikaPicAnimObjectFrameTimer], a
+ ld a, [wCurPikaPicAnimObjectFrameIdx]
inc a
- ld [wCurPikaPicAnimObject + 1], a
-.asm_fdbc8
+ ld [wCurPikaPicAnimObjectFrameIdx], a
+.not_done
ret
-Pointers_fdbc9:
- dw Data_fdc11
- dw Data_fdc11
- dw Data_fdc29
- dw Data_fdc32
- dw Data_fdc3b
- dw Data_fdc3e
- dw Data_fdc41
- dw Data_fdc50
- dw Data_fdc61
- dw Data_fdc6e
- dw Data_fdc77
- dw Data_fdc84
- dw Data_fdc8d
- dw Data_fdc98
- dw Data_fdca5
- dw Data_fdcb2
- dw Data_fdcb7
- dw Data_fdcc2
- dw Data_fdccb
- dw Data_fdcd4
- dw Data_fdcdf
- dw Data_fdce8
- dw Data_fdcf1
- dw Data_fdcf6
- dw Data_fdd01
- dw Data_fdd0a
- dw Data_fdd13
- dw Data_fdd1c
- dw Data_fdd27
- dw Data_fdd2c
- dw Data_fdd35
- dw Data_fdd40
- dw Data_fdd47
- dw Data_fdd54
- dw Data_fdd59
- dw Data_fdc3b
-
-Data_fdc11:
- db $01, $14
- db $07, $02
- db $01, $01
- db $07, $02
- db $01, $01
- db $07, $08
- db $e0
-Data_fdc1e:
- db $02, $02
- db $01, $01
- db $02, $02
- db $01, $01
- db $02, $08
- db $e0
-Data_fdc29:
- db $00, $08
- db $08, $08
- db $00, $08
- db $08, $08
- db $e0
-Data_fdc32:
- db $08, $08
- db $00, $08
- db $08, $08
- db $00, $08
- db $e0
-Data_fdc3b:
- db $01, $00
- db $e0
-Data_fdc3e:
- db $09, $00
- db $e0
-Data_fdc41:
- db $00, $02
- db $0e, $04
- db $00, $08
- db $0e, $04
- db $00, $40
- db $0e, $04
- db $00, $40
- db $e0
-Data_fdc50:
- db $00, $04
- db $0f, $04
- db $00, $04
- db $0f, $04
- db $00, $08
- db $0f, $04
- db $00, $08
- db $0f, $04
- db $e0
-Data_fdc61:
- db $10, $01
- db $00, $01
- db $10, $01
- db $00, $40
- db $10, $01
- db $00, $40
- db $e0
-Data_fdc6e:
- db $00, $08
- db $11, $08
- db $00, $14
- db $11, $08
- db $e0
-Data_fdc77:
- db $00, $02
- db $12, $02
- db $00, $02
- db $12, $40
- db $00, $03
- db $12, $40
- db $e0
-Data_fdc84:
- db $00, $08
- db $13, $40
- db $00, $04
- db $13, $40
- db $e0
-Data_fdc8d:
- db $14, $08
- db $00, $02
- db $14, $08
- db $00, $02
- db $14, $08
- db $e0
-Data_fdc98:
- db $15, $04
- db $00, $08
- db $15, $04
- db $00, $40
- db $15, $04
- db $00, $40
- db $e0
-Data_fdca5:
- db $00, $02
- db $16, $02
- db $00, $02
- db $16, $02
- db $00, $14
- db $16, $02
- db $e0
-Data_fdcb2:
- db $00, $08
- db $17, $08
- db $e0
-Data_fdcb7:
- db $00, $08
- db $17, $03
- db $18, $05
- db $17, $03
- db $00, $05
- db $e0
-Data_fdcc2:
- db $00, $14
- db $19, $08
- db $00, $14
- db $19, $08
- db $e0
-Data_fdccb:
- db $00, $0d
- db $1a, $0c
- db $00, $64
- db $1a, $08
- db $e0
-Data_fdcd4:
- db $00, $05
- db $1b, $05
- db $00, $05
- db $1b, $05
- db $00, $64
- db $e0
-Data_fdcdf:
- db $00, $02
- db $1c, $02
- db $00, $02
- db $1c, $02
- db $e0
-Data_fdce8:
- db $00, $05
- db $1d, $05
- db $00, $05
- db $1d, $05
- db $e0
-Data_fdcf1:
- db $1e, $08
- db $00, $64
- db $e0
-Data_fdcf6:
- db $00, $0a
- db $1f, $03
- db $00, $03
- db $1f, $03
- db $00, $64
- db $e0
-Data_fdd01:
- db $00, $03
- db $20, $64
- db $00, $08
- db $20, $08
- db $e0
-Data_fdd0a:
- db $21, $06
- db $00, $06
- db $21, $06
- db $00, $06
- db $e0
-Data_fdd13:
- db $00, $08
- db $22, $0c
- db $00, $08
- db $22, $0c
- db $e0
-Data_fdd1c:
- db $00, $08
- db $09, $02
- db $0a, $01
- db $0b, $01
- db $0c, $64
- db $e0
-Data_fdd27:
- db $00, $08
- db $24, $64
- db $e0
-Data_fdd2c:
- db $00, $10
- db $25, $10
- db $00, $10
- db $25, $10
- db $e0
-Data_fdd35:
- db $00, $06
- db $26, $06
- db $00, $06
- db $26, $06
- db $00, $64
- db $e0
-Data_fdd40:
- db $00, $06
- db $09, $06
- db $0a, $64
- db $e0
-Data_fdd47:
- db $00, $14
- db $09, $08
- db $00, $14
- db $09, $08
- db $0a, $08
- db $0b, $64
- db $e0
-Data_fdd54:
- db $00, $04
- db $09, $64
- db $e0
-Data_fdd59:
- db $00, $0c
- db $09, $0c
- db $00, $0c
- db $09, $64
- db $e0
-
-Func_fdd62:
+INCLUDE "data/pikachu_pic_objects.asm"
+
+LoadCurPikaPicObjectTilemap:
and a
ret z
ld e, a
ld d, 0
- ld hl, Pointers_fddb8
+ ld hl, PikaPicTilemapPointers
add hl, de
add hl, de
ld e, [hl]
@@ -641,45 +427,45 @@ Func_fdd62:
inc de
push de
push bc
- call Func_fdd98
+ call .GetStartCoords
pop bc
pop de
-.asm_fdd7c
+.row
push bc
push hl
- ld a, [wd456]
+ ld a, [wCurPikaPicAnimObjectVTileOffset] ; tile id offset
ld c, a
-.asm_fdd82
+.col
ld a, [de]
inc de
cp $ff
- jr z, .asm_fdd8a
+ jr z, .skip
add c
ld [hl], a
-.asm_fdd8a
+.skip
inc hl
dec b
- jr nz, .asm_fdd82
+ jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec c
- jr nz, .asm_fdd7c
+ jr nz, .row
ret
-Func_fdd98:
+.GetStartCoords:
push bc
- ld a, [wd458]
+ ld a, [wCurPikaPicAnimObjectYOffset] ; Y offset
ld b, a
- ld a, [wPikaPicTextboxStartY]
+ ld a, [wPikaPicPikaDrawStartY]
add b
coord hl, 0, 0
ld bc, SCREEN_WIDTH
call AddNTimes
- ld a, [wd457]
+ ld a, [wCurPikaPicAnimObjectXOffset] ; X offset
ld c, a
- ld a, [wPikaSpriteY]
+ ld a, [wPikaPicPikaDrawStartX]
add c
ld c, a
ld b, 0
@@ -687,234 +473,7 @@ Func_fdd98:
pop bc
ret
-Pointers_fddb8:
- dw Data_fde0e
- dw Data_fde0f
- dw Data_fde2a
- dw Data_fde60
- dw Data_fde63
- dw Data_fde67
- dw Data_fde6b
- dw Data_fde45
- dw Data_fde6b
- dw Data_fdfaa
- dw Data_fdfc5
- dw Data_fdfe0
- dw Data_fdffb
- dw Data_fe016
- dw Data_fde81
- dw Data_fde9c
- dw Data_fdeb7
- dw Data_fded2
- dw Data_fdeed
- dw Data_fdf08
- dw Data_fdf23
- dw Data_fdf3e
- dw Data_fdf59
- dw Data_fdf74
- dw Data_fdf8f
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfaa
- dw Data_fdfc5
- dw Data_fdfe0
- dw Data_fde0f
-
-Data_fde0e:
- db $ff ; unused
-
-Data_fde0f: ; fde0f
- db 5, 5
- db $00, $05, $0a, $0f, $14
- db $01, $06, $0b, $10, $15
- db $02, $07, $0c, $11, $16
- db $03, $08, $0d, $12, $17
- db $04, $09, $0e, $13, $18
-
-Data_fde2a: ; fde2a
- db 5, 5
- db $19, $1e, $23, $28, $2d
- db $1a, $1f, $24, $29, $2e
- db $1b, $20, $25, $2a, $2f
- db $1c, $21, $26, $2b, $30
- db $1d, $22, $27, $2c, $31
-
-Data_fde45: ; fde45
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $20, $25, $ff, $ff
- db $ff, $21, $26, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fde60: ; fde60
- db 1, 1
- db $00
-
-Data_fde63: ; fde63
- db 2, 1
- db $00
- db $01
-
-Data_fde67: ; fde67
- db 1, 2
- db $00, $01
-
-Data_fde6b: ; fde6b
- db 2, 2
- db $00, $01
- db $02, $03
-
-Data_fde71: ; fde71
- db 3, 2
- db $00, $01
- db $02, $03
- db $04, $05
-
-Data_fde79: ; fde79
- db 2, 3
- db $00, $01, $02
- db $03, $04, $05
-
-Data_fde81: ; fde81
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $02, $03, $04
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fde9c: ; fde9c
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
-
-Data_fdeb7: ; fdeb7
- db 5, 5
- db $00, $01, $ff, $ff, $ff
- db $02, $03, $ff, $ff, $ff
- db $04, $05, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fded2: ; fded2
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
- db $0a, $0b, $0c, $0d, $0e
- db $0f, $10, $11, $12, $13
-
-Data_fdeed: ; fdeed
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $00, $01
- db $ff, $ff, $ff, $02, $03
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fdf08: ; fdf08
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $ff, $ff, $ff
- db $02, $03, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fdf23: ; fdf23
- db 5, 5
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
- db $0a, $0b, $0c, $0d, $0e
- db $0f, $10, $11, $12, $13
- db $14, $15, $16, $17, $18
-
-Data_fdf3e: ; fdf3e
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
- db $ff, $ff, $ff, $ff, $ff
-
-Data_fdf59: ; fdf59
- db 5, 5
- db $ff, $ff, $ff, $ff, $ff
- db $ff, $ff, $ff, $ff, $ff
- db $00, $01, $ff, $ff, $ff
- db $02, $03, $ff, $ff, $ff
- db $04, $05, $ff, $ff, $ff
-
-Data_fdf74: ; fdf74
- db 5, 5
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
- db $0a, $0b, $0c, $0d, $0e
- db $0f, $10, $11, $12, $13
- db $14, $15, $16, $17, $18
-
-Data_fdf8f: ; fdf8f
- db 5, 5
- db $19, $1a, $1b, $1c, $1d
- db $1e, $1f, $20, $21, $22
- db $23, $24, $25, $26, $27
- db $28, $29, $2a, $2b, $2c
- db $2d, $2e, $2f, $30, $31
-
-Data_fdfaa: ; fdfaa
- db 5, 5
- db $00, $01, $02, $03, $04
- db $05, $06, $07, $08, $09
- db $0a, $0b, $0c, $0d, $0e
- db $0f, $10, $11, $12, $13
- db $14, $15, $16, $17, $18
-
-Data_fdfc5: ; fdfc5
- db 5, 5
- db $19, $1a, $1b, $1c, $1d
- db $1e, $1f, $20, $21, $22
- db $23, $24, $25, $26, $27
- db $28, $29, $2a, $2b, $2c
- db $2d, $2e, $2f, $30, $31
-
-Data_fdfe0: ; fdfe0
- db 5, 5
- db $32, $33, $34, $35, $36
- db $37, $38, $39, $3a, $3b
- db $3c, $3d, $3e, $3f, $40
- db $41, $42, $43, $44, $45
- db $46, $47, $48, $49, $4a
-
-Data_fdffb: ; fdffb
- db 5, 5
- db $4b, $4c, $4d, $4e, $4f
- db $50, $51, $52, $53, $54
- db $55, $56, $57, $58, $59
- db $5a, $5b, $5c, $5d, $5e
- db $5f, $60, $61, $62, $63
-
-Data_fe016: ; fe016
- db 5, 5
- db $64, $65, $66, $67, $68
- db $69, $6a, $6b, $6c, $6d
- db $6e, $6f, $70, $71, $72
- db $73, $74, $75, $76, $77
- db $78, $79, $7a, $7b, $7c
+INCLUDE "data/pikachu_pic_tilemaps.asm"
LoadPikaPicAnimGFXHeader:
push hl
@@ -936,8 +495,8 @@ LoadPikaPicAnimGFXHeader:
pop hl
ret
-RunPikaPicAnimScript:
- call Func_fe066
+RunPikaPicAnimSetupScript:
+ call .CheckAndAdvanceTimer
ret c
xor a
ld [wPikaPicAnimPointerSetupFinished], a
@@ -945,7 +504,7 @@ RunPikaPicAnimScript:
call GetPikaPicAnimByte
ld e, a
ld d, 0
- ld hl, Jumptable_fe071
+ ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
@@ -957,7 +516,7 @@ RunPikaPicAnimScript:
jr z, .loop
ret
-Func_fe066:
+.CheckAndAdvanceTimer:
ld a, [wPikaPicAnimDelay]
and a
ret z
@@ -966,7 +525,7 @@ Func_fe066:
scf
ret
-Jumptable_fe071:
+.Jumptable:
dw PikaPicAnimCommand_nop ; 00, 0 params
dw PikaPicAnimCommand_writebyte ; 01, 1 param
dw PikaPicAnimCommand_loadgfx ; 02, 1 param
@@ -980,7 +539,7 @@ Jumptable_fe071:
dw PikaPicAnimCommand_setduration ; 0a, 1 dw param
dw PikaPicAnimCommand_cry ; 0b, 1 param
dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params
- dw PikaPicAnimCommand_waitbgmap ; 0d, 0 params (ret)
+ dw PikaPicAnimCommand_run ; 0d, 0 params (ret)
dw PikaPicAnimCommand_ret ; 0e, 0 params (ret)
PikaPicAnimCommand_nop:
@@ -991,9 +550,9 @@ PikaPicAnimCommand_ret:
ld [wPikaPicAnimTimer], a
xor a
ld [wPikaPicAnimTimer + 1], a
- jr PikaPicAnimCommand_waitbgmap
+ jr PikaPicAnimCommand_run
-Func_fe09b:
+; XXX
ret
PikaPicAnimCommand_setduration:
@@ -1003,7 +562,7 @@ PikaPicAnimCommand_setduration:
ld [wPikaPicAnimTimer + 1], a
ret
-PikaPicAnimCommand_waitbgmap:
+PikaPicAnimCommand_run:
ld a, $ff
ld [wPikaPicAnimPointerSetupFinished], a
ret
@@ -1068,11 +627,11 @@ PikaPicAnimCommand_loadgfx:
cp a, $ff
jr z, .compressed
call RequestPikaPicAnimGFX
- jr .asm_fe109
+ jr .done
.compressed
call DecompressRequestPikaPicAnimGFX
-.asm_fe109
+.done
pop af
ld [hTilesetType], a
pop af
@@ -1144,6 +703,11 @@ GetPikaPicVRAMAddressForNewGFX:
ret
CheckIfThereIsRoomForPikaPicAnimGFX:
+; d: idx
+; e: size
+; FATAL: If the graphic has already been loaded, or if there are
+; already 8 graphics objects loaded, the game will execute arbitrary
+; code.
push bc
push hl
ld hl, wPikaPicUsedGFX
@@ -1176,9 +740,9 @@ CheckIfThereIsRoomForPikaPicAnimGFX:
add e
ld [wPikaPicUsedGFXCount], a
cp $80
- jr z, .asm_fe1a7
+ jr z, .okay
jr nc, .failed
-.asm_fe1a7
+.okay
ld a, [hl]
and a
jr .pop_ret
@@ -1228,12 +792,12 @@ PikaPicAnimCommand_thunderbolt:
call DelayFrame
ld a, [wAudioROMBank]
push af
- ld a, BANK(SFX_Battle_2F)
+ ld a, BANK(SFX_Thunderbolt)
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
- call PikaPicAnimLoadThunderboltAudio
+ call .LoadAudio
call PlaySound
- call PikaPicAnimThunderboltFlashScreen
+ call .FlashScreen
call WaitForSoundToFinish
pop af
ld [wAudioROMBank], a
@@ -1242,7 +806,7 @@ PikaPicAnimCommand_thunderbolt:
ld [wMuteAudioAndPauseMusic], a
ret
-PikaPicAnimLoadThunderboltAudio:
+.LoadAudio:
ld hl, MoveSoundTable
ld e, THUNDERBOLT
ld d, 0
@@ -1263,8 +827,8 @@ PikaPicAnimLoadThunderboltAudio:
ld a, b
ret
-PikaPicAnimThunderboltFlashScreen:
- ld hl, Data_fe242
+.FlashScreen:
+ ld hl, PikaPicAnimThunderboltPals
.loop
ld a, [hli]
cp $ff
@@ -1273,11 +837,11 @@ PikaPicAnimThunderboltFlashScreen:
ld b, [hl]
inc hl
push hl
- call GetDMGBGPalForPikaThunderbolt
+ call .UpdatePal
pop hl
jr .loop
-GetDMGBGPalForPikaThunderbolt:
+.UpdatePal:
ld a, b
ld [rBGP], a
call UpdateGBCPal_BGP
diff --git a/engine/printer.asm b/engine/printer.asm
index d4cc8192..4bf04e1a 100644
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -359,7 +359,7 @@ PrintFanClubPortrait: ; e8e24
xor a
ld [hCanceledPrinting], a
call Printer_PlayPrinterMusic
- call Func_ea3ea
+ call Printer_GetMonStats
ld a, [rIE]
push af
xor a
@@ -397,7 +397,7 @@ PrintFanClubPortrait: ; e8e24
call Printer_PlayMapMusic
ret
-Func_e8e79: ; e8e79 (3a:4e79)
+PrinterDebug: ; e8e79 (3a:4e79)
push af
push bc
push de
@@ -415,13 +415,13 @@ Func_e8e79: ; e8e79 (3a:4e79)
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call Printer_CopyTileMapToPrinterTileBuffer
- call Func_ea573
+ call PrinterDebug_LoadGFX
.loop
ld a, [wPrinterSendState]
bit 7, a
jr nz, .quit
- call Func_ea5d1
- call Func_ea5b7
+ call PrinterDebug_DoFunction
+ call PrinterDebug_ConvertStatusFlagsToTiles
call DelayFrame
jr .loop
diff --git a/engine/printer/serial.asm b/engine/printer/serial.asm
index 54d31a15..f3984420 100755
--- a/engine/printer/serial.asm
+++ b/engine/printer/serial.asm
@@ -105,9 +105,9 @@ Printer_StartTransmittingTilemap:
ld hl, PrinterDataPacket3
call CopyPrinterDataHeader
call Printer_Convert2RowsTo2bpp
- ld a, (wPrinterSendDataSourceEnd - wPrinterSendDataSource) % $100
+ ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) % $100
ld [wPrinterDataSize], a
- ld a, (wPrinterSendDataSourceEnd - wPrinterSendDataSource) / $100
+ ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) / $100
ld [wPrinterDataSize + 1], a
call ComputePrinterChecksum
call Printer_Next
@@ -305,8 +305,8 @@ ResetPrinterData:
xor a
ld [wPrinterDataSize], a
ld [wPrinterDataSize + 1], a
- ld hl, wPrinterSendDataSource
- ld bc, wPrinterSendDataSourceEnd - wPrinterSendDataSource
+ ld hl, wPrinterSendDataSource1
+ ld bc, wPrinterSendDataSource1End - wPrinterSendDataSource1
call Printer_FillMemory
ret
@@ -319,7 +319,7 @@ ComputePrinterChecksum:
ld c, a
ld a, [wPrinterDataSize + 1]
ld b, a
- ld de, wPrinterSendDataSource
+ ld de, wPrinterSendDataSource1
call .AddToChecksum
ld a, l
ld [wPrinterChecksum], a
@@ -344,13 +344,13 @@ ComputePrinterChecksum:
Printer_StageHeaderForSend:
ld a, $1
- ld [wPrinterSendDataSource], a
+ ld [wPrinterSendDataSource1], a
ld a, [wcae2]
- ld [wPrinterSendDataSource + 1], a
+ ld [wPrinterSendDataSource1 + 1], a
ld a, %11100100
- ld [wPrinterSendDataSource + 2], a
+ ld [wPrinterSendDataSource1 + 2], a
ld a, [wPrinterSettingsTempCopy]
- ld [wPrinterSendDataSource + 3], a
+ ld [wPrinterSendDataSource1 + 3], a
ret
Printer_Convert2RowsTo2bpp:
@@ -370,7 +370,7 @@ Printer_Convert2RowsTo2bpp:
.got_row
ld e, l
ld d, h
- ld hl, wPrinterSendDataSource
+ ld hl, wPrinterSendDataSource1
ld c, 2 * SCREEN_WIDTH
.loop
ld a, [de]
@@ -542,7 +542,7 @@ PrinterSerial_: ; e8a5e (3a:4a5e)
ld e, a
ld a, [wPrinterSendByteOffset + 1]
ld d, a
- ld hl, wPrinterSendDataSource
+ ld hl, wPrinterSendDataSource1
add hl, de
inc de
ld a, e
diff --git a/engine/remove_pokemon.asm b/engine/remove_pokemon.asm
index a04f060c..ef72d143 100644
--- a/engine/remove_pokemon.asm
+++ b/engine/remove_pokemon.asm
@@ -92,4 +92,4 @@ _RemovePokemon: ; 7a0f (1:7a0f)
jr z, .copyUntilPartyMonNicksEnd
ld bc, wBoxMonNicksEnd
.copyUntilPartyMonNicksEnd
- jp CopyDataUntil \ No newline at end of file
+ jp CopyDataUntil
diff --git a/engine/subtract_paid_money.asm b/engine/subtract_paid_money.asm
index 45df93a7..5cdbd833 100644
--- a/engine/subtract_paid_money.asm
+++ b/engine/subtract_paid_money.asm
@@ -14,4 +14,4 @@ SubtractAmountPaidFromMoney_: ; 68a6 (1:68a6)
ld [wTextBoxID], a
call DisplayTextBoxID ; redraw money text box
and a
- ret \ No newline at end of file
+ ret
diff --git a/engine/surfing_minigame.asm b/engine/surfing_minigame.asm
index f70e8119..5869f9fb 100755
--- a/engine/surfing_minigame.asm
+++ b/engine/surfing_minigame.asm
@@ -23,8 +23,8 @@ SurfingPikachuMinigame:
push af
ld a, $98
ld [H_AUTOBGTRANSFERDEST + 1], a
- call Func_f8fb3
- call Func_f807a
+ call SurfingPikachuMinigameIntro
+ call SurfingPikachuLoop
xor a
ld [rBGP], a
ld [rOBP0], a
@@ -59,42 +59,42 @@ SurfingPikachuMinigame:
ld [hTilesetType], a
ret
-Func_f807a:
- call Func_f8116
+SurfingPikachuLoop:
+ call SurfingPikachuMinigame_LoadGFXAndLayout
call DelayFrame
ld b, $e
call RunPaletteCommand
.loop
- ld a, [wc5d1]
+ ld a, [wSurfingMinigameRoutineNumber]
bit 7, a
ret nz
- call Func_f923f
- call Func_f80ac
+ call SurfingPikachu_GetJoypad_3FrameBuffer
+ call SurfingPikachu_CheckPressedSelect
ret nz
- call Func_f8282
+ call RunSurfingMinigameRoutine
ld a, $3c
ld [wCurrentAnimatedObjectOAMBufferOffset], a
call RunObjectAnimations
call Func_f8848
- call Func_f80a8
- call Func_f80c4
+ call .DelayFrame
+ call SurfingMinigame_UpdateMusicTempo
jr .loop
-Func_f80a8:
+.DelayFrame:
call DelayFrame
ret
-Func_f80ac:
+SurfingPikachu_CheckPressedSelect:
ld hl, wd492
bit 1, [hl]
ret z
ld a, [hJoyPressed]
- and $4
+ and SELECT
ret
Func_f80b7:
ld a, [hJoyPressed]
- and $8
+ and START
ret z
ld hl, wc5e2
ld a, [hl]
@@ -102,10 +102,12 @@ Func_f80b7:
ld [hl], a
ret
-Func_f80c4:
+SurfingMinigame_UpdateMusicTempo:
ld a, [wc634]
and a
ret z
+
+ ; check that all channels are on their last frame of note delay
ld hl, wChannelNoteDelayCounters
ld a, $1
cp [hl]
@@ -116,6 +118,8 @@ Func_f80c4:
inc hl
cp [hl]
ret nz
+
+ ; de = ([wc5e3] & 0x3f) * 2
ld a, [wc5e3]
ld e, a
ld a, [wc5e3 + 1]
@@ -125,7 +129,7 @@ Func_f80c4:
rl d
ld e, d
ld d, $0
- ld hl, Unkn_f80f5
+ ld hl, .Tempos
add hl, de
add hl, de
ld a, [hli]
@@ -134,14 +138,14 @@ Func_f80c4:
ld [wMusicTempo], a
ret
-Unkn_f80f5:
- dw $75
- dw $6d
- dw $65
- dw $5d
- dw $55
+.Tempos:
+ dw 117
+ dw 109
+ dw 101
+ dw 93
+ dw 85
-Func_f80ff:
+SurfingMinigame_ResetMusicTempo:
ld hl, wChannelNoteDelayCounters
ld a, $1
cp [hl]
@@ -152,86 +156,95 @@ Func_f80ff:
inc hl
cp [hl]
ret nz
- ld a, $75
+ ld a, 117
ld [wMusicTempo + 1], a
xor a
ld [wMusicTempo], a
ret
-Func_f8116:
- call Func_f9279
+SurfingPikachuMinigame_LoadGFXAndLayout:
+ call SurfingPikachu_ClearTileMap
call ClearSprites
call DisableLCD
- ld hl, wSerialEnemyMonsPatchList
- ld bc, $67
+ ld hl, wSurfingMinigameData
+ ld bc, wSurfingMinigameDataEnd - wSurfingMinigameData
xor a
call FillMemory
- ld hl, wc700
- ld bc, $200
+ ld hl, wLYOverrides
+ ld bc, wLYOverridesBufferEnd - wLYOverrides
xor a
call FillMemory
xor a
ld [H_AUTOBGTRANSFERENABLED], a
call ClearObjectAnimationBuffers
- ld hl, SurfingPikachu1Graphics
+ ld hl, SurfingPikachu1Graphics1
ld de, $9000
ld bc, $500
- ld a, BANK(SurfingPikachu1Graphics)
+ ld a, BANK(SurfingPikachu1Graphics1)
call FarCopyData
- ld hl, SurfingPikachu1Graphics + $410
+ ld hl, SurfingPikachu1Graphics2
ld de, $8000
ld bc, $1000
- ld a, BANK(SurfingPikachu1Graphics)
+ ld a, BANK(SurfingPikachu1Graphics2)
call FarCopyData
- ld a, Unkn_f93d3 % $100
+ ld a, SurfingPikachuSpawnStateDataPointer % $100
ld [wAnimatedObjectSpawnStateDataPointer], a
- ld a, Unkn_f93d3 / $100
+ ld a, SurfingPikachuSpawnStateDataPointer / $100
ld [wAnimatedObjectSpawnStateDataPointer + 1], a
- ld a, Jumptable_f93fa % $100
+
+ ld a, SurfingPikachuObjectJumptable % $100
ld [wAnimatedObjectJumptablePointer], a
- ld a, Jumptable_f93fa / $100
+ ld a, SurfingPikachuObjectJumptable / $100
ld [wAnimatedObjectJumptablePointer + 1], a
- ld a, Unkn_f9507 % $100
+
+ ld a, SurfingPikachuOAMData % $100
ld [wAnimatedObjectOAMDataPointer], a
- ld a, Unkn_f9507 / $100
+ ld a, SurfingPikachuOAMData / $100
ld [wAnimatedObjectOAMDataPointer + 1], a
- ld a, Unkn_f9405 % $100
+
+ ld a, SurfingPikachuFrames % $100
ld [wAnimatedObjectFramesDataPointer], a
- ld a, Unkn_f9405 / $100
+ ld a, SurfingPikachuFrames / $100
ld [wAnimatedObjectFramesDataPointer + 1], a
+
ld hl, vBGMap0
ld bc, $800
ld a, $0
call FillMemory
+
ld hl, $98c0
ld bc, $180
ld a, $b
call FillMemory
+
ld a, $1
lb de, $74, $58
call SpawnAnimatedObject
+
ld a, $74
- ld [wc5ea], a
- call Func_f9223
+ ld [wSurfingMinigamePikachuObjectHeight], a
+
+ call SurfingMinigame_InitScanlineOverrides
+
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7e
ld [hWY], a
- ld a, $42
+ ld a, rSCY - $ff00
ld [hLCDCPointer], a
ld a, $40
ld [wc5e3], a
xor a
ld [wc5e3 + 1], a
xor a
- ld [wc5d6], a
+ ld [wSurfingMinigamePikachuHP], a
ld a, $60
- ld [wc5d7], a
- ld hl, wc61a
+ ld [wSurfingMinigamePikachuHP + 1], a
+ ld hl, wSurfingMinigameWaveHeight
ld bc, $14
ld a, $74
call FillMemory
@@ -239,7 +252,7 @@ Func_f8116:
call Func_f8256
ld a, $e3
ld [rLCDC], a
- call Func_f81e9
+ call SurfingPikachuMinigame_SetBGPals
ld a, $e4
ld [rOBP0], a
ld a, $e0
@@ -248,16 +261,16 @@ Func_f8116:
call UpdateGBCPal_OBP1
ret
-Func_f81e9:
+SurfingPikachuMinigame_SetBGPals:
ld a, [wOnSGB]
and a
- jr nz, .asm_f81f7
+ jr nz, .sgb
ld a, $d0
ld [rBGP], a
call UpdateGBCPal_BGP
ret
-.asm_f81f7
+.sgb
ld a, $e4
ld [rBGP], a
call UpdateGBCPal_BGP
@@ -361,11 +374,11 @@ Unkn_f8279:
db $19
db $19
-Func_f8282:
- ld a, [wc5d1]
+RunSurfingMinigameRoutine:
+ ld a, [wSurfingMinigameRoutineNumber]
ld e, a
ld d, $0
- ld hl, Jumptable_f8291
+ ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
@@ -373,79 +386,77 @@ Func_f8282:
ld l, a
jp [hl]
-Jumptable_f8291:
- dw Func_f82ab
- dw Func_f82bd
- dw Func_f8324
- dw Func_f835c
- dw Func_f838c
- dw Func_f8399
- dw Func_f83aa
- dw Func_f83bb
- dw Func_f83cc
- dw Func_f83e3
- dw Func_f8406
- dw Func_f840f
- dw Func_f841d
-
-Func_f82ab:
+.Jumptable:
+ dw SurfingMinigameRoutine_SpawnPikachu ; 0
+ dw SurfingMinigame_RunGame ; 1
+ dw Func_f8324 ; 2
+ dw Func_f835c ; 3
+ dw SurfingMinigame_DrawResultsScreenAndWait ; 4
+ dw SurfingMinigame_WriteHPLeftAndWait ; 5
+ dw SurfingMinigame_WriteRadnessAndWait ; 6
+ dw SurfingMinigame_WriteTotalAndWait ; 7
+ dw SurfingMinigame_AddRemainingHPToTotalAndWait ; 8
+ dw SurfingMinigame_AddRadnessToTotalAndWait ; 9
+ dw SurfingMinigame_WaitLast ; a
+ dw SurfingMinigame_ExitOnPressA ; b
+ dw SurfingMinigame_GameOver ; c
+
+SurfingMinigameRoutine_SpawnPikachu:
ld a, $2
lb de, $48, $e0
call SpawnAnimatedObject
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ld a, $1
ld [wc634], a
ret
-Func_f82bd:
+SurfingMinigame_RunGame:
ld a, [wc5e5]
cp $18
jr nc, .asm_f82e8
- ld hl, wc5d6
+ ld hl, wSurfingMinigamePikachuHP
ld a, [hli]
or [hl]
and a
- jr z, .asm_f82f6
+ jr z, .dead
call Random
ld [wc5d5], a
- call Func_f9210
+ call SurfingMinigame_UpdateLYOverrides
call Func_f88ae
call Func_f886b
call Func_f8cb0
call Func_f844c
- call Func_f88e4
+ call SurfingMinigame_Deduct1HP
call Func_f88fd
ret
.asm_f82e8
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
xor a
ld [wc634], a
- ld a, $c0
- ld [wc632], a
+ ld a, 192
+ ld [wSurfingMinigameRoutineDelay], a
ret
-.asm_f82f6
+.dead
ld a, $1
-Func_f82f8:
ld [wc630], a
ld a, $c
- ld [wc5d1], a
-Func_f8300:
+ ld [wSurfingMinigameRoutineNumber], a
ld a, $80
ld [wc631], a
ld a, $b
lb de, $88, $58
call SpawnAnimatedObject
- ld hl, $7
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], $80
- ld hl, $b
+ ld hl, ANIM_OBJ_FIELD_B
add hl, bc
ld [hl], $80
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], $30
xor a
@@ -453,38 +464,38 @@ Func_f8300:
ret
Func_f8324:
- call Func_f8440
- jr c, .asm_f833d
+ call SurfingMinigame_RunDelayTimer
+ jr c, .done_delay
xor a
ld [wc5d5], a
- call Func_f9210
+ call SurfingMinigame_UpdateLYOverrides
call Func_f88ae
call Func_f886b
call Func_f8c97
- call Func_f80ff
+ call SurfingMinigame_ResetMusicTempo
ret
-.asm_f833d
- ld hl, wc5d1
+.done_delay
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ld a, $90
ld [hSCX], a
ld a, $72
- ld [wc5d3], a
+ ld [wSurfingMinigameWaveFunctionNumber], a
ld a, $4
ld [wc5d2], a
xor a
ld [hLCDCPointer], a
- ld [wc617], a
- ld [wc618], a
- ld [wc619], a
+ ld [wSurfingMinigameSCX], a
+ ld [wSurfingMinigameSCX + 1], a
+ ld [wSurfingMinigameSCX + 2], a
ret
Func_f835c:
ld a, [hSCX]
and a
jr z, .asm_f837b
- call Func_f9210
+ call SurfingMinigame_UpdateLYOverrides
call Func_f88ae
call Func_f886b
ld a, [hSCX]
@@ -494,7 +505,7 @@ Func_f835c:
dec a
ld [hSCX], a
ld a, $e0
- ld [wc62e], a
+ ld [wSurfingMinigameXOffset], a
call Func_f8cc7
ret
@@ -502,139 +513,137 @@ Func_f835c:
xor a
ld [wc5e3], a
ld [wc5e3 + 1], a
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ld a, $5
ld [wc5d2], a
ret
-Func_f838c:
- call Func_f891e
- ld a, $20
- ld [wc632], a
- ld hl, wc5d1
+SurfingMinigame_DrawResultsScreenAndWait:
+ call SurfingMinigame_DrawResultsScreen
+ ld a, 32
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f8399:
- call Func_f8440
+SurfingMinigame_WriteHPLeftAndWait:
+ call SurfingMinigame_RunDelayTimer
ret nc
- call Func_f8a92
- ld a, $40
- ld [wc632], a
- ld hl, wc5d1
+ call SurfingMinigame_WriteHPLeft
+ ld a, 64
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f83aa:
- call Func_f8440
+SurfingMinigame_WriteRadnessAndWait:
+ call SurfingMinigame_RunDelayTimer
ret nc
- call Func_f8ae4
- ld a, $40
- ld [wc632], a
- ld hl, wc5d1
+ call SurfingMinigame_WriteRadness
+ ld a, 64
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f83bb:
- call Func_f8440
+SurfingMinigame_WriteTotalAndWait:
+ call SurfingMinigame_RunDelayTimer
ret nc
- call Func_f8b7a
- ld a, $40
- ld [wc632], a
- ld hl, wc5d1
+ call SurfingMinigame_WriteTotal
+ ld a, 64
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f83cc:
- call Func_f8440
+SurfingMinigame_AddRemainingHPToTotalAndWait:
+ call SurfingMinigame_RunDelayTimer
ret nc
- call Func_f8aa9
+ call SurfingMinigame_AddRemainingHPToTotal
push af
- call Func_f8b5d
+ call SurfingMinigame_BCDPrintTotalScore
pop af
ret nc
- ld a, $40
- ld [wc632], a
- ld hl, wc5d1
+ ld a, 64
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f83e3:
- call Func_f8440
+SurfingMinigame_AddRadnessToTotalAndWait:
+ call SurfingMinigame_RunDelayTimer
ret nc
- call Func_f8afb
+ call SurfingMinigame_AddRadnessToTotal
push af
- call Func_f8b5d
+ call SurfingMinigame_BCDPrintTotalScore
pop af
ret nc
- ld a, $80
- ld [wc632], a
- ld hl, wc5d1
+ ld a, 128
+ ld [wSurfingMinigameRoutineDelay], a
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
- call Func_f8b92
+ call DidPlayerGetAHighScore
ret nc
- call Func_f8a7c
-Func_f83ff:
+ call SurfingMinigame_PrintTextHiScore
ld a, $6
ld [wc5d2], a
ret
-Func_f8406:
- call Func_f8440
-Func_f8408:
+SurfingMinigame_WaitLast:
+ call SurfingMinigame_RunDelayTimer
ret nc
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
inc [hl]
ret
-Func_f840f:
- call Func_f9210
+SurfingMinigame_ExitOnPressA:
+ call SurfingMinigame_UpdateLYOverrides
ld a, [hJoyPressed]
- and $1
+ and A_BUTTON
ret z
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
set 7, [hl]
ret
-Func_f841d:
- call Func_f9210
+SurfingMinigame_GameOver:
+ call SurfingMinigame_UpdateLYOverrides
call Func_f88ae
call Func_f886b
call Func_f8cb0
- call Func_f80ff
+ call SurfingMinigame_ResetMusicTempo
ld hl, wc631
ld a, [hl]
and a
- jr z, .asm_f8435
+ jr z, .wait_press_a
dec [hl]
ret
-.asm_f8435
+.wait_press_a
ld a, [hJoyPressed]
- and $1
+ and A_BUTTON
ret z
- ld hl, wc5d1
+ ld hl, wSurfingMinigameRoutineNumber
set 7, [hl]
ret
-Func_f8440:
- ld hl, wc632
+SurfingMinigame_RunDelayTimer:
+ ld hl, wSurfingMinigameRoutineDelay
ld a, [hl]
and a
- jr z, .asm_f844a
+ jr z, .set_carry
dec [hl]
and a
ret
-.asm_f844a
+.set_carry
scf
ret
Func_f844c:
- ld a, [wc5e6]
+ ld a, [wc5e5 + 1]
ld h, a
- ld a, [wc5e7]
+ ld a, [wc5e5 + 2]
ld l, a
ld a, [wc5e3]
ld e, a
@@ -642,9 +651,9 @@ Func_f844c:
ld d, a
add hl, de
ld a, h
- ld [wc5e6], a
+ ld [wc5e5 + 1], a
ld a, l
- ld [wc5e7], a
+ ld [wc5e5 + 2], a
ret nc
ld hl, wc5e5
inc [hl]
@@ -653,7 +662,7 @@ Func_f844c:
dec [hl]
ret
-Func_f8470
+SurfingMinigameAnimatedObjectFn_Pikachu
ld a, [wc5d2]
ld e, a
ld d, $0
@@ -667,7 +676,7 @@ Func_f8470
Jumptable_f847f:
dw Func_f848d
- dw Func_f84e2
+ dw SurfingMinigame_ScoreCurrentWave
dw Func_f8516
dw Func_f8545
dw Func_f8561
@@ -679,32 +688,32 @@ Func_f848d:
and a
jr nz, .asm_f84d2
call Func_f87b5
- ld a, [wc5ea]
- ld hl, $5
+ ld a, [wSurfingMinigamePikachuObjectHeight]
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], a
call Func_f871e
- jr c, .asm_f84aa
+ jr c, .splash
call Func_f8742
call Func_f86b8
ret
-.asm_f84aa
+.splash
call Func_f8742
- ld a, $1
+ ld a, $1 ; on a wave
ld [wc5d2], a
xor a
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], a
- ld hl, $d
+ ld hl, ANIM_OBJ_FIELD_D
add hl, bc
ld [hl], a
- ld hl, $e
+ ld hl, ANIM_OBJ_FIELD_E
add hl, bc
ld [hl], a
- ld [wc5d9], a
- ld [wc62f], a
+ ld [wSurfingMinigameRadnessMeter], a
+ ld [wSurfingMinigameTrickFlags], a
xor a
ld [wChannelSoundIDs + CH7], a
ld a, SFX_UNKNOWN_801B3_4
@@ -720,21 +729,21 @@ Func_f848d:
call Func_f8742
ret
-Func_f84e2:
- call Func_f8598
- call Func_f928c
+SurfingMinigame_ScoreCurrentWave:
+ call SurfingMinigame_DPadAction
+ call SurfingMinigame_UpdatePikachuHeight
ret nc
- call Func_f8606
- jr c, .asm_f84fd
- call Func_f8bed
- ld hl, $c
+ call SurfingMinigame_TileInteraction
+ jr c, .splash
+ call SurfingMinigame_CalculateAndAddRadnessFromStunt
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], $0
ld a, $2
ld [wc5d2], a
ret
-.asm_f84fd
+.splash
ld a, $3
ld [wc5d2], a
ld a, $60
@@ -748,7 +757,7 @@ Func_f84e2:
ret
Func_f8516:
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld a, [hl]
cp $20
@@ -758,19 +767,19 @@ Func_f8516:
inc [hl]
inc [hl]
ld d, $4
- call Func_f9362
- ld hl, $7
+ call SurfingPikachu_Sine
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], a
call Func_f87b5
- ld a, [wc5ea]
- ld hl, $5
+ ld a, [wSurfingMinigamePikachuObjectHeight]
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], a
ret
.asm_f8539
- ld hl, $7
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], $0
ld a, $0
@@ -783,8 +792,8 @@ Func_f8545:
and a
jr z, .asm_f8556
dec [hl]
- ld a, [wc5ea]
- ld hl, $5
+ ld a, [wSurfingMinigamePikachuObjectHeight]
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], a
ret
@@ -797,8 +806,8 @@ Func_f8545:
ret
Func_f8561:
- ld a, [wc5ea]
- ld hl, $5
+ ld a, [wSurfingMinigamePikachuObjectHeight]
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], a
call Func_f8742
@@ -807,13 +816,13 @@ Func_f8561:
Func_f856d:
ld a, $f
call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], $0
ret
Func_f8579:
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld a, [hl]
inc [hl]
@@ -822,183 +831,184 @@ Func_f8579:
cp $20
jr c, .asm_f8591
ld d, $10
- call Func_f9362
- ld hl, $7
+ call SurfingPikachu_Sine
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], a
ret
.asm_f8591
- ld hl, $7
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], $0
ret
-Func_f8598:
+SurfingMinigame_DPadAction:
ld de, hJoy5
ld a, [de]
- and $20
- jr nz, .asm_f85a6
+ and D_LEFT
+ jr nz, .d_left
ld a, [de]
- and $10
- jr nz, .asm_f85cc
+ and D_RIGHT
+ jr nz, .d_right
ret
-.asm_f85a6
- ld hl, $e
+.d_left
+ ld hl, ANIM_OBJ_FIELD_E
add hl, bc
ld [hl], $0
- ld hl, $d
+ ld hl, ANIM_OBJ_FIELD_D
add hl, bc
ld a, [hl]
inc [hl]
cp $b
- jr c, .asm_f85be
- call Func_f85f2
- ld hl, wc62f
+ jr c, .d_left_skip
+ call .StartTrick
+ ld hl, wSurfingMinigameTrickFlags
set 0, [hl]
-.asm_f85be
- ld hl, $1
+.d_left_skip
+ ld hl, ANIM_OBJ_FRAME_SET
add hl, bc
ld a, [hl]
cp $e
- jr nc, .asm_f85c9
+ jr nc, .d_left_reset
inc [hl]
ret
-.asm_f85c9
+.d_left_reset
ld [hl], $1
ret
-.asm_f85cc
- ld hl, $d
+.d_right
+ ld hl, ANIM_OBJ_FIELD_D
add hl, bc
ld [hl], $0
- ld hl, $e
+ ld hl, ANIM_OBJ_FIELD_E
add hl, bc
ld a, [hl]
inc [hl]
cp $d
- jr c, .asm_f85e4
- call Func_f85f2
- ld hl, wc62f
+ jr c, .d_right_skip
+ call .StartTrick
+ ld hl, wSurfingMinigameTrickFlags
set 1, [hl]
-.asm_f85e4
- ld hl, $1
+.d_right_skip
+ ld hl, ANIM_OBJ_FRAME_SET
add hl, bc
ld a, [hl]
cp $1
- jr z, .asm_f85ef
+ jr z, .d_right_reset
dec [hl]
ret
-.asm_f85ef
+.d_right_reset
ld [hl], $e
ret
-Func_f85f2:
- call Func_f8bdf
+.StartTrick:
+ call SurfingMinigame_IncreaseRadnessMeter
xor a
- ld hl, $d
+ ld hl, ANIM_OBJ_FIELD_D
add hl, bc
ld [hl], a
- ld hl, $e
+ ld hl, ANIM_OBJ_FIELD_E
add hl, bc
ld [hl], a
ld a, SFX_UNKNOWN_801B6_4
call PlaySound
ret
-Func_f8606:
- ld hl, $1
+SurfingMinigame_TileInteraction:
+ ld hl, ANIM_OBJ_FRAME_SET
add hl, bc
- ld a, [wc5ef]
+ ld a, [wSurfingMinigameBGMapReadBuffer]
cp $6
- jr z, .asm_f863d
+ jr z, .tile_06
cp $14
- jr z, .asm_f867b
+ jr z, .tile_14
cp $12
- jr z, .asm_f867b
+ jr z, .tile_12
cp $7
- jr z, .asm_f865c
+ jr z, .tile_07
ld a, [hl]
cp $1
- jp z, .asm_f86ad
+ jp z, .action_0
cp $2
- jr z, .asm_f869a
+ jr z, .action_1
cp $3
- jr z, .asm_f869f
+ jr z, .action_2
cp $4
- jr z, .asm_f86a2
+ jr z, .action_3
cp $5
- jr z, .asm_f869f
+ jr z, .action_2
cp $6
- jr z, .asm_f869a
+ jr z, .action_1
cp $7
- jr z, .asm_f86ad
- jr .asm_f86ad
+ jr z, .action_0
+ jr .action_0
-.asm_f863d
+.tile_06
ld a, [hl]
cp $1
- jr z, .asm_f86ad
+ jr z, .action_0
cp $2
- jr z, .asm_f86ad
+ jr z, .action_0
cp $3
- jr z, .asm_f86ad
+ jr z, .action_0
cp $4
- jr z, .asm_f869a
+ jr z, .action_1
cp $5
- jr z, .asm_f869f
+ jr z, .action_2
cp $6
- jr z, .asm_f86a2
+ jr z, .action_3
cp $7
- jr z, .asm_f869f
- jr .asm_f86ad
+ jr z, .action_2
+ jr .action_0
-.asm_f865c
+.tile_07
ld a, [hl]
cp $1
- jr z, .asm_f869f
+ jr z, .action_2
cp $2
- jr z, .asm_f86a2
+ jr z, .action_3
cp $3
- jr z, .asm_f869f
+ jr z, .action_2
cp $4
- jr z, .asm_f869a
+ jr z, .action_1
cp $5
- jr z, .asm_f86ad
+ jr z, .action_0
cp $6
- jr z, .asm_f86ad
+ jr z, .action_0
cp $7
- jr z, .asm_f86ad
- jr .asm_f86ad
+ jr z, .action_0
+ jr .action_0
-.asm_f867b
+.tile_12
+.tile_14
ld a, [hl]
cp $1
- jr z, .asm_f86ad
+ jr z, .action_0
cp $2
- jr z, .asm_f869a
+ jr z, .action_1
cp $3
- jr z, .asm_f869f
+ jr z, .action_2
cp $4
- jr z, .asm_f86a2
+ jr z, .action_3
cp $5
- jr z, .asm_f86a2
+ jr z, .action_3
cp $6
- jr z, .asm_f869f
+ jr z, .action_2
cp $7
- jr z, .asm_f869a
- jr .asm_f86ad
+ jr z, .action_1
+ jr .action_0
-.asm_f869a
- call Func_f86f7
- jr .asm_f86a2
+.action_1
+ call Subtract128Fromwc5e3
+ jr .action_3
-.asm_f869f
- call Func_f86d0
-.asm_f86a2
+.action_2
+ call Subtract64Fromwc5e3
+.action_3
xor a
ld [wChannelSoundIDs + CH7], a
ld a, SFX_UNKNOWN_801BF_4
@@ -1006,7 +1016,7 @@ Func_f8606:
and a
ret
-.asm_f86ad
+.action_0
ld a, $40
ld [wc5e3], a
xor a
@@ -1029,23 +1039,23 @@ Func_f86b8:
ld [wc5e3], a
ret
-Func_f86d0:
+Subtract64Fromwc5e3:
ld a, [wc5e3 + 1]
and a
- jr nz, .asm_f86e2
+ jr nz, .go
ld a, [wc5e3]
cp $40
- jr nc, .asm_f86e2
+ jr nc, .go
xor a
ld [wc5e3], a
ret
-.asm_f86e2
+.go
ld a, [wc5e3 + 1]
ld h, a
ld a, [wc5e3]
ld l, a
- ld de, $ffc0
+ ld de, -$40
add hl, de
ld a, h
ld [wc5e3 + 1], a
@@ -1053,23 +1063,23 @@ Func_f86d0:
ld [wc5e3], a
ret
-Func_f86f7:
+Subtract128Fromwc5e3:
ld a, [wc5e3 + 1]
and a
- jr nz, .asm_f8709
+ jr nz, .go
ld a, [wc5e3]
cp $80
- jr nc, .asm_f8709
+ jr nc, .go
xor a
ld [wc5e3], a
ret
-.asm_f8709
+.go
ld a, [wc5e3 + 1]
ld h, a
ld a, [wc5e3]
ld l, a
- ld de, $ff80
+ ld de, -$80
add hl, de
ld a, h
ld [wc5e3 + 1], a
@@ -1084,7 +1094,7 @@ Func_f871e:
jr c, .asm_f8740
cp $5
jr nc, .asm_f8740
- ld a, [wc5ef]
+ ld a, [wSurfingMinigameBGMapReadBuffer]
cp $14
jr nz, .asm_f8740
call Func_f87a8
@@ -1106,7 +1116,7 @@ Func_f8742:
ret c
cp $5
ret nc
- ld a, [wc5ef]
+ ld a, [wSurfingMinigameBGMapReadBuffer]
cp $6
jr z, .asm_f8766
cp $14
@@ -1115,7 +1125,7 @@ Func_f8742:
jr z, .asm_f876a
call Func_f8778
ld a, $4
- ld hl, $1
+ ld hl, ANIM_OBJ_FRAME_SET
add hl, bc
ld [hl], a
ret
@@ -1131,7 +1141,7 @@ Func_f8742:
ld a, [wc5de]
dec a
add e
- ld hl, $1
+ ld hl, ANIM_OBJ_FRAME_SET
add hl, bc
ld [hl], a
ret
@@ -1187,9 +1197,9 @@ Func_f87b5:
inc [hl]
and $3
ret nz
- call Func_f87ce
+ call .GetYCoord
ld d, a
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld e, [hl]
ld a, $a
@@ -1198,27 +1208,27 @@ Func_f87b5:
pop bc
ret
-Func_f87ce:
+.GetYCoord:
ld a, [hSCX]
and $8
- jr nz, .asm_f87d9
- ld hl, wc622
- jr .asm_f87dc
-
-.asm_f87d9
- ld hl, wc623
-.asm_f87dc
- ld a, [wc5f0]
+ jr nz, .get_height_plus_9
+ ld hl, wSurfingMinigameWaveHeight + 8
+ jr .got_hl
+
+.get_height_plus_9
+ ld hl, wSurfingMinigameWaveHeight + 9
+.got_hl
+ ld a, [wSurfingMinigameBGMapReadBuffer + 1]
cp $6
- jr z, .asm_f87ed
+ jr z, .six_or_twenty
cp $14
- jr z, .asm_f87ed
+ jr z, .six_or_twenty
cp $7
- jr z, .asm_f87f5
+ jr z, .seven
ld a, [hl]
ret
-.asm_f87ed
+.six_or_twenty
ld a, [hSCX]
and $7
ld e, a
@@ -1226,14 +1236,14 @@ Func_f87ce:
sub e
ret
-.asm_f87f5
+.seven
ld a, [hSCX]
and $7
add [hl]
ret
Func_f87fb:
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld a, [hl]
cp $58
@@ -1242,12 +1252,12 @@ Func_f87fb:
ld [hl], a
ret
-Func_f8807:
+Func_f8807: ; unreferenced
call MaskCurrentAnimatedObjectStruct
ret
-Func_f880b:
- ld hl, $b
+SurfingMinigameAnimatedObjectFn_FlippingPika:
+ ld hl, ANIM_OBJ_FIELD_B
add hl, bc
ld a, [hl]
and a
@@ -1255,39 +1265,39 @@ Func_f880b:
dec [hl]
dec [hl]
ld d, a
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld a, [hl]
inc [hl]
- call Func_f9362
+ call SurfingPikachu_Sine
cp $80
- jr nc, .asm_f8825
+ jr nc, .positive
xor $ff
inc a
-.asm_f8825
- ld hl, $7
+.positive
+ ld hl, ANIM_OBJ_Y_OFFSET
add hl, bc
ld [hl], a
ret
-Func_f882b:
- ld hl, $b
+SurfingMinigameAnimatedObjectFn_IntroAnimationPikachu:
+ ld hl, ANIM_OBJ_FIELD_B
add hl, bc
ld a, [hl]
inc [hl]
and $1
ret z
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld a, [hl]
cp $c0
- jr z, .asm_f883f
+ jr z, .done
inc [hl]
ret
-.asm_f883f
+.done
ld a, $1
- ld [wc633], a
+ ld [wSurfingMinigameIntroAnimationFinished], a
call MaskCurrentAnimatedObjectStruct
ret
@@ -1305,7 +1315,7 @@ Func_f8848:
ld d, h
ld hl, wOAMBuffer + 5 * 4 + 1
ld e, $9
-.asm_f8861
+.loop
ld a, [hl]
add d
ld [hli], a
@@ -1313,11 +1323,11 @@ Func_f8848:
inc hl
inc hl
dec e
- jr nz, .asm_f8861
+ jr nz, .loop
ret
Func_f886b:
- ld a, [wc5ef]
+ ld a, [wSurfingMinigameBGMapReadBuffer] ; ???
ld a, [hSCX]
add $48
ld e, a
@@ -1327,15 +1337,15 @@ Func_f886b:
ld d, $0
ld hl, vBGMap0
add hl, de
- ld a, [wc5ea]
+ ld a, [wSurfingMinigamePikachuObjectHeight]
srl a
srl a
srl a
ld c, a
-.asm_f8889
+.loop
ld a, c
and a
- jr z, .asm_f889a
+ jr z, .copy
dec c
ld de, $20
add hl, de
@@ -1343,10 +1353,10 @@ Func_f886b:
and $3
or $98
ld h, a
- jr .asm_f8889
+ jr .loop
-.asm_f889a
- ld de, wc5ef
+.copy
+ ld de, wSurfingMinigameBGMapReadBuffer
ld a, e
ld [H_VBCOPYDEST], a
ld a, d
@@ -1355,7 +1365,7 @@ Func_f886b:
ld [H_VBCOPYSRC], a
ld a, h
ld [H_VBCOPYSRC + 1], a
- ld a, $1
+ ld a, 16 / $10
ld [H_VBCOPYSIZE], a
ret
@@ -1363,13 +1373,13 @@ Func_f88ae:
ld a, [hSCX]
and $8
jr nz, .asm_f88b9
- ld hl, wc621
+ ld hl, wSurfingMinigameWaveHeight + 7
jr .asm_f88bc
.asm_f88b9
- ld hl, wc622
+ ld hl, wSurfingMinigameWaveHeight + 8
.asm_f88bc
- ld a, [wc5ef]
+ ld a, [wSurfingMinigameBGMapReadBuffer]
cp $6
jr z, .asm_f88d0
cp $14
@@ -1377,7 +1387,7 @@ Func_f88ae:
cp $7
jr z, .asm_f88db
ld a, [hl]
- ld [wc5ea], a
+ ld [wSurfingMinigamePikachuObjectHeight], a
ret
.asm_f88d0
@@ -1386,46 +1396,46 @@ Func_f88ae:
ld e, a
ld a, [hl]
sub e
- ld [wc5ea], a
+ ld [wSurfingMinigamePikachuObjectHeight], a
ret
.asm_f88db
ld a, [hSCX]
and $7
add [hl]
- ld [wc5ea], a
+ ld [wSurfingMinigamePikachuObjectHeight], a
ret
-Func_f88e4:
- ld hl, wc5d6
+SurfingMinigame_Deduct1HP:
+ ld hl, wSurfingMinigamePikachuHP
ld e, $99
- call Func_f88f0
+ call .BCD_Deduct
ret nc
inc hl
ld e, $99
-Func_f88f0:
+.BCD_Deduct:
ld a, [hl]
and a
- jr z, .asm_f88fa
+ jr z, .roll_over
sub $1
daa
ld [hl], a
and a
ret
-.asm_f88fa
+.roll_over
ld [hl], e
scf
ret
Func_f88fd:
- ld de, wc5d7
+ ld de, wSurfingMinigamePikachuHP + 1
ld hl, wOAMBuffer + 0 * 4 + 2
ld a, [de]
- call Func_f890b
+ call .PlaceBCDNumber
ld hl, wOAMBuffer + 2 * 4 + 2
ld a, [de]
-Func_f890b:
+.PlaceBCDNumber:
ld c, a
swap a
and $f
@@ -1441,164 +1451,161 @@ Func_f890b:
dec de
ret
-Func_f891e:
+SurfingMinigame_DrawResultsScreen:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call FillMemory
- ld hl, Tilemap_f8946
+ ld hl, .BeachTilemap
coord de, 0, 6
- ld bc, Tilemap_f8946End - Tilemap_f8946
+ ld bc, .BeachTilemapEnd - .BeachTilemap
call CopyData
- call Func_f8a0e
+ call .PlaceTextbox
ld hl, wOAMBuffer + 5 * 4 + 1
- ld bc, $24
+ ld bc, 9 * 4
xor a
call FillMemory
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
ret
-Tilemap_f8946:
+.BeachTilemap:
INCBIN "gfx/unknown_f8946.map"
-Tilemap_f8946End:
+.BeachTilemapEnd:
-Func_f8a0e:
+.PlaceTextbox:
coord hl, 1, 1
lb de, $3b, $3c
ld a, $40
- call Func_f8a72
+ call .place_row
coord hl, 1, 2
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 3
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 4
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 5
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 6
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 7
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 8
lb de, $3f, $3f
ld a, $ff
- call Func_f8a72
+ call .place_row
coord hl, 1, 9
lb de, $3d, $3e
ld a, $40
- call Func_f8a72
+ call .place_row
ret
-Func_f8a72:
+.place_row:
ld [hl], d
inc hl
ld c, $10
-.asm_f8a76
+.loop
ld [hli], a
dec c
- jr nz, .asm_f8a76
+ jr nz, .loop
ld [hl], e
ret
-Func_f8a7c:
- ld hl, Tilemap_f8a89
+SurfingMinigame_PrintTextHiScore:
+ ld hl, .Hi_Score
coord de, 6, 8
ld bc, $9
call CopyData
ret
-Tilemap_f8a89:
- db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33
+.Hi_Score:
+ db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33 ; Hi-Score!!
-Func_f8a92:
- ld hl, Tilemap_f8aa2
+SurfingMinigame_WriteHPLeft:
+ ld hl, .HP_Left
coord de, 2, 2
ld bc, $7
call CopyData
- call Func_f8aca
+ call SurfingMinigame_BCDPrintHPLeft
ret
-Tilemap_f8aa2:
- db $20,$21,$ff,$22,$23,$24,$25
+.HP_Left:
+ db $20,$21,$ff,$22,$23,$24,$25 ; HP Left
-Func_f8aa9:
- ld c, $63
-.asm_f8aab
+SurfingMinigame_AddRemainingHPToTotal:
+ ld c, 99
+.loop
push bc
- ld hl, wc5d6
+ ld hl, wSurfingMinigamePikachuHP
ld a, [hli]
or [hl]
and a
- jr z, .asm_f8ac7
- call Func_f88e4
+ jr z, .dead
+ call SurfingMinigame_Deduct1HP
ld e, $1
-.asm_f8ab9
- call Func_f8b42
+ call SurfingMinigame_AddPointsToTotal
pop bc
dec c
- jr nz, .asm_f8aab
-.asm_f8abf
+ jr nz, .loop
ld a, SFX_UNKNOWN_801B0_4
call PlaySound
-.asm_f8ac5
and a
ret
-.asm_f8ac7
+.dead
pop bc
scf
ret
-Func_f8aca:
+SurfingMinigame_BCDPrintHPLeft:
coord hl, 10, 2
- ld de, wc5d7
+ ld de, wSurfingMinigamePikachuHP + 1
ld a, [de]
- call Func_f9350
+ call SurfingPikachu_PlaceBCDNumber
inc hl
ld a, [de]
- call Func_f9350
+ call SurfingPikachu_PlaceBCDNumber
inc hl
inc hl
- ld [hl], $21
+ ld [hl], $21 ; P
inc hl
- ld [hl], $25
+ ld [hl], $25 ; t
inc hl
- ld [hl], $26
+ ld [hl], $26 ; s
ret
-Func_f8ae4:
- ld hl, Tilemap_f8af4
+SurfingMinigame_WriteRadness:
+ ld hl, .Radness
coord de, 2, 4
ld bc, $7
call CopyData
- call Func_f8b25
+ call SurfingMinigame_BCDPrintRadness
ret
-Tilemap_f8af4:
- db $27,$28,$29,$2a,$23,$26,$26
+.Radness:
+ db $27,$28,$29,$2a,$23,$26,$26 ; Radness
-Func_f8afb:
- ld c, $63
-.asm_f8afd
+SurfingMinigame_AddRadnessToTotal:
+ ld c, 99
+.loop
push bc
- ld hl, wc5da
+ ld hl, wSurfingMinigameRadnessScore
ld a, [hli]
ld e, a
or [hl]
- jr z, .asm_f8b22
+ jr z, .done
ld d, [hl]
ld a, e
sub $1
@@ -1610,102 +1617,101 @@ Func_f8afb:
ld [hld], a
ld [hl], e
ld e, $1
- call Func_f8b42
+ call SurfingMinigame_AddPointsToTotal
pop bc
dec c
- jr nz, .asm_f8afd
+ jr nz, .loop
ld a, SFX_UNKNOWN_801B0_4
call PlaySound
-.asm_f8b20
and a
ret
-.asm_f8b22
+.done
pop bc
scf
ret
-Func_f8b25:
- ld a, [wc5db]
+SurfingMinigame_BCDPrintRadness:
+ ld a, [wSurfingMinigameRadnessScore + 1]
coord hl, 10, 4
- call Func_f9350
- ld a, [wc5da]
+ call SurfingPikachu_PlaceBCDNumber
+ ld a, [wSurfingMinigameRadnessScore]
coord hl, 12, 4
- call Func_f9350
+ call SurfingPikachu_PlaceBCDNumber
inc hl
inc hl
- ld [hl], $21
+ ld [hl], $21 ; P
inc hl
- ld [hl], $25
+ ld [hl], $25 ; t
inc hl
- ld [hl], $26
+ ld [hl], $26 ; s
ret
-Func_f8b42:
- ld a, [wc5dc]
+SurfingMinigame_AddPointsToTotal:
+ ld a, [wSurfingMinigameTotalScore]
add e
daa
- ld [wc5dc], a
- ld a, [wc5dd]
+ ld [wSurfingMinigameTotalScore], a
+ ld a, [wSurfingMinigameTotalScore + 1]
adc $0
daa
- ld [wc5dd], a
+ ld [wSurfingMinigameTotalScore + 1], a
ret nc
ld a, $99
- ld [wc5dc], a
- ld [wc5dd], a
+ ld [wSurfingMinigameTotalScore], a
+ ld [wSurfingMinigameTotalScore + 1], a
ret
-Func_f8b5d:
- ld a, [wc5dd]
+SurfingMinigame_BCDPrintTotalScore:
+ ld a, [wSurfingMinigameTotalScore + 1]
coord hl, 10, 6
- call Func_f9350
- ld a, [wc5dc]
+ call SurfingPikachu_PlaceBCDNumber
+ ld a, [wSurfingMinigameTotalScore]
coord hl, 12, 6
- call Func_f9350
+ call SurfingPikachu_PlaceBCDNumber
inc hl
inc hl
- ld [hl], $21
+ ld [hl], $21 ; P
inc hl
- ld [hl], $25
+ ld [hl], $25 ; t
inc hl
- ld [hl], $26
+ ld [hl], $26 ; s
ret
-Func_f8b7a:
- ld hl, Tilemap_f8b8d
+SurfingMinigame_WriteTotal:
+ ld hl, .Total
coord de, 2, 6
ld bc, $5
call CopyData
- call Func_f8b25
- call Func_f8b5d
+ call SurfingMinigame_BCDPrintRadness
+ call SurfingMinigame_BCDPrintTotalScore
ret
-Tilemap_f8b8d:
- db $2b,$2c,$25,$28,$2d
+.Total:
+ db $2b,$2c,$25,$28,$2d ; Total
-Func_f8b92:
+DidPlayerGetAHighScore:
ld hl, wSurfingMinigameHiScore + 1
- ld a, [wc5dd]
+ ld a, [wSurfingMinigameTotalScore + 1]
cp [hl]
- jr c, .asm_f8ba6
- jr nz, .asm_f8bb0
+ jr c, .not_high_score
+ jr nz, .high_score
dec hl
- ld a, [wc5dc]
+ ld a, [wSurfingMinigameTotalScore]
cp [hl]
- jr c, .asm_f8ba6
- jr nz, .asm_f8bb0
-.asm_f8ba6
+ jr c, .not_high_score
+ jr nz, .high_score
+.not_high_score
call WaitForSoundToFinish
ldpikacry e, PikachuCry28
call SurfingMinigame_PlayPikaCryIfSurfingPikaInParty
and a
ret
-.asm_f8bb0
- ld a, [wc5dc]
+.high_score
+ ld a, [wSurfingMinigameTotalScore]
ld [wSurfingMinigameHiScore], a
- ld a, [wc5dd]
+ ld a, [wSurfingMinigameTotalScore + 1]
ld [wSurfingMinigameHiScore + 1], a
call WaitForSoundToFinish
ldpikacry e, PikachuCry34
@@ -1723,73 +1729,81 @@ SurfingMinigame_PlayPikaCryIfSurfingPikaInParty: ; f8bcb (3e:4bcb)
callab PlayPikachuSoundClip
ret
-Func_f8bdf:
- ld a, [wc5d9]
+SurfingMinigame_IncreaseRadnessMeter:
+ ld a, [wSurfingMinigameRadnessMeter]
inc a
cp $4
- jr c, .asm_f8be9
+ jr c, .cap
ld a, $3
-.asm_f8be9
- ld [wc5d9], a
- ret
-
-Func_f8bed:
- ld a, [wc5d9]
+.cap
+ ld [wSurfingMinigameRadnessMeter], a
+ ret
+
+SurfingMinigame_CalculateAndAddRadnessFromStunt:
+ ; Compute the amount of radness points from the
+ ; current trick based on the number of
+ ; consecutive flips
+ ; Single flip: +0050
+ ; 2 of the same flip: +0150
+ ; 3 or more of the same flip: +0350
+ ; 2 different flips: +0180
+ ; 3 or more different flips: +0500
+ ld a, [wSurfingMinigameRadnessMeter]
and a
ret z
- ld a, [wc62f]
+ ld a, [wSurfingMinigameTrickFlags]
and $3
- cp $3
- jr z, .asm_f8c2b
- ld a, [wc5d9]
+ cp $3 ; did a combination of front and back flips
+ jr z, .mixed_chain
+ ld a, [wSurfingMinigameRadnessMeter]
ld d, a
ld e, $1
ld a, $0
-.asm_f8c03
+.get_amount_of_radness
add e
sla e
dec d
- jr nz, .asm_f8c03
-.asm_f8c09
+ jr nz, .get_amount_of_radness
+.add_radness_50_at_a_time
push af
ld e, $50
- call Func_f8c7c
+ call SurfingMinigame_AddRadness
pop af
dec a
- jr nz, .asm_f8c09
- ld hl, $5
+ jr nz, .add_radness_50_at_a_time
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld a, [hl]
sub $10
ld d, a
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld e, [hl]
- ld a, [wc5d9]
+ ld a, [wSurfingMinigameRadnessMeter]
add $3
push bc
call SpawnAnimatedObject
pop bc
ret
-.asm_f8c2b
- ld a, [wc5d9]
+.mixed_chain
+ ld a, [wSurfingMinigameRadnessMeter]
cp $3
- jr c, .asm_f8c53
- ld a, $a
-.asm_f8c34
+ jr c, .add_180_radness_points
+ ld a, 10
+.add_500_radness_50_at_a_time
push af
ld e, $50
- call Func_f8c7c
+ call SurfingMinigame_AddRadness
pop af
dec a
- jr nz, .asm_f8c34
- ld hl, $5
+ jr nz, .add_500_radness_50_at_a_time
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld a, [hl]
sub $10
ld d, a
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld e, [hl]
ld a, $9
@@ -1798,21 +1812,21 @@ Func_f8bed:
pop bc
ret
-.asm_f8c53
+.add_180_radness_points
ld e, $50
- call Func_f8c7c
+ call SurfingMinigame_AddRadness
ld e, $50
- call Func_f8c7c
+ call SurfingMinigame_AddRadness
ld e, $50
- call Func_f8c7c
+ call SurfingMinigame_AddRadness
ld e, $30
- call Func_f8c7c
- ld hl, $5
+ call SurfingMinigame_AddRadness
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld a, [hl]
sub $10
ld d, a
- ld hl, $4
+ ld hl, ANIM_OBJ_X_COORD
add hl, bc
ld e, [hl]
ld a, $8
@@ -1821,89 +1835,91 @@ Func_f8bed:
pop bc
ret
-Func_f8c7c:
- ld a, [wc5da]
+SurfingMinigame_AddRadness:
+ ld a, [wSurfingMinigameRadnessScore]
add e
daa
- ld [wc5da], a
- ld a, [wc5db]
+ ld [wSurfingMinigameRadnessScore], a
+ ld a, [wSurfingMinigameRadnessScore + 1]
adc $0
daa
- ld [wc5db], a
+ ld [wSurfingMinigameRadnessScore + 1], a
ret nc
ld a, $99
- ld [wc5da], a
- ld [wc5db], a
+ ld [wSurfingMinigameRadnessScore], a
+ ld [wSurfingMinigameRadnessScore + 1], a
ret
Func_f8c97:
ld a, $a0
- ld [wc62e], a
+ ld [wSurfingMinigameXOffset], a
ld a, [hSCX]
ld h, a
- ld a, [wc617]
+ ld a, [wSurfingMinigameSCX]
ld l, a
ld de, $900
add hl, de
ld a, l
- ld [wc617], a
+ ld [wSurfingMinigameSCX], a
ld a, h
ld [hSCX], a
jr Func_f8cc7
Func_f8cb0:
ld a, $a0
- ld [wc62e], a
+ ld [wSurfingMinigameXOffset], a
ld a, [hSCX]
ld h, a
- ld a, [wc617]
+ ld a, [wSurfingMinigameSCX]
ld l, a
ld de, $180
add hl, de
ld a, l
- ld [wc617], a
+ ld [wSurfingMinigameSCX], a
ld a, h
ld [hSCX], a
Func_f8cc7:
- ld hl, wc618
+ ld hl, wSurfingMinigameSCX + 1
ld a, [hSCX]
cp [hl]
ret z
ld [hl], a
and $f0
- ld hl, wc619
+ ld hl, wSurfingMinigameSCX + 2
cp [hl]
ret z
ld [hl], a
- call Func_f8d44
+ call SurfingMinigame_GetWaveDataPointers
+ ; b and c contain the height of the next wave to appear
+ ; on screen, in number of pixels from the top of the screen
ld a, b
- ld [wc5e8], a
+ ld [wSurfingMinigameWaveHeightBuffer], a
ld a, c
- ld [wc5e9], a
+ ld [wSurfingMinigameWaveHeightBuffer + 1], a
push de
- ld hl, wc61a
- ld de, wc61c
- ld c, $12
-.asm_f8ceb
+ ld hl, wSurfingMinigameWaveHeight
+ ld de, wSurfingMinigameWaveHeight + 2
+ ld c, SCREEN_WIDTH - 2
+.copy_loop
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_f8ceb
- ld a, [wc5e8]
+ jr nz, .copy_loop
+ ld a, [wSurfingMinigameWaveHeightBuffer]
ld [hli], a
- ld a, [wc5e9]
+ ld a, [wSurfingMinigameWaveHeightBuffer + 1]
ld [hl], a
pop de
ld hl, wRedrawRowOrColumnSrcTiles
ld c, $8
-.asm_f8cff
+.loop
ld a, [de]
- call Func_f8d28
+ call .CopyRedrawSrcTiles
inc de
dec c
- jr nz, .asm_f8cff
- ld a, [wc62e]
+ jr nz, .loop
+ ld a, [wSurfingMinigameXOffset]
ld e, a
ld a, [hSCX]
add e
@@ -1923,7 +1939,7 @@ Func_f8cc7:
ld [hRedrawRowOrColumnMode], a
ret
-Func_f8d28:
+.CopyRedrawSrcTiles:
push de
push hl
ld l, a
@@ -1950,8 +1966,8 @@ Func_f8d28:
pop de
ret
-Func_f8d44:
- ld a, [wc5d3]
+SurfingMinigame_GetWaveDataPointers:
+ ld a, [wSurfingMinigameWaveFunctionNumber]
ld e, a
ld d, $0
ld hl, Jumptable_f8d53
@@ -1963,145 +1979,155 @@ Func_f8d44:
jp [hl]
Jumptable_f8d53:
- dw Func_f8e4b
- dw Func_f8f28
- dw Func_f8f31
- dw Func_f8f3a
- dw Func_f8f43
- dw Func_f8e7d
- dw Func_f8f4c
- dw Func_f8f55
- dw Func_f8f5e
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8ec5
- dw Func_f8ece
- dw Func_f8ed7
- dw Func_f8ee0
- dw Func_f8ee9
- dw Func_f8ef2
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8efb
- dw Func_f8f04
- dw Func_f8f0d
- dw Func_f8f16
- dw Func_f8f1f
- dw Func_f8efb
- dw Func_f8f04
- dw Func_f8f0d
- dw Func_f8f16
- dw Func_f8f1f
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8f28
- dw Func_f8f31
- dw Func_f8f3a
- dw Func_f8f43
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8f4c
- dw Func_f8f55
- dw Func_f8f5e
- dw Func_f8f4c
- dw Func_f8f55
- dw Func_f8f5e
- dw Func_f8f4c
- dw Func_f8f55
- dw Func_f8f5e
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8f67
- dw Func_f8f70
- dw Func_f8efb
- dw Func_f8f04
- dw Func_f8f0d
- dw Func_f8f16
- dw Func_f8f1f
- dw Func_f8f67
- dw Func_f8f70
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8ec5
- dw Func_f8ece
- dw Func_f8ed7
- dw Func_f8ee0
- dw Func_f8ee9
- dw Func_f8ef2
- dw Func_f8e7d
- dw Func_f8f67
- dw Func_f8f70
- dw Func_f8f67
- dw Func_f8f70
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8efb
- dw Func_f8f04
- dw Func_f8f0d
- dw Func_f8f16
- dw Func_f8f1f
- dw Func_f8f28
- dw Func_f8f31
- dw Func_f8f3a
- dw Func_f8f43
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8e7d
- dw Func_f8f94
- dw Func_f8e86
- dw Func_f8e8f
- dw Func_f8e98
- dw Func_f8ea1
- dw Func_f8eaa
- dw Func_f8eb3
- dw Func_f8ebc
- dw Func_f8f9d
- dw Func_f8e7d
- dw Func_f8f79
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f82
- dw Func_f8f8b
-
-Func_f8e4b:
+ dw SurfingMinigameWaveFunction_NoWave ; 00
+
+ dw Func_f8f28 ; 01
+ dw Func_f8f31 ; 02
+ dw Func_f8f3a ; 03
+ dw Func_f8f43 ; 04
+ dw Func_f8e7d ; 05
+ dw Func_f8f4c ; 06
+ dw Func_f8f55 ; 07
+ dw Func_f8f5e ; 08
+ dw Func_f8e7d ; 09
+ dw Func_f8e7d ; 0a
+ dw Func_f8e7d ; 0b
+ dw Func_f8e7d ; 0c
+ dw Func_f8f94 ; 0d
+
+ dw Func_f8ec5 ; 0e
+ dw Func_f8ece ; 0f
+ dw Func_f8ed7 ; 10
+ dw Func_f8ee0 ; 11
+ dw Func_f8ee9 ; 12
+ dw Func_f8ef2 ; 13
+ dw Func_f8e7d ; 14
+ dw Func_f8e7d ; 15
+ dw Func_f8e7d ; 16
+ dw Func_f8e7d ; 17
+ dw Func_f8e7d ; 18
+ dw Func_f8f94 ; 19
+
+ dw Func_f8efb ; 1a
+ dw Func_f8f04 ; 1b
+ dw Func_f8f0d ; 1c
+ dw Func_f8f16 ; 1d
+ dw Func_f8f1f ; 1e
+ dw Func_f8efb ; 1f
+ dw Func_f8f04 ; 20
+ dw Func_f8f0d ; 21
+ dw Func_f8f16 ; 22
+ dw Func_f8f1f ; 23
+ dw Func_f8e7d ; 24
+ dw Func_f8e7d ; 25
+ dw Func_f8e7d ; 26
+ dw Func_f8e7d ; 27
+ dw Func_f8f94 ; 28
+
+ dw Func_f8f28 ; 29
+ dw Func_f8f31 ; 2a
+ dw Func_f8f3a ; 2b
+ dw Func_f8f43 ; 2c
+ dw Func_f8e7d ; 2d
+ dw Func_f8e7d ; 2e
+ dw Func_f8e7d ; 2f
+ dw Func_f8e7d ; 30
+ dw Func_f8f94 ; 31
+
+ dw Func_f8f4c ; 32
+ dw Func_f8f55 ; 33
+ dw Func_f8f5e ; 34
+ dw Func_f8f4c ; 35
+ dw Func_f8f55 ; 36
+ dw Func_f8f5e ; 37
+ dw Func_f8f4c ; 38
+ dw Func_f8f55 ; 39
+ dw Func_f8f5e ; 3a
+ dw Func_f8e7d ; 3b
+ dw Func_f8e7d ; 3c
+ dw Func_f8e7d ; 3d
+ dw Func_f8e7d ; 3e
+ dw Func_f8f94 ; 3f
+
+ dw Func_f8f67 ; 40
+ dw Func_f8f70 ; 41
+ dw Func_f8efb ; 42
+ dw Func_f8f04 ; 43
+ dw Func_f8f0d ; 44
+ dw Func_f8f16 ; 45
+ dw Func_f8f1f ; 46
+ dw Func_f8f67 ; 47
+ dw Func_f8f70 ; 48
+ dw Func_f8e7d ; 49
+ dw Func_f8e7d ; 4a
+ dw Func_f8e7d ; 4b
+ dw Func_f8f94 ; 4c
+
+ dw Func_f8ec5 ; 4d
+ dw Func_f8ece ; 4e
+ dw Func_f8ed7 ; 4f
+ dw Func_f8ee0 ; 50
+ dw Func_f8ee9 ; 51
+ dw Func_f8ef2 ; 52
+ dw Func_f8e7d ; 53
+ dw Func_f8f67 ; 54
+ dw Func_f8f70 ; 55
+ dw Func_f8f67 ; 56
+ dw Func_f8f70 ; 57
+ dw Func_f8e7d ; 58
+ dw Func_f8e7d ; 59
+ dw Func_f8e7d ; 5a
+ dw Func_f8f94 ; 5b
+
+ dw Func_f8efb ; 5c
+ dw Func_f8f04 ; 5d
+ dw Func_f8f0d ; 5e
+ dw Func_f8f16 ; 5f
+ dw Func_f8f1f ; 60
+ dw Func_f8f28 ; 61
+ dw Func_f8f31 ; 62
+ dw Func_f8f3a ; 63
+ dw Func_f8f43 ; 64
+ dw Func_f8e7d ; 65
+ dw Func_f8e7d ; 66
+ dw Func_f8e7d ; 67
+ dw Func_f8e7d ; 68
+ dw Func_f8f94 ; 69
+
+ dw Func_f8e86 ; 6a
+ dw Func_f8e8f ; 6b
+ dw Func_f8e98 ; 6c
+ dw Func_f8ea1 ; 6d
+ dw Func_f8eaa ; 6e
+ dw Func_f8eb3 ; 6f
+ dw Func_f8ebc ; 70
+ dw Func_f8f9d ; 71
+
+ dw Func_f8e7d ; 72
+ dw Func_f8f79 ; 73
+ dw Func_f8f82 ; 74
+ dw Func_f8f82 ; 75
+ dw Func_f8f82 ; 76
+ dw Func_f8f82 ; 77
+ dw Func_f8f82 ; 78
+ dw Func_f8f82 ; 79
+ dw Func_f8f82 ; 7a
+ dw Func_f8f8b ; 7b
+
+SurfingMinigameWaveFunction_NoWave:
ld a, [wc5e5]
cp $16
- jr c, .asm_f8e5a
- jr z, .asm_f8e56
- jr nc, .asm_f8e6e
-.asm_f8e56
+ jr c, .check_param
+ jr z, .big_kahuna
+ jr nc, .got_wave
+.big_kahuna
ld a, $6a
- jr .asm_f8e6b
+ jr .got_next_fn
-.asm_f8e5a
+.check_param
ld a, [wc5d5]
and a
- jr z, .asm_f8e6e
+ jr z, .got_wave
dec a
and $7
ld e, a
@@ -2109,9 +2135,9 @@ Func_f8e4b:
ld hl, Unkn_f8e75
add hl, de
ld a, [hl]
-.asm_f8e6b
- ld [wc5d3], a
-.asm_f8e6e
+.got_next_fn
+ ld [wSurfingMinigameWaveFunctionNumber], a
+.got_wave
lb bc, $74, $74
ld de, Unkn_f973d
ret
@@ -2122,215 +2148,215 @@ Unkn_f8e75:
Func_f8e7d:
lb bc, $74, $74
ld de, Unkn_f973d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8e86:
lb bc, $74, $6c
ld de, Unkn_f9745
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8e8f:
lb bc, $64, $5c
ld de, Unkn_f974d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8e98:
lb bc, $54, $4c
ld de, Unkn_f9755
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ea1:
lb bc, $44, $44
ld de, Unkn_f975d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8eaa:
lb bc, $44, $4c
ld de, Unkn_f9765
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8eb3:
lb bc, $54, $5c
ld de, Unkn_f976d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ebc:
lb bc, $64, $6c
ld de, Unkn_f9775
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ec5:
lb bc, $74, $6c
ld de, Unkn_f977d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ece:
lb bc, $64, $5c
ld de, Unkn_f9785
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ed7:
lb bc, $54, $4c
ld de, Unkn_f978d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ee0:
lb bc, $4c, $4c
ld de, Unkn_f9795
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ee9:
lb bc, $54, $5c
ld de, Unkn_f979d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8ef2:
lb bc, $64, $6c
ld de, Unkn_f97a5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8efb:
lb bc, $74, $6c
ld de, Unkn_f97ad
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f04:
lb bc, $64, $5c
ld de, Unkn_f97b5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f0d:
lb bc, $54, $54
ld de, Unkn_f97bd
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f16:
lb bc, $54, $5c
ld de, Unkn_f97c5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f1f:
lb bc, $64, $6c
ld de, Unkn_f97cd
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f28:
lb bc, $74, $6c
ld de, Unkn_f97d5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f31:
lb bc, $64, $5c
ld de, Unkn_f97dd
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f3a:
lb bc, $5c, $5c
ld de, Unkn_f97e5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f43:
lb bc, $64, $6c
ld de, Unkn_f97ed
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f4c:
lb bc, $74, $6c
ld de, Unkn_f97f5
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f55:
lb bc, $64, $64
ld de, Unkn_f97fd
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f5e:
lb bc, $64, $6c
ld de, Unkn_f9805
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f67:
lb bc, $74, $6c
ld de, Unkn_f980d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f70:
lb bc, $6c, $6c
ld de, Unkn_f9815
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f79:
lb bc, $74, $74
ld de, Unkn_f981d
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f82:
lb bc, $74, $74
ld de, Unkn_f9825
- jp Func_f8fa9
+ jp SurfingMinigameWaveFunction_GoToNextWaveFunction
Func_f8f8b:
lb bc, $74, $74
ld de, Unkn_f9825
- jp Func_f8fae
+ jp SurfingMinigameWaveFunction_ResetWaveFunction
Func_f8f94:
lb bc, $74, $74
ld de, Unkn_f973d
- jp Func_f8fae
+ jp SurfingMinigameWaveFunction_ResetWaveFunction
Func_f8f9d:
lb bc, $74, $74
ld de, Unkn_f973d
ret
-Func_f8fa4:
+Func_f8fa4: ; unused
inc a
- ld [wc5d3], a
+ ld [wSurfingMinigameWaveFunctionNumber], a
ret
-Func_f8fa9:
- ld hl, wc5d3
+SurfingMinigameWaveFunction_GoToNextWaveFunction:
+ ld hl, wSurfingMinigameWaveFunctionNumber
inc [hl]
ret
-Func_f8fae:
+SurfingMinigameWaveFunction_ResetWaveFunction:
xor a
- ld [wc5d3], a
+ ld [wSurfingMinigameWaveFunctionNumber], a
ret
-Func_f8fb3:
- call Func_f9279
+SurfingPikachuMinigameIntro:
+ call SurfingPikachu_ClearTileMap
call ClearSprites
call DisableLCD
xor a
ld [H_AUTOBGTRANSFERENABLED], a
call ClearObjectAnimationBuffers
- ld hl, $6324
+ ld hl, SurfingPikachu1Graphics3
ld de, $8800
ld bc, $900
- ld a, $20
+ ld a, BANK(SurfingPikachu1Graphics3)
call FarCopyData
- ld a, Unkn_f93d3 % $100
+ ld a, SurfingPikachuSpawnStateDataPointer % $100
ld [wAnimatedObjectSpawnStateDataPointer], a
- ld a, Unkn_f93d3 / $100
+ ld a, SurfingPikachuSpawnStateDataPointer / $100
ld [wAnimatedObjectSpawnStateDataPointer + 1], a
- ld a, Jumptable_f93fa % $100
+ ld a, SurfingPikachuObjectJumptable % $100
ld [wAnimatedObjectJumptablePointer], a
- ld a, Jumptable_f93fa / $100
+ ld a, SurfingPikachuObjectJumptable / $100
ld [wAnimatedObjectJumptablePointer + 1], a
- ld a, Unkn_f9507 % $100
+ ld a, SurfingPikachuOAMData % $100
ld [wAnimatedObjectOAMDataPointer], a
- ld a, Unkn_f9507 / $100
+ ld a, SurfingPikachuOAMData / $100
ld [wAnimatedObjectOAMDataPointer + 1], a
- ld a, Unkn_f9405 % $100
+ ld a, SurfingPikachuFrames % $100
ld [wAnimatedObjectFramesDataPointer], a
- ld a, Unkn_f9405 / $100
+ ld a, SurfingPikachuFrames / $100
ld [wAnimatedObjectFramesDataPointer + 1], a
ld a, $c
lb de, $74, $58
call SpawnAnimatedObject
- call Func_f9053
+ call DrawSurfingPikachuMinigameIntroBackground
xor a
ld [hSCX], a
ld [hSCY], a
@@ -2345,7 +2371,7 @@ Func_f8fb3:
call DelayFrame
call DelayFrame
call DelayFrame
- call Func_f81e9
+ call SurfingPikachuMinigame_SetBGPals
ld a, $e4
ld [rOBP0], a
ld a, $e0
@@ -2357,9 +2383,9 @@ Func_f8fb3:
ld c, BANK(Music_SurfingPikachu)
call PlayMusic
xor a
- ld [wc633], a
+ ld [wSurfingMinigameIntroAnimationFinished], a
.loop
- ld a, [wc633]
+ ld a, [wSurfingMinigameIntroAnimationFinished]
and a
ret nz
ld a, $0
@@ -2368,7 +2394,7 @@ Func_f8fb3:
call DelayFrame
jr .loop
-Func_f9053:
+DrawSurfingPikachuMinigameIntroBackground:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, $ff
@@ -2434,32 +2460,32 @@ Tilemap_f91ac: INCBIN "gfx/unknown_f91ac.map"
Tilemap_f91bb: INCBIN "gfx/unknown_f91bb.map"
Tilemap_f91c8: INCBIN "gfx/unknown_f91c8.map"
-Func_f9210:
- ld hl, wc710
- ld de, wc710 + 1
+SurfingMinigame_UpdateLYOverrides:
+ ld hl, wLYOverrides + $10
+ ld de, wLYOverrides + $11
ld c, $80
ld a, [hl]
push af
-.asm_f921a
+.loop
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_f921a
+ jr nz, .loop
pop af
ld [hl], a
ret
-Func_f9223:
- ld hl, wc700
- ld bc, $100
+SurfingMinigame_InitScanlineOverrides:
+ ld hl, wLYOverrides
+ ld bc, wLYOverridesEnd - wLYOverrides
ld de, $0
-.asm_f922c
+.loop
ld a, e
and $1f
ld e, a
push hl
- ld hl, Unkn_f96c5
+ ld hl, SurfingMinigame_LYOverridesInitialSineWave
add hl, de
ld a, [hl]
pop hl
@@ -2468,21 +2494,21 @@ Func_f9223:
dec bc
ld a, c
or b
- jr nz, .asm_f922c
+ jr nz, .loop
ret
-Func_f923f:
+SurfingPikachu_GetJoypad_3FrameBuffer:
call Joypad
ld a, [H_FRAMECOUNTER]
and a
- jr nz, .asm_f9250
+ jr nz, .delayed
ld a, [hJoyHeld]
ld [hJoy5], a
ld a, $2
ld [H_FRAMECOUNTER], a
ret
-.asm_f9250
+.delayed
xor a
ld [hJoy5], a
ret
@@ -2508,7 +2534,7 @@ SurfingPikachuMinigame_NormalPals:
call UpdateGBCPal_OBP1
ret
-Func_f9279:
+SurfingPikachu_ClearTileMap:
ld hl, wTileMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
@@ -2521,30 +2547,32 @@ Func_f9284:
ld [wc5ee], a
ret
-Func_f928c:
+SurfingMinigame_UpdatePikachuHeight:
ld a, [wc5ed]
and a
- jr nz, .asm_f92e4
+ jr nz, .positive
ld a, [wc5ec]
ld d, a
ld a, [wc5ee]
or d
- jr z, .asm_f92dd
+ jr z, .done
ld a, [wc5ee]
ld e, a
- ld hl, $ff80
+ ld hl, -$80
add hl, de
ld a, l
ld [wc5ee], a
ld a, h
ld [wc5ec], a
+
+ ; -(4 * a ** 2)
ld e, a
ld d, $0
- call Func_f9340
+ call SurfingMinigame_NTimesDE
ld e, l
ld d, h
ld a, $4
- call Func_f9340
+ call SurfingMinigame_NTimesDE
ld a, l
xor $ff
inc a
@@ -2552,43 +2580,46 @@ Func_f928c:
ld a, h
xor $ff
ld h, a
+
push hl
- ld hl, $5
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld d, [hl]
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld e, [hl]
pop hl
+
add hl, de
ld e, l
ld d, h
- ld hl, $5
+
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], d
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], e
and a
ret
-.asm_f92dd
+.done
ld a, $1
ld [wc5ed], a
and a
ret
-.asm_f92e4
- ld a, [wc5ea]
+.positive
+ ld a, [wSurfingMinigamePikachuObjectHeight]
ld e, a
- ld hl, $5
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld a, [hl]
cp $90
- jr nc, .asm_f92f4
+ jr nc, .okay
cp e
- jr nc, .asm_f9330
-.asm_f92f4
+ jr nc, .reset
+.okay
ld a, [wc5ec]
ld d, a
ld a, [wc5ee]
@@ -2599,58 +2630,63 @@ Func_f928c:
ld [wc5ee], a
ld a, h
ld [wc5ec], a
+
+ ; 4 * a ** 2
ld e, a
ld d, $0
- call Func_f9340
+ call SurfingMinigame_NTimesDE
ld e, l
ld d, h
ld a, $4
- call Func_f9340
+ call SurfingMinigame_NTimesDE
+
push hl
- ld hl, $5
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld d, [hl]
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld e, [hl]
pop hl
+
add hl, de
ld e, l
ld d, h
- ld hl, $5
+
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
ld [hl], d
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], e
and a
ret
-.asm_f9330
- ld hl, $5
+.reset
+ ld hl, ANIM_OBJ_Y_COORD
add hl, bc
- ld a, [wc5ea]
+ ld a, [wSurfingMinigamePikachuObjectHeight]
ld [hl], a
- ld hl, $c
+ ld hl, ANIM_OBJ_FIELD_C
add hl, bc
ld [hl], $0
scf
ret
-Func_f9340:
+SurfingMinigame_NTimesDE:
ld hl, $0
-.asm_f9343
+.loop
srl a
- jr nc, .asm_f9348
+ jr nc, .no_add
add hl, de
-.asm_f9348
+.no_add
sla e
rl d
and a
- jr nz, .asm_f9343
+ jr nz, .loop
ret
-Func_f9350:
+SurfingPikachu_PlaceBCDNumber:
ld c, a
swap a
and $f
@@ -2663,77 +2699,77 @@ Func_f9350:
dec de
ret
-Func_f9360: ; cosine
+SurfingPikachu_Cosine: ; cosine
add $10
-Func_f9362: ; sine
+SurfingPikachu_Sine: ; sine
and $3f
cp $20
- jr nc, .asm_f936d
- call Func_f9377
+ jr nc, .positive
+ call .GetSine
ld a, h
ret
-.asm_f936d
+.positive
and $1f
- call Func_f9377
+ call .GetSine
ld a, h
xor $ff
inc a
ret
-Func_f9377:
+.GetSine:
ld e, a
ld a, d
ld d, $0
- ld hl, Unkn_f9393
+ ld hl, .SineWave
add hl, de
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld hl, $0
-.asm_f9386
+.loop
srl a
- jr nc, .asm_f938b
+ jr nc, .no_add
add hl, de
-.asm_f938b
+.no_add
sla e
rl d
and a
- jr nz, .asm_f9386
+ jr nz, .loop
ret
-Unkn_f9393:
+.SineWave:
sine_wave $100
-Unkn_f93d3:
- db $00, $00, $00
- db $04, $01, $00
- db $11, $02, $00
- db $12, $02, $00
- db $15, $00, $00
- db $16, $00, $00
- db $17, $00, $00
- db $18, $00, $00
- db $19, $00, $00
- db $1a, $00, $00
- db $14, $00, $00
- db $13, $03, $00
- db $1b, $04, $00
-
-Jumptable_f93fa:
- dw Func_f9404
- dw Func_f8470
- dw Func_f87fb
- dw Func_f880b
- dw Func_f882b
-
-Func_f9404:
+SurfingPikachuSpawnStateDataPointer:
+ db $00, $00, $00 ; 0
+ db $04, $01, $00 ; 1
+ db $11, $02, $00 ; 2
+ db $12, $02, $00 ; 3
+ db $15, $00, $00 ; 4
+ db $16, $00, $00 ; 5
+ db $17, $00, $00 ; 6
+ db $18, $00, $00 ; 7
+ db $19, $00, $00 ; 8
+ db $1a, $00, $00 ; 9
+ db $14, $00, $00 ; a
+ db $13, $03, $00 ; b
+ db $1b, $04, $00 ; c
+
+SurfingPikachuObjectJumptable:
+ dw SurfingMinigameAnimatedObjectFn_nop ; 0
+ dw SurfingMinigameAnimatedObjectFn_Pikachu ; 1
+ dw Func_f87fb ; 2
+ dw SurfingMinigameAnimatedObjectFn_FlippingPika ; 3
+ dw SurfingMinigameAnimatedObjectFn_IntroAnimationPikachu ; 4
+
+SurfingMinigameAnimatedObjectFn_nop:
ret
INCLUDE "data/animated_objects_3e_1.asm"
-Unkn_f96c5:
+SurfingMinigame_LYOverridesInitialSineWave:
; a sine wave with amplitude 2
db 0, 0, 0, 1, 1, 1, 1, 2
db 2, 2, 1, 1, 1, 1, 0, 0
@@ -2741,28 +2777,28 @@ Unkn_f96c5:
db -2, -2, -1, -1, -1, -1, 0, 0
Unkn_f96e5:
- db $00, $00, $00, $00
- db $0b, $0b, $0b, $0b
- db $0b, $02, $02, $06
- db $03, $0b, $07, $03
- db $06, $06, $06, $06
- db $07, $07, $07, $07
- db $06, $04, $04, $08
- db $05, $07, $08, $05
- db $0b, $0b, $11, $12
- db $0b, $0b, $13, $03
- db $14, $12, $04, $08
- db $13, $07, $08, $05
- db $06, $14, $06, $14
- db $13, $07, $13, $07
- db $08, $08, $08, $08
- db $14, $12, $14, $12
- db $0b, $11, $02, $14
- db $06, $14, $06, $14
- db $0c, $0c, $0d, $0d
- db $0d, $0d, $0d, $0d
- db $0e, $0f, $10, $0b
- db $12, $13, $12, $13
+ db $00, $00, $00, $00 ; 00
+ db $0b, $0b, $0b, $0b ; 01
+ db $0b, $02, $02, $06 ; 02
+ db $03, $0b, $07, $03 ; 03
+ db $06, $06, $06, $06 ; 04
+ db $07, $07, $07, $07 ; 05
+ db $06, $04, $04, $08 ; 06
+ db $05, $07, $08, $05 ; 07
+ db $0b, $0b, $11, $12 ; 08
+ db $0b, $0b, $13, $03 ; 09
+ db $14, $12, $04, $08 ; 0a
+ db $13, $07, $08, $05 ; 0b
+ db $06, $14, $06, $14 ; 0c
+ db $13, $07, $13, $07 ; 0d
+ db $08, $08, $08, $08 ; 0e
+ db $14, $12, $14, $12 ; 0f
+ db $0b, $11, $02, $14 ; 10
+ db $06, $14, $06, $14 ; 11
+ db $0c, $0c, $0d, $0d ; 12
+ db $0d, $0d, $0d, $0d ; 13
+ db $0e, $0f, $10, $0b ; 14
+ db $12, $13, $12, $13 ; 15
Unkn_f973d:
db $00, $00, $00, $01, $01, $01, $01, $01
diff --git a/engine/titlescreen.asm b/engine/titlescreen.asm
index c6068813..8da93f17 100755
--- a/engine/titlescreen.asm
+++ b/engine/titlescreen.asm
@@ -194,7 +194,7 @@ DisplayTitleScreen: ; 4171 (1:4171)
.asm_42f0 ; 42f0 (1:42f0)
; unreferenced
- callab Func_e8e79
+ callab PrinterDebug
jp .loop
.asm_42fb ; 42fb (1:42fb)
diff --git a/engine/unknown_ea3ea.asm b/engine/unknown_ea3ea.asm
index 9962649d..6337cdee 100755
--- a/engine/unknown_ea3ea.asm
+++ b/engine/unknown_ea3ea.asm
@@ -1,4 +1,4 @@
-Func_ea3ea: ; ea3ea (3a:63ea)
+Printer_GetMonStats: ; ea3ea (3a:63ea)
call GBPalWhiteOutWithDelay3
call ClearScreen
call LoadHpBarAndStatusTilePatterns
@@ -188,7 +188,7 @@ GFX_ea56b:
INCBIN "gfx/stats_screen_lv.1bpp"
GFX_ea56bEnd: ; ea573 (3a:6573)
-Func_ea573: ; ea573 (3a:6573)
+PrinterDebug_LoadGFX: ; ea573 (3a:6573)
ld hl, vChars1 + $7e0
ld de, GFX_ea597
lb bc, BANK(GFX_ea597), (GFX_ea597End - GFX_ea597) / 16
@@ -215,30 +215,30 @@ GFX_ea597: ; ea597 (3a:6597)
INCBIN "gfx/zero_one_ea597.2bpp"
GFX_ea597End:
-Func_ea5b7: ; ea5b7 (3a:65b7)
+PrinterDebug_ConvertStatusFlagsToTiles: ; ea5b7 (3a:65b7)
ld hl, wOAMBuffer + 32 * 4 + 2
ld de, 4
ld a, [wPrinterStatusFlags]
ld c, 8
-.asm_ea5c2
+.loop
sla a
- jr c, .asm_ea5ca
+ jr c, .place_1
ld [hl], $fe
- jr .asm_ea5cc
+ jr .okay
-.asm_ea5ca
+.place_1
ld [hl], $ff
-.asm_ea5cc
+.okay
add hl, de
dec c
- jr nz, .asm_ea5c2
+ jr nz, .loop
ret
-Func_ea5d1: ; ea5d1 (3a:65d1)
+PrinterDebug_DoFunction: ; ea5d1 (3a:65d1)
ld a, [wPrinterSendState]
ld e, a
ld d, 0
- ld hl, Jumptable_ea5e0
+ ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
@@ -246,7 +246,7 @@ Func_ea5d1: ; ea5d1 (3a:65d1)
ld l, a
jp [hl]
-Jumptable_ea5e0:
+.Jumptable:
dw Func_ea623
dw Func_ea6d2
dw Func_ea6af
@@ -267,7 +267,6 @@ Jumptable_ea5e0:
dw Func_ea72f
dw Func_ea732
-
Func_ea606: ; ea606 (3a:6606)
ld hl, wPrinterSendState
inc [hl]
@@ -317,7 +316,7 @@ Func_ea645: ; ea645 (3a:6645)
jr z, Func_ea671
ld hl, Data_ea9ea
call Func_ea76b
- call Func_ea7e9
+ call PrinterDebug_PrepOAMForPrinting
ld a, $80
ld [wPrinterDataSize], a
ld a, $2
@@ -508,7 +507,7 @@ Func_ea784: ; ea784 (3a:6784)
xor a
ld [wPrinterDataSize], a
ld [wPrinterDataSize + 1], a
- ld hl, wPrinterSendDataSource
+ ld hl, wPrinterSendDataSource1
ld bc, $280
call FillMemory
ret
@@ -522,7 +521,7 @@ Func_ea7a2: ; ea7a2 (3a:67a2)
ld c, a
ld a, [wPrinterDataSize + 1]
ld b, a
- ld de, wPrinterSendDataSource
+ ld de, wPrinterSendDataSource1
call Func_ea7c5
ld a, l
ld [wPrinterDataHeader + 4], a
@@ -547,7 +546,7 @@ Func_ea7c5: ; ea7c5 (3a:67c5)
Func_ea7d2: ; ea7d2 (3a:67d2)
ld a, $1
- ld [wPrinterSendDataSource], a
+ ld [wPrinterSendDataSource1], a
ld a, [wcae2]
ld [wPrinterStatusReceived], a
ld a, $e4
@@ -556,7 +555,7 @@ Func_ea7d2: ; ea7d2 (3a:67d2)
ld [wc6f3], a
ret
-Func_ea7e9: ; ea7e9 (3a:67e9)
+PrinterDebug_PrepOAMForPrinting: ; ea7e9 (3a:67e9)
ld a, [wPrinterRowIndex]
ld b, a
ld a, [wPrinterQueueLength]
@@ -573,7 +572,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
.start_working
ld e, l
ld d, h
- ld hl, wPrinterSendDataSource
+ ld hl, wPrinterSendDataSource1
ld c, $28
.prep_loop
ld a, [de]
@@ -598,7 +597,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
or $80
.got_vram_address
ld d, a
- lb bc, BANK(Func_ea7e9), $1
+ lb bc, BANK(PrinterDebug_PrepOAMForPrinting), $1
call CopyVideoData
pop hl
ld de, $10
@@ -714,27 +713,27 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
.Jumptable: ; ea8ba (3a:68ba)
dw .nop
- dw .one
- dw .two
+ dw .xflip
+ dw .yflip
dw .both
.nop: ; ea8c2 (3a:68c2)
ret
-.one: ; ea8c3 (3a:68c3)
- call .Invert
+.xflip: ; ea8c3 (3a:68c3)
+ call .XFlip
ret
-.two: ; ea8c7 (3a:68c7)
- call .Swap
+.yflip: ; ea8c7 (3a:68c7)
+ call .YFlip
ret
.both: ; ea8cb (3a:68cb)
- call .Invert
- call .Swap
+ call .XFlip
+ call .YFlip
ret
-.Invert: ; ea8d2 (3a:68d2)
+.XFlip: ; ea8d2 (3a:68d2)
ld hl, wcbdc
ld c, 16
.byte_loop
@@ -751,7 +750,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
jr nz, .byte_loop
ret
-.Swap: ; ea8e8 (3a:68e8)
+.YFlip: ; ea8e8 (3a:68e8)
ld hl, wcbdc
ld de, wcbea
ld c, $4
@@ -874,28 +873,28 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
.PalFunJumptable: ; ea979 (3a:6979)
dw .zero_zero
- dw .one_zero
- dw .zero_one
- dw .one_one
+ dw .xflip_zero
+ dw .zero_xflip
+ dw .xflip_xflip
.zero_zero: ; ea981 (3a:6981)
sla b
sla c
ret
-.one_zero: ; ea986 (3a:6986)
+.xflip_zero: ; ea986 (3a:6986)
scf
rl b
sla c
ret
-.zero_one: ; ea98c (3a:698c)
+.zero_xflip: ; ea98c (3a:698c)
sla b
scf
rl c
ret
-.one_one: ; ea992 (3a:6992)
+.xflip_xflip: ; ea992 (3a:6992)
scf
rl b
scf
@@ -907,12 +906,12 @@ Func_ea7e9: ; ea7e9 (3a:67e9)
ld a, [hli]
ld c, [hl]
and $8
- jr nz, .use_wc830
- ld hl, wPrinterSendDataSource
+ jr nz, .use_source_2
+ ld hl, wPrinterSendDataSource1
jr .got_data_source
-.use_wc830
- ld hl, wc830
+.use_source_2
+ ld hl, wPrinterSendDataSource2
.got_data_source
ld b, $0
ld a, c
diff --git a/engine/vermilion_gym_trash_cans.asm b/engine/vermilion_gym_trash_cans.asm
new file mode 100755
index 00000000..63ac04eb
--- /dev/null
+++ b/engine/vermilion_gym_trash_cans.asm
@@ -0,0 +1,108 @@
+TrashCanRandom:
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JumpToAddress
+ ld e, a
+ ld d, 0
+ ret
+
+.Jumptable:
+ dw .zero
+ dw .one
+ dw .two
+ dw .three
+ dw .four
+
+.zero
+.one
+ ld a, 0
+ ret
+
+.two
+ call Random
+ and $1
+ ret
+
+.three ; should return to a, instead returns to b
+ call Random
+ swap a
+ cp 1 * $ff / 3
+ ld b, 0
+ ret c
+ cp 2 * $ff / 3
+ ld b, 1
+ ret c
+ ld b, 2
+ ret
+
+.four
+ call Random
+ and $3
+ ret
+
+Yellow_SampleSecondTrashCan:
+ ld hl, GymTrashCans3c
+ ld a, [wGymTrashCanIndex]
+ ld c, a
+ ld b, 0
+ ld a, 9
+ call AddNTimes
+ call AddNTimes ; ????
+ ld a, [hli]
+ ld [hGymTrashCanRandNumMask], a
+ ld e, a
+ push hl
+ call TrashCanRandom
+ pop hl
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [wSecondLockTrashCanIndex], a
+ ld a, [hl]
+ ld [wSecondLockTrashCanIndex + 1], a
+ ret
+
+GymTrashCans3c: ; f2d31 (3c:6d31)
+; First byte: number of trashcan entries
+; Following four byte pairs: indices for the second trash can.
+; BUG: Rows that have 3 trashcan entries are sampled incorrectly.
+; The sampling occurs by taking a random number and seeing which
+; third of the range 0-255 the number falls in. However, it returns
+; that value to the wrong register, so the result is never used.
+; Instead of using an offset in [0,1,2], the offset is instead
+; in the full range 0-255. This results in truly random behavior.
+ db 4
+ db 1,3, 3,1, 1,-1, 3,-1
+ db 3
+ db 0,2, 2,4, 4,0, -1,-1
+ db 4
+ db 1,5, 5,1, 1,-1, 5,-1
+ db 3
+ db 0,4, 4,6, 6,0, -1,-1
+ db 4
+ db 1,3, 3,1, 5,5, 7,7
+ db 3
+ db 2,4, 4,8, 8,2, -1,-1
+ db 3
+ db 3,7, 7,9, 9,3, -1,-1
+ db 4
+ db 4,8, 6,10, 8,4, 10,6
+ db 3
+ db 5,7, 7,11, 11,5, -1,-1
+ db 3
+ db 6,10, 10,12, 12,6, -1,-1
+ db 4
+ db 7,9, 9,7, 11,13, 13,11
+ db 3
+ db 8,10, 10,14, 14,8, -1,-1
+ db 4
+ db 9,13, 13,9, 9,-1, 13,-1
+ db 3
+ db 10,12, 12,14, 14,10, -1,-1
+ db 4
+ db 11,13, 13,11, 11,-1, 13,-1
diff --git a/engine/yellow_intro.asm b/engine/yellow_intro.asm
index 5aad4d33..3adb72b5 100755
--- a/engine/yellow_intro.asm
+++ b/engine/yellow_intro.asm
@@ -323,7 +323,7 @@ YellowIntroScene6:
call YellowIntro_BlankPalsDelay2AndDisableLCD
ld c, $5
call UpdateMusicCTimes
- ld a, $42
+ ld a, rSCY - $ff00
ld [hLCDCPointer], a
call YellowIntro_Copy8BitSineWave
ld hl, vBGMap0
@@ -359,8 +359,8 @@ YellowIntroScene7:
ld hl, hSCX
inc [hl]
inc [hl]
- ld hl, wYellowIntroSurfingPikaSineWaveBuffer
- ld de, wYellowIntroSurfingPikaSineWaveBuffer + 1
+ ld hl, wLYOverridesBuffer
+ ld de, wLYOverridesBuffer + 1
ld a, [hl]
push af
ld c, $ff
@@ -775,8 +775,8 @@ Func_f9e9a:
ret
YellowIntro_Copy8BitSineWave:
- ; Copy this sine wave into wYellowIntroSurfingPikaSineWaveBuffer 8 times (end just before wc900)
- ld de, wYellowIntroSurfingPikaSineWaveBuffer
+ ; Copy this sine wave into wLYOverridesBuffer 8 times (end just before wc900)
+ ld de, wLYOverridesBuffer
ld a, $8
.loop
push af
@@ -797,13 +797,13 @@ YellowIntro_Copy8BitSineWave:
.SineWaveEnd:
Request7TileTransferFromC810ToC710:
- ld a, wc810 % $100
+ ld a, $10
ld [H_VBCOPYSRC], a
- ld a, wc810 / $100
+ ld a, wLYOverridesBuffer / $100
ld [H_VBCOPYSRC + 1], a
- ld a, wc710 % $100
+ ld a, $10
ld [H_VBCOPYDEST], a
- ld a, wc710 / $100
+ ld a, wLYOverrides / $100
ld [H_VBCOPYDEST + 1], a
ld a, $7
ld [H_VBCOPYSIZE], a
diff --git a/gfx/surfing_pikachu_1a.png b/gfx/surfing_pikachu_1a.png
new file mode 100644
index 00000000..0bc11684
--- /dev/null
+++ b/gfx/surfing_pikachu_1a.png
Binary files differ
diff --git a/gfx/surfing_pikachu_1b.png b/gfx/surfing_pikachu_1b.png
new file mode 100644
index 00000000..a64eb4c7
--- /dev/null
+++ b/gfx/surfing_pikachu_1b.png
Binary files differ
diff --git a/gfx/surfing_pikachu_1c.t5.png b/gfx/surfing_pikachu_1c.t5.png
new file mode 100644
index 00000000..eeedb243
--- /dev/null
+++ b/gfx/surfing_pikachu_1c.t5.png
Binary files differ
diff --git a/home.asm b/home.asm
index d84413bc..fd034f44 100644
--- a/home.asm
+++ b/home.asm
@@ -1144,7 +1144,7 @@ DisplayTextID:: ; 2817 (0:2817)
and a
jp z, DisplayStartMenu
cp TEXT_PIKACHU_ANIM ; new yellow asm
- jp z, DisplayUnknownText_29c6
+ jp z, DisplayPikachuEmotion
cp TEXT_SAFARI_GAME_OVER
jp z, DisplaySafariGameOverText
cp TEXT_MON_FAINTED
@@ -1348,8 +1348,8 @@ RepelWoreOffText:: ; 29c1 (0:29c1)
TX_FAR _RepelWoreOffText
db "@"
-DisplayUnknownText_29c6:: ; 29c6 (0:29c6)
- callab Func_fd004 ; 3f:5004
+DisplayPikachuEmotion:: ; 29c6 (0:29c6)
+ callab TalkToPikachu ; 3f:5004
jp CloseTextDisplay
INCLUDE "engine/menu/start_menu.asm"
diff --git a/home/init.asm b/home/init.asm
index 67d52dd2..ad602a99 100644
--- a/home/init.asm
+++ b/home/init.asm
@@ -3,8 +3,6 @@ SoftReset:: ; 1d08 (0:1d08)
call GBPalWhiteOut
ld c, 32
call DelayFrames
- ; fallthrough
-
Init:: ; 1d10 (0:1d10)
; Program init.
@@ -99,7 +97,7 @@ rLCDC_DEFAULT EQU %11100011
predef LoadSGB
- ld a, $1f ; BANK(SFX_1f_67)
+ ld a, BANK(SFX_Shooting_Star)
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
ld a, $9c
diff --git a/home/lcdc.asm b/home/lcdc.asm
index 7057f755..f94cdb19 100644
--- a/home/lcdc.asm
+++ b/home/lcdc.asm
@@ -1,19 +1,20 @@
LCDC:: ; 15ac (0:15ac)
push af
- ld a,[hLCDCPointer] ; doubles as enabling byte
+ ld a, [hLCDCPointer] ; doubles as enabling byte
and a
- jr z,.noLCDCInterrupt
+ jr z, .noLCDCInterrupt
push hl
- ld a,[rLY]
- ld l,a
- ld h,$c7
- ld h,[hl] ; h != not part of pointer
- ld a,[hLCDCPointer]
- ld l,a
- ld a,h
- ld h,$ff
- ld [hl],a
+ ; [C700 + [rLY]] --> [FF00 + [hLCDCPointer]]
+ ld a, [rLY]
+ ld l, a
+ ld h, wLYOverrides / $100
+ ld h, [hl] ; h != not part of pointer
+ ld a, [hLCDCPointer]
+ ld l, a
+ ld a, h
+ ld h, $ff
+ ld [hl], a
pop hl
.noLCDCInterrupt
pop af
- reti \ No newline at end of file
+ reti
diff --git a/home/overworld.asm b/home/overworld.asm
index e80b829c..484e19c3 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -1848,7 +1848,7 @@ LoadMapHeader:: ; 0dab (0:0dab)
jr asm_0dbd
Func_0db5:: ; XXX
- callba Func_f0a55 ; 3c:4a55
+ callba LoadUnusedBluesHouseMissableObjectData ; 3c:4a55
asm_0dbd
ld a, [wCurMapTileset]
ld [wUnusedD119], a
@@ -1945,9 +1945,9 @@ asm_0dbd
predef LoadTilesetHeader
ld a, [wd72e]
bit 5, a ; did a battle happen immediately before this?
- jr nz, .asm_0e73
- callab Func_fc4fa ; 3f:44fa
-.asm_0e73
+ jr nz, .skip_pika_spawn
+ callab SchedulePikachuSpawnForAfterText ; 3f:44fa
+.skip_pika_spawn
callab LoadWildData ; 3:4b62
pop hl ; restore hl from before going to the warp/sign/sprite data (this value was saved for seemingly no purpose)
ld a, [wCurMapHeight] ; map height in 4x4 tile blocks
@@ -2067,7 +2067,7 @@ ReloadMapAfterPrinter:: ; 0f3d (0:0f3d)
pop af
call BankswitchCommon
asm_0f4d: ; 0f4d (0:0f4d)
- jpab Func_f02da
+ jpab SetMapSpecificScriptFlagsOnMapReload
ret ; useless?
ResetMapVariables:: ; 0f56 (0:0f56)
@@ -2150,7 +2150,7 @@ IgnoreInputForHalfSecond: ; 0fc3 (0:0fc3)
ld [wIgnoreInputCounter], a
ld hl, wd730
ld a, [hl]
- or $26
+ or %00100110 ; $26
ld [hl], a ; set ignore input bit
ret
diff --git a/home/pikachu.asm b/home/pikachu.asm
index e79fdb1b..c2521208 100755
--- a/home/pikachu.asm
+++ b/home/pikachu.asm
@@ -14,14 +14,14 @@ Func_151d:: ; 151d (0:151d)
pop hl
ret
-Func_1525:: ; 1525 (0:1525)
+EnablePikachuOverworldSpriteDrawing:: ; 1525 (0:1525)
push hl
ld hl, wPikachuOverworldStateFlags
res 3, [hl]
pop hl
ret
-Func_152d:: ; 152d (0:152d)
+DisablePikachuOverworldSpriteDrawing:: ; 152d (0:152d)
push hl
ld hl, wPikachuOverworldStateFlags
set 3, [hl]
diff --git a/home/text.asm b/home/text.asm
index eadaf0b3..15fe3177 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -59,9 +59,9 @@ PlaceNextChar:: ; 1724 (0:1724)
ret
Char4ETest:: ; 172d (0:172d)
- cp $4E
+ cp $4E ; next
jr nz, .next
- ld bc, $0028
+ ld bc, 2 * SCREEN_WIDTH
ld a, [hFlags_0xFFFA]
bit 2, a
jr z, .next2
@@ -73,7 +73,7 @@ Char4ETest:: ; 172d (0:172d)
jp PlaceNextChar_inc ; 17b6
.next
- cp $4F
+ cp $4F ; line
jr nz, .next3
pop hl
coord hl, 1, 16
@@ -81,46 +81,36 @@ Char4ETest:: ; 172d (0:172d)
jp PlaceNextChar_inc
.next3 ; Check against a dictionary
+dict: macro
+if \1 == 0
and a
- jp z, Char00
- cp $4C
- jp z, Char4C
- cp $4B
- jp z, Char4B
- cp $51
- jp z, Char51
- cp $49
- jp z, Char49
- cp $52
- jp z, Char52
- cp $53
- jp z, Char53
- cp $54
- jp z, Char54
- cp $5B
- jp z, Char5B
- cp $5E
- jp z, Char5E
- cp $5C
- jp z, Char5C
- cp $5D
- jp z, Char5D
- cp $55
- jp z, Char55
- cp $56
- jp z, Char56
- cp $57
- jp z, Char57
- cp $58
- jp z, Char58
- cp $4A
- jp z, Char4A
- cp $5F
- jp z, Char5F
- cp $59
- jp z, Char59
- cp $5A
- jp z, Char5A
+else
+ cp \1
+endc
+ jp z, \2
+endm
+
+ dict $00, Char00 ; error
+ dict $4C, Char4C ; autocont
+ dict $4B, Char4B ; cont_
+ dict $51, Char51 ; para
+ dict $49, Char49 ; page
+ dict $52, Char52 ; player
+ dict $53, Char53 ; rival
+ dict $54, Char54 ; POKé
+ dict $5B, Char5B ; PC
+ dict $5E, Char5E ; ROCKET
+ dict $5C, Char5C ; TM
+ dict $5D, Char5D ; TRAINER
+ dict $55, Char55 ; cont
+ dict $56, Char56 ; 6 dots
+ dict $57, Char57 ; done
+ dict $58, Char58 ; prompt
+ dict $4A, Char4A ; PKMN
+ dict $5F, Char5F ; dex
+ dict $59, Char59 ; TARGET
+ dict $5A, Char5A ; USER
+
ld [hli], a
call PrintLetterDelay
PlaceNextChar_inc:: ; 17b6 (0:17b6)
@@ -263,18 +253,18 @@ Char5F:: ; 185f (0:185f)
pop hl
ret
-Char58:: ; 1863 (0:1863)
+Char58:: ; 1863 (0:1863) prompt
ld a, [wLinkState]
cp LINK_STATE_BATTLING
- jp z, Next1870
+ jp z, .next
ld a, $EE
Coorda 18, 16
-Next1870:: ; 1870 (0:1870)
+.next ; 1870 (0:1870)
call ProtectedDelay3 ; 1913
call ManualTextScroll ; 388e
ld a, " " ; space
Coorda 18, 16
-Char57:: ; 1aad (0:1aad)
+Char57:: ; 1aad (0:1aad) done
pop hl
ld de, Char58Text
dec de
@@ -283,7 +273,7 @@ Char57:: ; 1aad (0:1aad)
Char58Text:: ; 1881 (0:1881)
db "@"
-Char51:: ; 1882 (0:1882)
+Char51:: ; 1882 (0:1882) para
push de
ld a, $EE
Coorda 18, 16
@@ -334,13 +324,13 @@ Char4B:: ; 18d1 (0:18d1)
;fall through
Char4C:: ; 18e3 (0:18e3)
push de
- call Next18F1 ; 18f1
- call Next18F1
+ call ScrollTextUpOneLine ; 18f1
+ call ScrollTextUpOneLine
coord hl, 1, 16
pop de
jp PlaceNextChar_inc
-Next18F1:: ; 18f1 (0:18f1)
+ScrollTextUpOneLine:: ; 18f1 (0:18f1)
coord hl, 0, 14
coord de, 0, 13
ld b, 60
@@ -531,8 +521,8 @@ TextCommand06:: ; 19a5 (0:19a5)
TextCommand07:: ; 19c0 (0:19c0)
ld a, " "
Coorda 18, 16 ; place blank space in lower right corner of dialogue text box
- call Next18F1 ; scroll up text
- call Next18F1
+ call ScrollTextUpOneLine ; scroll up text
+ call ScrollTextUpOneLine
pop hl
coord bc, 1, 16 ; address of second line of dialogue text box
jp NextTextCommand
diff --git a/macros.asm b/macros.asm
index 1875d00c..b318c999 100644
--- a/macros.asm
+++ b/macros.asm
@@ -308,6 +308,8 @@ TX_RAM: MACRO
ENDM
TX_BCD: MACRO
+; \1: RAM address to read from
+; \2: number of bytes + print flags
db $2
dw \1
db \2
@@ -352,8 +354,6 @@ TX_PRIZE_VENDOR EQUS "db $f7"
TX_POKECENTER_PC EQUS "db $f9"
TX_PLAYERS_PC EQUS "db $fc"
TX_BILLS_PC EQUS "db $fd"
-TX_POKEMART_CLERK EQUS "db $fe"
-TX_POKECENTER_NURSE EQUS "db $ff"
TX_MART: MACRO
db $FE, _NARG
@@ -364,6 +364,8 @@ TX_MART: MACRO
db $FF
ENDM
+TX_POKECENTER_NURSE EQUS "db $ff"
+
; Predef macro.
predef_const: MACRO
const \1PredefID
@@ -848,108 +850,19 @@ enum_set: macro
__enum__ = \1
endm
-pikacry_def: MACRO
-\1_id:: dba \1
-endm
-
-dpikacry: MACRO
- db (\1_id - PikachuCriesPointerTable) / 3
- endm
-
-ldpikacry: MACRO
- ld \1, (\2_id - PikachuCriesPointerTable) / 3
- ENDM
-
-pikacry: MACRO
- ldpikacry a, \1
- endm
-
-
- enum_start
- enum pikapic_nop_command
-pikapic_nop: macro
- db pikapic_nop_command
- endm
-
- enum pikapic_writebyte_command
-pikapic_writebyte: macro
- db pikapic_writebyte_command, \1
- endm
-
- enum pikapic_loadgfx_command
-pikapic_loadgfx: macro
- db pikapic_loadgfx_command, (\1_id - PikaPicAnimGFXHeaders) / 4
- endm
-
- enum pikapic_object_command
-pikapic_object: macro
- db pikapic_object_command
- dw \1
- db \2, \3, \4
- endm
-
- enum pikapic_nop4_command
-pikapic_nop4: macro
- db pikapic_nop4_command
- endm
-
- enum pikapic_nop5_command
-pikapic_nop5: macro
- db pikapic_nop5_command
- endm
-
- enum pikapic_waitbgmapeleteobject_command
-pikapic_waitbgmapeleteobject: macro
- db pikapic_waitbgmapeleteobject_command, \1
- endm
-
- enum pikapic_nop7_command
-pikapic_nop7: macro
- db pikapic_nop7_command
- endm
-
- enum pikapic_nop8_command
-pikapic_nop8: macro
- db pikapic_nop8_command
- endm
-
- enum pikapic_jump_command
-pikapic_jump: macro ; 9
- dbw pikapic_jump_command, \1
- endm
-
- enum pikapic_setduration_command
-pikapic_setduration: macro ; a
- dbw pikapic_setduration_command, \1
- endm
-
- enum pikapic_cry_command
-pikapic_cry: macro ; b
- db pikapic_cry_command
-IF _NARG == 0
- db $ff
-else
- dpikacry \1
- endc
- endm
-
- enum pikapic_thunderbolt_command
-pikapic_thunderbolt: macro ; c
- db pikapic_thunderbolt_command
- endm
-
- enum pikapic_waitbgmap_command
-pikapic_waitbgmap: macro ; d
- db pikapic_waitbgmap_command
- endm
-
- enum pikapic_ret_command
-pikapic_ret: macro ; e
- db pikapic_ret_command
- endm
-
-pikapic_looptofinish: macro
-.loop\@
- pikapic_waitbgmap
- pikapic_jump .loop\@
- endm
+ANIM_OBJ_INDEX EQUS "AnimatedObject0Index - AnimatedObject0"
+ANIM_OBJ_FRAME_SET EQUS "AnimatedObject0FramesetID - AnimatedObject0"
+ANIM_OBJ_CALLBACK EQUS "AnimatedObject0AnimSeqID - AnimatedObject0"
+ANIM_OBJ_TILE EQUS "AnimatedObject0TileID - AnimatedObject0"
+ANIM_OBJ_X_COORD EQUS "AnimatedObject0XCoord - AnimatedObject0"
+ANIM_OBJ_Y_COORD EQUS "AnimatedObject0YCoord - AnimatedObject0"
+ANIM_OBJ_X_OFFSET EQUS "AnimatedObject0XOffset - AnimatedObject0"
+ANIM_OBJ_Y_OFFSET EQUS "AnimatedObject0YOffset - AnimatedObject0"
+ANIM_OBJ_DURATION EQUS "AnimatedObject0Duration - AnimatedObject0"
+ANIM_OBJ_DURATION_OFFSET EQUS "AnimatedObject0DurationOffset - AnimatedObject0"
+ANIM_OBJ_FRAME_IDX EQUS "AnimatedObject0FrameIndex - AnimatedObject0"
+ANIM_OBJ_FIELD_B EQU $b
+ANIM_OBJ_FIELD_C EQU $c
+ANIM_OBJ_FIELD_D EQU $d
+ANIM_OBJ_FIELD_E EQU $e
+ANIM_OBJ_FIELD_F EQU $f
diff --git a/scripts/celadongamecorner2.asm b/scripts/celadongamecorner2.asm
new file mode 100755
index 00000000..f8d25905
--- /dev/null
+++ b/scripts/celadongamecorner2.asm
@@ -0,0 +1,12 @@
+Func_f1f23:
+ ld hl, PikachuMovementData_f1f2c
+ ld b, SPRITE_FACING_DOWN
+ call TryApplyPikachuMovementData
+ ret
+
+PikachuMovementData_f1f2c:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm
index 6df2bcd6..187f8579 100755
--- a/scripts/daycarem.asm
+++ b/scripts/daycarem.asm
@@ -221,8 +221,8 @@ DayCareMText1:
ld [wPikachuSpawnState], a
; GameFreak... TriHard
- ld hl, Func_fc4fa
- ld b, BANK(Func_fc4fa)
+ ld hl, SchedulePikachuSpawnForAfterText
+ ld b, BANK(SchedulePikachuSpawnForAfterText)
ld hl, Bankswitch
ldpikacry e, PikachuCry35
diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm
index 5a6b9456..55b58b39 100755
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -473,8 +473,8 @@ OaksLabScript17:
ld [wPlayerFacingDirection], a
ld a, $2
ld [wPikachuSpawnState], a
- callba Func_fc4fa
- call Func_1525
+ callba SchedulePikachuSpawnForAfterText
+ call EnablePikachuOverworldSpriteDrawing
ld a, $1a
ld [hSpriteIndexOrTextID], a
call DisplayTextID
@@ -1044,7 +1044,7 @@ OaksLabText18:
call AddPartyMon
ld a, 163
ld [wPartyMon1CatchRate], a
- call Func_152d
+ call DisablePikachuOverworldSpriteDrawing
SetEvent EVENT_GOT_STARTER
ld hl, wd72e
set 3, [hl]
diff --git a/scripts/pokemontower2_2.asm b/scripts/pokemontower2_2.asm
new file mode 100755
index 00000000..42659da3
--- /dev/null
+++ b/scripts/pokemontower2_2.asm
@@ -0,0 +1,12 @@
+Func_f1e22:
+ ld hl, PikachuMovementData_f1e2b
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+PikachuMovementData_f1e2b:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/vermiliongym.asm b/scripts/vermiliongym.asm
index eb726831..90ffc34c 100755
--- a/scripts/vermiliongym.asm
+++ b/scripts/vermiliongym.asm
@@ -29,14 +29,15 @@ Gym3LeaderName:
VermilionGymScript_5ca6d:
CheckEvent EVENT_2ND_LOCK_OPENED
- jr nz, .asm_5ca78
+ jr nz, .opened_second_lock
ld a, $24
- jr .asm_5ca7f
-.asm_5ca78
+ jr .load_door_tile
+
+.opened_second_lock
ld a, SFX_GO_INSIDE
call PlaySound
ld a, $5
-.asm_5ca7f
+.load_door_tile
ld [wNewTileBlockID], a
lb bc, 2, 2
predef_jump ReplaceTileBlock
@@ -73,12 +74,13 @@ VermilionGymScript_5caaa:
ld [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM24
- jr .asm_5cad3
+ jr .set_gym_flags
+
.BagFull
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
-.asm_5cad3
+.set_gym_flags
ld hl, wObtainedBadges
set 2, [hl]
ld hl, wBeatGymFlags
@@ -132,17 +134,19 @@ VermilionGymTrainerHeader2:
VermilionGymText1:
TX_ASM
CheckEvent EVENT_BEAT_LT_SURGE
- jr z, .asm_5cb39
+ jr z, .engage_surge
CheckEventReuseA EVENT_GOT_TM24
- jr nz, .asm_5cb31
+ jr nz, .after_win_text
call z, VermilionGymScript_5caaa
call DisableWaitingAfterTextDisplay
- jr .asm_5cb6a
-.asm_5cb31
+ jr .text_script_end
+
+.after_win_text
ld hl, VermilionGymText_5cb72
call PrintText
- jr .asm_5cb6a
-.asm_5cb39
+ jr .text_script_end
+
+.engage_surge
ld hl, VermilionGymText_5cb6d
call PrintText
ld hl, wd72d
@@ -162,7 +166,7 @@ VermilionGymText1:
ld a, $3
ld [wVermilionGymCurScript], a
ld [wCurMapScript], a
-.asm_5cb6a
+.text_script_end
jp TextScriptEnd
VermilionGymText_5cb6d:
@@ -179,7 +183,7 @@ VermilionGymText6:
VermilionGymText7:
TX_FAR _ReceivedTM24Text
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _TM24ExplanationText
db "@"
@@ -249,14 +253,15 @@ VermilionGymText5:
TX_ASM
ld a, [wBeatGymFlags]
bit 2, a
- jr nz, .asm_5cbeb
+ jr nz, .beat_surge
ld hl, VermilionGymText_5cbf4
call PrintText
- jr .asm_5cbf1
-.asm_5cbeb
+ jr .text_script_end
+
+.beat_surge
ld hl, VermilionGymText_5cbf9
call PrintText
-.asm_5cbf1
+.text_script_end
jp TextScriptEnd
VermilionGymText_5cbf4:
diff --git a/wram.asm b/wram.asm
index f7ecd357..db658ec9 100755
--- a/wram.asm
+++ b/wram.asm
@@ -231,16 +231,16 @@ wSpriteStateData1:: ; c100
; C1xF
spritestatedata1: MACRO
w\1SpriteStateData1::
-w\1PictureID:: db
-w\1MovementStatus:: db
-w\1SpriteImageIdx:: db
-w\1YStepVector:: db
-w\1YPixels:: db
-w\1XStepVector:: db
-w\1XPixels:: db
-w\1IntraAnimFrameCounter:: db
-w\1AnimFrameCounter:: db
-w\1FacingDirection:: db
+w\1PictureID:: db ; 0
+w\1MovementStatus:: db ; 1
+w\1SpriteImageIdx:: db ; 2
+w\1YStepVector:: db ; 3
+w\1YPixels:: db ; 4
+w\1XStepVector:: db ; 5
+w\1XPixels:: db ; 6
+w\1IntraAnimFrameCounter:: db ; 7
+w\1AnimFrameCounter:: db ; 8
+w\1FacingDirection:: db ; 9
ds 6
w\1SpriteStateData1End::
endm
@@ -288,17 +288,17 @@ wSpriteStateData2:: ; c200
; C2xF
spritestatedata2: MACRO
w\1SpriteStateData2::
-w\1WalkAnimationCounter:: db
- ds 1
-w\1YDisplacement:: db
-w\1XDisplacement:: db
-w\1MapY:: db
-w\1MapX:: db
-w\1MovementByte1:: db
-w\1GrassPriority:: db
-w\1MovementDelay:: db
+w\1WalkAnimationCounter:: db ; 0
+ ds 1
+w\1YDisplacement:: db ; 2
+w\1XDisplacement:: db ; 3
+w\1MapY:: db ; 4
+w\1MapX:: db ; 5
+w\1MovementByte1:: db ; 6
+w\1GrassPriority:: db ; 7
+w\1MovementDelay:: db ; 8
ds 5
-w\1SpriteImageBaseOffset:: db
+w\1SpriteImageBaseOffset:: db ; e
ds 1
w\1SpriteStateData2End::
endm
@@ -350,7 +350,34 @@ wAnimatedObjectsData::
wAnimatedObjectStartTileOffsets::
ds 10 * 2
wAnimatedObjectDataStructs:: ; c51c
- ds 10 * $10
+animated_object: macro
+\1::
+\1Index:: db ; 0
+\1FramesetID:: db ; 1
+\1AnimSeqID:: db ; 2
+\1TileID:: db ; 3
+\1XCoord:: db ; 4
+\1YCoord:: db ; 5
+\1XOffset:: db ; 6
+\1YOffset:: db ; 7
+\1Duration:: db ; 8
+\1DurationOffset:: db ; 9
+\1FrameIndex:: db ; a
+ ds 5
+\1End::
+ endm
+
+ animated_object AnimatedObject0
+ animated_object AnimatedObject1
+ animated_object AnimatedObject2
+ animated_object AnimatedObject3
+ animated_object AnimatedObject4
+ animated_object AnimatedObject5
+ animated_object AnimatedObject6
+ animated_object AnimatedObject7
+ animated_object AnimatedObject8
+ animated_object AnimatedObject9
+
wNumLoadedAnimatedObjects:: ; c5bc
ds 1
wCurrentAnimatedObjectOAMBufferOffset:: ; c5bd
@@ -383,29 +410,29 @@ wAnimatedObjectsDataEnd::
wSerialEnemyMonsPatchList:: ; c5d0
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
+
+; Surfing Minigame
+wSurfingMinigameData:: ; c5d0
ds 1
-wc5d1:: ; c5d1
+wSurfingMinigameRoutineNumber:: ; c5d1
ds 1
wc5d2:: ; c5d2
ds 1
-wc5d3:: ; c5d3
+wSurfingMinigameWaveFunctionNumber:: ; c5d3
ds 2
wc5d5:: ; c5d5
ds 1
-wc5d6:: ; c5d6
- ds 1
-wc5d7:: ; c5d7
- ds 2
-wc5d9:: ; c5d9
- ds 1
-wc5da:: ; c5da
+wSurfingMinigamePikachuHP:: ; c5d6
+ ds 2 ; little-endian BCD
+wc5d8:: ; c5d8 unused?
ds 1
-wc5db:: ; c5db
- ds 1
-wc5dc:: ; c5dc
- ds 1
-wc5dd:: ; c5dd
+wSurfingMinigameRadnessMeter:: ; c5d9
+; number of consecutive tricks
ds 1
+wSurfingMinigameRadnessScore:: ; c5da
+ ds 2 ; little-endian BCD
+wSurfingMinigameTotalScore:: ; c5dc
+ ds 2 ; little-endian BCD
wc5de:: ; c5de
ds 1
wc5df:: ; c5df
@@ -417,18 +444,12 @@ wc5e1:: ; c5e1
wc5e2:: ; c5e2
ds 1
wc5e3:: ; c5e3
- ds 2
+ ds 2 ; little-endian
wc5e5:: ; c5e5
- ds 1
-wc5e6:: ; c5e6
- ds 1
-wc5e7:: ; c5e7
- ds 1
-wc5e8:: ; c5e8
- ds 1
-wc5e9:: ; c5e9
- ds 1
-wc5ea:: ; c5ea
+ ds 3 ; big-endian
+wSurfingMinigameWaveHeightBuffer:: ; c5e8
+ ds 2
+wSurfingMinigamePikachuObjectHeight:: ; c5ea
ds 1
wc5eb:: ; c5eb
ds 1
@@ -438,37 +459,25 @@ wc5ed:: ; c5ed
ds 1
wc5ee:: ; c5ee
ds 1
-wc5ef:: ; c5ef
- ds 1
-wc5f0:: ; c5f0
- ds 39
-wc617:: ; c617
- ds 1
-wc618:: ; c618
- ds 1
-wc619:: ; c619
- ds 1
-wc61a:: ; c61a
- ds 2
-wc61c:: ; c61c
- ds 5
-wc621:: ; c621
- ds 1
-wc622:: ; c622
- ds 1
-wc623:: ; c623
- ds 11
-wc62e:: ; c62e
+wSurfingMinigameBGMapReadBuffer:: ; c5ef
+ ds 16
+
+ ds 24
+wSurfingMinigameSCX:: ; c617
+ ds 3
+wSurfingMinigameWaveHeight:: ; c61a
+ ds SCREEN_WIDTH
+wSurfingMinigameXOffset:: ; c62e
ds 1
-wc62f:: ; c62f
+wSurfingMinigameTrickFlags:: ; c62f
ds 1
wc630:: ; c630
ds 1
wc631:: ; c631
ds 1
-wc632:: ; c632
+wSurfingMinigameRoutineDelay:: ; c632
ds 1
-wc633:: ; c633
+wSurfingMinigameIntroAnimationFinished:: ; c633
ds 1
wYellowIntroCurrentScene:: ; c634
@@ -478,13 +487,10 @@ wYellowIntroSceneTimer:: ; c635
wc635:: ; c635
ds 1
wYellowIntroAnimatedObjectStructPointer:: ; c636
- ds 2
-
-; c638
- ds 96
+ ds 1
+wSurfingMinigameDataEnd:: ; c637
-; c698
- ds 80
+ ds 177
wTempPic:: ; c6e8
wPrinterData:: ; c6e8
@@ -508,9 +514,6 @@ wc6ed:: ; c6ed
wPrinterChecksum:: ; c6ee
dw
-wPrinterSendDataSource:: ; c6f0
-; a 40-tile buffer
-; ds $280
wPrinterSerialReceived:: ; c6f0
ds 1
wPrinterStatusReceived:: ; c6f1
@@ -524,21 +527,20 @@ wc6f2:: ; c6f2
ds 1
wc6f3:: ; c6f3
ds 13
-wc700:: ; c700
- ds $10
-wc710:: ; c710
- ds $f0
-wYellowIntroSurfingPikaSineWaveBuffer:: ; c800
- ; ds $100
- ds $10
-wc810:: ; c810
- ds $20
-wc830:: ; c830
- ds $d0
-
-; c900
- ds $70
-wPrinterSendDataSourceEnd:: ; c970
+wLYOverrides:: ; c700
+ ds $100
+wLYOverridesEnd::
+wLYOverridesBuffer:: ; c800
+ ds $100
+wLYOverridesBufferEnd:: ; c900
+ ds wPrinterSerialReceived - @
+
+wPrinterSendDataSource1:: ; c6f0
+; two 20-tile buffers
+ ds $140
+wPrinterSendDataSource2::
+ ds $140
+wPrinterSendDataSource1End:: ; c970
wPrinterHandshake:: ; c970
ds 1
@@ -835,13 +837,14 @@ wSwitchPartyMonTempBuffer:: ; cc97
wPikaPicAnimObjectDataBuffer:: ; cc98
; 4 structs each of length 8
-; 0: index
-; 1: object id (dw)
-; 3: ?
-; 4: ?
-; 5: ?
-; 6: ?
-; 7: ?
+; 0: buffer index
+; 1: script index
+; 2: frame index
+; 3: frame timer
+; 4: vtile offset
+; 5: x offset
+; 6: y offset
+; 7: unused
ds 9
@@ -1620,7 +1623,7 @@ wTextPredefFlag:: ; cf11
wPredefParentBank:: ; cf12
ds 1
-wSpriteIndex:: ds 1
+wSpriteIndex:: ds 1 ; cf13
wCurSpriteMovement2:: ; cf14
; movement byte 2 of current sprite
@@ -2836,32 +2839,53 @@ wPikachuFollowCommandBuffer:: ds 16 ; d437
wExpressionNumber:: ; d447
ds 1
-wExpressionNumber2:: ; d448
+wPikaPicAnimNumber:: ; d448
ds 1
wPikachuMovementScriptBank:: ds 1 ; d449
wPikachuMovementScriptAddress:: dw ; d44a
-wd44d:: ds 1 ; d44c
+wPikachuMovementFlags:: ; d44c
+; bit 6 - spawn shadow
+; bit 7 - signal end of command
+ ds 1
+
+wCurPikaMovementData:: ; d44d
+wCurPikaMovementParam1:: ds 1 ; d44d
+wCurPikaMovementFunc1:: ds 1 ; d44e
+wCurPikaMovementParam2:: ds 1 ; d44f
+wCurPikaMovementFunc2:: ds 1 ; d450
+wd451:: ds 1 ; d451
+wCurPikaMovementSpriteImageIdx:: ds 1 ; d452
+wPikaSpriteX:: ds 1 ; d453
+wPikaSpriteY:: ds 1 ; d454
+wPikachuMovementXOffset:: ds 1 ; d455
+wPikachuMovementYOffset:: ds 1 ; d456
+wPikachuStepTimer:: ds 1 ; d457
+wPikachuStepSubtimer:: ds 1 ; d458
+ ds 5
+wCurPikaMovementDataEnd:: ; d45e
+ ds wCurPikaMovementData - @
+
-wCurPikaMovementData:: ;
wPikaPicAnimPointer:: dw ; d44d
wPikaPicAnimPointerSetupFinished:: ds 1 ; d44f
-wPikaPicAnimCurGraphicID:: ds 1
+wPikaPicAnimCurGraphicID:: ds 1 ; d450
wPikaPicAnimTimer:: ds 2 ; d451
-wPikaPicAnimDelay::
-wPikaSpriteX:: ds 1
-wPikaPicTextboxStartX::
-wPikaSpriteY:: ds 1 ; d454
-wPikaPicTextboxStartY:: ds 1 ; d455
-wd456:: ds 1 ; d456
-wd457:: ds 1 ; d457
-wd458:: ds 1 ; d458
-wCurPikaPicAnimObject:: ; d459
-wCurPikaPicAnimObjectIndex:: ds 1 ; d459
-wCurPikaPicAnimObjectGraphicID:: dw ; d45a
- ds 2
-wCurPikaMovementDataEnd:: ; d45e
- ds 17
+wPikaPicAnimDelay:: ds 1 ; d453
+wPikaPicPikaDrawStartX:: ds 1 ; d454
+wPikaPicPikaDrawStartY:: ds 1 ; d455
+
+wCurPikaPicAnimObject:: ; d456
+wCurPikaPicAnimObjectVTileOffset:: db ; d456
+wCurPikaPicAnimObjectXOffset:: db ; d457
+wCurPikaPicAnimObjectYOffset:: db ; d458
+wCurPikaPicAnimObjectScriptIdx:: db ; d459
+wCurPikaPicAnimObjectFrameIdx:: db ; d45a
+wCurPikaPicAnimObjectFrameTimer:: db ; d45b
+ ds 1
+wCurPikaPicAnimObjectEnd:: ; d45d
+
+ ds 18
wPikachuHappiness:: ds 1 ; d46f
wPikachuMood:: ds 1 ; d470