summaryrefslogtreecommitdiff
path: root/engine/billspc.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/billspc.asm')
-rwxr-xr-xengine/billspc.asm2667
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