diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-11 23:38:57 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-11 23:38:57 -0500 |
commit | 2ffcb4b49036b8bcd9a37cdc9305f7ee5567fe6c (patch) | |
tree | 0c9fe148771ade8ef1948852722b95b378cbe46f /engine/billspc.asm | |
parent | 91068077f05afbbfd6571ceadada2c03ac7c8038 (diff) |
More splits; map setup labels
Diffstat (limited to 'engine/billspc.asm')
-rwxr-xr-x | engine/billspc.asm | 2667 |
1 files changed, 2667 insertions, 0 deletions
diff --git a/engine/billspc.asm b/engine/billspc.asm new file mode 100755 index 000000000..03a7592ca --- /dev/null +++ b/engine/billspc.asm @@ -0,0 +1,2667 @@ +_DepositPKMN: ; e2391 (38:6391) + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld a, [VramState] + push af + xor a + ld [VramState], a + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + xor a + ld [hMapAnims], a + call Functione2963 + xor a + ld [wcb2e], a + call DelayFrame +.asm_e23b4 + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_e23c6 + call Functione23d5 + call DelayFrame + jr .asm_e23b4 +.asm_e23c6 + call ClearSprites + pop af + ld [hInMenu], a + pop af + ld [VramState], a + pop af + ld [Options], a + ret + +Functione23d5: ; e23d5 (38:63d5) + ld a, [wJumptableIndex] + ld hl, Jumptable_e23df + call Functione33df + jp [hl] + +Jumptable_e23df: ; e23df (38:63df) + dw Functione23e9 + dw Functione241a + dw Functione245d + dw Functione247d + dw Functione2992 + + +Functione23e9: ; e23e9 (38:63e9) + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2d30 + call Functione2a8e + ld de, PCString_ChooseaPKMN + call Functione2a6e + ld a, $5 + ld [wcb2d], a + call Functione2c2c + call PCMonInfo + ld a, $ff + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + call WaitBGMap + call Functione2e01 + call Functione298d + ret + +Functione241a: ; e241a (38:641a) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and B_BUTTON + jr nz, .asm_e2457 + ld a, [hl] + and A_BUTTON + jr nz, .asm_e2443 + call Functione29b5 + and a + ret z + call Functione2e01 + xor a + ld [hBGMapMode], a + call Functione2c2c + call PCMonInfo + ld a, $1 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + ret +.asm_e2443 + call Functione2def + and a + ret z + cp $ff + jr z, .asm_e2457 + ld a, $2 + ld [wJumptableIndex], a + ret +; e2452 (38:6452) + +.asm_e2452 + ld hl, wJumptableIndex + dec [hl] + ret + +.asm_e2457 + ld a, $4 + ld [wJumptableIndex], a + ret + +Functione245d: ; e245d (38:645d) + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ld de, PCString_WhatsUp + call Functione2a6e + ld a, $1 + ld [MenuSelection2], a + call Functione298d + ret + +Functione247d: ; e247d (38:647d) + ld hl, BillsPCDepositMenuDataHeader + call CopyMenuDataHeader + ld a, [MenuSelection2] + call Function1d4b + call InterpretMenu2 + jp c, BillsPCDepositFuncCancel + ld a, [MenuSelection2] + dec a + and $3 + ld e, a + ld d, 0 + ld hl, BillsPCDepositJumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +BillsPCDepositJumptable: ; e24a1 (38:64a1) + dw BillsPCDepositFuncDeposit ; Deposit Pokemon + dw BillsPCDepositFuncStats ; Pokemon Stats + dw BillsPCDepositFuncRelease ; Release Pokemon + dw BillsPCDepositFuncCancel ; Cancel + + +BillsPCDepositFuncDeposit: ; e24a9 (38:64a9) + call Functione2f18 + jp c, BillsPCDepositFuncCancel + call Functione307c + jr c, .no_overflow_31 + ld a, $0 + ld [wJumptableIndex], a + xor a + ld [wcb2b], a + ld [wcb2a], a + ret +.no_overflow_31 + ld de, PCString_WhatsUp + call Functione2a6e + ret + +BillsPCDepositFuncStats: ; e24c8 (38:64c8) + call LoadStandardMenuDataHeader + call Functione2f7e + call ExitMenu + call PCMonInfo + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ret + +BillsPCDepositFuncRelease: ; e24e0 (38:64e0) + call Functione2f18 + jr c, BillsPCDepositFuncCancel + call Functione2f5f + jr c, BillsPCDepositFuncCancel + ld a, [MenuSelection2] + push af + ld de, PCString_ReleasePKMN + call Functione2a6e + call LoadStandardMenuDataHeader + lb bc, 14, 11 + call PlaceYesNoBox + ld a, [MenuSelection2] + dec a + call ExitMenu + and a + jr nz, .asm_e252c + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + xor a + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + call Functione3180 + ld a, $0 + ld [wJumptableIndex], a + xor a + ld [wcb2b], a + ld [wcb2a], a + pop af + ret +.asm_e252c + ld de, PCString_WhatsUp + call Functione2a6e + pop af + ld [MenuSelection2], a + ret + +BillsPCDepositFuncCancel: ; e2537 (38:6537) + ld a, $0 + ld [wJumptableIndex], a + ret +; e253d (38:653d) + +BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d) + db $40 ; flags + db 04, 09 ; start coords + db 13, 19 ; end coords + dw BillsPCDepositMenuData + db 1 ; default option +; 0xe2545 + +BillsPCDepositMenuData: ; 0xe2545 (38:6545) + db $80 ; flags + db 4 ; items + db "DEPOSIT@" + db "STATS@" + db "RELEASE@" + db "CANCEL@" +; 0xe2564 (38:6564) + +Functione2564: ; e2564 + hlcoord 0, 0 + ld b, $4 + ld c, $8 + call ClearBox + hlcoord 0, 4 + ld b, $a + ld c, $9 + call ClearBox + hlcoord 0, 14 + ld b, $2 + ld c, $8 + call ClearBox + ret +; e2583 + +_WithdrawPKMN: ; e2583 (38:6583) + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld a, [VramState] + push af + xor a + ld [VramState], a + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + xor a + ld [hMapAnims], a + call Functione2963 + ld a, $f + ld [wcb2e], a + call DelayFrame +.asm_e25a7 + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .no_overflow_49 + call Functione25c8 + call DelayFrame + jr .asm_e25a7 +.no_overflow_49 + call ClearSprites + pop af + ld [hInMenu], a + pop af + ld [VramState], a + pop af + ld [Options], a + ret + +Functione25c8: ; e25c8 (38:65c8) + ld a, [wJumptableIndex] + ld hl, .jumptable + call Functione33df + jp [hl] + +.jumptable: ; e25d2 (38:65d2) + dw Functione25dc + dw Functione2612 + dw Functione2655 + dw BillsPC_Withdraw + dw Functione2992 + + +Functione25dc: ; e25dc (38:65dc) + ld a, $f + ld [wcb2e], a + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2d30 + call Functione2a8e + ld de, PCString_ChooseaPKMN + call Functione2a6e + ld a, $5 + ld [wcb2d], a + call Functione2c2c + call PCMonInfo + ld a, $ff + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + call WaitBGMap + call Functione2e01 + call Functione298d + ret + +Functione2612: ; e2612 (38:6612) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and B_BUTTON + jr nz, .asm_e264f + ld a, [hl] + and A_BUTTON + jr nz, .asm_e263b + call Functione29b5 + and a + ret z + call Functione2e01 + xor a + ld [hBGMapMode], a + call Functione2c2c + call PCMonInfo + ld a, $1 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + ret +.asm_e263b + call Functione2def + and a + ret z + cp $ff + jr z, .asm_e264f + ld a, $2 + ld [wJumptableIndex], a + ret +; e264a (38:664a) + +.asm_e264a + ld hl, wJumptableIndex + dec [hl] + ret + +.asm_e264f + ld a, $4 + ld [wJumptableIndex], a + ret +; e2655 + +Functione2655: ; e2655 (38:6655) + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ld de, PCString_WhatsUp + call Functione2a6e + ld a, $1 + ld [MenuSelection2], a + call Functione298d + ret + +BillsPC_Withdraw: ; e2675 (38:6675) + ld hl, .MenuDataHeader + call CopyMenuDataHeader + ld a, [MenuSelection2] + call Function1d4b + call InterpretMenu2 + jp c, .cancel + ld a, [MenuSelection2] + dec a + and 3 + ld e, a + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.jumptable: ; e2699 (38:6699) #mark + dw .withdraw ; Withdraw + dw .stats ; Stats + dw .release ; Release + dw .cancel ; Cancel + + +.withdraw: ; e26a1 (38:66a1) + call Functione2f18 + jp c, .cancel + call TryWithdrawPokemon + jr c, .FailedWithdraw + ld a, $0 + ld [wJumptableIndex], a + xor a + ld [wcb2b], a + ld [wcb2a], a + ret +.FailedWithdraw + ld de, PCString_WhatsUp + call Functione2a6e + ret + +.stats: ; e26c0 (38:66c0) + call LoadStandardMenuDataHeader + call Functione2f7e + call ExitMenu + call PCMonInfo + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ret + +.release: ; e26d8 (38:66d8) + ld a, [MenuSelection2] + push af + call Functione2f5f + jr c, .FailedRelease + ld de, PCString_ReleasePKMN + call Functione2a6e + call LoadStandardMenuDataHeader + lb bc, 14, 11 + call PlaceYesNoBox + ld a, [MenuSelection2] + dec a + call ExitMenu + and a + jr nz, .FailedRelease + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + ld a, PC_DEPOSIT + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + call Functione3180 + ld a, $0 + ld [wJumptableIndex], a + xor a + ld [wcb2b], a + ld [wcb2a], a + pop af + ret +.FailedRelease + ld de, PCString_WhatsUp + call Functione2a6e + pop af + ld [MenuSelection2], a + ret + +.cancel: ; e272b (38:672b) + ld a, $0 + ld [wJumptableIndex], a + ret +; e2731 (38:6731) + +.MenuDataHeader: ; 0xe2731 + db $40 ; flags + db 04, 09 ; start coords + db 13, 19 ; end coords + dw .MenuData + db 1 ; default option +; 0xe2739 + +.MenuData: ; 0xe2739 + db $80 ; flags + db 4 ; items + db "WITHDRAW@" + db "STATS@" + db "RELEASE@" + db "CANCEL@" +; 0xe2759 + +_MovePKMNWithoutMail: ; e2759 + ld hl, Options + ld a, [hl] + push af + set 4, [hl] + ld a, [VramState] + push af + xor a + ld [VramState], a + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + xor a + ld [hMapAnims], a + call Functione2963 + ld a, [wCurBox] + and $f + inc a + ld [wcb2e], a + call DelayFrame +.asm_e2781 + call JoyTextDelay + ld a, [wJumptableIndex] + bit 7, a + jr nz, .asm_e2793 + call Functione27a2 + call DelayFrame + jr .asm_e2781 + +.asm_e2793 + call ClearSprites + pop af + ld [hInMenu], a + pop af + ld [VramState], a + pop af + ld [Options], a + ret +; e27a2 + +Functione27a2: ; e27a2 + ld a, [wJumptableIndex] + ld hl, Jumptable_e27ac + call Functione33df + jp [hl] +; e27ac + +Jumptable_e27ac: ; e27ac + dw Functione27ba + dw Functione27eb + dw Functione283d + dw Functione285d + dw Functione28df + dw Functione2903 + dw Functione2992 +; e27ba + +Functione27ba: ; e27ba + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2d30 + ld de, PCString_ChooseaPKMN + call Functione2a6e + ld a, $5 + ld [wcb2d], a + call Functione2c2c + call Functione2a80 + call PCMonInfo + ld a, $ff + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + call WaitBGMap + call Functione2e01 + call Functione298d + ret +; e27eb + +Functione27eb: ; e27eb + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .asm_e2837 + ld a, [hl] + and A_BUTTON + jr nz, .asm_e2823 + call Functione29d0 + jr c, .asm_e2816 + and a + ret z + call Functione2e01 + xor a + ld [hBGMapMode], a + call Functione2c2c + call PCMonInfo + ld a, $1 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + ret + +.asm_e2816 + xor a + ld [wcb2b], a + ld [wcb2a], a + ld a, $0 + ld [wJumptableIndex], a + ret + +.asm_e2823 + call Functione2def + and a + ret z + cp $ff + jr z, .asm_e2837 + ld a, $2 + ld [wJumptableIndex], a + ret + + ld hl, wJumptableIndex + dec [hl] + ret + +.asm_e2837 + ld a, $6 + ld [wJumptableIndex], a + ret +; e283d + +Functione283d: ; e283d + xor a + ld [hBGMapMode], a + call ClearSprites + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ld de, PCString_WhatsUp + call Functione2a6e + ld a, $1 + ld [MenuSelection2], a + call Functione298d + ret +; e285d + +Functione285d: ; e285d + ld hl, MenuDataHeader_0xe28c3 + call CopyMenuDataHeader + ld a, [MenuSelection2] + call Function1d4b + call InterpretMenu2 + jp c, Functione28bd + ld a, [MenuSelection2] + dec a + and 3 + ld e, a + ld d, 0 + ld hl, Jumptable_e2881 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; e2881 + +Jumptable_e2881: ; e2881 + dw Functione2887 + dw Functione28a5 + dw Functione28bd +; e2887 + +Functione2887: ; e2887 + call Functione2f18 + jp c, Functione28bd + ld a, [wcb2a] + ld [wcb2f], a + ld a, [wcb2b] + ld [wcb30], a + ld a, [wcb2e] + ld [wcb31], a + ld a, $4 + ld [wJumptableIndex], a + ret +; e28a5 + +Functione28a5: ; e28a5 + call LoadStandardMenuDataHeader + call Functione2f7e + call ExitMenu + call PCMonInfo + call Functione2def + ld [CurPartySpecies], a + ld a, $17 + call Functione33d0 + ret +; e28bd + +Functione28bd: ; e28bd + ld a, $0 + ld [wJumptableIndex], a + ret +; e28c3 + +MenuDataHeader_0xe28c3: ; 0xe28c3 + db $40 ; flags + db 04, 09 ; start coords + db 13, 19 ; end coords + dw MenuData2_0xe28cb + db 1 ; default option +; 0xe28cb + +MenuData2_0xe28cb: ; 0xe28cb + db $80 ; flags + db 3 ; items + db "MOVE@" + db "STATS@" + db "CANCEL@" +; 0xe28df + +Functione28df: ; e28df + xor a + ld [hBGMapMode], a + call Functione2d30 + ld de, PCString_MoveToWhere + call Functione2a6e + ld a, $5 + ld [wcb2d], a + call Functione2c2c + call Functione2a80 + call ClearSprites + call Functione2e8c + call WaitBGMap + call Functione298d + ret +; e2903 + +Functione2903: ; e2903 + ld hl, hJoyPressed + ld a, [hl] + and B_BUTTON + jr nz, .asm_e294b + ld a, [hl] + and A_BUTTON + jr nz, .asm_e2938 + call Functione29f4 + jr c, .asm_e292b + and a + ret z + call Functione2e8c + xor a + ld [hBGMapMode], a + call Functione2c2c + ld a, $1 + ld [hBGMapMode], a + call DelayFrame + call DelayFrame + ret + +.asm_e292b + xor a + ld [wcb2b], a + ld [wcb2a], a + ld a, $4 + ld [wJumptableIndex], a + ret + +.asm_e2938 + call Functione2ee5 + jr c, .asm_e2946 + call Functione31e7 + ld a, $0 + ld [wJumptableIndex], a + ret + +.asm_e2946 + ld hl, wJumptableIndex + dec [hl] + ret + +.asm_e294b + ld a, [wcb2f] + ld [wcb2a], a + ld a, [wcb30] + ld [wcb2b], a + ld a, [wcb31] + ld [wcb2e], a + ld a, $0 + ld [wJumptableIndex], a + ret +; e2963 + +Functione2963: ; e2963 (38:6963) + call ClearBGPalettes + call ClearSprites + call ClearTileMap + call Functione33e8 + ld hl, OverworldMap + ld bc, $338 + xor a + call ByteFill + xor a + ld [wJumptableIndex], a + ld [wcf64], a + ld [wcf65], a + ld [wcf66], a + ld [wcb2b], a + ld [wcb2a], a + ret + +Functione298d: ; e298d (38:698d) + ld hl, wJumptableIndex + inc [hl] + ret + +Functione2992: ; e2992 (38:6992) + ld hl, wJumptableIndex + set 7, [hl] + ret + +Functione2998: ; e2998 (38:6998) + ld a, [wcb2d] + ld d, a + ld a, [wcb2c] + and a + jr z, .asm_e29b2 + dec a + cp $1 + jr z, .asm_e29b2 + ld e, a + ld a, [hl] + and D_UP + jr nz, Functione2a18 + ld a, [hl] + and D_DOWN + jr nz, Functione2a2c +.asm_e29b2 + jp Functione2a65 + +Functione29b5: ; e29b5 (38:69b5) + ld hl, hJoyLast + ld a, [wcb2d] + ld d, a + ld a, [wcb2c] + ld e, a + and a + jr z, .asm_e29cd + ld a, [hl] + and D_UP + jr nz, Functione2a18 + ld a, [hl] + and D_DOWN + jr nz, Functione2a2c +.asm_e29cd + jp Functione2a65 +; e29d0 (38:69d0) + +Functione29d0: ; e29d0 + ld hl, hJoyLast + ld a, [wcb2d] + ld d, a + ld a, [wcb2c] + ld e, a + and a + jr z, .asm_e29e8 + ld a, [hl] + and D_UP + jr nz, Functione2a18 + ld a, [hl] + and D_DOWN + jr nz, Functione2a2c + +.asm_e29e8 + ld a, [hl] + and D_LEFT + jr nz, Functione2a48 + ld a, [hl] + and D_RIGHT + jr nz, Functione2a56 + jr Functione2a65 + +Functione29f4: ; e29f4 + ld hl, hJoyLast + ld a, [wcb2d] + ld d, a + ld a, [wcb2c] + ld e, a + and a + jr z, .asm_e2a0c + + ld a, [hl] + and D_UP + jr nz, Functione2a18 + ld a, [hl] + and D_DOWN + jr nz, Functione2a2c + +.asm_e2a0c + ld a, [hl] + and D_LEFT + jr nz, Functione2a48 + ld a, [hl] + and D_RIGHT + jr nz, Functione2a56 + jr Functione2a65 + +Functione2a18: ; e2a18 (38:6a18) + ld hl, wcb2b + ld a, [hl] + and a + jr z, .asm_e2a22 + dec [hl] + jr Functione2a68 + +.asm_e2a22 + ld hl, wcb2a + ld a, [hl] + and a + jr z, Functione2a65 + dec [hl] + jr Functione2a68 + +Functione2a2c: ; e2a2c (38:6a2c) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + inc a + cp e + jr nc, Functione2a65 + + ld hl, wcb2b + ld a, [hl] + inc a + cp d + jr nc, .asm_e2a42 + inc [hl] + jr Functione2a68 + +.asm_e2a42 + ld hl, wcb2a + inc [hl] + jr Functione2a68 +; e2a48 (38:6a48) + +Functione2a48: ; e2a48 + ld hl, wcb2e + ld a, [hl] + and a + jr z, .asm_e2a52 + dec [hl] + jr Functione2a6c + +.asm_e2a52 + ld [hl], $e + jr Functione2a6c + +Functione2a56: ; e2a56 + ld hl, wcb2e + ld a, [hl] + cp $e + jr z, .asm_e2a61 + inc [hl] + jr Functione2a6c + +.asm_e2a61 + ld [hl], $0 + jr Functione2a6c + +Functione2a65: ; e2a65 (38:6a65) + xor a + and a + ret + +Functione2a68: ; e2a68 (38:6a68) + ld a, $1 + and a + ret +; e2a6c (38:6a6c) + +Functione2a6c: ; e2a6c + scf + ret +; e2a6e + +Functione2a6e: ; e2a6e (38:6a6e) + push de + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + pop de + hlcoord 1, 16 + call PlaceString + ret +; e2a80 (38:6a80) + +Functione2a80: ; e2a80 + call Functione2a8e + hlcoord 8, 1 + ld [hl], $5f + hlcoord 19, 1 + ld [hl], $5e + ret +; e2a8e + +Functione2a8e: ; e2a8e (38:6a8e) + hlcoord 8, 0 + lb bc, 1, 10 + call TextBox + + ld a, [wcb2e] + and a + jr z, .party + + cp NUM_BOXES + 1 + jr nz, .gotbox + + ld a, [wCurBox] + inc a +.gotbox + dec a + ld hl, wBoxNames + ld bc, BOX_NAME_LENGTH + call AddNTimes + ld e, l + ld d, h + jr .print + +.party + ld de, String_e2abd +.print + hlcoord 10, 1 + call PlaceString + ret +; e2abd (38:6abd) + +String_e2abd: + db "PARTY <PK><MN>@" +; e2ac6 + +PCMonInfo: ; e2ac6 (38:6ac6) +; Display a monster's pic and +; attributes when highlighting +; it in a PC menu. + +; Includes the neat cascading +; effect when showing the pic. + +; Example: Species, level, gender, +; whether it's holding an item. + + hlcoord 0, 0 + lb bc, 15, 8 + call ClearBox + + hlcoord 8, 14 + lb bc, 1, 3 + call ClearBox + + call Functione2def + and a + ret z + cp $ff + ret z + + ld [wd265], a + hlcoord 1, 4 + xor a + ld b, 7 +.asm_e2ae9 + ld c, 7 + push af + push hl +.asm_e2aed + ld [hli], a + add 7 + dec c + jr nz, .asm_e2aed + pop hl + ld de, 20 + add hl, de + pop af + inc a + dec b + jr nz, .asm_e2ae9 + + call Functione2b6d + ld a, [wd265] + ld [CurPartySpecies], a + ld [CurSpecies], a + ld hl, TempMonDVs + predef GetUnownLetter + call GetBaseData + ld de, VTiles2 tile $00 + predef GetFrontpic + xor a + ld [wcb32], a + ld a, [CurPartySpecies] + ld [wd265], a + + cp EGG + ret z + + call GetBasePokemonName + hlcoord 1, 14 + call PlaceString + + hlcoord 1, 12 + call PrintLevel + + ld a, $3 + ld [MonType], a + callba GetGender + jr c, .asm_e2b4f + ld a, "♂" + jr nz, .printgender + ld a, "♀" +.printgender + hlcoord 5, 12 + ld [hl], a +.asm_e2b4f + + ld a, [TempMonItem] + and a + ret z + + ld d, a + callab ItemIsMail + jr c, .mail + ld a, $5d ; item icon + jr .printitem +.mail + ld a, $1 + ld [wcb32], a + ld a, $5c ; mail icon +.printitem + hlcoord 7, 12 + ld [hl], a + ret + +Functione2b6d: ; e2b6d (38:6b6d) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld e, a + ld d, $0 + ld hl, wc801 +rept 3 + add hl, de +endr + ld a, [hl] + and a + jr z, .asm_e2bc6 + cp $f + jr z, .asm_e2bf5 + ld b, a + call Functione3396 + ld a, b + call GetSRAMBank + push hl + ld bc, $35 + add hl, bc + ld bc, $20 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonLevel], a + pop hl + push hl + ld bc, $17 + add hl, bc + ld bc, $20 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonItem], a + pop hl + ld bc, $2b + add hl, bc + ld bc, $20 + ld a, e + call AddNTimes + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + call CloseSRAM + ret +.asm_e2bc6 + ld hl, PartyMon1Level + ld bc, $30 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonLevel], a + ld hl, PartyMon1Item + ld bc, $30 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonItem], a + ld hl, PartyMon1DVs + ld bc, $30 + ld a, e + call AddNTimes + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + ret + +.asm_e2bf5 + ld a, BANK(sBox) + call GetSRAMBank + ld hl, sBoxMon1Level + ld bc, $20 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonLevel], a + + ld hl, sBoxMon1Item + ld bc, $20 + ld a, e + call AddNTimes + ld a, [hl] + ld [TempMonItem], a + + ld hl, sBoxMon1DVs + ld bc, $20 + ld a, e + call AddNTimes + ld de, TempMonDVs + ld a, [hli] + ld [de], a + inc de + ld a, [hl] + ld [de], a + + call CloseSRAM + ret + +Functione2c2c: ; e2c2c (38:6c2c) + hlcoord 8, 2 + lb bc, 10, 10 + call TextBox + + hlcoord 8, 2 + ld [hl], "└" + hlcoord 19, 2 + ld [hl], "┘" + + ld a, [wcb2a] + ld e, a + ld d, 0 + ld hl, OverworldMap +rept 3 + add hl, de +endr + ld e, l + ld d, h + hlcoord 9, 4 + ld a, [wcb2d] +.asm_e2c53 + push af + push de + push hl + call Functione2c6e + pop hl + ld de, $28 + add hl, de + pop de +rept 3 + inc de +endr + pop af + dec a + jr nz, .asm_e2c53 + ret +; e2c67 (38:6c67) + +String_e2c67: + db "CANCEL@" +; e2c6e + +Functione2c6e: ; e2c6e (38:6c6e) + ld a, [de] + and a + ret z + cp $ff + jr nz, .asm_e2c7c + ld de, String_e2c67 + call PlaceString + ret +.asm_e2c7c + inc de + ld a, [de] + ld b, a + inc de + ld a, [de] + ld e, a + ld a, b + and a + jr z, .asm_e2cc8 + cp $f + jr z, .asm_e2cf1 + push hl + call Functione3396 + ld a, b + call GetSRAMBank + push hl + ld bc, $16 + add hl, bc + ld bc, $20 + ld a, e + call AddNTimes + ld a, [hl] + pop hl + and a + jr z, .asm_e2cc2 + ld bc, $372 + add hl, bc + ld bc, $b + ld a, e + call AddNTimes + ld de, StringBuffer1 + ld bc, $b + call CopyBytes + call CloseSRAM + pop hl + ld de, StringBuffer1 + call PlaceString + ret +.asm_e2cc2 + call CloseSRAM + pop hl + jr .asm_e2d23 +.asm_e2cc8 + push hl + ld hl, PartySpecies + ld d, $0 + add hl, de + ld a, [hl] + and a + jr z, .asm_e2cee + ld hl, PartyMonNicknames + ld bc, $b + ld a, e + call AddNTimes + ld de, StringBuffer1 + ld bc, $b + call CopyBytes + pop hl + ld de, StringBuffer1 + call PlaceString + ret +.asm_e2cee + pop hl + jr .asm_e2d23 +.asm_e2cf1 + push hl + ld a, BANK(sBox) + call GetSRAMBank + ld hl, sBoxSpecies + ld d, $0 + add hl, de + ld a, [hl] + and a + jr z, .asm_e2d1f + ld hl, sBoxMonNicknames + ld bc, PKMN_NAME_LENGTH + ld a, e + call AddNTimes + ld de, StringBuffer1 + ld bc, PKMN_NAME_LENGTH + call CopyBytes + call CloseSRAM + pop hl + ld de, StringBuffer1 + call PlaceString + ret +.asm_e2d1f + call CloseSRAM + pop hl +.asm_e2d23 + ld de, String_e2d2a + call PlaceString + ret +; e2d2a (38:6d2a) + +String_e2d2a: + db "-----@" +; e2d30 + +Functione2d30: ; e2d30 (38:6d30) + xor a + ld hl, OverworldMap + ld bc, $5a + call ByteFill + ld de, OverworldMap + xor a + ld [wd003], a + ld [wd004], a + ld a, [wcb2e] + and a + jr z, .asm_e2d87 + cp $f + jr z, .asm_e2db7 + ld b, a + call Functione3396 + ld a, b + call GetSRAMBank + inc hl +.asm_e2d57 + ld a, [hl] + cp $ff + jr z, .asm_e2d79 + and a + jr z, .asm_e2d79 + ld [de], a + inc de + ld a, [wcb2e] + ld [de], a + inc de + ld a, [wd003] + ld [de], a + inc a + ld [wd003], a + inc de + inc hl + ld a, [wd004] + inc a + ld [wd004], a + jr .asm_e2d57 +.asm_e2d79 + call CloseSRAM + ld a, $ff + ld [de], a + ld a, [wd004] + inc a + ld [wcb2c], a + ret +.asm_e2d87 + ld hl, PartySpecies +.asm_e2d8a + ld a, [hl] + cp $ff + jr z, .asm_e2dac + and a + jr z, .asm_e2dac + ld [de], a + inc de + ld a, [wcb2e] + ld [de], a + inc de + ld a, [wd003] + ld [de], a + inc a + ld [wd003], a + inc de + inc hl + ld a, [wd004] + inc a + ld [wd004], a + jr .asm_e2d8a +.asm_e2dac + ld a, $ff + ld [de], a + ld a, [wd004] + inc a + ld [wcb2c], a + ret +.asm_e2db7 + ld a, BANK(sBox) + call GetSRAMBank + ld hl, sBoxSpecies +.asm_e2dbf + ld a, [hl] + cp $ff + jr z, .asm_e2de1 + and a + jr z, .asm_e2de1 + ld [de], a + inc de + ld a, [wcb2e] + ld [de], a + inc de + ld a, [wd003] + ld [de], a + inc a + ld [wd003], a + inc de + inc hl + ld a, [wd004] + inc a + ld [wd004], a + jr .asm_e2dbf +.asm_e2de1 + call CloseSRAM + ld a, $ff + ld [de], a + ld a, [wd004] + inc a + ld [wcb2c], a + ret + +Functione2def: ; e2def (38:6def) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld e, a + ld d, $0 + ld hl, OverworldMap +rept 3 + add hl, de +endr + ld a, [hl] + ret + +Functione2e01: ; e2e01 (38:6e01) + ld a, [wcb2c] + and a + jr nz, .asm_e2e0b + call ClearSprites + ret +.asm_e2e0b + ld hl, Unknown_e2e2b + ld de, Sprites +.done1 + ld a, [hl] + cp $ff + ret z + ld a, [wcb2b] + and $7 + swap a + add [hl] + inc hl + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + jr .done1 +; e2e2b (38:6e2b) + +Unknown_e2e2b: ; e2e2b + db $26, $50, $00, $00 + db $26, $58, $00, $00 + db $26, $60, $00, $00 + db $26, $68, $00, $00 + db $26, $70, $00, $00 + db $26, $78, $00, $00 + db $26, $80, $00, $00 + db $26, $88, $00, $00 + db $26, $90, $00, $00 + db $26, $97, $00, $00 + db $39, $50, $00, $40 + db $39, $58, $00, $40 + db $39, $60, $00, $40 + db $39, $68, $00, $40 + db $39, $70, $00, $40 + db $39, $78, $00, $40 + db $39, $80, $00, $40 + db $39, $88, $00, $40 + db $39, $90, $00, $40 + db $39, $97, $00, $40 + db $2e, $4e, $01, $00 + db $31, $4e, $01, $40 + db $2e, $99, $01, $20 + db $31, $99, $01, $60 + db $ff +; e2e8c + +Functione2e8c: ; e2e8c + ld hl, Unknown_e2eac + ld de, Sprites +.asm_e2e92 + ld a, [hl] + cp $ff + ret z + ld a, [wcb2b] + and $7 + swap a + add [hl] + inc hl + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + jr .asm_e2e92 +; e2eac + +Unknown_e2eac: ; e2eac + db $27, $50, $06, $00 + db $2b, $58, $00, $40 + db $2b, $60, $00, $40 + db $2b, $68, $00, $40 + db $2b, $70, $00, $40 + db $2b, $78, $00, $40 + db $2b, $80, $00, $40 + db $2b, $88, $00, $40 + db $2b, $90, $00, $40 + db $27, $98, $07, $00 + db $ff +; e2ed5 + +Functione2ed5: ; e2ed5 +.asm_e2ed5 + push bc + push hl +.asm_e2ed7 + ld [hli], a + dec c + jr nz, .asm_e2ed7 + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .asm_e2ed5 + ret +; e2ee5 + +Functione2ee5: ; e2ee5 + ld hl, wcb2e + ld a, [wcb31] + cp [hl] + jr z, .asm_e2f00 + ld a, [wcb2e] + and a + jr z, .asm_e2ef8 + ld e, $15 + jr .asm_e2efa + +.asm_e2ef8 + ld e, $7 + +.asm_e2efa + ld a, [wcb2c] + cp e + jr nc, .asm_e2f02 + +.asm_e2f00 + and a + ret + +.asm_e2f02 + ld de, PCString_TheresNoRoom + call Functione2a6e + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + scf + ret +; e2f18 + +Functione2f18: ; e2f18 (38:6f18) + ld a, [wcb2e] + and a + jr nz, .Okay + ld a, [wcb2c] + cp $3 + jr c, .ItsYourLastPokemon + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + callba CheckCurPartyMonFainted + jr c, .AllOthersFainted + ld a, [wcb32] + and a + jr nz, .HasMail +.Okay + and a + ret +.HasMail + ld de, PCString_RemoveMail + jr .NotOkay +.AllOthersFainted + ld de, PCString_NoMoreUsablePKMN + jr .NotOkay +.ItsYourLastPokemon + ld de, PCString_ItsYourLastPKMN +.NotOkay + call Functione2a6e + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + scf + ret + +Functione2f5f: ; e2f5f (38:6f5f) + ld a, [CurPartySpecies] + cp EGG + jr z, .asm_e2f68 + and a + ret +.asm_e2f68 + ld de, PCString_NoReleasingEGGS + call Functione2a6e + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + scf + ret + +Functione2f7e: ; e2f7e (38:6f7e) + call LowVolume + call Functione2fd6 + ld a, $3 + ld [MonType], a + predef StatsScreenInit + call Functione33e8 + call MaxVolume + ret + +Functione2f95: ; e2f95 (38:6f95) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT + ld [wcf73], a + jr nz, .pressed_a_b_right_left + ld a, [hl] + and D_DOWN | D_UP + ld [wcf73], a + jr nz, .pressed_down_up + jr .pressed_a_b_right_left + +.pressed_down_up + call Functione2998 + and a + jr z, .asm_e2fd1 + call Functione2def + ld [wd265], a + call Functione2b6d + ld a, [wd265] + ld [CurPartySpecies], a + ld [CurSpecies], a + ld hl, TempMonDVs + predef GetUnownLetter + call GetBaseData + call Functione2fd6 +.pressed_a_b_right_left + ret + +.asm_e2fd1 + xor a + ld [wcf73], a + ret + +Functione2fd6: ; e2fd6 (38:6fd6) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + ld a, [wcb2e] + and a + jr z, .asm_e3020 + cp $f + jr nz, .asm_e3048 + ld a, BANK(sBox) + call GetSRAMBank + ld hl, sBoxSpecies + call Functione3357 + ld hl, sBoxMonNicknames + call Functione3363 + ld hl, sBoxMonOT + call Functione3376 + ld hl, sBoxMons + ld bc, BOXMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld de, wd018_Mon + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + call CloseSRAM + callba Function5088b + ret + +.asm_e3020 + ld hl, PartySpecies + call Functione3357 + ld hl, PartyMonNicknames + call Functione3363 + ld hl, PartyMonOT + call Functione3376 + ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species) + ld bc, PARTYMON_STRUCT_LENGTH + ld a, [CurPartyMon] + call AddNTimes + ld de, wd018_Mon + ld bc, PARTYMON_STRUCT_LENGTH + call CopyBytes + ret + +.asm_e3048 + ld b, a + call Functione3396 + ld a, b + call GetSRAMBank + push hl + inc hl + call Functione3357 + pop hl + push hl + ld bc, $372 + add hl, bc + call Functione3363 + pop hl + push hl + ld bc, $296 + add hl, bc + call Functione3376 + pop hl + ld bc, $16 + add hl, bc + ld bc, $20 + call Functione3389 + call CloseSRAM + callba Function5088b + ret + +Functione307c: ; e307c (38:707c) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + ld hl, PartyMonNicknames + ld a, [CurPartyMon] + call GetNick + ld a, PC_DEPOSIT + ld [wPokemonWithdrawDepositParameter], a + predef SentGetPkmnIntoFromBox + jr c, .asm_boxisfull + xor a + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + ld a, [CurPartySpecies] + call PlayCry + hlcoord 0, 0 + lb bc, 15, 8 + call ClearBox + hlcoord 8, 14 + lb bc, 1, 3 + call ClearBox + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + call WaitBGMap + hlcoord 1, 16 + ld de, PCString_Stored + call PlaceString + ld l, c + ld h, b + ld de, StringBuffer1 + call PlaceString + ld a, "!" + ld [bc], a + ld c, 50 + call DelayFrames + and a + ret + +.asm_boxisfull + ld de, PCString_BoxFull + call Functione2a6e + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + scf + ret + +TryWithdrawPokemon: ; e30fa (38:70fa) + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + ld a, BANK(sBoxMonNicknames) + call GetSRAMBank + ld a, [CurPartyMon] + ld hl, sBoxMonNicknames + call GetNick + call CloseSRAM + xor a + ld [wPokemonWithdrawDepositParameter], a + predef SentGetPkmnIntoFromBox + jr c, .PartyFull + ld a, PC_DEPOSIT + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + ld a, [CurPartySpecies] + call PlayCry + hlcoord 0, 0 + lb bc, 15, 8 + call ClearBox + hlcoord 8, 14 + lb bc, 1, 3 + call ClearBox + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + call WaitBGMap + hlcoord 1, 16 + ld de, PCString_Got + call PlaceString + ld l, c + ld h, b + ld de, StringBuffer1 + call PlaceString + ld a, $e7 + ld [bc], a + ld c, 50 + call DelayFrames + and a + ret + +.PartyFull + ld de, PCString_PartyFull + call Functione2a6e + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + scf + ret + + +Functione3180: ; e3180 (38:7180) + hlcoord 0, 0 + lb bc, 15, 8 + call ClearBox + hlcoord 8, 14 + lb bc, 1, 3 + call ClearBox + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + + call WaitBGMap + ld a, [CurPartySpecies] + call GetCryIndex + jr c, .asm_e31ab + ld e, c + ld d, b + call PlayCryHeader +.asm_e31ab + + ld a, [CurPartySpecies] + ld [wd265], a + call GetPokemonName + hlcoord 1, 16 + ld de, PCString_ReleasedPKMN + call PlaceString + ld c, 80 + call DelayFrames + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + hlcoord 1, 16 + ld de, PCString_Bye + call PlaceString + ld l, c + ld h, b + inc hl + ld de, StringBuffer1 + call PlaceString + ld l, c + ld h, b + ld [hl], $e7 + ld c, 50 + call DelayFrames + ret +; e31e7 (38:71e7) + +Functione31e7: ; e31e7 + push hl + push de + push bc + push af + hlcoord 0, 15 + lb bc, 1, 18 + call TextBox + hlcoord 1, 16 + ld de, String_e3233 + call PlaceString + ld c, 20 + call DelayFrames + pop af + pop bc + pop de + pop hl + ld a, [wCurBox] + push af + ld bc, 0 + ld a, [wcb31] + and a + jr nz, .asm_e3215 + set 0, c + +.asm_e3215 + ld a, [wcb2e] + and a + jr nz, .asm_e321d + set 1, c + +.asm_e321d + ld hl, Jumptable_e3245 +rept 2 + add hl, bc +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld de, Functione322a + push de + jp [hl] +; e322a + +Functione322a: ; e322a + pop af + ld e, a + callba Function14ad5 + ret +; e3233 + +String_e3233: + db "Saving… Leave ON!@" +; e3245 + +Jumptable_e3245: ; e3245 + dw Functione324d + dw Functione3267 + dw Functione327d + dw Functione3284 +; e324d + +Functione324d: ; e324d + ld hl, wcb31 + ld a, [wcb2e] + cp [hl] + jr z, .asm_e325d + call Functione32b0 + call Functione32fa + ret + +.asm_e325d + call Functione32b0 + call Functione328e + call Functione32fa + ret +; e3267 + +Functione3267: ; e3267 + call Functione3316 + ld a, $1 + ld [wc2cd], a + callba SaveGameData + xor a + ld [wc2cd], a + call Functione32fa + ret +; e327d + +Functione327d: ; e327d + call Functione32b0 + call Functione3346 + ret +; e3284 + +Functione3284: ; e3284 + call Functione3316 + call Functione328e + call Functione3346 + ret +; e328e + +Functione328e: ; e328e + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld e, a + ld a, [wcb30] + ld hl, wcb2f + add [hl] + cp e + ret nc + ld hl, wcb2b + ld a, [hl] + and a + jr z, .asm_e32a8 + dec [hl] + ret + +.asm_e32a8 + ld hl, wcb2a + ld a, [hl] + and a + ret z + dec [hl] + ret +; e32b0 + +Functione32b0: ; e32b0 + ld a, [wcb31] + dec a + ld e, a + callba Function14ac2 + ld a, [wcb30] + ld hl, wcb2f + add [hl] + ld [CurPartyMon], a + ld a, $1 + call GetSRAMBank + ld hl, sBoxSpecies + call Functione3357 + ld hl, sBoxMonNicknames + call Functione3363 + ld hl, sBoxMonOT + call Functione3376 + ld hl, sBoxMons + ld bc, BOXMON_STRUCT_LENGTH + call Functione3389 + call CloseSRAM + callba Function5088b + ld a, PC_DEPOSIT + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + ret +; e32fa + +Functione32fa: ; e32fa + ld a, [wcb2e] + dec a + ld e, a + callba Function14ac2 + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + callba Function51322 + ret +; e3316 + +Functione3316: ; e3316 + ld a, [wcb30] + ld hl, wcb2f + add [hl] + ld [CurPartyMon], a + ld hl, PartySpecies + call Functione3357 + ld hl, PartyMonNicknames + call Functione3363 + ld hl, PartyMonOT + call Functione3376 + ld hl, PartyMon1Species + ld bc, PARTYMON_STRUCT_LENGTH + call Functione3389 + xor a + ld [wPokemonWithdrawDepositParameter], a + callba Functione039 + ret +; e3346 + +Functione3346: ; e3346 + ld a, [wcb2b] + ld hl, wcb2a + add [hl] + ld [CurPartyMon], a + callba Function5138b + ret +; e3357 + +Functione3357: ; e3357 (38:7357) + ld a, [CurPartyMon] + ld c, a + ld b, $0 + add hl, bc + ld a, [hl] + ld [CurPartySpecies], a + ret + +Functione3363: ; e3363 (38:7363) + ld bc, $b + ld a, [CurPartyMon] + call AddNTimes + ld de, wd002 + ld bc, $b + call CopyBytes + ret + +Functione3376: ; e3376 (38:7376) + ld bc, $b + ld a, [CurPartyMon] + call AddNTimes + ld de, wd00d + ld bc, $b + call CopyBytes + ret + +Functione3389: ; e3389 (38:7389) + ld a, [CurPartyMon] + call AddNTimes + ld de, wd018 + call CopyBytes + ret + +Functione3396: ; e3396 (38:7396) + dec b + ld c, b + ld b, 0 + ld hl, Unknown_e33a6 +rept 3 + add hl, bc +endr + ld a, [hli] + ld b, a + ld a, [hli] + ld h, [hl] + ld l, a + ret +; e33a6 (38:73a6) + +Unknown_e33a6: ; e33a6 + ; bank, address + dba sBox1 + dba sBox2 + dba sBox3 + dba sBox4 + dba sBox5 + dba sBox6 + dba sBox7 + dba sBox8 + dba sBox9 + dba sBox10 + dba sBox11 + dba sBox12 + dba sBox13 + dba sBox14 +; e33d0 + +Functione33d0: ; e33d0 (38:73d0) + ld b, a + call GetSGBLayout + ld a, $e4 + call DmgToCgbBGPals + ld a, $fc + call Functioncf8 + ret + +Functione33df: ; e33df (38:73df) + ld e, a + ld d, $0 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ret + +Functione33e8: ; e33e8 (38:73e8) + call DisableLCD + ld hl, VTiles2 tile $00 + ld bc, $310 + xor a + call ByteFill + call LoadStandardFont + call LoadFontsBattleExtra + ld hl, PCMailGFX + ld de, VTiles2 tile $5c + ld bc, $40 + call CopyBytes + ld hl, PCSelectLZ + ld de, VTiles0 tile $00 + call Decompress + ld a, 6 + call SkipMusic + call EnableLCD + ret +; e3419 (38:7419) + +PCSelectLZ: INCBIN "gfx/pc.2bpp.lz" +PCMailGFX: INCBIN "gfx/pc_mail.2bpp" +; e34dd + +PCString_ChooseaPKMN: db "Choose a <PK><MN>.@" +PCString_WhatsUp: db "What's up?@" +PCString_ReleasePKMN: db "Release <PK><MN>?@" +PCString_MoveToWhere: db "Move to where?@" +PCString_ItsYourLastPKMN: db "It's your last <PK><MN>!@" +PCString_TheresNoRoom: db "There's no room!@" +PCString_NoMoreUsablePKMN: db "No more usable <PK><MN>!@" +PCString_RemoveMail: db "Remove MAIL.@" +PCString_ReleasedPKMN: db "Released <PK><MN>.@" +PCString_Bye: db "Bye,@" +PCString_Stored: db "Stored @" +PCString_Got: db "Got @" +PCString_Non: db "Non.@" +PCString_BoxFull: db "The BOX is full.@" +PCString_PartyFull: db "The party's full!@" +PCString_NoReleasingEGGS: db "No releasing EGGS!@" +; e35aa + + +_ChangeBox: ; e35aa (38:75aa) + call LoadStandardMenuDataHeader + call Functione35e2 +.loop + xor a + ld [hBGMapMode], a + call Functione36cf + call Functione379c + ld hl, _ChangeBox_menudataheader + call CopyMenuDataHeader + xor a + ld [wd0e4], a + hlcoord 0, 4 + lb bc, 8, 9 + call TextBox + call HandleScrollingMenu + ld a, [wcf73] + cp $2 + jr z, .done + call Functione37af + call Functione36f9 + jr .loop +.done + call WriteBackup + ret + +Functione35e2: ; e35e2 (38:75e2) + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill + ret +; e35f1 (38:75f1) + +_ChangeBox_menudataheader: ; 0xe35f1 + db $40 ; flags + db 05, 01 ; start coords + db 12, 09 ; end coords + dw .menudata2 + db 1 ; default option +; 0xe35f9 + +.menudata2: ; 0xe35f9 + db $22 ; flags + db 4, 0 + db 1 + dba .boxes + dba .boxnames + dba NULL + dba Functione3632 +; e3609 + +.boxes: ; e3609 + db NUM_BOXES +x = 1 +rept NUM_BOXES + db x +x = x + 1 +endr + db -1 +; e3619 + +.boxnames: ; e3619 + push de + ld a, [MenuSelection] + dec a + call GetBoxName + pop hl + call PlaceString + ret +; e3626 + +GetBoxName: ; e3626 (38:7626) + ld bc, BOX_NAME_LENGTH + ld hl, wBoxNames + call AddNTimes + ld d, h + ld e, l + ret +; e3632 (38:7632) + +Functione3632: ; e3632 + hlcoord 11, 7 + lb bc, 5, 7 + call TextBox + ld a, [MenuSelection] + cp -1 + ret z + hlcoord 12, 9 + ld de, String_e3663 + call PlaceString + call GetBoxCount + ld [wd265], a + hlcoord 13, 11 + ld de, wd265 + lb bc, 1, 2 + call PrintNum + ld de, String_e3668 + call PlaceString + ret +; e3663 + +String_e3663: ; e3663 + db "#MON@" +; e3668 + +String_e3668: ; e3668 + ; db "/20@" + db "/" + db "0" + MONS_PER_BOX / 10 ; "2" + db "0" + MONS_PER_BOX % 10 ; "0" + db "@" +; e366c + +GetBoxCount: ; e366c (38:766c) + ld a, [wCurBox] + ld c, a + ld a, [MenuSelection] + dec a + cp c + jr z, .activebox + ld c, a + ld b, 0 + ld hl, .boxbanks +rept 3 + add hl, bc +endr + ld a, [hli] + ld b, a + call GetSRAMBank + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hl] + call CloseSRAM + ld c, a + ld a, [wSavedAtLeastOnce] + and a + jr z, .newfile + ld a, c + ret + +.newfile + xor a + ret + +.activebox + ld a, BANK(sBoxCount) + ld b, a + call GetSRAMBank + ld hl, sBoxCount + ld a, [hl] + call CloseSRAM + ret +; e36a5 (38:76a5) + +.boxbanks: ; e36a5 + dba sBox1 + dba sBox2 + dba sBox3 + dba sBox4 + dba sBox5 + dba sBox6 + dba sBox7 + dba sBox8 + dba sBox9 + dba sBox10 + dba sBox11 + dba sBox12 + dba sBox13 + dba sBox14 +; e36cf + +Functione36cf: ; e36cf (38:76cf) + hlcoord 0, 0 + ld b, 2 + ld c, 18 + call TextBox + hlcoord 1, 2 + ld de, String_e36f1 + call PlaceString + ld a, [wCurBox] + and $f + call GetBoxName + hlcoord 11, 2 + call PlaceString + ret +; e36f1 (38:76f1) + +String_e36f1: ; e36f1 + db "CURRENT@" +; e36f9 + +Functione36f9: ; e36f9 (38:76f9) + ld hl, MenuDataHeader_0xe377b + call LoadMenuDataHeader + call InterpretMenu2 + call ExitMenu + ret c + ld a, [MenuSelection2] + cp $1 + jr z, .asm_e3734 + cp $2 + jr z, .asm_e3745 + cp $3 + jr z, .asm_e3717 + and a + ret + +.asm_e3717 + call GetBoxCount + and a + jr z, .asm_e372f + ld e, l + ld d, h + ld a, [MenuSelection] + dec a + ld c, a + callba Function844bc + call Functione35e2 + and a + ret + +.asm_e372f + call Functione37be + and a + ret + +.asm_e3734 + ld a, [MenuSelection] + dec a + ld e, a + ld a, [wCurBox] + cp e + ret z + callba Function14a83 + ret + +.asm_e3745 + ld b, $4 + ld de, wd002 + callba NamingScreen + call ClearTileMap + call LoadStandardFont + call LoadFontsBattleExtra + ld a, [MenuSelection] + dec a + call GetBoxName + ld e, l + ld d, h + ld hl, wd002 + ld c, $8 + call InitString + ld a, [MenuSelection] + dec a + call GetBoxName + ld de, wd002 + call CopyName2 + ret +; e3778 (38:7778) + + hlcoord 11, 7 ; XXX + +MenuDataHeader_0xe377b: ; 0xe377b + db $40 ; flags + db 04, 11 ; start coords + db 13, 19 ; end coords + dw MenuData2_0xe3783 + db 1 ; default option +; 0xe3783 + +MenuData2_0xe3783: ; 0xe3783 + db $80 ; flags + db 4 ; items + db "SWITCH@" + db "NAME@" + db "PRINT@" + db "QUIT@" +; 0xe379c + +Functione379c: ; e379c (38:779c) + ld de, String_e37a1 + jr Functione37e3 +; e37a1 (38:77a1) + +String_e37a1: ; e37a1 + db "Choose a BOX.@" +; e37af + +Functione37af: ; e37af (38:77af) + ld de, String_e37b4 + jr Functione37e3 +; e37b4 (38:77b4) + +String_e37b4: ; e37b4 + db "What's up?@" +; e37be + +Functione37be: ; e37be (38:77be) + ld de, String_e37d3 + call Functione37e3 + ld de, SFX_WRONG + call WaitPlaySFX + call WaitSFX + ld c, 50 + call DelayFrames + ret +; e37d3 (38:77d3) + +String_e37d3: ; e37d3 + db "There's no #MON.@" +; e37e3 + +Functione37e3: ; e37e3 (38:77e3) + push de + hlcoord 0, 14 + lb bc, 2, 18 + call TextBox + pop de + hlcoord 1, 16 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret |