diff options
author | dannye <corrnondacqb@yahoo.com> | 2016-02-16 23:02:34 -0600 |
---|---|---|
committer | dannye <corrnondacqb@yahoo.com> | 2016-02-16 23:02:34 -0600 |
commit | ea871b64a1d6dfc655a6223849ed36c18a64ac63 (patch) | |
tree | 44e86a8ee357ad9fa5c1bc810501f34990596171 /src | |
parent | e1e282d5e76f61bab261a0c122514dfc007d76e3 (diff) |
Misc home disassembly
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/duel_constants.asm | 36 | ||||
-rwxr-xr-x | src/engine/bank1.asm | 58 | ||||
-rwxr-xr-x | src/engine/home.asm | 683 |
3 files changed, 713 insertions, 64 deletions
diff --git a/src/constants/duel_constants.asm b/src/constants/duel_constants.asm index 8d8453f..0eb4b5b 100644 --- a/src/constants/duel_constants.asm +++ b/src/constants/duel_constants.asm @@ -5,21 +5,21 @@ DUEL_WON EQU $1 DUEL_LOST EQU $2 DUEL_DRAW EQU $3 -DUELVARS_CARD_LOCATIONS EQUS "wPlayerCardLocations & $ff" -DUELVARS_HAND EQUS "wPlayerHand & $ff" -DUELVARS_DECK_CARDS EQUS "wPlayerDeckCards & $ff" -DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "wPlayerNumberOfCardsNotInDeck & $ff" -DUELVARS_ARENA_CARD EQUS "wPlayerArenaCard & $ff" -DUELVARS_BENCH EQUS "wPlayerBench & $ff" -DUELVARS_ARENA_CARD_HP EQUS "wPlayerArenaCardHP & $ff" -DUELVARS_BENCH1_CARD_HP EQUS "wPlayerBench1CardHP & $ff" -DUELVARS_BENCH2_CARD_HP EQUS "wPlayerBench2CardHP & $ff" -DUELVARS_BENCH3_CARD_HP EQUS "wPlayerBench3CardHP & $ff" -DUELVARS_BENCH4_CARD_HP EQUS "wPlayerBench4CardHP & $ff" -DUELVARS_BENCH5_CARD_HP EQUS "wPlayerBench5CardHP & $ff" -DUELVARS_PRIZES EQUS "wPlayerPrizes & $ff" -DUELVARS_NUMBER_OF_CARDS_IN_DISCARD_PILE EQUS "wPlayerNumberOfCardsInDiscardPile & $ff" -DUELVARS_NUMBER_OF_CARDS_IN_HAND EQUS "wPlayerNumberOfCardsInHand & $ff" -DUELVARS_NUMBER_OF_POKEMON_IN_PLAY EQUS "wPlayerNumberOfPokemonInPlay & $ff" -DUELVARS_ARENA_CARD_STATUS EQUS "wPlayerArenaCardStatus & $ff" -DUELVARS_DUELIST_TYPE EQUS "wPlayerDuelistType & $ff" +DUELVARS_CARD_LOCATIONS EQUS "wPlayerCardLocations & $ff" ; 00 +DUELVARS_HAND EQUS "wPlayerHand & $ff" ; 42 +DUELVARS_DECK_CARDS EQUS "wPlayerDeckCards & $ff" ; 7e +DUELVARS_NUMBER_OF_CARDS_NOT_IN_DECK EQUS "wPlayerNumberOfCardsNotInDeck & $ff" ; ba +DUELVARS_ARENA_CARD EQUS "wPlayerArenaCard & $ff" ; bb +DUELVARS_BENCH EQUS "wPlayerBench & $ff" ; bc +DUELVARS_ARENA_CARD_HP EQUS "wPlayerArenaCardHP & $ff" ; c8 +DUELVARS_BENCH1_CARD_HP EQUS "wPlayerBench1CardHP & $ff" ; c9 +DUELVARS_BENCH2_CARD_HP EQUS "wPlayerBench2CardHP & $ff" ; ca +DUELVARS_BENCH3_CARD_HP EQUS "wPlayerBench3CardHP & $ff" ; cb +DUELVARS_BENCH4_CARD_HP EQUS "wPlayerBench4CardHP & $ff" ; cc +DUELVARS_BENCH5_CARD_HP EQUS "wPlayerBench5CardHP & $ff" ; cd +DUELVARS_PRIZES EQUS "wPlayerPrizes & $ff" ; ec +DUELVARS_NUMBER_OF_CARDS_IN_DISCARD_PILE EQUS "wPlayerNumberOfCardsInDiscardPile & $ff" ; ed +DUELVARS_NUMBER_OF_CARDS_IN_HAND EQUS "wPlayerNumberOfCardsInHand & $ff" ; ee +DUELVARS_NUMBER_OF_POKEMON_IN_PLAY EQUS "wPlayerNumberOfPokemonInPlay & $ff" ; ef +DUELVARS_ARENA_CARD_STATUS EQUS "wPlayerArenaCardStatus & $ff" ; f0 +DUELVARS_DUELIST_TYPE EQUS "wPlayerDuelistType & $ff" ; f1 diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index c211fa5..7752b08 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -88,17 +88,17 @@ StartDuel: ; 409f (1:409f) .mainDuelLoop xor a ld [wCurrentDuelMenuItem], a - call $35e6 + call Func_35e6 call $54c8 call Func_4225 - call $0f58 + call Func_0f58 ld a, [wDuelFinished] or a jr nz, .duelIsOver - call $35fa + call Func_35fa call $6baf - call $3b31 - call $0f58 + call Func_3b31 + call Func_0f58 ld a, [wDuelFinished] or a jr nz, .duelIsOver @@ -127,7 +127,7 @@ StartDuel: ; 409f (1:409f) call $5990 call Func_04a2 ld a, $3 - call $2167 + call Func_2167 ld hl, $0076 call DrawWideTextBox_WaitForInput call Func_04a2 @@ -139,7 +139,7 @@ StartDuel: ; 409f (1:409f) call $4ad6 pop af ldh [hWhoseTurn], a - call $3b21 + call Func_3b21 ld a, [wDuelFinished] cp DUEL_WON jr z, .activeDuelistWonBattle @@ -175,7 +175,7 @@ StartDuel: ; 409f (1:409f) ld hl, $0079 .asm_4196 - call $3b6a + call Func_3b6a ld a, c call PlaySong ld a, OPPONENT_TURN @@ -192,7 +192,7 @@ StartDuel: ; 409f (1:409f) jr z, .tiedBattle call Func_39fc call WaitForWideTextBoxInput - call $3b31 + call Func_3b31 call ResetSerial ld a, PLAYER_TURN ldh [hWhoseTurn], a @@ -200,7 +200,7 @@ StartDuel: ; 409f (1:409f) .tiedBattle call WaitForWideTextBoxInput - call $3b31 + call Func_3b31 ld a, [wDuelTheme] call PlaySong ld hl, $007a @@ -217,7 +217,7 @@ StartDuel: ; 409f (1:409f) jp $40ee .asm_41f3 - call $0f58 + call Func_0f58 ld h, PLAYER_TURN ld a, [wSerialOp] cp $29 @@ -246,7 +246,7 @@ Func_4225: ; 4225 (1:4225) .asm_4237 call $70e6 call $4933 - call $10cf + call DrawCardFromDeck jr nc, .asm_4248 ld a, DUEL_LOST ld [wDuelFinished], a @@ -254,19 +254,19 @@ Func_4225: ; 4225 (1:4225) .asm_4248 ldh [$ff98], a - call $1123 + call AddCardToHand ld a, [$cc0d] cp $00 jr z, Func_4262 call GetOpposingTurnDuelistVariable_SwapTurn - call $34e2 + call Func_34e2 call GetOpposingTurnDuelistVariable_SwapTurn call c, $4b2c jr Func_426d Func_4262: call $4b2c - call $100b + call Func_100b Func_4268: ld a, $06 @@ -283,8 +283,8 @@ Func_426d: ld [wVBlankCtr], a ld [$cbf9], a ld hl, $0088 - call $2a36 - call $2bbf + call Func_2a36 + call Func_2bbf ld a, $ff ld [$cc11], a ld [$cc10], a @@ -299,7 +299,7 @@ Func_4295: or a ret nz ld a, [wCurrentDuelMenuItem] - call $2710 + call Func_2710 Func_42ac: call DoFrame @@ -328,7 +328,7 @@ Func_42ac: ld a, [$cbe7] or a jr nz, Func_42ac - call $271a + call Func_271a ld a, e ld [wCurrentDuelMenuItem], a jr nc, Func_42ac @@ -387,7 +387,7 @@ INCBIN "baserom.gbc",$4345, $438e - $4345 OpenPokemonPowerMenu: ; 438e (1:438e) call $6431 jp c, Func_426d - call $1730 + call Func_1730 jp Func_426d PlayerEndTurn: ; 439a (1:439a) @@ -395,7 +395,7 @@ PlayerEndTurn: ; 439a (1:439a) call $51e7 jp c, Func_4268 ld a, $05 - call $0f7f + call Func_0f7f call $717a ret @@ -421,7 +421,7 @@ PlayerRetreat: ; 43ab (1:43ab) ld a, [wBenchSelectedPokemon] ldh [$ffa1], a ld a, $04 - call $0f7f + call Func_0f7f call $657a jr nc, Func_441c call $4f9d @@ -447,7 +447,7 @@ Func_43f1: ; 43f1 (1:43f1) pop af jp c, Func_426d ld a, $04 - call $0f7f + call Func_0f7f call $657a Func_441c: ; 441c (1:441c) @@ -470,7 +470,7 @@ Func_4436: ; 4436 (1:4436) INCBIN "baserom.gbc",$4436, $4585 - $4436 OpenBattleCheckMenu: ; 4585 (1:4585) - call $3b31 + call Func_3b31 call Func_3096 jp Func_426d @@ -478,7 +478,7 @@ INCBIN "baserom.gbc",$458e, $46fc - $458e OpenBattleAttackMenu: ; 46fc (1:46fc) - call $33c1 + call Func_33c1 jr c, .asm_4706 call $4918 jr nc, .asm_470c @@ -510,7 +510,7 @@ Func_471f: ; 471f (1:471f) ld h, a ld l, DUELVARS_ARENA_CARD ld a, [hl] - call $1376 + call Func_1376 .asm_4736 call DoFrame ldh a, [hButtonsPressed] @@ -537,13 +537,13 @@ Func_4759: ; 4759 (1:4759) ld d, [hl] inc hl ld e, [hl] - call $16c0 - call $33e1 + call Func_16c0 + call Func_33e1 jr c, Func_477d ld a, $07 call $51e7 jp c, Func_4268 - call $1730 + call Func_1730 jp c, Func_426d ret diff --git a/src/engine/home.asm b/src/engine/home.asm index afdea5c..be6f23a 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -2070,9 +2070,142 @@ ClearSerialData: ; 0eb1 (0:0eb1) or b jr nz, .loop ret -; 0xebf -INCBIN "baserom.gbc",$0ebf,$1072 - $0ebf +Func_0ebf: ; 0ebf (0:0ebf) + push bc +.asm_ec0 + ld a, [hli] + call Func_0e0a + ld a, [wSerialFlags] + or a + jr nz, .asm_ed2 + dec bc + ld a, c + or b + jr nz, .asm_ec0 + pop bc + or a + ret +.asm_ed2 + pop bc + scf + ret +; 0xed5 + +INCBIN "baserom.gbc",$0ed5,$0f35 - $0ed5 + +Func_0f35: ; 0f35 (0:0f35) + ld a, [wSerialFlags] + ld l, a + ld h, $0 + call Func_2ec4 + ld hl, $0055 + call DrawWideTextBox_WaitForInput + ld a, $ff + ld [$d0c3], a + ld hl, $cbe5 + ld a, [hli] + ld h, [hl] + ld l, a + ld sp, hl + xor a + call PlaySong + call ResetSerial + ret + +Func_0f58: ; 0f58 (0:0f58) + ld a, [$cc09] + cp $1 + jr z, .asm_f60 + ret +.asm_f60 + ld a, DUELVARS_DUELIST_TYPE + call GetTurnDuelistVariable + or a + jr z, .asm_f70 + ld hl, $cbe2 + ld de, wRNG1 + jr .asm_f76 +.asm_f70 + ld hl, wRNG1 + ld de, $cbe2 +.asm_f76 + ld c, $3 + call Func_0e63 + jp c, Func_0f35 + ret + +Func_0f7f: ; 0f7f (0:0f7f) + push hl + push bc + ld [$ff9e], a + ld a, $f1 + call GetOpposingTurnDuelistVariable + cp $1 + jr nz, .asm_f98 + ld hl, $ff9e + ld bc, $000a + call Func_0ebf + call Func_0f58 +.asm_f98 + pop bc + pop hl + ret +; 0xf9b + +INCBIN "baserom.gbc",$0f9b,$100b - $0f9b + +Func_100b: ; 100b (0:100b) + ld a, $2 + call BankswitchRAM + call $669d + xor a + call BankswitchRAM + call EnableExtRAM + ld hl, $a008 + ld a, [hl] + inc [hl] + call DisableExtRAM + and $3 + add $28 + ld l, $0 + ld h, a + add hl, hl + add hl, hl + ld a, $3 + call BankswitchRAM + push hl + ld a, DUELVARS_ARENA_CARD + call GetTurnDuelistVariable + call Func_1324 + ld a, e + ld [$ccc3], a + call GetOpposingTurnDuelistVariable_SwapTurn + ld a, DUELVARS_ARENA_CARD + call GetTurnDuelistVariable + call Func_1324 + ld a, e + ld [$ccc4], a + call GetOpposingTurnDuelistVariable_SwapTurn + pop hl + push hl + call EnableExtRAM + ld a, [$cc06] + ld [hli], a + ld a, [$ccc4] + ld [hli], a + ld a, [$ccc3] + ld [hli], a + pop hl + ld de, $0010 + add hl, de + ld e, l + ld d, h + call DisableExtRAM + bank1call $66a4 + xor a + call BankswitchRAM + ret ; copies the deck pointed to by de to wPlayerDeck or wOpponentDeck CopyDeckData: ; 1072 (0:1072) @@ -2241,7 +2374,55 @@ ShuffleCards: ; 127f (0:127f) ret ; 0x12a3 -INCBIN "baserom.gbc",$12a3,$160b - $12a3 +INCBIN "baserom.gbc",$12a3,$1324 - $12a3 + +Func_1324: ; 1324 (0:1324) + push af + push hl + call Func_1362 + ld e, a + ld d, $0 + pop hl + pop af + ret +; 0x132f + +INCBIN "baserom.gbc",$132f,$1362 - $132f + +Func_1362: ; 1362 (0:1362) + push de + ld e, a + ld d, $0 + ld hl, wPlayerDeck + ld a, [$ff97] + cp $c2 + jr z, .asm_1372 + ld hl, wOpponentDeck + +.asm_1372 + add hl, de + ld a, [hl] + pop de + ret + +Func_1376: ; 1376 (0:1376) + push hl + push de + push bc + push af + call Func_1324 + call LoadCardDataToRAM + pop af + ld hl, wCardBuffer1 + bank1call $6d84 + ld a, e + pop bc + pop de + pop hl + ret +; 0x138c + +INCBIN "baserom.gbc",$138c,$160b - $138c ; returns [[hWhoseTurn] << 8 + a] in a ; i.e. variable a of the player whose turn it is @@ -2266,7 +2447,151 @@ GetOpposingTurnDuelistVariable: ; 1611 (0:1611) ret ; 0x161e -INCBIN "baserom.gbc",$161e,$1c72 - $161e +INCBIN "baserom.gbc",$161e,$16c0 - $161e + +Func_16c0: ; 16c0 (0:16c0) + ld a, e + ld [$ccc6], a + ld a, d + ld [$ff9f], a + call $1376 + ld a, [$cc2b] + ld [$ccc2], a + ld hl, $cc30 + dec e + jr nz, .asm_16d9 + ld hl, $cc43 +.asm_16d9 + ld de, $cca6 + ld c, $13 +.asm_16de + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .asm_16de + ld a, [$ccb0] + ld hl, $ccb9 + ld [hli], a + xor a + ld [hl], a + ld [$ccc7], a + ld hl, $ccbf + ld [hli], a + ld [hl], a + ret +; 0x16f6 + +INCBIN "baserom.gbc",$16f6,$1730 - $16f6 + +Func_1730: ; 1730 (0:1730) + ld a, [$ccc6] + ld [$cc10], a + ld a, [$ff9f] + ld [$cc11], a + ld a, [$ccc2] + ld [$cc12], a + ld a, [$ccb1] + cp $4 + jp z, $184b + call $16f6 + ld a, $1 + call $2fd9 + jp c, $181e + call $3414 + jr c, .asm_1766 + ld a, $2 + call $2fd9 + jp c, $1821 + call $1874 + jr .asm_1777 +.asm_1766 + call $1874 + call $3400 + jp c, $1823 + ld a, $2 + call $2fd9 + jp c, $1821 +.asm_1777 + ld a, $9 + call Func_0f7f + ld a, $6 + call $2fd9 + call $18d7 + jp c, $1828 + call $1b8d + call WaitForWideTextBoxInput + call Func_0f58 + ld a, $5 + call $2fd9 + ld a, $a + call Func_0f7f + call $7415 + ld a, [$ccb1] + and $80 + jr nz, .asm_17ad + call GetOpposingTurnDuelistVariable_SwapTurn + call $3432 + call GetOpposingTurnDuelistVariable_SwapTurn +.asm_17ad + xor a + ld [$ff9d], a + ld a, $3 + call $2fd9 + call $1994 + call $189d + ld hl, $ccbf + ld [hl], e + inc hl + ld [hl], d + ld b, $0 + ld a, [$ccc1] + ld c, a + ld a, $c8 + call GetOpposingTurnDuelistVariable + push de + push hl + call $7494 + call $741a + call $7484 + pop hl + pop de + call $1a96 + ld a, [$cac2] + cp $1 + jr nz, .asm_17e8 + push hl + bank1call $503a + pop hl +.asm_17e8 + call $1ad0 + jr Func_17fb + +Func_17ed: ; 17ed (0:17ed) + call DrawWideTextBox_WaitForInput + xor a + ld hl, $ccb9 + ld [hli], a + ld [hl], a + ld a, $1 + ld [$ccc7], a +Func_17fb: ; 17fb (0:17fb) + ld a, [$ccc4] + push af + ld a, $4 + call $2fd9 + pop af + ld [$ccc4], a + call $367b + bank1call $6df1 + call $1bb4 + bank1call $7195 + call $6e49 + or a + ret +; 0x1819 + +INCBIN "baserom.gbc",$1819,$1c72 - $1819 ; returns [([hWhoseTurn] ^ $1) << 8 + a] in a ; i.e. variable a of the player whose turn it is not @@ -2744,7 +3069,27 @@ asm_2121 ret ; 0x212f -INCBIN "baserom.gbc",$212f,$21c5 - $212f +INCBIN "baserom.gbc",$212f,$2167 - $212f + +Func_2167: ; 2167 (0:2167) + ld l, a + ld h, $a0 + call HtimesL + add hl, hl + add hl, hl + ld de, $4318 + add hl, de + ld de, $8a00 + ld b, $28 + call asm_2121 + ld a, $a0 + ld hl, $010a + ld bc, $0a04 + ld de, $0504 + jp Func_1f5f +; 0x2189 + +INCBIN "baserom.gbc",$2189,$21c5 - $2189 Func_21c5: ; 21c5 (0:21c5) push de @@ -3472,7 +3817,7 @@ Func_26c0: ; 26c0 (0:26c0) pop af ret -HandleMenuInput: ; 2d61 (0:2d61) +HandleMenuInput: ; 26d1 (0:26d1) ld a, [$cd99] or a jr z, HandleTextBoxInput @@ -3487,10 +3832,10 @@ HandleTextBoxInput: ; 26da (0:26da) ret nz ld a, [wCursorTileNumber] bit 4, [hl] - jr z, drawCursor + jr z, DrawCursor EraseCursor: ; 26e9 (0:26e9) ld a, [wTileBehindCursor] -drawCursor +DrawCursor: ld c, a ld a, [wYDisplacementBetweenMenuItems] ld l, a @@ -3513,10 +3858,88 @@ drawCursor Func_270b: ; 270b (0:270b) ld a, [wCursorTileNumber] - jr drawCursor -; 0x2710 + jr DrawCursor + +Func_2710: ; 2710 (0:2710) + ld [wCurMenuItem], a + ld [$ffb1], a + xor a + ld [wCursorBlinkCounter], a + ret + +Func_271a: ; 271a (0:271a) + ld a, [$ff8f] + or a + jr z, .asm_2764 + ld b, a + ld hl, wCurMenuItem + and $c0 + jr z, .asm_272c + ld a, [hl] + xor $1 + jr .asm_2748 +.asm_272c + bit 5, b + jr z, .asm_273b + ld a, [hl] + sub $2 + jr nc, .asm_2748 + and $1 + add $4 + jr .asm_2748 +.asm_273b + bit 4, b + jr z, .asm_275d + ld a, [hl] + add $2 + cp $6 + jr c, .asm_2748 + and $1 +.asm_2748 + push af + ld a, $1 + call Func_3796 + call $2772 + pop af + ld [wCurMenuItem], a + ld [$ffb1], a + xor a + ld [wCursorBlinkCounter], a + jr .asm_2764 +.asm_275d + ld a, [$ff8f] + and $1 + jp nz, $269e +.asm_2764 + ld hl, wCursorBlinkCounter + ld a, [hl] + inc [hl] + and $f + ret nz + ld a, $f + bit 4, [hl] + jr z, .asm_2774 + ld a, $0 +.asm_2774 + ld e, a + ld a, [wCurMenuItem] + add a + ld c, a + ld b, $0 + ld hl, $278d + add hl, bc + ld b, [hl] + inc hl + ld c, [hl] + ld a, e + call Func_06c3 + ld a, [wCurMenuItem] + ld e, a + or a + ret +; 0x278d -INCBIN "baserom.gbc",$2710,$2a1a - $2710 +INCBIN "baserom.gbc",$278d,$2a1a - $278d Func_2a1a: ; 2a1a (0:2a1a) xor a @@ -3537,12 +3960,19 @@ Func_2a1a: ; 2a1a (0:2a1a) ret ; 0x2a30 -INCBIN "baserom.gbc",$2a30,$2a3e - $2a30 +INCBIN "baserom.gbc",$2a30,$2a36 - $2a30 + +Func_2a36: ; 2a36 (0:2a36) + push hl + call DrawWideTextBox + ld a, $13 + jr Func_2a44 DrawNarrowTextBox_PrintText: ; 2a3e (0:2a3e) push hl call DrawNarrowTextBox ld a, $b +Func_2a44: ; 2a44 (0:2a44) ld de, $010e call AdjustCoordinatesForWindow call Func_22a6 @@ -3738,9 +4168,61 @@ LoadOpponentDeck: ; 2b78 (0:2b78) or $80 ld [hl], a ret -; 0x2bbf -INCBIN "baserom.gbc",$2bbf,$2c08 - $2bbf +Func_2bbf: ; 2bbf (0:2bbf) + ld a, $1 + jr Func_2bdb + +Func_2bc3: ; 2bc3 (0:2bc3) + ld a, $2 + jr Func_2bdb + +Func_2bc7: ; 2bc7 (0:2bc7) + ld a, $3 + call Func_2bdb + ld [$ff9d], a + ret + +Func_2bcf: ; 2bcf (0:2bcf) + ld a, $4 + call Func_2bdb + ld [$ffa0], a + ret + +Func_2bd7: ; 2bd7 (0:2bd7) + ld a, $5 + jr Func_2bdb +Func_2bdb: ; 2bdb (0:2bdb) + ld c, a + ld a, [$ff80] + push af + ld a, $5 + call BankswitchHome + ld a, [wOpponentDeckId] + ld l, a + ld h, $0 + add hl, hl + ld de, $4000 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, c + or a + jr nz, .asm_2bfe + ld e, [hl] + inc hl + ld d, [hl] + call CopyDeckData + jr .asm_2c01 +.asm_2bfe + call JumpToFunctionInTable +.asm_2c01 + ld c, a + pop af + call BankswitchHome + ld a, c + ret Func_2c08: ; 2c08 (0:2c08) ld d, [hl] @@ -4071,7 +4553,17 @@ PrintTextBoxBorderLabel: ; 2e89 (0:2e89) jp PrintPlayerName ; 0x2ea9 -INCBIN "baserom.gbc",$2ea9,$2f10 - $2ea9 +INCBIN "baserom.gbc",$2ea9,$2ec4 - $2ea9 + +Func_2ec4: ; 2ec4 (0:2ec4) + ld a, l + ld [$ce43], a + ld a, h + ld [$ce44], a + ret +; 0x2ecd + +INCBIN "baserom.gbc",$2ecd,$2f10 - $2ecd ; load data of card with id at e to wCardBuffer1 LoadCardDataToRAM: ; 2f10 (0:2f10) @@ -4616,7 +5108,97 @@ Func_3212: ; 3212 (0:3212) ret ; 0x321d -INCBIN "baserom.gbc",$321d,$377f - $321d +INCBIN "baserom.gbc",$321d,$33c1 - $321d + +Func_33c1: ; 33c1 (0:33c1) + ld a, $e8 + call GetTurnDuelistVariable + or a + ret z + ld hl, $0100 + cp $5 + jr z, .asm_33df + ld hl, $0101 + cp $6 + jr z, .asm_33df + ld hl, $0102 + cp $b + jr z, .asm_33df + or a + ret +.asm_33df + scf + ret + +Func_33e1: ; 33e1 (0:33e1) + ld a, $e8 + call GetTurnDuelistVariable + or a + jr nz, .asm_33ea + ret +.asm_33ea + cp $4 + jr z, .asm_33f0 +.asm_33ee + or a + ret +.asm_33f0 + ld a, $f2 + call GetTurnDuelistVariable + ld a, [$ccc6] + cp [hl] + jr nz, .asm_33ee + ld hl, $0103 + scf + ret +; 0x3400 + +INCBIN "baserom.gbc",$3400,$34e2 - $3400 + +Func_34e2: ; 34e2 (0:34e2) + ld a, $27 + call $3509 + ccf + ret nc + ld a, $5c + call $3525 + ret +; 0x34ef + +INCBIN "baserom.gbc",$34ef,$35e6 - $34ef + +Func_35e6: ; 35e6 (0:35e6) + ld a, $e7 + call GetTurnDuelistVariable + ld [hl], $0 + or a + ret z + cp $19 + ret nz + ld a, $eb + call GetTurnDuelistVariable + set 0, [hl] + ret + +Func_35fa: ; 35fa (0:35fa) + ld a, $eb + call GetTurnDuelistVariable + res 1, [hl] + push hl + ld a, $e8 + call GetTurnDuelistVariable + xor a + ld [hl], a + ld a, $e7 + call GetTurnDuelistVariable + pop hl + cp $19 + ret z + res 0, [hl] + ret +; 0x3615 + +INCBIN "baserom.gbc",$3615,$377f - $3615 SetupSound_T: ; 377f (0:377f) farcall SetupSound_Ext @@ -5084,7 +5666,74 @@ Func_3aed: ; 3aed (0:3aed) jp [hl] ; 0x3b11 -INCBIN "baserom.gbc",$3b11,$3bd2 - $3b11 +INCBIN "baserom.gbc",$3b11,$3b21 - $3b11 + +Func_3b21: ; 3b21 (0:3b21) + ld a, [$ff80] + push af + ld a, $7 + call BankswitchHome + call $48bc + pop af + call BankswitchHome + ret + +Func_3b31: ; 3b31 (0:3b31) + ld a, [$ff80] + push af + ld a, $7 + call BankswitchHome + call $4b18 + jr c, .asm_3b45 + xor a + ld [wDoFrameFunction], a + ld [$cad4], a +.asm_3b45 + call Func_099c + ld a, $1 + ld [wVBlankOAMCopyToggle], a + pop af + call BankswitchHome + ret +; 0x3b52 + +INCBIN "baserom.gbc",$3b52,$3b6a - $3b52 + +Func_3b6a: ; 3b6a (0:3b6a) + ld [$d422], a + ld a, [$ff80] + push af + ld [$d4be], a + push hl + push bc + push de + ld a, $7 + call BankswitchHome + ld a, [$d422] + cp $61 + jr nc, .asm_3b90 + ld hl, $d4ad + ld a, [$d4ac] + cp [hl] + jr nz, .asm_3b90 + call $3b52 + jr nc, .asm_3b95 +.asm_3b90 + call $4a31 + jr .asm_3b9a +.asm_3b95 + call $48ef + jr .asm_3b9a +.asm_3b9a + pop de + pop bc + pop hl + pop af + call BankswitchHome + ret +; 0x3ba2 + +INCBIN "baserom.gbc",$3ba2,$3bd2 - $3ba2 ; writes from hl the pointer to the function to be called by DoFrame SetDoFrameFunction: ; 3bd2 (0:3bd2) |