diff options
Diffstat (limited to 'src/engine/bank1.asm')
-rwxr-xr-x | src/engine/bank1.asm | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm new file mode 100755 index 0000000..c29a4c4 --- /dev/null +++ b/src/engine/bank1.asm @@ -0,0 +1,251 @@ +Func_4000: ; 4000 (1:4000) + di + ld sp, $e000 + call ResetSerial + call EnableInt_VBlank + call EnableInt_Timer + call EnableExtRAM + ld a, [$a006] + ld [$ce47], a + ld a, [$a009] + ld [$ccf2], a + call DisableExtRAM + ld a, $1 + ld [$cd0d], a + ei + farcall Func_1a6cc + ld a, [$ff90] + cp $3 + jr z, .asm_4035 + farcall Func_126d1 + jr Func_4000 +.asm_4035 + call Func_405a + call Func_04a2 + ld hl, $00a2 + call Func_2af0 + jr c, .asm_404d + call EnableExtRAM + xor a + ld [$a000], a + call DisableExtRAM +.asm_404d + jp Reset + +Func_4050: ; 4050 (1:4050) + farcall Func_1996e + ld a, $1 + ld [$cd0d], a + ret + +Func_405a: ; 405a (1:405a) +INCBIN "baserom.gbc",$405a,$406f - $405a + +Func_406f: ; 406f (1:406f) +INCBIN "baserom.gbc",$406f,$409f - $406f + +; this function begins the duel after the opponent's +; graphics, name and deck have been introduced +Duel_Start: ; 409f (1:409f) + ld a, $c2 + ld [$ff97], a + ld a, $0 + ld [$c2f1], a + ld a, [$cc19] + ld [wOpponentDeck], a + call $6793 + call Func_1c72 + call Duel_LoadDecks + call Func_1c72 + jr .asm_40ca + + ld a, MUSIC_DUELTHEME1 + ld [wDuelTheme], a + ld hl, $cc16 + xor a + ld [hli], a + ld [hl], a + ld [wIsPracticeDuel], a + +.asm_40ca + ld hl, [sp+$0] + ld a, l + ld [$cbe5], a + ld a, h + ld [$cbe6], a + xor a + ld [$cbc6], a + call $420b + ld a, [$cc18] + ld [$cc08], a + call $70aa + ld a, [wDuelTheme] + call PlaySong + call $4b60 + ret c + +; the loop returns here after every turn switch +.mainDuelLoop + xor a + ld [$cbc6], a + call $35e6 + call $54c8 + call $4225 + call $0f58 + ld a, [$cc07] + or a + jr nz, .asm_4136 + call $35fa + call $6baf + call $3b31 + call $0f58 + ld a, [$cc07] + or a + jr nz, .asm_4136 + ld hl, $cc06 + inc [hl] + ld a, [$cc09] + cp $80 + jr z, .asm_4126 +.asm_4121 + call Func_1c72 + jr .mainDuelLoop + +.asm_4126 + ld a, [wIsPracticeDuel] + or a + jr z, .asm_4121 + ld a, [hl] + cp $f + jr c, .asm_4121 + xor a + ld [$d0c3], a + ret + +.asm_4136 + call $5990 + call Func_04a2 + ld a, $3 + call $2167 + ld hl, $0076 + call Func_2aab + call Func_04a2 + ld a, [$ff97] + push af + ld a, $c2 + ld [$ff97], a + call $4a97 + call $4ad6 + pop af + ld [$ff97], a + call $3b21 + ld a, [$cc07] + cp $1 + jr z, .asm_4171 + cp $2 + jr z, .asm_4184 + ld a, $5f + ld c, $1a + ld hl, $0077 + jr .asm_4196 + +.asm_4171 + ld a, [$ff97] + cp $c2 + jr nz, .asm_418a +.asm_4177 + xor a + ld [$d0c3], a + ld a, $5d + ld c, $18 + ld hl, $0078 + jr .asm_4196 + +.asm_4184 + ld a, [$ff97] + cp $c2 + jr nz, .asm_4177 + +.asm_418a + ld a, $1 + ld [$d0c3], a + ld a, $5e + ld c, $19 + ld hl, $0079 + +.asm_4196 + call $3b6a + ld a, c + call PlaySong + ld a, $c3 + ld [$ff97], a + call Func_2a59 + call EnableLCD +.asm_41a7 + call Func_053f + call Func_378a + or a + jr nz, .asm_41a7 + ld a, [$cc07] + cp $3 + jr z, .asm_41c8 + call Func_39fc + call $2aae + call $3b31 + call ResetSerial + ld a, $c2 + ld [$ff97], a + ret + +.asm_41c8 + call $2aae + call $3b31 + ld a, [wDuelTheme] + call PlaySong + ld hl, $007a + call Func_2aab + ld a, $1 + ld [$cc08], a + call $70aa + ld a, [$cc09] + cp $1 + jr z, .asm_41f3 + ld a, $c2 + ld [$ff97], a + call $4b60 + jp $40ee + +.asm_41f3 + call $0f58 + ld h, $c2 + ld a, [wSerialOp] + cp $29 + jr z, .asm_4201 + ld h, $c3 + +.asm_4201 + ld a, h + ld [$ff97], a + call $4b60 + jp nc, $40ee + ret +; 0x420b + +INCBIN "baserom.gbc",$420b,$5aeb - $420b + +Func_5aeb: ; 5aeb (1:5aeb) +INCBIN "baserom.gbc",$5aeb,$6785 - $5aeb + +Func_6785: ; 6785 (1:6785) +INCBIN "baserom.gbc",$6785,$7354 - $6785 + +BuildVersion: ; 7354 (1:7354) + db "VER 12/20 09:36",TX_END + +INCBIN "baserom.gbc",$7364,$7571 - $7364 + +Func_7571: ; 7571 (1:7571) +INCBIN "baserom.gbc",$7571,$758f - $7571 + +Func_758f: ; 758f (1:758f) +INCBIN "baserom.gbc",$758f,$8000 - $758f |