diff options
author | YamaArashi <shadow962@live.com> | 2016-06-11 17:49:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-11 17:49:03 -0700 |
commit | db0ac16b6b4f257de338d1aaac561e681ca8723a (patch) | |
tree | d6888723f443557ce45c9a00d873caa5e7a8930e | |
parent | 401d6e7f36e86aa246a2c0591195e1f0f01e879f (diff) | |
parent | f5983c0f813d3d908b6016db3ed866e4ca9437dc (diff) |
Merge pull request #14 from PikalaxALT/master
Yellow documentation
63 files changed, 3960 insertions, 3686 deletions
@@ -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 Binary files differnew file mode 100644 index 00000000..0bc11684 --- /dev/null +++ b/gfx/surfing_pikachu_1a.png diff --git a/gfx/surfing_pikachu_1b.png b/gfx/surfing_pikachu_1b.png Binary files differnew file mode 100644 index 00000000..a64eb4c7 --- /dev/null +++ b/gfx/surfing_pikachu_1b.png diff --git a/gfx/surfing_pikachu_1c.t5.png b/gfx/surfing_pikachu_1c.t5.png Binary files differnew file mode 100644 index 00000000..eeedb243 --- /dev/null +++ b/gfx/surfing_pikachu_1c.t5.png @@ -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 @@ -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: @@ -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 |