aboutsummaryrefslogtreecommitdiffstats
path: root/engine/bank3c.asm
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2015-12-31 15:24:54 -0500
committerluckytyphlosion <alan.rj.huang@gmail.com>2015-12-31 15:24:54 -0500
commit94eee4e89ef5c0857599c2951befee9dc709ae85 (patch)
tree463218b7b459d0f1d90f0e488cd026e7a2da27dc /engine/bank3c.asm
parentBankF documentation from HasMonFainted to Func_3d536 (diff)
downloadpokeyellow-94eee4e89ef5c0857599c2951befee9dc709ae85.tar.gz
pokeyellow-94eee4e89ef5c0857599c2951befee9dc709ae85.tar.xz
pokeyellow-94eee4e89ef5c0857599c2951befee9dc709ae85.zip
Cleanup with yellow-exclusive banks
Also introduce charmap for $ec (unfilled menu arrow cursor)
Diffstat (limited to 'engine/bank3c.asm')
-rw-r--r--engine/bank3c.asm279
1 files changed, 279 insertions, 0 deletions
diff --git a/engine/bank3c.asm b/engine/bank3c.asm
new file mode 100644
index 00000000..fa661614
--- /dev/null
+++ b/engine/bank3c.asm
@@ -0,0 +1,279 @@
+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, .asm_f0019
+ call DelayFrame
+ jr .loop
+.asm_f0019
+ 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
+ dbw BANK(PikachuCry1), PikachuCry1 ; 21:4000
+ dbw BANK(PikachuCry2), PikachuCry2 ; 21:491a
+ dbw BANK(PikachuCry3), PikachuCry3 ; 21:4fdc
+ dbw BANK(PikachuCry4), PikachuCry4 ; 21:59ee
+
+; bank 22
+ dbw BANK(PikachuCry5), PikachuCry5 ; 22:4000
+ dbw BANK(PikachuCry6), PikachuCry6 ; 22:5042
+ dbw BANK(PikachuCry7), PikachuCry7 ; 22:6254
+
+; bank 23
+ dbw BANK(PikachuCry8), PikachuCry8 ; 23:4000
+ dbw BANK(PikachuCry9), PikachuCry9 ; 23:50ca
+ dbw BANK(PikachuCry10), PikachuCry10 ; 23:5e0c
+
+; bank 24
+ dbw BANK(PikachuCry11), PikachuCry11 ; 24:4000
+ dbw BANK(PikachuCry12), PikachuCry12 ; 24:4722
+ dbw BANK(PikachuCry13), PikachuCry13 ; 24:54a4
+
+; bank 25
+ dbw BANK(PikachuCry14), PikachuCry14 ; 25:4000
+ dbw BANK(PikachuCry15), PikachuCry15 ; 25:589a
+
+; banks 31-34, in no particular order
+
+ dbw BANK(PikachuCry16), PikachuCry16 ; 31:4000
+ dbw BANK(PikachuCry17), PikachuCry17 ; 34:4000
+ dbw BANK(PikachuCry18), PikachuCry18 ; 31:549a
+ dbw BANK(PikachuCry19), PikachuCry19 ; 33:4000
+ dbw BANK(PikachuCry20), PikachuCry20 ; 32:4000
+ dbw BANK(PikachuCry21), PikachuCry21 ; 32:6002
+ dbw BANK(PikachuCry22), PikachuCry22 ; 31:63a4
+ dbw BANK(PikachuCry23), PikachuCry23 ; 34:4862
+ dbw BANK(PikachuCry24), PikachuCry24 ; 33:5632
+ dbw BANK(PikachuCry25), PikachuCry25 ; 34:573c
+ dbw BANK(PikachuCry26), PikachuCry26 ; 33:725c
+
+; bank 35
+ dbw BANK(PikachuCry27), PikachuCry27 ; 35:4000
+ dbw BANK(PikachuCry28), PikachuCry28 ; 35:4b5a
+ dbw BANK(PikachuCry29), PikachuCry29 ; 35:5da4
+ dbw BANK(PikachuCry30), PikachuCry30 ; 35:69ce
+ dbw BANK(PikachuCry31), PikachuCry31 ; 35:6e80
+
+; bank 36
+ dbw BANK(PikachuCry32), PikachuCry32 ; 36:4000
+ dbw BANK(PikachuCry33), PikachuCry33 ; 36:458a
+ dbw BANK(PikachuCry34), PikachuCry34 ; 36:523c
+
+; bank 37
+ dbw BANK(PikachuCry35), PikachuCry35 ; 37:4000
+ dbw BANK(PikachuCry36), PikachuCry36 ; 37:522a
+
+; banks 36-38
+ dbw BANK(PikachuCry37), PikachuCry37 ; 38:4000
+ dbw BANK(PikachuCry38), PikachuCry38 ; 38:4dfa
+ dbw BANK(PikachuCry39), PikachuCry39 ; 37:6e0c
+ dbw BANK(PikachuCry40), PikachuCry40 ; 38:5a64
+ dbw BANK(PikachuCry41), PikachuCry41 ; 36:6746
+ dbw BANK(PikachuCry42), PikachuCry42 ; 38:6976
+
+INCLUDE "engine/overworld/advance_player_sprite.asm"
+
+ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
+; Reset player status on blackout.
+ xor a
+ ld [wd435],a
+ xor a ; gamefreak copypasting functions (double xor a)
+ ld [wBattleResult], a
+ ld [wWalkBikeSurfState], a
+ ld [wIsInBattle], a
+ ld [wMapPalOffset], a
+ ld [wNPCMovementScriptFunctionNum], a
+ ld [hJoyHeld], a
+ ld [wNPCMovementScriptPointerTableNum], a
+ ld [wFlags_0xcd60], a
+
+ ld [$ff9f], a
+ ld [$ff9f + 1], a
+ ld [$ff9f + 2], a
+ call HasEnoughMoney
+ jr c, .lostmoney ; never happens
+
+ ; Halve the player's money.
+ ld a, [wPlayerMoney]
+ ld [$ff9f], a
+ ld a, [wPlayerMoney + 1]
+ ld [$ff9f + 1], a
+ ld a, [wPlayerMoney + 2]
+ ld [$ff9f + 2], a
+ xor a
+ ld [$ffa2], a
+ ld [$ffa3], a
+ ld a, 2
+ ld [$ffa4], a
+ predef DivideBCDPredef3
+ ld a, [$ffa2]
+ ld [wPlayerMoney], a
+ ld a, [$ffa2 + 1]
+ ld [wPlayerMoney + 1], a
+ ld a, [$ffa2 + 2]
+ ld [wPlayerMoney + 2], a
+
+.lostmoney
+ ld hl, wd732
+ set 2, [hl]
+ res 3, [hl]
+ set 6, [hl]
+ ld a, %11111111
+ ld [wJoyIgnore], a
+ predef_jump HealParty
+
+Func_f02da:: ; f02da (3c:42da)
+ ld a,[wCurMap]
+ cp VERMILION_GYM ; ??? new thing about verm gym?
+ jr z,.asm_f02ee
+ ld c,a
+ ld hl,Pointer_f02fa
+.asm_f02e5
+ ld a,[hli]
+ cp c
+ jr z,.asm_f02f4
+ 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]
+ ret
+
+Pointer_f02fa:: ; f02fa (3c:42fa)
+ db $cf,$d0,$d1,$d2,$d3,$d4
+ db $d5,$e9,$ea,$eb,$d6,$d7
+ db $d8,$a5,$a6,$87,$c7,$ca
+ db $c6,$6c,$c2,$71,$f5,$f6
+ db $f7,$ff
+
+BeachHouse_GFX:: ; f0314 (3c:4314)
+ INCBIN "gfx/tilesets/beachhouse.2bpp"
+
+BeachHouse_Block:: ; f0914 (3c:4914)
+ INCBIN "gfx/blocksets/beachhouse.bst"
+
+Func_f0a54:: ; f0a54 (3c:4a54)
+ ret
+
+Func_f0a55:: ; f0a55 (3c:4a55)
+ ld hl,Pointer_f0a76 ; 3c:4a76
+.loop
+ ld a,[hli]
+ cp a,$ff
+ ret z
+ ld b,a
+ ld a,[wCurMap]
+ cp b
+ jr z,.asm_f0a68
+ inc hl
+ inc hl
+ inc hl
+ jr .loop
+
+.asm_f0a68
+ ld a,[hli]
+ ld c,a
+ ld b,$0
+ ld a,[hli]
+ ld h,[hl]
+ ld l,a
+ ld de,wMissableObjectList
+ call CopyData
+ ret
+
+Pointer_f0a76:: ; f0a76 (3c:4a76)
+ db $27,$07,$7b,$4a,$ff
+ db $01,$ec,$02,$ed,$03,$ee,$ff
+
+ dr $f0a82,$f220e
+BeachHouse_h: ; f220e (3c:620e)
+;INCLUDE "data/mapHeaders/beach_house.asm"
+ dr $f220e,$f25f8
+CheckForHiddenObject:: ; f25f8 (3c:65f8)
+ dr $f25f8,$f4000 \ No newline at end of file