summaryrefslogtreecommitdiff
path: root/engine/bank3c.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/bank3c.asm')
-rw-r--r--engine/bank3c.asm200
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.