diff options
author | xCrystal <rgr.crystal@gmail.com> | 2018-04-10 16:25:35 +0200 |
---|---|---|
committer | xCrystal <rgr.crystal@gmail.com> | 2018-04-10 16:25:35 +0200 |
commit | 2bbc1a63239201be8f1a7b360e81d19192093a8f (patch) | |
tree | 3970359d9ac5db26b39229911d975fff0825f772 /src/engine/bank04.asm | |
parent | 6895547b0d2c86d769b29dc8eb5f5021723fc763 (diff) |
Add leading zero to temporary bankX.asm filenames so they show up in order
Diffstat (limited to 'src/engine/bank04.asm')
-rw-r--r-- | src/engine/bank04.asm | 1542 |
1 files changed, 1542 insertions, 0 deletions
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm new file mode 100644 index 0000000..5140705 --- /dev/null +++ b/src/engine/bank04.asm @@ -0,0 +1,1542 @@ +Func_10000: ; 10000 (4:4000) + ld a, $0 + ld [wTileMapFill], a + call EmptyScreen + call LoadDuelHUDTiles + ld de, $307f + call Func_2275 + call Set_OBJ_8x8 + xor a + ldh [hSCX], a + ldh [hSCY], a + ld a, [wLCDC] + bit 7, a + jr nz, .asm_10025 + xor a + ld [rSCX], a + ld [rSCY], a + +.asm_10025 + call Func_1288c + call ZeroObjectPositions + ld a, $1 + ld [wVBlankOAMCopyToggle], a + ret + +Func_10031: ; 10031 (4:4031) + ldh a, [hBankSRAM] + push af + ld a, $1 + call BankswitchSRAM + call $4cbb + call DisableSRAM + call $4b28 + call SetFlushAllPalettes + call EnableLCD + call DoFrameIfLCDEnabled + call $4cea + call SetFlushAllPalettes + pop af + call BankswitchSRAM + call DisableSRAM + ret + +Func_10059: ; 10059 (4:4059) + INCROM $10059, $100a2 + +Func_100a2: ; 100a2 (4:40a2) + INCROM $100a2, $1029e + +Medal_1029e: ; 1029e (4:429e) + sub $8 + ld c, a + ld [wd115], a + ld a, [wd291] + push af + push bc + call PauseSong + ld a, MUSIC_STOP + call PlaySong + farcall Func_70000 + call DisableLCD + call $4000 + ld a, $fa + ld [wd114], a + call $410c + pop bc + ld a, c + add a + ld c, a + ld b, $0 + ld hl, Unknown_1030b + add hl, bc + ld a, [hli] + ld [wTxRam2], a + ld a, [hl] + ld [wTxRam2 + 1], a + call $4031 + ld a, MUSIC_MEDAL + call PlaySong + ld a, $ff + ld [wd116], a +.asm_102e2 + call DoFrameIfLCDEnabled + ld a, [wd116] + inc a + ld [wd116], a + and $f + jr nz, .asm_102e2 + call $4197 + ld a, [wd116] + cp $e0 + jr nz, .asm_102e2 + ldtx hl, WonTheMedalText + call Func_2c73 + call Func_3c96 + call ResumeSong + pop af + ld [wd291], a + ret + +Unknown_1030b: ; 1030b (4:430b) + INCROM $1030b, $1031b + +BoosterPack_1031b: ; 1031b (4:431b) + ld c, a + ld a, [wd291] + push af + push bc + call DisableLCD + call $4000 + xor a + ld [wTextBoxFrameType], a + pop bc + push bc + ld b, $0 + ld hl, $43a5 + add hl, bc + ld a, [hl] + ld c, a + add a + add a + ld c, a + ld hl, $43c2 + add hl, bc + ld a, [hli] + push hl + ld bc, $0600 + call $70ca + pop hl + ld a, [hli] + ld [wTxRam3], a + xor a + ld [wTxRam3 + 1], a + ld a, [hli] + ld [wTxRam2], a + ld a, [hl] + ld [wTxRam2 + 1], a + call $4031 + call PauseSong + ld a, MUSIC_BOOSTER_PACK + call PlaySong + pop bc + ld a, c + farcall GenerateBoosterPack + ldtx hl, ReceivedBoosterPackText + ld a, [wd117] + cp $1 + jr nz, .asm_10373 + ldtx hl, AndAnotherBoosterPackText +.asm_10373 + call Func_2c73 + call Func_3c96 + call ResumeSong + ldtx hl, CheckedCardsInBoosterPackText + call Func_2c73 + call DisableLCD + call Func_1288c + call ZeroObjectPositions + ld a, $1 + ld [wVBlankOAMCopyToggle], a + ld a, $4 + ld [wTextBoxFrameType], a + farcall $1, $7599 + farcall Func_c1a4 + call DoFrameIfLCDEnabled + pop af + ld [wd291], a + ret +; 0x103a5 + + INCROM $103a5, $103d2 + +Func_103d2: ; 103d2 (4:43d2) + INCROM $103d2, $103d3 + +Duel_Init: ; 103d3 (4:43d3) + ld a, [wd291] + push af + call DisableLCD + call $4000 + ld a, $4 + ld [wTextBoxFrameType], a + lb de, 0, 12 + lb bc, 20, 6 + call DrawRegularTextBox + ld a, [wcc19] + add a + add a + ld c, a + ld b, $0 + ld hl, $445b + add hl, bc + ld a, [hli] + ld [wTxRam2], a + ld a, [hli] + ld [wTxRam2 + 1], a + push hl + ld a, [wOpponentName] + ld [wTxRam2_b], a + ld a, [wOpponentName + 1] + ld [wTxRam2_b + 1], a + ld hl, $4451 + call $51b3 ; LoadDuelistName + pop hl + ld a, [hli] + ld [wTxRam2], a + ld c, a + ld a, [hli] + ld [wTxRam2 + 1], a + or c + jr z, .asm_10425 + ld hl, $4456 + call $51b3 ; LoadDeckName + +.asm_10425 + ld bc, $0703 + ld a, [wOpponentPortrait] + call Func_3e2a ; LoadDuelistPortrait + ld a, [wMatchStartTheme] + call PlaySong + call $4031 + call DoFrameIfLCDEnabled + lb bc, $2f, $1d ; cursor tile, tile behind cursor + lb de, 18, 17 ; x, y + call SetCursorParametersForTextBox + call WaitForButtonAorB ; wait for the user to press a or b + call Func_3c96 + call Func_10ab4 ; fade out + pop af + ld [wd291], a + ret +; 0x10451 + + INCROM $10451, $10548 + +Func_10548: ; 10548 (4:4548) + INCROM $10548, $10756 + +Func_10756: ; 10756 (4:4756) + INCROM $10756, $10a70 + +Func_10a70: ; 10a70 (4:4a70) + push hl + push bc + push de + ld b, a + ld c, $f + ld hl, wPCPacks +.asm_10a79 + ld a, [hli] + and $7f + cp b + jr z, .asm_10a97 + dec c + jr nz, .asm_10a79 + ld c, $f + ld hl, wPCPacks +.asm_10a87 + ld a, [hl] + and $7f + jr z, .asm_10a93 + inc hl + dec c + jr nz, .asm_10a87 + debug_ret + jr .asm_10a97 + +.asm_10a93 + ld a, b + or $80 + ld [hl], a + +.asm_10a97 + pop de + pop bc + pop hl + ret + +Func_10a9b: ; 10a9b (4:4a9b) + INCROM $10a9b, $10ab4 + +Func_10ab4: ; 10ab4 (4:4ab4) + INCROM $10ab4, $10af9 + +Func_10af9: ; 10af9 (4:4af9) + INCROM $10af9, $10c96 + +Func_10c96: ; 10c96 (4:4c96) + ldh a, [hBankSRAM] + push af + push bc + ld a, $1 + call BankswitchSRAM + call $4cbb + call Func_10ab4 + pop bc + ld a, c + or a + jr nz, .asm_10cb0 + call $4cea + call Func_10af9 + +.asm_10cb0 + call EnableLCD + pop af + call BankswitchSRAM + call DisableSRAM + ret +; 0x10cbb + + INCROM $10cbb, $10dba + +Func_10dba: ; 10dba (4:4dba) + ld a, $1 + farcall Func_c29b + ld a, [wd0ba] + ld hl, $4e17 + farcall Func_111e9 +.asm_10dca + call DoFrameIfLCDEnabled + call HandleMenuInput + jr nc, .asm_10dca + ld a, e + ld [wd0ba], a + ldh a, [hCurrentMenuItem] + cp e + jr z, .asm_10ddd + ld a, $4 + +.asm_10ddd + ld [wd10e], a + push af + ld hl, $4df0 + call JumpToFunctionInTable + farcall Func_c135 + call DoFrameIfLCDEnabled + pop af + ret +; 0x10df0 + + INCROM $10df0, $10e28 + +Func_10e28: ; 10e28 (4:4e28) + INCROM $10e28, $10e55 + +Func_10e55: ; 10e55 (4:4e55) + ld a, [wd336] + ld [wWhichSprite], a + ld a, [wd33e] + or a + jr nz, .asm_10e65 + call Func_10e71 + ret +.asm_10e65 + cp $2 + jr z, .asm_10e6d + call Func_11060 + ret +.asm_10e6d + call LoadOverworldMapSelection + ret + +Func_10e71: ; 10e71 (4:4e71) + ldh a, [hButtonsPressed] + and D_PAD + jr z, .asm_10e83 + farcall Func_c5d5 + ld [wd334], a + call Func_10e97 + jr .asm_10e96 +.asm_10e83 + ldh a, [hButtonsPressed] + and A_BUTTON + jr z, .asm_10e96 + ld a, $2 + call PlaySFX + call Func_11016 + call Func_11024 + jr .asm_10e96 +.asm_10e96 + ret + +Func_10e97: ; 10e97 (4:4e97) + push hl + pop hl + ld a, [wd32e] + rlca + rlca + ld c, a + ld a, [wd334] + add c + ld c, a + ld b, $0 + ld hl, Unknown_10ebc + add hl, bc + ld a, [hl] + or a + jr z, .asm_10eb9 + ld [wd32e], a + call Func_10f2e + ld a, $1 + call PlaySFX +.asm_10eb9 + pop bc + pop hl + ret + +Unknown_10ebc: ; 10ebc (4:4ebc) + INCROM $10ebc, $10efd + +Func_10efd: ; 10efd (4:4efd) + push hl + push de + rlca + ld e, a + ld d, $0 + ld hl, Unknown_10f14 + add hl, de + pop de + ld a, [hli] + add $8 + add d + ld d, a + ld a, [hl] + add $10 + add e + ld e, a + pop hl + ret + +Unknown_10f14: ; 10f14 (4:4f14) + INCROM $10f14, $10f2e + +Func_10f2e: ; 10f2e (4:4f2e) + push hl + push de + lb de, 1, 1 + call Func_22ae + call Func_10f4a + rlca + ld e, a + ld d, $0 + ld hl, Unknown_397b + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call Func_2c29 + pop de + pop hl + ret + +Func_10f4a: ; 10f4a (4:4f4a) + push bc + ld a, [wd32e] + cp $2 + jr nz, .asm_10f5f + ld c, a + ld a, $1e + farcall CheckIfEventFlagSet + or a + ld a, c + jr nz, .asm_10f5f + ld a, $d +.asm_10f5f + pop bc + ret + +LoadOverworldMapSelection: ; 10f61 (4:4f61) + push hl + push bc + ld a, [wd32e] + rlca + rlca + ld c, a + ld b, $0 + ld hl, OverworldMapIndexes + add hl, bc + ld a, [hli] + ld [wd0bb], a + ld a, [hli] + ld [wd0bc], a + ld a, [hli] + ld [wd0bd], a + ld a, $0 + ld [wd0be], a + ld hl, wd0b4 + set 4, [hl] + pop bc + pop hl + ret + +INCLUDE "data/overworld_indexes.asm" + +Func_10fbc: ; 10fbc (4:4fbc) + ld a, $25 + farcall Func_1299f + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + ld a, $80 + ld [hli], a + ld a, $10 + ld [hl], a + ld b, $34 + ld a, [wConsole] + cp CONSOLE_CGB + jr nz, .asm_10fd8 + ld b, $37 +.asm_10fd8 + ld a, b + farcall Func_12ab5 + ret + +Func_10fde: ; 10fde (4:4fde) + ld a, [wd32e] + ld [wd33d], a + xor a + ld [wd33e], a + ld a, $25 + call Func_1299f + ld a, [wWhichSprite] + ld [wd33b], a + ld b, $35 + ld a, [wConsole] + cp $2 + jr nz, .asm_10ffe + ld b, $38 +.asm_10ffe + ld a, b + ld [wd33c], a + call Func_12ab5 + ld a, $3e + farcall CheckIfEventFlagSet + or a + jr nz, .asm_11015 + ld c, SPRITE_ANIM_FIELD_0F + call GetSpriteAnimBufferProperty + set 7, [hl] +.asm_11015 + ret + +Func_11016: ; 11016 (4:5016) + ld a, [wd33b] + ld [wWhichSprite], a + ld a, [wd33c] + inc a + call Func_12ab5 + ret + +Func_11024: ; 11024 (4:5024) + ld a, $57 + call PlaySFX + ld a, [wd336] + ld [wWhichSprite], a + ld c, SPRITE_ANIM_FIELD_0F + call GetSpriteAnimBufferProperty + set 2, [hl] + ld hl, Unknown_1229f + ld a, [wd33d] + dec a + add a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wd32e] + dec a + add a + ld c, a + ld b, $0 + add hl, bc + ld a, [hli] + ld [wd33f], a + ld a, [hl] + ld [wd340], a + ld a, $1 + ld [wd33e], a + xor a + ld [wd341], a + ret + +Func_11060: ; 11060 (4:5060) + ld a, [wd336] + ld [wWhichSprite], a + ld a, [wd341] + or a + jp nz, Func_11184 + ld a, [wd33f] + ld l, a + ld a, [wd340] + ld h, a + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + and b + cp $ff + jr z, .asm_110a0 + ld a, c + or b + jr nz, .asm_11094 + ld a, [wd33d] + ld e, a + ld a, [wd32e] + cp e + jr z, .asm_110a0 + ld de, $0000 + call Func_10efd + ld b, d + ld c, e +.asm_11094 + ld a, l + ld [wd33f], a + ld a, h + ld [wd340], a + call Func_110a6 + ret +.asm_110a0 + ld a, $2 + ld [wd33e], a + ret + +Func_110a6: ; 110a6 (4:50a6) + push hl + push bc + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + pop bc + ld a, b + sub [hl] + ld [wd343], a + ld a, $0 + sbc $0 + ld [wd344], a + inc hl + ld a, c + sub [hl] + ld [wd345], a + ld a, $0 + sbc $0 + ld [wd346], a + ld a, [wd343] + ld b, a + ld a, [wd344] + bit 7, a + jr z, .asm_110d8 + ld a, [wd343] + cpl + inc a + ld b, a +.asm_110d8 + ld a, [wd345] + ld c, a + ld a, [wd346] + bit 7, a + jr z, .asm_110e9 + ld a, [wd345] + cpl + inc a + ld c, a +.asm_110e9 + ld a, b + cp c + jr c, .asm_110f2 + call Func_11102 + jr .asm_110f5 +.asm_110f2 + call Func_1113e +.asm_110f5 + xor a + ld [wd347], a + ld [wd348], a + farcall Func_c5e9 + pop hl + ret + +Func_11102: ; 11102 (4:5102) + ld a, b + ld [wd341], a + ld e, a + ld d, $0 + ld hl, wd343 + xor a + ld [hli], a + bit 7, [hl] + jr z, .asm_11115 + dec a + jr .asm_11116 +.asm_11115 + inc a +.asm_11116 + ld [hl], a + ld b, c + ld c, $0 + call DivideBCbyDE + ld a, [wd346] + bit 7, a + jr z, .asm_11127 + call Func_11179 +.asm_11127 + ld a, c + ld [wd345], a + ld a, b + ld [wd346], a + ld hl, wd344 + ld a, $1 + bit 7, [hl] + jr z, .asm_1113a + ld a, $3 +.asm_1113a + ld [wd334], a + ret + +Func_1113e: ; 1113e (4:513e) + ld a, c + ld [wd341], a + ld e, a + ld d, $0 + ld hl, wd345 + xor a + ld [hli], a + bit 7, [hl] + jr z, .asm_11151 + dec a + jr .asm_11152 +.asm_11151 + inc a +.asm_11152 + ld [hl], a + ld c, $0 + call DivideBCbyDE + ld a, [wd344] + bit 7, a + jr z, .asm_11162 + call Func_11179 +.asm_11162 + ld a, c + ld [wd343], a + ld a, b + ld [wd344], a + ld hl, wd346 + ld a, $2 + bit 7, [hl] + jr z, .asm_11175 + ld a, $0 +.asm_11175 + ld [wd334], a + ret + +Func_11179: ; 11179 (4:5179) + ld a, c + cpl + add $1 + ld c, a + ld a, b + cpl + adc $0 + ld b, a + ret + +Func_11184: ; 11184 (4:5184) + ld a, [wd347] + ld d, a + ld a, [wd348] + ld e, a + ld c, SPRITE_ANIM_COORD_X + call GetSpriteAnimBufferProperty + ld a, [wd343] + add d + ld d, a + ld a, [wd344] + adc [hl] + ld [hl], a + inc hl + ld a, [wd345] + add e + ld e, a + ld a, [wd346] + adc [hl] + ld [hl], a + ld a, d + ld [wd347], a + ld a, e + ld [wd348], a + ld hl, wd341 + dec [hl] + ret +; 0x111b3 + + INCROM $111b3, $111e9 + +Func_111e9: ; 111e9 (4:51e9) + INCROM $111e9, $1124d + +Func_1124d: ; 1124d (4:524d) + INCROM $1124d, $11320 + +Func_11320: ; 11320 (4:5320) + INCROM $11320, $11343 + +Func_11343: ; 11343 (4:5343) + INCROM $11343, $11416 + +Func_11416: ; 11416 (4:5416) + INCROM $11416, $11430 + +Func_11430: ; 11430 (4:5430) + INCROM $11430, $1157c + +Func_1157c: ; 1157c (4:557c) + ld a, c + or a + jr nz, .asm_11586 + farcall Func_c228 + jr .asm_1159f + +.asm_11586 + ld a, $2 + ld [wd0bc], a + ld a, $4 + ld [wd0bd], a + ld a, $2 + ld [wd0be], a + ld a, $1 + ld [wd0bb], a + ld a, $1 + ld [wd32e], a + +.asm_1159f + call $5238 + ret +; 0x115a3 + +Func_115a3: ; 115a3 (4:55a3) + INCROM $115a3, $1162a + +INCLUDE "data/map_scripts.asm" + +; loads a pointer into hl found on PointerTable_118f5 +Func_1184a: ; 1184a (4:584a) + ; this may have been a macro + rlca + add LOW(PointerTable_118f5) + ld l, a + ld a, HIGH(PointerTable_118f5) + adc $00 + ld h, a + ld a, [hli] + ld h, [hl] + ld l, a + ret + +Func_11857: ; 11857 (4:5857) + push hl + push bc + call Func_1184a + ld a, [hli] + ld [wd3ab], a + ld a, [hli] + ld [wd3b3], a + ld a, [hli] + ld [wd3b1], a + ld a, [hli] + push af + ld a, [hli] + ld [wd3b2], a + pop bc + ld a, [wConsole] + cp $2 + jr nz, .asm_1187a + ld a, b + ld [wd3b1], a +.asm_1187a + pop bc + pop hl + ret + +; this appears to find data about the NPC we're talking to +Func_1187d: ; 1187d (4:587d) + push hl + call Func_1184a + ld bc, $5 + add hl, bc + ld c, [hl] + inc hl + ld b, [hl] + inc hl + ld a, [hli] + ld [wd0c8], a + ld a, [hli] + ld [wd0c9], a + pop hl + ret + +Func_11893: ; 11893 (4:5893) + push hl + push bc + call Func_1184a + ld bc, $0007 + add hl, bc + ld a, [hli] + ld [wd0c8], a + ld a, [hli] + ld [wd0c9], a + pop bc + pop hl + ret + +Func_118a7: ; 118a7 (4:58a7) + push hl + push bc + call Func_1184a + ld bc, $0007 + add hl, bc + ld a, [hli] + ld [wOpponentName], a + ld a, [hli] + ld [wOpponentName + 1], a + ld a, [hli] + ld [wOpponentPortrait], a + pop bc + pop hl + ret + +Func_118bf: ; 118bf (4:58bf) + push hl + push bc + call Func_1184a + ld bc, $000a + add hl, bc + ld a, [hli] + ld [wcc19], a + ld a, [hli] + ld [wDuelTheme], a + pop bc + pop hl + ret + +Func_118d3: ; 118d3 (4:58d3) + push hl + push bc + push af + call Func_1184a + ld bc, $000c + add hl, bc + ld a, [hli] + ld [wMatchStartTheme], a + pop af + cp $2 + jr nz, .asm_118f2 + ld a, [wCurMap] + cp $20 + jr nz, .asm_118f2 + ld a, $17 + ld [wMatchStartTheme], a + +.asm_118f2 + pop bc + pop hl + ret + +INCLUDE "data/npcs.asm" + +Func_11f4e: ; 11f4e (4:5f4e) + INCROM $11f4e, $1217b + +OverworldScriptTable: ; 1217b (4:617b) + dw OWScript_EndScriptLoop1 + dw OWScript_CloseTextBox + dw OWScript_PrintTextString + dw Func_ccdc + dw OWScript_AskQuestionJump + dw OWScript_StartBattle + dw Func_cd83 + dw Func_cda8 + dw OWScript_PrintTextCloseBox + dw Func_cdcb + dw Func_ce26 + dw Func_ce84 + dw OWScript_GiveBoosterPacks + dw Func_cf0c + dw Func_cf12 + dw Func_cf3f + dw Func_cf4c + dw Func_cf53 + dw Func_cf7b + dw Func_cf2d + dw Func_cf96 + dw Func_cfc6 + dw Func_cfd4 + dw Func_d00b + dw Func_d025 + dw Func_d032 + dw Func_d03f + dw OWScript_ScriptJump + dw Func_d04f + dw Func_d055 + dw OWScript_MovePlayer + dw Func_cee2 + dw Func_d080 + dw Func_d088 + dw Func_d095 + dw Func_d0be + dw Func_d0ce + dw Func_d0d9 + dw Func_d0f2 + dw Func_ce4a + dw Func_ceba + dw Func_d103 + dw Func_d125 + dw Func_d135 + dw Func_d16b + dw Func_cd4f + dw Func_cd94 + dw Func_ce52 + dw Func_cdd8 + dw Func_cdf5 + dw Func_d195 + dw Func_d1ad + dw Func_d1b3 + dw OWScript_EndScriptCloseText + dw Func_d244 + dw Func_d24c + dw DeckMachine_d336 + dw Func_d271 + dw Func_d36d + dw Func_ce6f + dw Func_d209 + dw Func_d38f + dw Func_d396 + dw Func_cd76 + dw Func_d39d + dw Func_d3b9 + dw Func_d3c9 + dw Func_d3d1 + dw Func_d3d4 + dw Func_d3e0 + dw Func_d3fe + dw Func_d408 + dw Func_d40f + dw Func_d416 + dw Func_d423 + dw Func_d429 + dw Func_d41d + dw Func_d42f + dw Func_d435 + dw Func_cce4 + dw Func_d2f6 + dw Func_d317 + dw Func_d43d + dw OWScript_EndScriptLoop2 + dw OWScript_EndScriptLoop3 + dw OWScript_EndScriptLoop4 + dw OWScript_EndScriptLoop5 + dw OWScript_EndScriptLoop6 + dw OWScript_CustomModifyEventFlags + dw Func_d460 + dw OWScript_JumpIfFlagSet + dw Func_d484 + dw Func_d49e + dw Func_d4a6 + dw Func_d4ae + dw OWScript_SetEventFlags + dw Func_d4c3 + dw Func_d4ca + dw OWScript_JumpIfFlagNotSet + dw Func_d452 + dw OWScript_EndScriptLoop7 + dw OWScript_EndScriptLoop8 + dw OWScript_EndScriptLoop9 + dw OWScript_EndScriptLoop10 + + INCROM $1224b, $1229f + +Unknown_1229f: ; 1229f (4:629f) + INCROM $1229f, $126d1 + +; usually, the game doesn't loop here at all, since as soon as a main menu option +; is selected, there is no need to come back to the menu. +; the only exception is after returning from Card Pop! +_GameLoop: ; 126d1 (4:66d1) + call ZeroObjectPositions + ld hl, wVBlankOAMCopyToggle + inc [hl] + farcall Func_70018 + ld a, $ff + ld [wd627], a +.main_menu_loop + ld a, PLAYER_TURN + ldh [hWhoseTurn], a + farcall Func_c1f8 + farcall Func_1d078 + ld a, [wd628] + ld hl, MainMenuFunctionTable + call JumpToFunctionInTable + jr c, .main_menu_loop ; return to main menu + jr _GameLoop ; virtually restart game + +; this is never reached + scf + ret + +MainMenuFunctionTable: + dw MainMenu_CardPop + dw MainMenu_ContinueFromDiary + dw MainMenu_NewGame + dw MainMenu_ContinueDuel + +MainMenu_NewGame: ; 12704 (4:6704) + farcall Func_c1b1 + call Func_128a9 + farcall Func_1996e + call EnableSRAM + ld a, [sa007] + ld [wd421], a + ld a, [sa006] + ld [wTextSpeed], a + call DisableSRAM + ld a, MUSIC_STOP + call PlaySong + farcall Func_70000 + ld a, $9 + ld [wd111], a + call Func_39fc + farcall Func_1d306 + ld a, GAME_EVENT_OVERWORLD + ld [wGameEvent], a + farcall $03, ExecuteGameEvent + or a + ret + +MainMenu_ContinueFromDiary: ; 12741 (4:6741) + ld a, MUSIC_STOP + call PlaySong + call Func_11320 + jr nc, MainMenu_NewGame + farcall Func_c1ed + farcall Func_70000 + call EnableSRAM + xor a + ld [$ba44], a + call DisableSRAM + ld a, GAME_EVENT_OVERWORLD + ld [wGameEvent], a + farcall $03, ExecuteGameEvent + or a + ret + +MainMenu_CardPop: ; 12768 (4:6768) + ld a, MUSIC_CARD_POP + call PlaySong + bank1call Func_7571 + farcall Func_c1a4 + call DoFrameIfLCDEnabled + ld a, MUSIC_STOP + call PlaySong + scf + ret + +MainMenu_ContinueDuel: ; 1277e (4:677e) + ld a, MUSIC_STOP + call PlaySong + farcall Func_c9cb + farcall $04, Func_3a40 + farcall Func_70000 + ld a, GAME_EVENT_CONTINUE_DUEL + ld [wGameEvent], a + farcall $03, ExecuteGameEvent + or a + ret +; 0x1279a + + INCROM $1279a, $12871 + +Func_12871: ; 12871 (4:6871) + INCROM $12871, $1288c + +Func_1288c: ; 1288c (4:688c) + INCROM $1288c, $128a9 + +Func_128a9: ; 128a9 (4:68a9) + INCROM $128a9, $1296e + +Func_1296e: ; 1296e (4:696e) + INCROM $1296e, $1299f + +Func_1299f: ; 1299f (4:699f) + push af + ld a, [wd5d7] + or a + jr z, .asm_129a8 + pop af + ret +.asm_129a8 + pop af + push bc + push hl + call Func_12c05 + ld [wd5d3], a + xor a + ld [wWhichSprite], a + call Func_3db7 + ld bc, $0010 +.asm_129bb + ld a, [hl] + or a + jr z, .asm_129cf + add hl, bc + ld a, [wWhichSprite] + inc a + ld [wWhichSprite], a + cp $10 + jr nz, .asm_129bb + debug_ret + scf + jr .asm_129d6 +.asm_129cf + ld a, $1 + ld [hl], a + call Func_129d9 + or a +.asm_129d6 + pop hl + pop bc + ret + +Func_129d9: ; 129d9 (4:69d9) + push hl + push bc + push hl + inc hl + ld c, $f + xor a +.asm_129e0 + ld [hli], a + dec c + jr nz, .asm_129e0 + pop hl + ld bc, $0004 + add hl, bc + ld a, [wd5d3] + ld [hli], a + ld a, $ff + ld [hl], a + ld bc, $0009 + add hl, bc + ld a, $ff + ld [hl], a + pop bc + pop hl + ret +; 0x129fa + + INCROM $129fa, $12a21 + +Func_12a21: ; 12a21 (4:6a21) + INCROM $12a21, $12ab5 + +Func_12ab5: ; 12ab5 (4:6ab5) + push hl + push af + ld c, SPRITE_ANIM_FIELD_05 + call GetSpriteAnimBufferProperty + pop af + cp [hl] + pop hl + ret z + push hl + call Func_12ae2 + call Func_12b13 + pop hl + ret +; 0x12ac9 + + INCROM $12ac9, $12ae2 + +Func_12ae2: ; 12ae2 (4:6ae2) + push bc + push af + call Func_3db7 + pop af + push hl + ld bc, $0005 + add hl, bc + ld [hli], a + push hl + ld l, $6 + farcall Func_8020f + farcall Func_80229 + pop hl + ld a, [wd4c6] + ld [hli], a + ld a, [wd4c4] + ld [hli], a + ld c, a + ld a, [wd4c5] + ld [hli], a + ld b, a + ld a, $3 + add c + ld [hli], a + ld a, $0 + adc b + ld [hli], a + pop hl + pop bc + ret + +Func_12b13: ; 12b13 (4:6b13) + push bc + push de + push hl +.asm_12b16 + push hl + ld bc, $0006 + add hl, bc + ld a, [hli] + ld [wd4c6], a + inc hl + inc hl + ld a, [hl] + ld [wd4c4], a + add $4 + ld [hli], a + ld a, [hl] + ld [wd4c5], a + adc $0 + ld [hl], a + ld de, wd23e + ld bc, $0004 + call Func_3bf5 + pop hl + ld de, wd23e + ld a, [de] + call Func_12b6a + inc de + ld a, [de] + call Func_12b89 + jr c, .asm_12b16 + inc de + ld bc, $0002 + add hl, bc + push hl + ld bc, $000d + add hl, bc + ld b, [hl] + pop hl + ld a, [de] + bit 0, b + jr z, .asm_12b5a + cpl + inc a +.asm_12b5a + add [hl] + ld [hli], a + inc de + ld a, [de] + bit 1, b + jr z, .asm_12b64 + cpl + inc a +.asm_12b64 + add [hl] + ld [hl], a + pop hl + pop de + pop bc + ret + +Func_12b6a: ; 12b6a (4:6b6a) + ld [wd4ca], a + push hl + push bc + push de + push hl + ld bc, $0006 + add hl, bc + ld a, [hli] + ld [wd4c6], a + ld a, [hli] + ld [wd4c4], a + ld a, [hli] + ld [wd4c5], a + pop hl + call Func_3d72 + pop de + pop bc + pop hl + ret + +Func_12b89: ; 12b89 (4:6b89) + push hl + push bc + ld bc, $000e + add hl, bc + ld [hl], a + or a + jr nz, .asm_12ba4 + ld bc, $fff9 + add hl, bc + ld a, [hli] + add $3 + ld c, a + ld a, [hli] + adc $0 + ld b, a + ld a, c + ld [hli], a + ld a, b + ld [hl], a + scf +.asm_12ba4 + pop bc + pop hl + ret + +Func_12ba7: ; 12ba7 (4:6ba7) + INCROM $12ba7, $12bcd + +Func_12bcd: ; 12bcd (4:6bcd) + INCROM $12bcd, $12c05 + +Func_12c05: ; 12c05 (4:6c05) + push hl + push bc + push de + ld b, a + ld d, $0 + ld a, [wd618] + ld c, a + ld hl, wd5d8 + or a + jr z, .asm_12c22 +.asm_12c15 + inc hl + ld a, [hl] + cp b + jr z, .asm_12c3a + inc hl + ld a, [hli] + add [hl] + ld d, a + inc hl + dec c + jr nz, .asm_12c15 +.asm_12c22 + ld a, [wd618] + cp $10 + jr nc, .asm_12c48 + inc a + ld [wd618], a + inc hl + push hl + ld a, b + ld [hli], a + call Func_12c4f + push af + ld a, d + ld [hli], a + pop af + ld [hl], a + pop hl +.asm_12c3a + dec hl + inc [hl] + inc hl + inc hl + ld a, [hli] + add [hl] + cp $81 + jr nc, .asm_12c48 + ld a, d + or a + jr .asm_12c4b +.asm_12c48 + debug_ret + xor a + scf +.asm_12c4b + pop de + pop bc + pop hl + ret + +Func_12c4f: ; 12c4f (4:6c4f) + push af + xor a + ld [wd4cb], a + ld a, d + ld [wd4ca], a + pop af + farcall Func_8025b + ret + +Func_12c5e: ; 12c5e (4:6c5e) + INCROM $12c5e, $12c7f + +Func_12c7f: ; 12c7f (4:6c7f) + INCROM $12c7f, $131b3 + +Func_131b3: ; 131b3 (4:71b3) + INCROM $131b3, $131d3 + +Func_131d3: ; 131d3 (4:71d3) + INCROM $131d3, $1344d + +Func_1344d: ; 1344d (4:744d) + call PauseSong + ld a, MUSIC_MEDAL + call PlaySong + ldtx hl, DefeatedFiveOpponentsText + call Func_2c73 + call Func_3c96 + call ResumeSong + ret +; 0x13462 + + INCROM $13462, $13485 + +Func_13485: ; 13485 (4:7485) + call EnableSRAM + ld a, [$ba68] + or a + ret z + ld a, [$ba56] + ld [wTxRam3], a + ld a, [$ba57] + ld [wTxRam3 + 1], a + call DisableSRAM + call PauseSong + ld a, MUSIC_MEDAL + call PlaySong + ldtx hl, ConsecutiveWinRecordIncreasedText + call Func_2c73 + call Func_3c96 + call ResumeSong + ret +; 0x134b1 + + INCROM $134b1, $14000 |