summaryrefslogtreecommitdiff
path: root/engine/pikachu_pic_animation.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/pikachu_pic_animation.asm')
-rwxr-xr-xengine/pikachu_pic_animation.asm2204
1 files changed, 21 insertions, 2183 deletions
diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm
index 390bf39b..a49e9bc2 100755
--- a/engine/pikachu_pic_animation.asm
+++ b/engine/pikachu_pic_animation.asm
@@ -1,1714 +1,3 @@
-IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c)
- ld a, [wd436]
- and a
- ret z
- ld a, [hSpriteIndexOrTextID]
- cp $f
- ret nz
- call InitializePikachuTextID
- xor a
- ld [hSpriteIndexOrTextID], a
- ld [wd436], a
- ret
-
-InitializePikachuTextID: ; fcf20 (3f:4f20)
- ld a, $d4 ; display
- ld [hSpriteIndexOrTextID], a
- xor a
- ld [wPlayerMovingDirection], a
- ld a, $1
- ld [wAutoTextBoxDrawingControl], a
- call DisplayTextID
- xor a
- ld [wAutoTextBoxDrawingControl], a
- ret
-
-DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
-.loop
- ld a, [de]
- inc de
- cp $ff
- jr z, .done
- ld c, a
- ld b, $0
- ld hl, StarterPikachuEmotionsJumptable
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- jr .loop
-.done
- ret
-
-StarterPikachuEmotionsJumptable: ; fcf54 (3f:4f54)
- dw StarterPikachuEmotionCommand_nop ; 0
- dw StarterPikachuEmotionCommand_text ; 1
- dw StarterPikachuEmotionCommand_pcm ; 2
- dw StarterPikachuEmotionCommand_emote ; 3
- dw StarterPikachuEmotionCommand_4 ; 4
- dw StarterPikachuEmotionCommand_5 ; 5
- dw StarterPikachuEmotionCommand_subcmd ; 6
- dw StarterPikachuEmotionCommand_delay ; 7
- dw StarterPikachuEmotionCommand_nop2 ; 8
- dw StarterPikachuEmotionCommand_9 ; 9
- dw StarterPikachuEmotionCommand_nop3 ; a
-
-StarterPikachuEmotionCommand_nop: ; fcf6a (3f:4f6a)
-StarterPikachuEmotionCommand_nop3: ; fcf6a (3f:4f6a)
- ret
-
-StarterPikachuEmotionCommand_text: ; fcf6b (3f:4f6b)
- ld a, [de]
- ld l, a
- inc de
- ld a, [de]
- ld h, a
- inc de
- push de
- call PrintText
- pop de
- ret
-
-StarterPikachuEmotionCommand_pcm: ; fcf77 (3f:4f77)
- ld a, [de]
- inc de
- push de
- ld e, a
- nop
- call PlayPikachuSoundClip_
- pop de
- ret
-
-PlayPikachuSoundClip_: ; fcf81 (3f:4f81)
- cp $ff
- ret z
- callab PlayPikachuSoundClip
- ret
-
-StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d)
- ld a, [wUpdateSpritesEnabled]
- push af
- ld a, $ff
- ld [wUpdateSpritesEnabled], a
- ld a, [de]
- inc de
- push de
- call ShowPikachuEmoteBubble
- pop de
- pop af
- ld [wUpdateSpritesEnabled], a
- ret
-
-ShowPikachuEmoteBubble: ; fcfa2 (3f:4fa2)
- ld [wWhichEmotionBubble], a
- ld a, $f
- ld [wEmotionBubbleSpriteIndex], a
- predef EmotionBubble
- ret
-
-StarterPikachuEmotionCommand_4: ; fcfb0 (3f:4fb0)
- ld a, [de]
- inc de
- ld l, a
- ld a, [de]
- inc de
- ld h, a
- push de
- ld b, $3f
- call Func_fd2a1
- pop de
- ret
-
-StarterPikachuEmotionCommand_delay: ; fcfbe (3f:4fbe)
- ld a, [de]
- inc de
- push de
- ld c, a
- call DelayFrames
- pop de
- ret
-
-StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7)
- ld a, [de]
- inc de
- push de
- ld e, a
- ld d, $0
- ld hl, Jumptable_fcfda
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- pop de
- ret
-
-Jumptable_fcfda:
- dw LoadPikachuSpriteIntoVRAM
- dw LoadFontTilePatterns
- dw Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3
- dw WaitForTextScrollButtonPress
- dw PikachuPewterPokecenterCheck
- dw PikachuFanClubCheck
- dw PikachuBillsHouseCheck
-
-StarterPikachuEmotionCommand_nop2: ; fcfe8 (3f:4fe8)
- ret
-
-StarterPikachuEmotionCommand_9: ; fcfe9 (3f:4fe9)
- push de
- call Func_fcff2
- call UpdateSprites
- pop de
- ret
-
-Func_fcff2: ; fcff2 (3f:4ff2)
- ld a, [wSpriteStateData1 + $9]
- xor $4
- ld [wSpriteStateData1 + $f9], a
- ret
-
-Func_fcffb: ; fcffb (3f:4ffb)
-; Inexplicably empty.
- rept 5
- nop
- endr
- ret
-
-Func_fd001:: ; fd001 (3f:5001)
- ld a, e
- jr asm_fd00f
-
-Func_fd004:: ; fd004 (3f:5004)
- call Func_fd05e
- jr c, asm_fd00f
- call GetPikaPicAnimationScriptIndex
- call Func_fcffb
-asm_fd00f: ; fd00f (3f:500f)
- ld [wExpressionNumber], a
- ld hl, PikachuEmotionTable
- call DoStarterPikachuEmotions
- 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
- dw PikachuEmotion22_fd1c1
- dw PikachuEmotion23_fd1c7
- dw PikachuEmotion24_fd1cf
- dw PikachuEmotion25_fd1d7
- dw PikachuEmotion26_fd1df
- dw PikachuEmotion27_fd1eb
- dw PikachuEmotion28_fd1f1
- dw PikachuEmotion29_fd1f7
- dw PikachuEmotion30_fd1fc
- dw PikachuEmotion31_fd20a
- dw PikachuEmotion32_fd213
- dw PikachuEmotion33_fd05d
-
-PikachuEmotion33_fd05d: ; fd05d (3f:505d)
- db $ff
-
-Func_fd05e: ; fd05e (3f:505e)
- ld a, [wCurMap]
- cp POKEMON_FAN_CLUB
- jr nz, .notFanClub
- ld hl, wPreventBlackout
- bit 7, [hl]
- ld a, $1d
- jr z, .asm_fd0c9
- call CheckPikachuFollowingPlayer
- ld a, $1e
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notFanClub
- ld a, [wCurMap]
- cp PEWTER_POKECENTER
- jr nz, .notPewterPokecenter
- call CheckPikachuFollowingPlayer
- ld a, $1a
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notPewterPokecenter
- callab Func_f24ae
- ld a, e
- cp $ff
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.asm_fd096
- call IsPlayerPikachuAsleepInParty
- ld a, $b
- jr c, .asm_fd0c9
- callab Func_fce73 ; same bank
- ld a, $1c
- jr c, .asm_fd0c9
- ld a, [wCurMap]
- cp POKEMONTOWER_1
- jr c, .notInLavenderTower
- cp POKEMONTOWER_7 + 1
- ld a, $16
- jr c, .asm_fd0c9
-.notInLavenderTower
- ld a, [wd49c]
- and a
- jr z, .asm_fd0c7
- dec a
- ld c, a
- ld b, $0
- ld hl, Pointer_fd0cb
- add hl, bc
- ld a, [hl]
- jr .asm_fd0c9
-.asm_fd0c7
- and a
- ret
-.asm_fd0c9
- scf
- ret
-
-Pointer_fd0cb:
- db $12, $15, $17, $18, $19
-
-IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
- xor a
- ld [wWhichPokemon], a
-.loop
- ld a, [wWhichPokemon]
- ld c, a
- ld b, $0
- ld hl, wPartySpecies
- add hl, bc
- ld a, [hl]
- cp $ff
- jr z, .done
- cp PIKACHU
- jr nz, .curMonNotStarterPikachu
- callab IsThisPartymonStarterPikachu
- jr nc, .curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- ld hl, wPartyMon1Status
- ld bc, wPartyMon2 - wPartyMon1
- call AddNTimes
- ld a, [hl]
- and SLP
- jr z, .done
- jr .curMonSleepingPikachu
-.curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- cp PARTY_LENGTH - 1
- jr z, .done
- inc a
- ld [wWhichPokemon], a
- jr .loop
-.curMonSleepingPikachu
- scf
- ret
-.done
- and a
- ret
-
-PikachuEmotion0_fd115: ; fd115 (3f:5115)
- db $ff
-
-PikachuEmotion2_fd116: ; fd116 (3f:5116)
- pikaemotion_dummy2
- pikaemotion_emotebubble SMILE_BUBBLE
- pikaemotion_pcm PikachuCry35
- pikaemotion_5 $2
- db $ff
-
-PikachuEmotion10_fd11e: ; fd11e (3f:511e)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm PikachuCry5
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion7_fd128: ; fd128 (3f:5128)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd224
- pikaemotion_pcm PikachuCry1
- pikaemotion_4 Pointer_fd224
- pikaemotion_5 $7
- db $ff
-
-PikachuEmotion4_fd136: ; fd136 (3f:5136)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd230
- pikaemotion_pcm PikachuCry29
- pikaemotion_5 $4
- db $ff
-
-PikachuEmotion1_fd141: ; fd141 (3f:5141)
- pikaemotion_dummy2
- pikaemotion_pcm
- pikaemotion_5 $1
- db $ff
-
-PikachuEmotion8_fd147: ; fd147 (3f:5147)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry39
- pikaemotion_5 $8
- db $ff
-
-PikachuEmotion5_fd14d: ; fd14d (3f:514d)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry31
- pikaemotion_5 $5
- db $ff
-
-PikachuEmotion6_fd153: ; fd153 (3f:5153)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm
- pikaemotion_4 Pointer_fd21e
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $6
- db $ff
-
-PikachuEmotion3_fd160: ; fd160 (3f:5160)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry40
- pikaemotion_5 $3
- db $ff
-
-PikachuEmotion9_fd166: ; fd166 (3f:5166)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm PikachuCry6
- pikaemotion_4 Pointer_fd218
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $9
- db $ff
-
-PikachuEmotion11_fd173: ; fd173 (3f:5173)
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm PikachuCry37
- pikaemotion_5 $b
- db $ff
-
-PikachuEmotion12_fd17a: ; fd17a (3f:517a)
- pikaemotion_dummy2
- pikaemotion_pcm
- pikaemotion_5 $c
- db $ff
-
-PikachuEmotion13_fd180: ; fd180 (3f:5180)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd21e
- pikaemotion_5 $d
- db $ff
-
-PikachuEmotion14_fd189: ; fd189 (3f:5189)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm PikachuCry10
- pikaemotion_5 $e
- db $ff
-
-PikachuEmotion15_fd191: ; fd191 (3f:5191)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry34
- pikaemotion_5 $f
- db $ff
-
-PikachuEmotion16_fd197: ; fd197 (3f:5197)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry33
- pikaemotion_5 $10
- db $ff
-
-PikachuEmotion17_fd19d: ; fd19d (3f:519d)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry13
- pikaemotion_5 $11
- db $ff
-
-PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3)
- pikaemotion_dummy2
- pikaemotion_pcm
- pikaemotion_5 $12
- db $ff
-
-PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm PikachuCry33
- pikaemotion_5 $13
- db $ff
-
-PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm PikachuCry5
- pikaemotion_5 $14
- db $ff
-
-PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9)
- pikaemotion_dummy2
- pikaemotion_emotebubble FISH_BUBBLE
- pikaemotion_pcm
- pikaemotion_5 $15
- db $ff
-
-PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry4
- pikaemotion_5 $16
- db $ff
-
-PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry19
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- db $ff
-
-PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf)
- pikaemotion_dummy2
- pikaemotion_emotebubble EXCLAMATION_BUBBLE
- pikaemotion_pcm
- pikaemotion_5 $18
- db $ff
-
-PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm PikachuCry35
- pikaemotion_5 $19
- db $ff
-
-PikachuEmotion26_fd1df: ; fd1df (3f:51df)
- pikaemotion_dummy2
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm PikachuCry37
- pikaemotion_5 $1a
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER
- db $ff
-
-PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry9
- pikaemotion_5 $1b
- db $ff
-
-PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1)
- pikaemotion_dummy2
- pikaemotion_pcm PikachuCry15
- pikaemotion_5 $1c
- db $ff
-
-PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7)
- pikaemotion_pcm PikachuCry5
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc)
- pikaemotion_9
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm PikachuCry5
- pikaemotion_5 $14
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
- db $ff
-
-PikachuEmotion31_fd20a: ; fd20a (3f:520a)
- pikaemotion_pcm PikachuCry19
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
- db $ff
-
-PikachuEmotion32_fd213: ; fd213 (3f:5213)
- pikaemotion_pcm PikachuCry26
- pikaemotion_5 $17
- db $ff
-
-Pointer_fd218: ; fd218 (3f:5218)
-
- db $00
- db $39, $01
- db $3e, $1e
- db $3f
-
-Pointer_fd21e: ; fd21e (3f:521e)
- db $00
- db $39, $00
- db $3e, $1e
- db $3f
-
-Pointer_fd224: ; fd224 (3f:5224)
- db $00
- db $3c, $07, $2f
- db $3c, $07, $2f
- db $3f
-
-Pointer_fd22c: ; fd22c (3f:522c)
- db $3b, $1f, $03
- db $3f
-
-Pointer_fd230: ; fd230 (3f:5230)
- db $00
- db $3c, $0f, $1f
- db $3c, $0f, $1f
- db $3f
-
-Pointer_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 $3f
-
-Func_fd252: ; fd252 (3f:5252)
- ld a, $40
- ld [h_0xFFFC], a
- call LoadPikachuSpriteIntoVRAM
- call Func_fd266
- and a
- jr z, .asm_fd262
- call Func_159b
-.asm_fd262
- xor a
- ld [h_0xFFFC], a
- ret
-
-Func_fd266:
- ld a, [wSpriteStateData2 + 15 * 16 + 4]
- ld e, a
- ld a, [wSpriteStateData2 + 15 * 16 + 5]
- ld d, a
- ld a, [wYCoord]
- add 4
- cp e
- jr z, .asm_fd280
- jr nc, .asm_fd27e
- ld hl, Data_fd294
- ld a, 1
- ret
-
-.asm_fd27e
- xor a
- ret
-
-.asm_fd280
- ld a, [wXCoord]
- add 4
- cp d
- jr c, .asm_fd28e
- ld hl, Data_fd299
- ld a, 2
- ret
-
-.asm_fd28e
- ld hl, Data_fd29d
- ld a, 3
- ret
-
-Data_fd294:
- db $00
- db $36
- db $2b
- db $34
- db $3f
-
-Data_fd299:
- db $00
- db $36
- db $34
- db $3f
-
-Data_fd29d:
- db $00
- db $36
- db $33
- db $3f
-
-Func_fd2a1:: ; fd2a1 (3f:52a1)
- ld a, b
- ld [wd44a], a
- ld a, l
- ld [wd44b], a
- ld a, h
- ld [wd44b + 1], a
- call PikachuSwapSpriteStateData
-.loop
- call Func_fd2f5
- jr nc, .done
- call Func_fd329
- jr .loop
-
-.done
- call PikachuSwapSpriteStateData
- call DelayFrame
- ret
-
-PikachuSwapSpriteStateData:
- ld a, [wUpdateSpritesEnabled]
- push af
- ld a, $ff
- ld [wUpdateSpritesEnabled], a
- push hl
- push de
- push bc
-
- ld hl, wSpriteStateData1
- ld de, wSpriteStateData1 + $f0
- ld c, $10
- call SwapBytes3f
-
- ld hl, wSpriteStateData2
- ld de, wSpriteStateData2 + $f0
- ld c, $10
- call SwapBytes3f
-
- pop bc
- pop de
- pop hl
- pop af
- ld [wUpdateSpritesEnabled], a
- ret
-
-SwapBytes3f:
-.loop
- ld b, [hl]
- ld a, [de]
- ld [hli], a
- ld a, b
- ld [de], a
- inc de
- dec c
- jr nz, .loop
- ret
-
-Func_fd2f5:
- call Func_157c
- cp $3f
- ret z
- ld c, a
- ld b, 0
- ld hl, Data_fd3b0
- add hl, bc
- add hl, bc
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld [wPikaPicAnimPointer + 1], a
- ld a, [hli]
- cp $80
- jr nz, .asm_fd311
- call Func_157c
-.asm_fd311
- ld [wPikaPicAnimPointer], a
- ld a, [hli]
- ld [wPikaPicAnimCurGraphicID], a
- ld a, [hli]
- cp $80
- jr nz, .asm_fd320
- call Func_157c
-.asm_fd320
- ld [wPikaPicAnimPointerSetupFinished], a
- xor a
- ld [wPikaPicAnimTimer], a
- scf
- ret
-
-Func_fd329:
- xor a
- ld [$d44c], a
- ld [wd457], a
- ld [wd458], a
- ld a, [wSpriteStateData2 + 7]
- push af
-.asm_fd337
- ld bc, wSpriteStateData1
- ld a, [wPikaPicAnimPointer + 1]
- ld hl, Jumptable_fd4ac
- call Func_fd365
- ld a, [wPikaPicAnimCurGraphicID]
- ld hl, Jumptable_fd65c
- call Func_fd365
- call Func_fd36e
- call Func_fd39d
- call DelayFrame
- call DelayFrame
- ld hl, $d44c
- bit 7, [hl]
- jr z, .asm_fd337
- pop af
- ld [wSpriteStateData2 + 7], a
- scf
- ret
-
-Func_fd365:
- ld e, a
- ld d, 0
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-Func_fd36e:
- ld hl, 2
- add hl, bc
- ld a, [wPikaPicAnimTimer + 1]
- ld [hl], a
- ld a, [wPikaSpriteY]
- ld d, a
- ld a, [wd456]
- add d
- ld hl, 4
- add hl, bc
- ld [hl], a
- ld a, [wPikaPicAnimDelay]
- ld d, a
- ld a, [wPikaPicTextboxStartY]
- add d
- ld hl, 6
- add hl, bc
- ld [hl], a
- ld hl, $d44c
- bit 6, [hl]
- ret z
- ld hl, wSpriteStateData2 + 7 - wSpriteStateData1
- add hl, bc
- ld [hl], 0
- ret
-
-Func_fd39d:
- ld hl, $d44c
- bit 6, [hl]
- res 6, [hl]
- ld hl, wd736
- res 6, [hl]
- ret z
- set 6, [hl]
- call Func_fd7f3
- 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
- db $03, $80, $03, $80 ; $11
- db $04, $80, $03, $80 ; $12
- db $05, $80, $03, $80 ; $13
- db $06, $80, $03, $80 ; $14
- db $07, $80, $03, $80 ; $15
- 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 $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, [$d44c]
- set 7, a
- ld [$d44c], a
- ret
-
-Func_fd4e5:
- call Func_fd4dc
- ret
-
-Func_fd4e9:
- ld hl, 4
- add hl, bc
- ld a, [hl]
- ld [wPikaSpriteY], a
- ld hl, 6
- add hl, bc
- ld a, [hl]
- ld [wPikaPicAnimDelay], a
- xor a
- ld [wd456], a
- ld [wPikaPicTextboxStartY], a
- call Func_fd4dc
- ret
-
-Func_fd504:
- call Func_fd775
- ret nz
- call Func_fd4dc
- ret
-
-Func_fd50c:
- call GetObjectFacing
- jr asm_fd58c
-
-Func_fd511:
- call GetObjectFacing
- 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
- 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
- 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
- rrca
- rrca
- and $7
- ld e, a
- call Func_fd784
- ld d, a
- call UpdatePikachuPosition
- call Func_fd775
- ret nz
- call Func_fd4dc
- ret
-
-Func_fd5a0:
- push de
- ld d, a
-.asm_fd5a2
- ld a, [hli]
- cp d
- jr z, .asm_fd5ad
- inc hl
- cp $ff
- jr nz, .asm_fd5a2
- pop de
- ret
-
-.asm_fd5ad
- ld a, [hl]
- pop de
- scf
- ret
-
-Func_fd5b1:
- ld a, SPRITE_FACING_DOWN >> 2
- jr asm_fd5d1
-
-Func_fd5b5:
- ld a, SPRITE_FACING_UP >> 2
- jr asm_fd5d1
-
-Func_fd5b9:
- ld a, SPRITE_FACING_LEFT >> 2
- jr asm_fd5d1
-
-Func_fd5bd:
- ld a, SPRITE_FACING_RIGHT >> 2
- jr asm_fd5d1
-
-Func_fd5c1:
- ld e, 4
- jr asm_fd5d5
-
-Func_fd5c5:
- ld e, 5
- jr asm_fd5d5
-
-Func_fd5c9:
- ld e, 6
- jr asm_fd5d5
-
-Func_fd5cd:
- ld e, 7
- jr asm_fd5d5
-
-asm_fd5d1
- ld e, a
- call SetObjectFacing
-asm_fd5d5
- call Func_fd784
- ld d, a
- push de
- call UpdatePikachuPosition
- pop de
- call Func_fd775
- ret nz
- ld a, e
- call Func_fd7cb
- call Func_fd4dc
- ret
-
-Func_fd5ea:
- ld a, SPRITE_FACING_DOWN >> 2
- jr asm_fd5fa
-
-Func_fd5ee:
- ld a, SPRITE_FACING_UP >> 2
- jr asm_fd5fa
-
-Func_fd5f2:
- ld a, SPRITE_FACING_LEFT >> 2
- jr asm_fd5fa
-
-Func_fd5f6:
- ld a, SPRITE_FACING_RIGHT >> 2
- jr asm_fd5fa
-
-asm_fd5fa
- call SetObjectFacing
- call Func_fd4dc
- ret
-
-UpdatePikachuPosition:
- push de
- ld d, 0
- ld hl, Jumptable_fd60f
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop de
- ld a, d
- jp [hl]
-
-Jumptable_fd60f:
- dw MovePikachuSpriteDown
- dw MovePikachuSpriteUp
- dw MovePikachuSpriteLeft
- dw MovePikachuSpriteRight
- dw MovePikachuSpriteDownLeft
- dw MovePikachuSpriteDownRight
- dw MovePikachuSpriteUpLeft
- dw MovePikachuSpriteUpRight
-
-MovePikachuSpriteDown:
- ld d, 0
- ld e, a
- jr asm_fd64d
-
-MovePikachuSpriteUp:
- ld d, 0
- cpl
- inc a
- ld e, a
- jr asm_fd64d
-
-MovePikachuSpriteLeft:
- cpl
- inc a
- ld d, a
- ld e, 0
- jr asm_fd64d
-
-MovePikachuSpriteRight:
- ld d, a
- ld e, 0
- jr asm_fd64d
-
-MovePikachuSpriteDownLeft:
- ld e, a
- cpl
- inc a
- ld d, a
- jr asm_fd64d
-
-MovePikachuSpriteDownRight:
- ld e, a
- ld d, a
- jr asm_fd64d
-
-MovePikachuSpriteUpLeft:
- cpl
- inc a
- ld e, a
- ld d, a
- jr asm_fd64d
-
-MovePikachuSpriteUpRight:
- ld d, a
- cpl
- inc a
- ld e, a
- jr asm_fd64d
-
-asm_fd64d
- ld a, [wPikaPicAnimDelay]
- add d
- ld [wPikaPicAnimDelay], 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, $d44c
- set 6, [hl]
- ret
-
-Func_fd678:
- ld hl, 7
- add hl, bc
- xor a
- ld [hli], a
- ld [hl], a
- call Func_fd74a
- ld d, a
- call GetObjectFacing
- or d
- ld [wPikaPicAnimTimer + 1], a
- ret
-
-Func_fd68b:
- ret
-
-Func_fd68c:
- call Func_fd74a
- ld d, a
- call Func_fd755
- or d
- ld [wPikaPicAnimTimer + 1], a
- ret
-
-Func_fd698:
- call Func_fd74a
- ld d, a
- call GetObjectFacing
- or d
- ld d, a
- jr asm_fd6ac
-
-Func_fd6a3:
- call Func_fd74a
- ld d, a
- call Func_fd755
- or d
- ld d, a
-asm_fd6ac
- ld hl, 8
- add hl, bc
- call Func_fd78e
- jr nz, .asm_fd6b6
- inc [hl]
-.asm_fd6b6
- ld a, [hl]
- rrca
- rrca
- and 3
- or d
- ld [wPikaPicAnimTimer + 1], a
- ret
-
-Func_fd6c0:
- call GetObjectFacing
- ld d, a
- jr asm_fd6ca
-
-Func_fd6c6:
- call Func_fd755
- ld d, a
-asm_fd6ca
- call Func_fd74a
- or d
- ld d, a
- call Func_fd736
- or d
- ld [wPikaPicAnimTimer + 1], a
- call Func_fd79d
- ld [wd456], a
- and a
- ret z
- call Func_fd672
- ret
-
-Func_fd6e2:
- call GetObjectFacing
- ld d, a
- call Func_fd74a
- or d
- ld [wPikaPicAnimTimer + 1], a
- call Func_fd79d
- ld [wd456], a
- ret
-
-Func_fd6f4:
- ld a, [wPikaPicAnimPointerSetupFinished]
- and $40
- cp $40
- jr z, Func_fd6ff
- jr Func_fd718
-
-Func_fd6ff:
- call Func_fd755
- ld d, a
- call Func_fd78e
- jr nz, .asm_fd710
- ld hl, Data_fd731
-.asm_fd70b
- ld a, [hli]
- cp d
- jr nz, .asm_fd70b
- ld d, [hl]
-.asm_fd710
- call Func_fd74a
- or d
- ld [wPikaPicAnimTimer + 1], a
- ret
-
-Func_fd718:
- call Func_fd755
- ld d, a
- call Func_fd78e
- jr nz, .asm_fd529
- ld hl, Data_fd731End
-.asm_fd524
- ld a, [hld]
- cp d
- jr nz, .asm_fd524
- ld d, [hl]
-.asm_fd529
- call Func_fd74a
- or d
- ld [wPikaPicAnimTimer + 1], a
- ret
-
-Data_fd731:
- db SPRITE_FACING_DOWN
- db SPRITE_FACING_LEFT
- db SPRITE_FACING_UP
- db SPRITE_FACING_RIGHT
- db SPRITE_FACING_DOWN
-Data_fd731End:
-
-Func_fd736:
- push hl
- ld hl, 7
- add hl, bc
- ld a, [hl]
- inc a
- and $3
- ld [hli], a
- jr nz, .asm_fd747
- ld a, [hl]
- inc a
- and $3
- ld [hl], a
-.asm_fd747
- ld a, [hl]
- pop hl
- ret
-
-Func_fd74a:
- push hl
- ld hl, wSpriteStateData2 - wSpriteStateData1 + 14
- add hl, bc
- ld a, [hl]
- dec a
- swap a
- pop hl
- ret
-
-Func_fd755:
- push hl
- ld hl, 2
- add hl, bc
- ld a, [hl]
- and $c
- pop hl
- ret
-
-GetObjectFacing:
- push hl
- ld hl, 9
- add hl, bc
- ld a, [hl]
- and $c
- pop hl
- ret
-
-SetObjectFacing:
- push hl
- ld hl, 9
- add hl, bc
- add a
- add a
- and $c
- ld [hl], a
- pop hl
- ret
-
-Func_fd775:
- ld hl, wd457
- inc [hl]
- ld a, [wPikaPicAnimPointer]
- and $1f
- inc a
- cp [hl]
- ret nz
- ld [hl], 0
- ret
-
-Func_fd784:
- ld a, [wPikaPicAnimPointer]
- swap a
- rrca
- and $3
- inc a
- ret
-
-Func_fd78e:
- ld hl, wd458
- inc [hl]
- ld a, [wPikaPicAnimPointerSetupFinished]
- and $f
- inc a
- cp [hl]
- ret nz
- ld [hl], 0
- ret
-
-Func_fd79d:
- call Func_fd7b2
- ld a, [wd458]
- add e
- ld [wd458], a
- add $20
- ld e, a
- push hl
- push bc
- call Sine_e
- pop bc
- pop hl
- ret
-
-Func_fd7b2:
- ld a, [wPikaPicAnimPointerSetupFinished]
- and $f
- inc a
- ld d, a
- ld a, [wPikaPicAnimPointerSetupFinished]
- swap a
- and $7
- ld e, a
- ld a, 1
- jr z, .asm_fd7c9
-.asm_fd7c5
- add a
- dec e
- jr nz, .asm_fd7c5
-.asm_fd7c9
- ld e, a
- ret
-
-Func_fd7cb:
- push bc
- ld c, a
- ld b, 0
- ld hl, Data_fd7e3
- add hl, bc
- add hl, bc
- ld d, [hl]
- inc hl
- ld e, [hl]
- pop bc
- ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
- add hl, bc
- ld a, [hl]
- add e
- ld [hli], a
- ld a, [hl]
- add d
- ld [hl], a
- ret
-
-Data_fd7e3:
- db 0, 1
- db 0, -1
- db -1, 0
- db 1, 0
- db -1, 1
- db 1, 1
- db -1, -1
- db 1, -1
-
-Func_fd7f3:
- push bc
- push de
- push hl
-
- ld bc, wOAMBuffer + 4 * 36
- ld a, [wPikaSpriteY]
- ld e, a
- ld a, [wPikaPicAnimDelay]
- ld d, a
- ld hl, Data_fd80b
- call Func_fd814
-
- pop hl
- pop de
- pop bc
- ret
-
-Data_fd80b:
- db $02
- db $0c, $00, $ff, 0
- db $0c, $08, $ff, 1 << OAM_X_FLIP
-
-Func_fd814:
- ld a, e
- add $10
- ld e, a
- ld a, d
- add $8
- ld d, a
- ld a, [hli]
-.asm_fd81d
- push af
- ld a, [hli]
- add e
- ld [bc], a
- inc bc
- ld a, [hli]
- add d
- ld [bc], a
- inc bc
- ld a, [hli]
- ld [bc], a
- inc bc
- ld a, [hli]
- ld [bc], a
- inc bc
- pop af
- dec a
- jr nz, .asm_fd81d
- ret
-
-LoadPikachuShadowIntoVRAM:
- ld hl, vNPCSprites2 + $7f * $10
- ld de, LedgeHoppingShadowGFX_3F
- lb bc, BANK(LedgeHoppingShadowGFX_3F), (LedgeHoppingShadowGFX_3FEnd - LedgeHoppingShadowGFX_3F) / 8
- jp CopyVideoDataDoubleAlternate
-
-LedgeHoppingShadowGFX_3F:
-INCBIN "gfx/ledge_hopping_shadow.1bpp"
-LedgeHoppingShadowGFX_3FEnd:
-
-LoadPikachuBallIconIntoVRAM:
- ld hl, vNPCSprites2 + $7e * $10
- ld de, GFX_fd86b
- lb bc, BANK(GFX_fd86b), 1
- jp CopyVideoDataDoubleAlternate
-
-Func_fd851:
- ld hl, vNPCSprites + $c * $10
- ld a, 3
-.asm_fd856
- push af
- push hl
- ld de, GFX_fd86b
- lb bc, BANK(GFX_fd86b), 4
- call CopyVideoDataAlternate
- pop hl
- ld de, 4 * $10
- add hl, de
- pop af
- dec a
- jr nz, .asm_fd856
- ret
-
-GFX_fd86b:
-INCBIN "gfx/unknown_fd86b.2bpp"
-
-LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab)
- ld de, PikachuSprite
- lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32
- ld hl, vNPCSprites + $c * $10
- push bc
- call CopyVideoDataAlternate
- ld de, PikachuSprite + $c * $10
- ld hl, vNPCSprites2 + $c * $10
- ld a, [h_0xFFFC]
- and a
- jr z, .load
- ld de, PikachuSprite + $c * $10
- ld hl, vNPCSprites2 + $4c * $10
-.load
- pop bc
- call CopyVideoDataAlternate
- call LoadPikachuShadowIntoVRAM
- call LoadPikachuBallIconIntoVRAM
- ret
-
-PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4)
- ld a, [wCurMap]
- cp PEWTER_POKECENTER
- ret nz
- call EnablePikachuFollowingPlayer
- call Func_fcff2
- ret
-
-PikachuFanClubCheck: ; fd8e1 (3f:58e1)
- ld a, [wCurMap]
- cp POKEMON_FAN_CLUB
- ret nz
- call EnablePikachuFollowingPlayer
- call Func_fcff2
- ret
-
-PikachuBillsHouseCheck: ; fd8ee (3f:58ee)
- ld a, [wCurMap]
- cp BILLS_HOUSE
- ret nz
- call EnablePikachuFollowingPlayer
- ret
-
-Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: ; fd8f8 (3f:58f8)
- call LoadCurrentMapView
- call UpdateSprites
- call Delay3
- ret
-
-Cosine_e: ; cosine?
- ld a, e
- add $10
- jr asm_fd908
-
-Sine_e: ; sine?
- ld a, e
-asm_fd908
- and $3f
- cp $20
- jr nc, .asm_fd913
- call GetSine
- ld a, h
- ret
-
-.asm_fd913
- and $1f
- call GetSine
- ld a, h
- cpl
- inc a
- ret
-
-GetSine:
- ld e, a
- ld a, d
- ld d, 0
- ld hl, SineWave_3f
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, 0
-.asm_fd92b
- srl a
- jr nc, .asm_fd930
- add hl, de
-.asm_fd930
- sla e
- rl d
- and a
- jr nz, .asm_fd92b
- ret
-
-SineWave_3f:
- sine_wave $100
-
GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978)
ld hl, PikachuMoodLookupTable
ld a, [wPikachuMood]
@@ -1757,7 +46,7 @@ PikaPicAnimationScriptPointerLookupTable:
db $fa, $11, $11, $10, $0a, $0a
db $ff, $11, $11, $13, $14, $14
-StarterPikachuEmotionCommand_5: ; fd9d0 (3f:59d0)
+StarterPikachuEmotionCommand_pikapic: ; fd9d0 (3f:59d0)
ld a, [H_AUTOBGTRANSFERENABLED]
push af
xor a
@@ -1773,26 +62,26 @@ StarterPikachuEmotionCommand_5: ; fd9d0 (3f:59d0)
ret
Func_fd9e4:
- call Func_fda2c
- callab Func_720e3
- call Func_fd9ff
+ call PlacePikapicTextBoxBorder
+ callab LoadOverworldPikachuFrontpicPalettes
+ call ResetPikaPicAnimBuffer
call LoadCurrentPikaPicAnimScriptPointer
call Func_fda9a
- call Func_fda2c
+ call PlacePikapicTextBoxBorder
call RunDefaultPaletteCommand
ret
-Func_fd9ff:
- ld hl, wPikaPicAnimPointer
- ld bc, $11
+ResetPikaPicAnimBuffer:
+ ld hl, wCurPikaMovementData
+ ld bc, wCurPikaMovementDataEnd - wCurPikaMovementData
xor a
call FillMemory
ld hl, wPikaPicAnimObjectDataBufferSize
- ld bc, $21
+ ld bc, wPikaPicAnimObjectDataBufferEnd - wPikaPicAnimObjectDataBufferSize
xor a
call FillMemory
- call Func_fe15c
- ld hl, $64
+ call ClearPikaPicUsedGFXBuffer
+ ld hl, 100
ld a, l
ld [wPikaPicAnimTimer], a
ld a, h
@@ -1803,7 +92,7 @@ Func_fd9ff:
ld [wPikaPicTextboxStartY], a
ret
-Func_fda2c:
+PlacePikapicTextBoxBorder:
xor a
ld [H_AUTOBGTRANSFERENABLED], a
coord hl, 6, 5
@@ -2832,9 +1121,9 @@ DecompressRequestPikaPicAnimGFX: ; fe128
.failed
ret
-Func_fe15c:
- ld hl, wNPCMovementDirections
- ld bc, $11
+ClearPikaPicUsedGFXBuffer:
+ ld hl, wPikaPicUsedGFXCount
+ ld bc, wPikaPicUsedGFXEnd - wPikaPicUsedGFXCount
xor a
call FillMemory
ret
@@ -2857,7 +1146,7 @@ GetPikaPicVRAMAddressForNewGFX:
CheckIfThereIsRoomForPikaPicAnimGFX:
push bc
push hl
- ld hl, wNPCMovementDirections + 1
+ ld hl, wPikaPicUsedGFX
ld c, 8
.loop
ld a, [hl]
@@ -2880,12 +1169,12 @@ CheckIfThereIsRoomForPikaPicAnimGFX:
.empty
ld [hl], d
inc hl
- ld a, [wNPCMovementDirections]
+ ld a, [wPikaPicUsedGFXCount]
add $80
ld [hl], a
- ld a, [wNPCMovementDirections]
+ ld a, [wPikaPicUsedGFXCount]
add e
- ld [wNPCMovementDirections], a
+ ld [wPikaPicUsedGFXCount], a
cp $80
jr z, .asm_fe1a7
jr nc, .failed
@@ -2905,7 +1194,7 @@ LookUpTileOffsetForCurrentPikaPicAnimGFX:
push bc
push hl
ld b, a
- ld hl, wNPCMovementDirections + 1
+ ld hl, wPikaPicUsedGFX
ld c, 8
.loop
ld a, [hli]
@@ -2995,455 +1284,4 @@ GetDMGBGPalForPikaThunderbolt:
call DelayFrames
ret
-Data_fe242:
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db 4, %11000000
- db 4, %11100100
- db $ff
-
-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_waitbgmap
- pikapic_cry
-Data_fe286: ; fe286 (3f:6286)
- pikapic_waitbgmap
- pikapic_jump Data_fe286
-
-Data_fe28a: ; 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_waitbgmap
- pikapic_cry PikachuCry3
-Data_fe2a0: ; fe2a0 (3f:62a0)
- pikapic_waitbgmap
- pikapic_jump Data_fe2a0
-
-Data_fe2a4: ; 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_waitbgmap
- pikapic_cry
-Data_fe2ba: ; fe2ba (3f:62ba)
- pikapic_waitbgmap
- pikapic_jump Data_fe2ba
-
-Data_fe2be: ; 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_waitbgmap
- pikapic_cry
-Data_fe2d4: ; fe2d4 (3f:62d4)
- pikapic_waitbgmap
- pikapic_jump Data_fe2d4
-
-Data_fe2d8: ; 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_waitbgmap
- pikapic_cry
-Data_fe2ee: ; fe2ee (3f:62ee)
- pikapic_waitbgmap
- pikapic_jump Data_fe2ee
-
-Data_fe2f2: ; 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_waitbgmap
- pikapic_cry
-Data_fe308: ; fe308 (3f:6308)
- pikapic_waitbgmap
- pikapic_jump Data_fe308
-
-Data_fe30c: ; 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_waitbgmap
- pikapic_cry PikachuCry38
-Data_fe322: ; fe322 (3f:6322)
- pikapic_waitbgmap
- pikapic_jump Data_fe322
-
-Data_fe326: ; 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_waitbgmap
- pikapic_cry
-Data_fe33c: ; fe33c (3f:633c)
- pikapic_waitbgmap
- pikapic_jump Data_fe33c
-
-Data_fe340: ; 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_waitbgmap
- pikapic_cry
-Data_fe356: ; fe356 (3f:6356)
- pikapic_waitbgmap
- pikapic_jump Data_fe356
-
-Data_fe35a: ; 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_waitbgmap
- pikapic_cry
-Data_fe370: ; fe370 (3f:6370)
- pikapic_waitbgmap
- pikapic_jump Data_fe370
-
-Data_fe374: ; 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_waitbgmap
- pikapic_cry
-Data_fe38c: ; fe38c (3f:638c)
- pikapic_waitbgmap
- pikapic_jump Data_fe38c
-
-Data_fe390: ; 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_waitbgmap
- pikapic_cry
-Data_fe3a6: ; fe3a6 (3f:63a6)
- pikapic_waitbgmap
- pikapic_jump Data_fe3a6
-
-Data_fe3aa: ; 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_waitbgmap
- pikapic_cry PikachuCry25
-Data_fe3c0: ; fe3c0 (3f:63c0)
- pikapic_waitbgmap
- pikapic_jump Data_fe3c0
-
-Data_fe3c4: ; 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_waitbgmap
- pikapic_cry
-Data_fe3da: ; fe3da (3f:63da)
- pikapic_waitbgmap
- pikapic_jump Data_fe3da
-
-Data_fe3de: ; 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_waitbgmap
- pikapic_cry
-Data_fe3f4: ; fe3f4 (3f:63f4)
- pikapic_waitbgmap
- pikapic_jump Data_fe3f4
-
-Data_fe3f8: ; 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_waitbgmap
- pikapic_cry
-Data_fe40e: ; fe40e (3f:640e)
- pikapic_waitbgmap
- pikapic_jump Data_fe40e
-
-Data_fe412: ; 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_waitbgmap
- pikapic_cry
-Data_fe428: ; fe428 (3f:6428)
- pikapic_waitbgmap
- pikapic_jump Data_fe428
-
-Data_fe42c: ; 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_waitbgmap
- pikapic_cry
-Data_fe442: ; fe442 (3f:6442)
- pikapic_waitbgmap
- pikapic_jump Data_fe442
-
-Data_fe446: ; 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_waitbgmap
- pikapic_cry PikachuCry18
-Data_fe45c: ; fe45c (3f:645c)
- pikapic_waitbgmap
- pikapic_jump Data_fe45c
-
-Data_fe460: ; 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_waitbgmap
- pikapic_cry
-Data_fe476: ; fe476 (3f:6476)
- pikapic_waitbgmap
- pikapic_jump Data_fe476
-
-Data_fe47a: ; 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_waitbgmap
- pikapic_cry
-Data_fe490: ; fe490 (3f:6490)
- pikapic_waitbgmap
- pikapic_jump Data_fe490
-
-Data_fe494: ; 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_waitbgmap
- pikapic_cry PikachuCry20
-Data_fe4b0: ; fe4b0 (3f:64b0)
- pikapic_waitbgmap
- pikapic_jump Data_fe4b0
-
-Data_fe4b4: ; 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_waitbgmap
- pikapic_cry
-Data_fe4ca: ; fe4ca (3f:64ca)
- pikapic_waitbgmap
- pikapic_jump Data_fe4ca
-
-Data_fe4ce: ; 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_waitbgmap
- pikapic_cry
-Data_fe4e4: ; fe4e4 (3f:64e4)
- pikapic_waitbgmap
- pikapic_jump Data_fe4e4
-
-Data_fe4e8: ; 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_waitbgmap
- pikapic_cry
-Data_fe4fe: ; fe4fe (3f:64fe)
- pikapic_waitbgmap
- pikapic_jump Data_fe4fe
-
-Data_fe502: ; 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_waitbgmap
- pikapic_cry
- pikapic_writebyte 13
- pikapic_waitbgmap
- pikapic_thunderbolt
- pikapic_ret
-
-Data_fe51f: ; fe51f (3f:651f)
- pikapic_waitbgmap
-Data_fe520: ; 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_waitbgmap
- pikapic_cry
-Data_fe53a: ; fe53a (3f:653a)
- pikapic_waitbgmap
- pikapic_jump Data_fe53a
-
-Data_fe53e: ; 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_waitbgmap
- pikapic_cry
-Data_fe554: ; fe554 (3f:6554)
- pikapic_waitbgmap
- pikapic_jump Data_fe554
-
-Data_fe558: ; 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_waitbgmap
- pikapic_cry
-Data_fe56e: ; fe56e (3f:656e)
- pikapic_waitbgmap
- pikapic_jump Data_fe56e
-
-PikaPicAnimGFXHeaders:
-pikapicanimgfx: MACRO
-\2_id::
- db \1
- dba \2
- endm
-
- dbbw $01, $39, $0000
- pikapicanimgfx -1, Pic_e4000 ; 01
- pikapicanimgfx 5, GFX_e40cc ; 02
- pikapicanimgfx -1, Pic_e411c ; 03
- pikapicanimgfx 10, GFX_e41d2 ; 04
- pikapicanimgfx -1, Pic_e4272 ; 05
- pikapicanimgfx 6, GFX_e4323 ; 06
- pikapicanimgfx -1, Pic_e4383 ; 07
- pikapicanimgfx 20, GFX_e444b ; 08
- pikapicanimgfx -1, Pic_e458b ; 09
- pikapicanimgfx 4, GFX_e463b ; 0a
- pikapicanimgfx -1, Pic_e467b ; 0b
- pikapicanimgfx 4, GFX_e472e ; 0c
- pikapicanimgfx -1, Pic_e476e ; 0d
- pikapicanimgfx 25, GFX_e4841 ; 0e
- pikapicanimgfx -1, Pic_e49d1 ; 0f
- pikapicanimgfx 10, GFX_e4a99 ; 00
- pikapicanimgfx -1, Pic_e4b39 ; 11
- pikapicanimgfx 6, GFX_e4bde ; 12
- pikapicanimgfx -1, Pic_e4c3e ; 13
- pikapicanimgfx 25, GFX_e4ce0 ; 14
- pikapicanimgfx 25, GFX_e4e70 ; 15
- pikapicanimgfx -1, Pic_e5000 ; 16
- pikapicanimgfx 25, GFX_e50af ; 17
- pikapicanimgfx -1, Pic_e523f ; 18
- pikapicanimgfx 25, GFX_e52fe ; 19
- pikapicanimgfx -1, Pic_e548e ; 1a
- pikapicanimgfx 25, GFX_e5541 ; 1b
- pikapicanimgfx -1, Pic_e56d1 ; 1c
- pikapicanimgfx 25, GFX_e5794 ; 1d
- pikapicanimgfx -1, Pic_e5924 ; 1e
- pikapicanimgfx 25, GFX_e59ed ; 1f
- pikapicanimgfx -1, Pic_e5b7d ; 20
- pikapicanimgfx 25, GFX_e5c4d ; 21
- pikapicanimgfx -1, Pic_e5ddd ; 22
- pikapicanimgfx 25, GFX_e5e90 ; 23
- pikapicanimgfx 25, GFX_e6020 ; 24
- pikapicanimgfx 25, GFX_e61b0 ; 25
- pikapicanimgfx -1, Pic_e6340 ; 26
- pikapicanimgfx 25, GFX_e63f7 ; 27
- pikapicanimgfx -1, Pic_e6587 ; 28
- pikapicanimgfx 25, GFX_e6646 ; 29
- pikapicanimgfx -1, Pic_e67d6 ; 2a
- pikapicanimgfx 25, GFX_e682f ; 2b
- pikapicanimgfx 25, GFX_e69bf ; 2c
- pikapicanimgfx 25, GFX_e6b4f ; 2d
- pikapicanimgfx 25, GFX_e6cdf ; 2e
- pikapicanimgfx 25, GFX_e6e6f ; 2f
- pikapicanimgfx 25, GFX_e6fff ; 30
- pikapicanimgfx 25, GFX_e718f ; 31
- pikapicanimgfx 25, GFX_e731f ; 32
- pikapicanimgfx 25, GFX_e74af ; 33
- pikapicanimgfx 25, GFX_e763f ; 34
- pikapicanimgfx -1, Pic_e77cf ; 35
- pikapicanimgfx 25, GFX_e7863 ; 36
- pikapicanimgfx 25, GFX_e79f3 ; 37
- pikapicanimgfx 25, GFX_e7b83 ; 38
- pikapicanimgfx 25, GFX_e7d13 ; 39
- pikapicanimgfx -1, Pic_f0abf ; 3a
- pikapicanimgfx 25, GFX_f0b64 ; 3b
- pikapicanimgfx -1, Pic_f0cf4 ; 3c
- pikapicanimgfx 25, GFX_f0d82 ; 3d
- pikapicanimgfx 24, PikachuSprite ; 3e
+INCLUDE "data/pikachu_pic_animation.asm"