diff options
author | dannye <corrnondacqb@yahoo.com> | 2016-02-17 15:37:46 -0600 |
---|---|---|
committer | dannye <corrnondacqb@yahoo.com> | 2016-02-17 15:40:47 -0600 |
commit | 59d63d39fc6e93c1b0093115d0c3a8f9f2f9f852 (patch) | |
tree | 7607b9996145ce8e1c7806f97b56ffe2c84c3062 | |
parent | ea871b64a1d6dfc655a6223849ed36c18a64ac63 (diff) |
More home disassembly
-rwxr-xr-x | src/engine/home.asm | 1134 |
1 files changed, 1066 insertions, 68 deletions
diff --git a/src/engine/home.asm b/src/engine/home.asm index be6f23a..9c9060b 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -2273,7 +2273,6 @@ ShuffleDeck: ; 10bc (0:10bc) ld a, b ; a = number of cards in the deck call ShuffleCards ret -; 0x10cf ; draw a card from the deck, saving its location as $40 ; returns c if deck is empty, nc if a card was succesfully drawn @@ -2398,7 +2397,6 @@ Func_1362: ; 1362 (0:1362) cp $c2 jr z, .asm_1372 ld hl, wOpponentDeck - .asm_1372 add hl, de ld a, [hl] @@ -2420,9 +2418,49 @@ Func_1376: ; 1376 (0:1376) pop de pop hl ret -; 0x138c -INCBIN "baserom.gbc",$138c,$160b - $138c +Func_138c: ; 138c (0:138c) + push hl + push de + push bc + push af + call Func_1324 + call Func_2f0a + pop af + ld hl, wCardBuffer2 + bank1call $6d84 + ld a, e + pop bc + pop de + pop hl + ret +; 0x13a2 + +INCBIN "baserom.gbc",$13a2,$15ef - $13a2 + +Func_15ef: ; 15ef (0:15ef) + push bc + ld l, $0 + ld c, $0 +.asm_15f4 + ld a, [hl] + cp b + jr nz, .asm_1602 + ld a, l + push hl + call Func_1362 + cp e + pop hl + jr nz, .asm_1602 + inc c +.asm_1602 + inc l + ld a, l + cp $3c + jr c, .asm_15f4 + ld a, c + pop bc + ret ; returns [[hWhoseTurn] << 8 + a] in a ; i.e. variable a of the player whose turn it is @@ -2454,7 +2492,7 @@ Func_16c0: ; 16c0 (0:16c0) ld [$ccc6], a ld a, d ld [$ff9f], a - call $1376 + call Func_1376 ld a, [$cc2b] ld [$ccc2], a ld hl, $cc30 @@ -2480,9 +2518,31 @@ Func_16c0: ; 16c0 (0:16c0) ld [hli], a ld [hl], a ret -; 0x16f6 -INCBIN "baserom.gbc",$16f6,$1730 - $16f6 +Func_16f6: ; 16f6 (0:16f6) + ld a, $bb + call GetTurnDuelistVariable + ld [$ff9f], a + call Func_1324 + ld a, e + ld [$ccc3], a + call GetOpposingTurnDuelistVariable_SwapTurn + ld a, $bb + call GetTurnDuelistVariable + call Func_1324 + ld a, e + ld [$ccc4], a + call GetOpposingTurnDuelistVariable_SwapTurn + xor a + ld [$ccec], a + ld [$cccd], a + ld [$cced], a + ld [$cce6], a + ld [$ccef], a + ld [$ccf0], a + ld [$ccf1], a + bank1call $7189 + ret Func_1730: ; 1730 (0:1730) ld a, [$ccc6] @@ -2493,37 +2553,37 @@ Func_1730: ; 1730 (0:1730) ld [$cc12], a ld a, [$ccb1] cp $4 - jp z, $184b - call $16f6 + jp z, Func_184b + call Func_16f6 ld a, $1 - call $2fd9 - jp c, $181e - call $3414 + call TryExecuteEffectCommandFunction + jp c, Func_181e + call Func_3414 jr c, .asm_1766 ld a, $2 - call $2fd9 - jp c, $1821 - call $1874 + call TryExecuteEffectCommandFunction + jp c, Func_1821 + call Func_1874 jr .asm_1777 .asm_1766 - call $1874 - call $3400 - jp c, $1823 + call Func_1874 + call Func_3400 + jp c, Func_1823 ld a, $2 - call $2fd9 - jp c, $1821 + call TryExecuteEffectCommandFunction + jp c, Func_1821 .asm_1777 ld a, $9 call Func_0f7f ld a, $6 - call $2fd9 - call $18d7 - jp c, $1828 - call $1b8d + call TryExecuteEffectCommandFunction + call Func_18d7 + jp c, Func_1828 + call Func_1b8d call WaitForWideTextBoxInput call Func_0f58 ld a, $5 - call $2fd9 + call TryExecuteEffectCommandFunction ld a, $a call Func_0f7f call $7415 @@ -2531,15 +2591,15 @@ Func_1730: ; 1730 (0:1730) and $80 jr nz, .asm_17ad call GetOpposingTurnDuelistVariable_SwapTurn - call $3432 + call Func_3432 call GetOpposingTurnDuelistVariable_SwapTurn .asm_17ad xor a ld [$ff9d], a ld a, $3 - call $2fd9 - call $1994 - call $189d + call TryExecuteEffectCommandFunction + call Func_1994 + call Func_189d ld hl, $ccbf ld [hl], e inc hl @@ -2556,7 +2616,7 @@ Func_1730: ; 1730 (0:1730) call $7484 pop hl pop de - call $1a96 + call Func_1a96 ld a, [$cac2] cp $1 jr nz, .asm_17e8 @@ -2564,7 +2624,7 @@ Func_1730: ; 1730 (0:1730) bank1call $503a pop hl .asm_17e8 - call $1ad0 + call Func_1ad0 jr Func_17fb Func_17ed: ; 17ed (0:17ed) @@ -2579,19 +2639,462 @@ Func_17fb: ; 17fb (0:17fb) ld a, [$ccc4] push af ld a, $4 - call $2fd9 + call TryExecuteEffectCommandFunction pop af ld [$ccc4], a - call $367b + call Func_367b bank1call $6df1 - call $1bb4 + call Func_1bb4 bank1call $7195 call $6e49 or a ret -; 0x1819 -INCBIN "baserom.gbc",$1819,$1c72 - $1819 +Func_1819: ; 1819 (0:1819) + push hl + call $6510 + pop hl + +Func_181e: ; 181e (0:181e) + call DrawWideTextBox_WaitForInput + +Func_1821: ; 1821 (0:1821) + scf + ret + +Func_1823: ; 1823 (0:1823) + bank1call $717a + or a + ret + +Func_1828: ; 1828 (0:1828) + bank1call $4f9d + ld a, $1 + ld [$cce6], a + ld hl, $004f + call DrawWideTextBox_PrintText + ld a, $75 + ld [$ccb8], a + ld a, $14 + call Func_195c + call Func_1bb4 + call $6e49 + bank1call $717a + or a + ret + +Func_184b: ; 184b (0:184b) + call $7415 + ld a, $2 + call TryExecuteEffectCommandFunction + jr c, Func_1819 + ld a, $5 + call TryExecuteEffectCommandFunction + jr c, Func_1821 + ld a, $c + call Func_0f7f + call Func_0f58 + ld a, $d + call Func_0f7f + ld a, $3 + call TryExecuteEffectCommandFunction + ld a, $16 + call Func_0f7f + ret + +Func_1874: ; 1874 (0:1874) + ld a, [$ccec] + or a + ret nz + ld a, [$ffa0] + push af + ld a, [$ff9f] + push af + ld a, $1 + ld [$ccec], a + ld a, [$cc11] + ld [$ff9f], a + ld a, [$cc10] + ld [$ffa0], a + ld a, $8 + call Func_0f7f + call Func_0f58 + pop af + ld [$ff9f], a + pop af + ld [$ffa0], a + ret + +Func_189d: ; 189d (0:189d) + ld a, [$ccb1] + bit 7, a + ret nz + ld a, [$ccc7] + or a + ret nz + ld a, e + or d + jr nz, .asm_18b9 + ld a, $e8 + call GetOpposingTurnDuelistVariable + or a + jr nz, .asm_18b9 + ld a, [$cccd] + or a + ret z +.asm_18b9 + push de + call GetOpposingTurnDuelistVariable_SwapTurn + xor a + ld [$cceb], a + call Func_348a + call GetOpposingTurnDuelistVariable_SwapTurn + pop de + ret nc + bank1call $4f9d + ld a, $e8 + call GetOpposingTurnDuelistVariable + ld [hl], $0 + ld de, $0000 + ret + +Func_18d7: ; 18d7 (0:18d7) + xor a + ld [$ccc9], a + ld a, $f0 + call GetTurnDuelistVariable + and $f + cp $1 + jr z, .asm_18e8 + or a + ret +.asm_18e8 + ld de, $00f7 + call Func_307d + jr c, .asm_18f7 + ld a, $1 + ld [$ccc9], a + scf + ret +.asm_18f7 + or a + ret +; 0x18f9 + +INCBIN "baserom.gbc",$18f9,$195c - $18f9 + +Func_195c: ; 195c (0:195c) + ld hl, $ccb9 + ld [hli], a + ld [hl], $0 + ld a, [$ccc7] + push af + xor a + ld [$ccc7], a + bank1call $7415 + ld a, [$ccc4] + push af + ld a, [$ccc3] + ld [$ccc4], a + bank1call Func_1a22 ; switch to bank 1, but call a home func + ld a, [$ccc1] + ld c, a + ld b, $0 + ld a, $c8 + call GetTurnDuelistVariable + bank1call $7469 + call Func_1ad0 + pop af + ld [$ccc4], a + pop af + ld [$ccc7], a + ret + +Func_1994: ; 1994 (0:1994) + xor a + ld [$ccc1], a + ld hl, $ccb9 + ld a, [hli] + or [hl] + jr nz, .asm_19a3 + ld de, $0000 + ret +.asm_19a3 + xor a + ld [$ff9d], a + ld d, [hl] + dec hl + ld e, [hl] + bit 7, d + jr z, .asm_19b8 + res 7, d + xor a + ld [$ccc1], a + call Func_321d + jr .asm_19f3 +.asm_19b8 + call Func_321d + ld a, e + or d + ret z + ld a, [$ff9d] + call Func_36f7 + call Func_1a0e + ld b, a + call GetOpposingTurnDuelistVariable_SwapTurn + call Func_3730 + call GetOpposingTurnDuelistVariable_SwapTurn + and b + jr z, .asm_19dc + sla e + rl d + ld hl, $ccc1 + set 1, [hl] +.asm_19dc + call GetOpposingTurnDuelistVariable_SwapTurn + call Func_374a + call GetOpposingTurnDuelistVariable_SwapTurn + and b + jr z, .asm_19f3 + ld hl, $ffe2 + add hl, de + ld e, l + ld d, h + ld hl, $ccc1 + set 2, [hl] +.asm_19f3 + ld b, $10 + call Func_1a69 + call GetOpposingTurnDuelistVariable_SwapTurn + ld b, $10 + call Func_1a7e + call Func_3244 + bit 7, d + jr z, .asm_1a0a + ld de, $0000 +.asm_1a0a + call GetOpposingTurnDuelistVariable_SwapTurn + ret + +Func_1a0e: ; 1a0e (0:1a0e) + push hl + add $1a + ld l, a + ld a, $1a + adc $0 + ld h, a + ld a, [hl] + pop hl + ret +; 0x1a1a + +INCBIN "baserom.gbc",$1a1a,$1a22 - $1a1a + +Func_1a22: ; 1a22 (0:1a22) + xor a + ld [$ccc1], a + ld hl, $ccb9 + ld a, [hli] + or [hl] + or a + jr z, .asm_1a65 + ld d, [hl] + dec hl + ld e, [hl] + call Func_36f6 + call Func_1a0e + ld b, a + call Func_3730 + and b + jr z, .asm_1a47 + sla e + rl d + ld hl, $ccc1 + set 1, [hl] +.asm_1a47 + call Func_374a + and b + jr z, .asm_1a58 + ld hl, $ffe2 + add hl, de + ld e, l + ld d, h + ld hl, $ccc1 + set 2, [hl] +.asm_1a58 + ld b, $10 + call Func_1a69 + ld b, $10 + call Func_1a7e + bit 7, d + ret z +.asm_1a65 + ld de, $0000 + ret + +Func_1a69: ; 1a69 (0:1a69) + push de + call GetTurnDuelistVariable + ld de, $00d8 + call Func_15ef + ld l, a + ld h, $a + call HtimesL + pop de + add hl, de + ld e, l + ld d, h + ret + +Func_1a7e: ; 1a7e (0:1a7e) + push de + call GetTurnDuelistVariable + ld de, $00d9 + call Func_15ef + ld l, a + ld h, $14 + call HtimesL + pop de + ld a, e + sub l + ld e, a + ld a, d + sbc h + ld d, a + ret + +Func_1a96: ; 1a96 (0:1a96) + push hl + push de + ld a, [hl] + sub e + ld [hl], a + ld a, $0 + sbc d + and $80 + jr z, .asm_1aa4 + ld [hl], $0 +.asm_1aa4 + ld a, [hl] + or a + jr z, .asm_1aa9 + scf +.asm_1aa9 + pop de + pop hl + ret + +Func_1aac: ; 1aac (0:1aac) + ld e, a + add $c8 + call GetTurnDuelistVariable + or a + ret nz + ld a, [$ccc4] + push af + ld a, e + add $bb + call GetTurnDuelistVariable + call Func_1376 + ld a, [$cc2b] + ld [$ccc4], a + call Func_1ad3 + pop af + ld [$ccc4], a + scf + ret + +Func_1ad0: ; 1ad0 (0:1ad0) + ld a, [hl] + or a + ret nz +Func_1ad3: ; 1ad3 (0:1ad3) + ld a, [$ccc4] + ld e, a + call LoadCardDataToRAM + ld hl, $cc27 + ld a, [hli] + ld h, [hl] + ld l, a + call Func_2ebb + ld hl, $0081 + call DrawWideTextBox_PrintText + ld a, $28 +.asm_1aeb + call DoFrame + dec a + jr nz, .asm_1aeb + scf + ret +; 0x1af3 + +INCBIN "baserom.gbc",$1af3,$1b8d - $1af3 + +Func_1b8d: ; 1b8d (0:1b8d) + bank1call $4f9d + ld a, $bb + call GetTurnDuelistVariable + call Func_1376 + ld a, $12 + call Func_29f5 + ld [hl], $0 + ld hl, $ce3f + xor a + ld [hli], a + ld [hli], a + ld a, [$ccaa] + ld [hli], a + ld a, [$ccab] + ld [hli], a + ld hl, $0035 + call DrawWideTextBox_PrintText + ret + +Func_1bb4: ; 1bb4 (0:1bb4) + call Func_3b31 + bank1call $4f9d + call $503a + xor a + ld [$ff9d], a + call Func_1bca + call WaitForWideTextBoxInput + call Func_0f58 + ret + +Func_1bca: ; 1bca (0:1bca) + ld a, [$cced] + or a + ret z + cp $1 + jr z, .asm_1bfd + ld a, [$ff9d] + add $bb + call GetTurnDuelistVariable + call Func_1376 + ld a, $12 + call Func_29f5 + ld [hl], $0 + ld hl, $0000 + call Func_2ebb + ld hl, $ccaa + ld de, $ce41 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + ld hl, $014a + call DrawWideTextBox_PrintText + scf + ret +.asm_1bfd + call $700a + call DrawWideTextBox_PrintText + scf + ret +; 0x1c05 + +INCBIN "baserom.gbc",$1c05,$1c72 - $1c05 ; returns [([hWhoseTurn] ^ $1) << 8 + a] in a ; i.e. variable a of the player whose turn it is not @@ -2693,7 +3196,6 @@ AdjustCoordinatesForWindow: ; 1deb (0:1deb) ld e, a pop af ret -; 0x1e00 ; Draws a bxc text box at de printing a name in the left side of the top border. ; The name's text offset must be at hl when this function is called. @@ -3774,27 +4276,29 @@ Func_264b: ; 264b (0:264b) ld hl, $cd17 ld a, [hli] or [hl] - jr z, .asm_26a9 + jr z, asm_26a9 ld a, [hld] ld l, [hl] ld h, a ldh a, [hCurrentMenuItem] call CallHL jr nc, HandleMenuInput -.asm_269b +asm_269b: call Func_270b + +Func_269e: ; 269e (0:269e) call Func_26c0 ld a, [wCurMenuItem] ld e, a ldh a, [hCurrentMenuItem] scf ret -.asm_26a9 +asm_26a9: ldh a, [hButtonsPressed] and $3 jr z, HandleMenuInput and $1 - jr nz, .asm_269b + jr nz, asm_269b ld a, [wCurMenuItem] ld e, a ld a, $ff @@ -3899,7 +4403,7 @@ Func_271a: ; 271a (0:271a) push af ld a, $1 call Func_3796 - call $2772 + call .asm_2772 pop af ld [wCurMenuItem], a ld [$ffb1], a @@ -3909,7 +4413,7 @@ Func_271a: ; 271a (0:271a) .asm_275d ld a, [$ff8f] and $1 - jp nz, $269e + jp nz, Func_269e .asm_2764 ld hl, wCursorBlinkCounter ld a, [hl] @@ -3919,6 +4423,7 @@ Func_271a: ; 271a (0:271a) ld a, $f bit 4, [hl] jr z, .asm_2774 +.asm_2772 ld a, $0 .asm_2774 ld e, a @@ -3939,7 +4444,14 @@ Func_271a: ; 271a (0:271a) ret ; 0x278d -INCBIN "baserom.gbc",$278d,$2a1a - $278d +INCBIN "baserom.gbc",$278d,$29f5 - $278d + +Func_29f5: ; 29f5 (0:29f5) + farcallx $6, $4000 + ret +; 0x29fa + +INCBIN "baserom.gbc",$29fa,$2a1a - $29fa Func_2a1a: ; 2a1a (0:2a1a) xor a @@ -4001,7 +4513,6 @@ DrawNarrowTextBox: ; 2a6f (0:2a6f) call AdjustCoordinatesForWindow call DrawRegularTextBox ret -; 0x2a7c DrawNarrowTextBox_WaitForInput: ; 2a7c (0:2a7c) call DrawNarrowTextBox_PrintText @@ -4016,7 +4527,6 @@ DrawNarrowTextBox_WaitForInput: ; 2a7c (0:2a7c) and $3 jr z, .waitAorBLoop ret -; 0x2a96 NarrowTextBoxPromptCursorData: ; 2a96 (0:2a96) db $a, $11, $1, $1, $2f, $1d, $0, $0 @@ -4553,7 +5063,14 @@ PrintTextBoxBorderLabel: ; 2e89 (0:2e89) jp PrintPlayerName ; 0x2ea9 -INCBIN "baserom.gbc",$2ea9,$2ec4 - $2ea9 +INCBIN "baserom.gbc",$2ea9,$2ebb - $2ea9 + +Func_2ebb: ; 2ebb (0:2ebb) + ld a, l + ld [$ce3f], a + ld a, h + ld [$ce40], a + ret Func_2ec4: ; 2ec4 (0:2ec4) ld a, l @@ -4563,12 +5080,18 @@ Func_2ec4: ; 2ec4 (0:2ec4) ret ; 0x2ecd -INCBIN "baserom.gbc",$2ecd,$2f10 - $2ecd +INCBIN "baserom.gbc",$2ecd,$2f0a - $2ecd + +Func_2f0a: ; 2f0a (0:2f0a) + push hl + ld hl, wCardBuffer2 + jr Func_2f14 ; load data of card with id at e to wCardBuffer1 LoadCardDataToRAM: ; 2f10 (0:2f10) push hl ld hl, wCardBuffer1 +Func_2f14: ; 2f14 (0:2f14) push de push bc push hl @@ -4592,9 +5115,23 @@ LoadCardDataToRAM: ; 2f10 (0:2f10) pop de pop hl ret -; 0x2f32 -INCBIN "baserom.gbc",$2f32,$2f7c - $2f32 +Func_2f32: ; 2f32 (0:2f32) + push hl + call GetCardPointer + jr c, .asm_2f43 + ld a, $c + call BankpushHome2 + ld l, [hl] + call BankpopHome + ld a, l + or a +.asm_2f43 + pop hl + ret +; 0x2f45 + +INCBIN "baserom.gbc",$2f45,$2f7c - $2f45 ; return at hl the pointer to the data of the card with id at e ; return carry if e was out of bounds, so no pointer was returned @@ -4625,7 +5162,6 @@ GetCardPointer: ; 2f7c (0:2f7c) pop bc pop de ret -; 0x2fa0 LoadCardGfx: ; 2fa0 (0:2fa0) ldh a, [hBankROM] @@ -4655,7 +5191,6 @@ LoadCardGfx: ; 2fa0 (0:2fa0) pop af call BankswitchHome ret -; 0x2fcb Func_2fcb: ; 2fcb (0:2fcb) ld a, $1d @@ -4664,7 +5199,6 @@ Func_2fcb: ; 2fcb (0:2fcb) call CopyGfxData call BankpopHome ret -; 0x2fd9 ; Checks if the command ID at a is one of the commands of the move or card effect currently in use, ; and executes its associated function if so. @@ -4699,7 +5233,6 @@ TryExecuteEffectCommandFunction: ; 2fd9 (0:2fd9) push bc pop af ret -; 0x2ffe ; input: ; a = command ID to check @@ -4749,7 +5282,6 @@ CheckMatchingCommand: ; 2ffe (0:2ffe) call BankswitchHome scf ret -; 0x302c ; loads the deck id in a from DeckPointers ; sets carry flag if an invalid deck id is used @@ -4782,7 +5314,6 @@ LoadDeck: ; 302c (0:302c) pop hl scf ret -; 0x3055 Func_3055: ; 3055 (0:3055) push hl @@ -5106,9 +5637,151 @@ Func_3212: ; 3212 (0:3212) ld a, $81 ld [rSC], a ret -; 0x321d -INCBIN "baserom.gbc",$321d,$33c1 - $321d +Func_321d: ; 321d (0:321d) + ld a, $eb + call GetTurnDuelistVariable + bit 0, [hl] + call nz, Func_323b + ld a, $e7 + call GetTurnDuelistVariable + or a + call nz, Func_323a + ld a, $e8 + call GetTurnDuelistVariable + or a + call nz, Func_3243 + ret + +Func_323a: ; 323a (0:323a) + ret + +Func_323b: ; 323b (0:323b) + ld a, e + or d + ret z + sla e + rl d + ret + +Func_3243: ; 3243 (0:3243) + ret + +Func_3244: ; 3244 (0:3244) + call Func_3269 + ld a, $e8 + call GetOpposingTurnDuelistVariable + or a + ret z + cp $3 + jr z, .asm_325b + cp $7 + jr z, .asm_3262 + cp $12 + jr z, .asm_3262 + ret +.asm_325b + ld hl, $ffec + add hl, de + ld e, l + ld d, h + ret +.asm_3262 + ld hl, $fff6 + add hl, de + ld e, l + ld d, h + ret + +Func_3269: ; 3269 (0:3269) + ld a, [$ccc7] + or a + jr nz, .asm_32ad + ld a, $e7 + call GetTurnDuelistVariable + or a + jr z, .asm_3297 + cp $f + jr z, .asm_32ad + cp $10 + jr z, .asm_32ad + cp $11 + jr z, .asm_32ad + cp $17 + jr z, .asm_32ad + cp $1e + jr z, .asm_32b1 + cp $13 + jr z, .asm_32b8 + cp $e + jr z, .asm_32bf + cp $15 + jr z, .asm_32ca +.asm_3297 + call Func_34ef + ret c + ld a, [$ccb1] + cp $4 + ret z + ld a, [$ccc4] + cp $9b + jr z, .asm_32d8 + cp $8b + jr z, .asm_32e9 + ret +.asm_32ad + ld de, $0000 + ret +.asm_32b1 + ld hl, $fff6 + add hl, de + ld e, l + ld d, h + ret +.asm_32b8 + ld hl, $ffec + add hl, de + ld e, l + ld d, h + ret +.asm_32bf + ld bc, $0028 + call Func_3090 + ret nc + ld de, $0000 + ret +.asm_32ca + sla d + rr e + bit 0, e + ret z + ld hl, $fffb + add hl, de + ld e, l + ld d, h + ret +.asm_32d8 + ld a, [$ccb1] + cp $4 + ret z + ld bc, $001e + call Func_3090 + ret c + ld de, $0000 + ret +.asm_32e9 + sla d + rr e + bit 0, e + ret z + ld hl, $fffb + add hl, de + ld e, l + ld d, h + ret +; 0x32f7 + +INCBIN "baserom.gbc",$32f7,$33c1 - $32f7 Func_33c1: ; 33c1 (0:33c1) ld a, $e8 @@ -5151,21 +5824,209 @@ Func_33e1: ; 33e1 (0:33e1) ld hl, $0103 scf ret -; 0x3400 -INCBIN "baserom.gbc",$3400,$34e2 - $3400 +Func_3400: ; 3400 (0:3400) + call Func_3414 + ret nc + call Func_307d + ld [$cc0a], a + ccf + ret nc + ld hl, $00fd + call DrawWideTextBox_WaitForInput + scf + ret + +Func_3414: ; 3414 (0:3414) + ld a, $e8 + call GetTurnDuelistVariable + or a + ret z + ld de, $00de + cp $2 + jr z, .asm_342b + ld de, $00df + cp $1 + jr z, .asm_342b + or a + ret +.asm_342b + ld a, [$cc0a] + or a + ret nz + scf + ret + +Func_3432: ; 3432 (0:3432) + xor a + ld [$ccc7], a + ld a, [$ccb1] + cp $4 + ret z + ld a, $e7 + call GetTurnDuelistVariable + ld e, $3 + ld hl, $0107 + cp $d + jr z, .asm_346a + ld e, $2 + ld hl, $0108 + cp $14 + jr z, .asm_346a + ld e, $1 + ld hl, $0109 + cp $c + jr z, .asm_346a + call Func_34ef + ccf + ret nc + ld a, [$ccc4] + cp $a0 + jr z, .asm_3470 + or a + ret +.asm_346a + ld a, e + ld [$ccc7], a + scf + ret +.asm_3470 + ld a, [$cce6] + or a + ret nz + ld a, [$ccc3] + ld e, a + ld d, $0 + call Func_2f0a + ld a, [$cc6e] + or a + ret z + ld e, $5 + ld hl, $010b + jr .asm_346a + +Func_348a: ; 348a (0:348a) + ld a, [$ccc4] + cp $96 + jr z, .asm_3493 +.asm_3491 + or a + ret +.asm_3493 + ld a, [$ccb1] + cp $4 + jr z, .asm_3491 + ld a, [$cceb] + call Func_34f0 + jr c, .asm_3491 + xor a + ld [$cac2], a + ld de, $00f6 + call Func_307d + ret nc + ld a, $4 + ld [$ccc7], a + ld hl, $010c + scf + ret +; 0x34b7 + +INCBIN "baserom.gbc",$34b7,$34e2 - $34b7 Func_34e2: ; 34e2 (0:34e2) ld a, $27 - call $3509 + call Func_3509 ccf ret nc ld a, $5c - call $3525 + call Func_3525 ret -; 0x34ef -INCBIN "baserom.gbc",$34ef,$35e6 - $34ef +Func_34ef: ; 34ef (0:34ef) + xor a + +Func_34f0: ; 34f0 (0:34f0) + or a + jr nz, .asm_3500 + ld a, $f0 + call GetTurnDuelistVariable + and $f + ld hl, $00cb + scf + jr nz, .asm_3508 +.asm_3500 + ld a, $27 + call Func_3509 + ld hl, $00d4 +.asm_3508 + ret + +Func_3509: ; 3509 (0:3509) + push bc + ld [$ce7c], a + call Func_3525 + ld c, a + call GetOpposingTurnDuelistVariable_SwapTurn + ld a, [$ce7c] + call Func_3525 + call GetOpposingTurnDuelistVariable_SwapTurn + add c + or a + scf + jr nz, .asm_3523 + or a +.asm_3523 + pop bc + ret + +Func_3525: ; 3525 (0:3525) + push hl + push de + push bc + ld [$ce7c], a + ld c, $0 + ld a, $bb + call GetTurnDuelistVariable + cp $ff + jr z, .asm_3549 + call Func_1324 + ld a, [$ce7c] + cp e + jr nz, .asm_3549 + ld a, $f0 + call GetTurnDuelistVariable + and $f + jr nz, .asm_3549 + inc c +.asm_3549 + ld a, $bc + call GetTurnDuelistVariable +.asm_354e + ld a, [hli] + cp $ff + jr z, .asm_3560 + call Func_1324 + ld a, [$ce7c] + cp e + jr nz, .asm_355d + inc c +.asm_355d + inc b + jr .asm_354e +.asm_3560 + ld a, c + or a + scf + jr nz, .asm_3566 + or a +.asm_3566 + pop bc + pop de + pop hl + ret +; 0x356a + +INCBIN "baserom.gbc",$356a,$35e6 - $356a Func_35e6: ; 35e6 (0:35e6) ld a, $e7 @@ -5198,7 +6059,129 @@ Func_35fa: ; 35fa (0:35fa) ret ; 0x3615 -INCBIN "baserom.gbc",$3615,$377f - $3615 +INCBIN "baserom.gbc",$3615,$367b - $3615 + +Func_367b: ; 367b (0:367b) + ld a, [$ccc4] + cp $7f + jr z, .asm_3683 + ret +.asm_3683 + ld a, [$ccb1] + and $80 + ret nz + ld a, [$ccbf] + or a + ret z + call GetOpposingTurnDuelistVariable_SwapTurn + call Func_34ef + call GetOpposingTurnDuelistVariable_SwapTurn + ret c + ld hl, $000a + call Func_36a2 + call nc, WaitForWideTextBoxInput + ret + +Func_36a2: ; 36a2 (0:36a2) + push hl + call Func_2ec4 + ld a, [$ccc3] + ld e, a + ld d, $0 + call Func_2f0a + ld hl, $cc68 + ld a, [hli] + ld h, [hl] + ld l, a + call Func_2ebb + ld a, $c8 + call GetTurnDuelistVariable + pop de + push af + push hl + call Func_1a96 + ld hl, $0105 + call DrawWideTextBox_PrintText + pop hl + pop af + or a + ret z + call WaitForWideTextBoxInput + xor a + call Func_1aac + call $503a + scf + ret +; 0x36d9 + +INCBIN "baserom.gbc",$36d9,$36f6 - $36d9 + +Func_36f6: ; 36f6 (0:36f6) + xor a + +Func_36f7: ; 36f7 (0:36f7) + push hl + push de + ld e, a + add $d4 + call GetTurnDuelistVariable + bit 7, a + jr nz, .asm_3718 +.asm_3703 + ld a, e + add $bb + call GetTurnDuelistVariable + call Func_1324 + call Func_2f32 + cp $10 + jr nz, .asm_3715 + ld a, $6 +.asm_3715 + pop de + pop hl + ret +.asm_3718 + ld a, e + call Func_34f0 + jr c, .asm_3703 + ld a, e + add $d4 + call GetTurnDuelistVariable + pop de + pop hl + and $f + ret +; 0x3729 + +INCBIN "baserom.gbc",$3729,$3730 - $3729 + +Func_3730: ; 3730 (0:3730) + ld a, $e9 + call GetTurnDuelistVariable + or a + ret nz + ld a, $bb + call GetTurnDuelistVariable + call Func_138c + ld a, [$cc98] + ret +; 0x3743 + +INCBIN "baserom.gbc",$3743,$374a - $3743 + +Func_374a: ; 374a (0:374a) + ld a, $ea + call GetTurnDuelistVariable + or a + ret nz + ld a, $bb + call GetTurnDuelistVariable + call Func_138c + ld a, [$cc99] + ret +; 0x375d + +INCBIN "baserom.gbc",$375d,$377f - $375d SetupSound_T: ; 377f (0:377f) farcall SetupSound_Ext @@ -5695,9 +6678,24 @@ Func_3b31: ; 3b31 (0:3b31) pop af call BankswitchHome ret -; 0x3b52 -INCBIN "baserom.gbc",$3b52,$3b6a - $3b52 +Func_3b52: ; 3b52 (0:3b52) + push hl + push bc + ld a, [$d42a] + ld hl, $d4c0 + and [hl] + ld hl, $d423 + ld c, $7 +.asm_3b60 + and [hl] + inc hl + dec c + jr nz, .asm_3b60 + cp $ff + pop bc + pop hl + ret Func_3b6a: ; 3b6a (0:3b6a) ld [$d422], a @@ -5716,7 +6714,7 @@ Func_3b6a: ; 3b6a (0:3b6a) ld a, [$d4ac] cp [hl] jr nz, .asm_3b90 - call $3b52 + call Func_3b52 jr nc, .asm_3b95 .asm_3b90 call $4a31 |