diff options
Diffstat (limited to 'engine/bank3c.asm')
-rw-r--r-- | engine/bank3c.asm | 200 |
1 files changed, 24 insertions, 176 deletions
diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 4fa185e0..0028d1fc 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -1,158 +1,4 @@ -PlayPikachuSoundClip:: ; f0000 (3c:4000) - ld a, e - ld e, a - ld d, $0 - ld hl, PikachuCriesPointerTable - add hl, de - add hl, de - add hl, de - ld b, [hl] ; bank of pikachu cry data - inc hl - ld a, [hli] ; cry data pointer - ld h, [hl] - ld l, a - ld c, $4 -.loop - dec c - jr z, .done_delay - call DelayFrame - jr .loop - -.done_delay - di - push bc - push hl - ld a, $80 - ld [rNR52], a - ld a, $77 - ld [rNR50], a - xor a - ld [rNR30], a - ld hl, $ff30 ; wave data - ld de, wRedrawRowOrColumnSrcTiles -.saveWaveDataLoop - ld a, [hl] - ld [de], a - inc de - ld a, $ff - ld [hli], a - ld a, l - cp $40 ; end of wave data - jr nz, .saveWaveDataLoop - ld a, $80 - ld [rNR30], a - ld a, [rNR51] - or $44 - ld [rNR51], a - ld a, $ff - ld [rNR31], a - ld a, $20 - ld [rNR32], a - ld a, $ff - ld [rNR33], a - ld a, $87 - ld [rNR34], a - pop hl - pop bc - call PlayPikachuPCM - xor a - ld [wc0f3], a - ld [wc0f4], a - ld a, $80 - ld [rNR52], a - xor a - ld [rNR30], a - ld hl, $ff30 - ld de, wRedrawRowOrColumnSrcTiles -.reloadWaveDataLoop - ld a, [de] - inc de - ld [hli], a - ld a, l - cp $40 ; end of wave data - jr nz, .reloadWaveDataLoop - ld a, $80 - ld [rNR30], a - ld a, [rNR51] - and $bb - ld [rNR51], a - xor a - ld [wChannelSoundIDs+CH4], a - ld [wChannelSoundIDs+CH5], a - ld [wChannelSoundIDs+CH6], a - ld [wChannelSoundIDs+CH7], a - ld a, [H_LOADEDROMBANK] - ei - ret - -PikachuCriesPointerTable: ; f008e (3c:408e) -; format: -; db bank -; dw pointer to cry - -; bank 21 - pikacry_def PikachuCry1 ; 21:4000 - pikacry_def PikachuCry2 ; 21:491a - pikacry_def PikachuCry3 ; 21:4fdc - pikacry_def PikachuCry4 ; 21:59ee - -; bank 22 - pikacry_def PikachuCry5 ; 22:4000 - pikacry_def PikachuCry6 ; 22:5042 - pikacry_def PikachuCry7 ; 22:6254 - -; bank 23 - pikacry_def PikachuCry8 ; 23:4000 - pikacry_def PikachuCry9 ; 23:50ca - pikacry_def PikachuCry10 ; 23:5e0c - -; bank 24 - pikacry_def PikachuCry11 ; 24:4000 - pikacry_def PikachuCry12 ; 24:4722 - pikacry_def PikachuCry13 ; 24:54a4 - -; bank 25 - pikacry_def PikachuCry14 ; 25:4000 - pikacry_def PikachuCry15 ; 25:589a - -; banks 31-34, in no particular order - - pikacry_def PikachuCry16 ; 31:4000 - pikacry_def PikachuCry17 ; 34:4000 - pikacry_def PikachuCry18 ; 31:549a - pikacry_def PikachuCry19 ; 33:4000 - pikacry_def PikachuCry20 ; 32:4000 - pikacry_def PikachuCry21 ; 32:6002 - pikacry_def PikachuCry22 ; 31:63a4 - pikacry_def PikachuCry23 ; 34:4862 - pikacry_def PikachuCry24 ; 33:5632 - pikacry_def PikachuCry25 ; 34:573c - pikacry_def PikachuCry26 ; 33:725c - -; bank 35 - pikacry_def PikachuCry27 ; 35:4000 - pikacry_def PikachuCry28 ; 35:4b5a - pikacry_def PikachuCry29 ; 35:5da4 - pikacry_def PikachuCry30 ; 35:69ce - pikacry_def PikachuCry31 ; 35:6e80 - -; bank 36 - pikacry_def PikachuCry32 ; 36:4000 - pikacry_def PikachuCry33 ; 36:458a - pikacry_def PikachuCry34 ; 36:523c - -; bank 37 - pikacry_def PikachuCry35 ; 37:4000 - pikacry_def PikachuCry36 ; 37:522a - -; banks 36-38 - pikacry_def PikachuCry37 ; 38:4000 - pikacry_def PikachuCry38 ; 38:4dfa - pikacry_def PikachuCry39 ; 37:6e0c - pikacry_def PikachuCry40 ; 38:5a64 - pikacry_def PikachuCry41 ; 36:6746 - pikacry_def PikachuCry42 ; 38:6976 - +INCLUDE "engine/pikachu_pcm.asm" INCLUDE "engine/overworld/advance_player_sprite.asm" ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) @@ -169,30 +15,30 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) ld [wNPCMovementScriptPointerTableNum], a ld [wFlags_0xcd60], a - ld [$ff9f], a - ld [$ff9f + 1], a - ld [$ff9f + 2], a + ld [hMoney], a + ld [hMoney + 1], a + ld [hMoney + 2], a call HasEnoughMoney jr c, .lostmoney ; never happens ; Halve the player's money. ld a, [wPlayerMoney] - ld [$ff9f], a + ld [hMoney], a ld a, [wPlayerMoney + 1] - ld [$ff9f + 1], a + ld [hMoney + 1], a ld a, [wPlayerMoney + 2] - ld [$ff9f + 2], a + ld [hMoney + 2], a xor a - ld [$ffa2], a - ld [$ffa3], a + ld [hDivideBCDDivisor], a + ld [hDivideBCDDivisor + 1], a ld a, 2 - ld [$ffa4], a + ld [hDivideBCDDivisor + 2], a predef DivideBCDPredef3 - ld a, [$ffa2] + ld a, [hDivideBCDQuotient] ld [wPlayerMoney], a - ld a, [$ffa2 + 1] + ld a, [hDivideBCDQuotient + 1] ld [wPlayerMoney + 1], a - ld a, [$ffa2 + 2] + ld a, [hDivideBCDQuotient + 2] ld [wPlayerMoney + 2], a .lostmoney @@ -217,10 +63,12 @@ Func_f02da:: ; f02da (3c:42da) cp a, $ff jr nz, .asm_f02e5 ret + .asm_f02ee ld hl, wd126 set 6, [hl] ret + .asm_f02f4 ld hl, wd126 set 5, [hl] @@ -301,7 +149,7 @@ Pointer_f0a7b: db $ff Pointer_f0a7bEnd: -Func_f0a82: ; f0a82 +TryApplyPikachuMovementData: ; f0a82 ld a, [wd472] bit 7, a ret z @@ -325,8 +173,8 @@ Func_f0a82: ; f0a82 pop af ld [wUpdateSpritesEnabled], a pop hl - call Func_159b ; homecall Func_fd2a1 - pikachu movement script? - callab Func_fcba1 + call ApplyPikachuMovementData + callab RefreshPikachuFollow ret Pic_f0abf: ; f0abf (3c:4abf) @@ -365,7 +213,7 @@ INCLUDE "scripts/pewterpokecenter2.asm" Func_f1e22: ld hl, PikachuMovementData_f1e2b ld b, SPRITE_FACING_RIGHT - call Func_f0a82 + call TryApplyPikachuMovementData ret PikachuMovementData_f1e2b: @@ -382,7 +230,7 @@ INCLUDE "scripts/celadonmansion3_2.asm" Func_f1f23: ld hl, PikachuMovementData_f1f2c ld b, SPRITE_FACING_DOWN - call Func_f0a82 + call TryApplyPikachuMovementData ret PikachuMovementData_f1f2c: @@ -444,10 +292,10 @@ Func_f2cee: Func_f2cf4: ; should return to a, instead returns to b call Random swap a - cp $55 + cp 1 * $ff / 3 ld b, 0 ret c - cp $aa + cp 2 * $ff / 3 ld b, 1 ret c ld b, 2 @@ -459,7 +307,7 @@ Func_f2d06: ret Func_f2d0c: - ld hl, GymTrashCans3a + ld hl, GymTrashCans3c ld a, [wGymTrashCanIndex] ld c, a ld b, 0 @@ -480,7 +328,7 @@ Func_f2d0c: ld [wSecondLockTrashCanIndex + 1], a ret -GymTrashCans3a: ; f2d31 (3c:6d31) +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. |