pokecrystal-board/engine/billspc.asm
2015-11-23 16:04:53 -05:00

2680 lines
38 KiB
NASM
Executable File

_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 GetBoxPointer
ld a, b
call GetSRAMBank
push hl
ld bc, sBoxMon1Level - sBox
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonLevel], a
pop hl
push hl
ld bc, sBoxMon1Item - sBox
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonItem], a
pop hl
ld bc, sBoxMon1DVs - sBox
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
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, PARTYMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonLevel], a
ld hl, PartyMon1Item
ld bc, PARTYMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonItem], a
ld hl, PartyMon1DVs
ld bc, PARTYMON_STRUCT_LENGTH
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, BOXMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonLevel], a
ld hl, sBoxMon1Item
ld bc, BOXMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
ld [TempMonItem], a
ld hl, sBoxMon1DVs
ld bc, BOXMON_STRUCT_LENGTH
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 GetBoxPointer
ld a, b
call GetSRAMBank
push hl
ld bc, sBoxMons - sBox
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
ld a, e
call AddNTimes
ld a, [hl]
pop hl
and a
jr z, .asm_e2cc2
ld bc, sBoxMonNicknames - sBox
add hl, bc
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_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, PKMN_NAME_LENGTH
ld a, e
call AddNTimes
ld de, StringBuffer1
ld bc, PKMN_NAME_LENGTH
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 GetBoxPointer
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
.loop
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 .loop
; 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 CopySpeciesToTemp
ld hl, sBoxMonNicknames
call CopyNicknameToTemp
ld hl, sBoxMonOT
call CopyOTNameToTemp
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 CopySpeciesToTemp
ld hl, PartyMonNicknames
call CopyNicknameToTemp
ld hl, PartyMonOT
call CopyOTNameToTemp
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 GetBoxPointer
ld a, b
call GetSRAMBank
push hl
inc hl
call CopySpeciesToTemp
pop hl
push hl
ld bc, sBoxMonNicknames - sBox
add hl, bc
call CopyNicknameToTemp
pop hl
push hl
ld bc, sBoxMonOT - sBox
add hl, bc
call CopyOTNameToTemp
pop hl
ld bc, sBoxMons - sBox
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
call CopyMonToTemp
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 MovePkmnWOMail_SaveGame
ld a, [wcb30]
ld hl, wcb2f
add [hl]
ld [CurPartyMon], a
ld a, $1
call GetSRAMBank
ld hl, sBoxSpecies
call CopySpeciesToTemp
ld hl, sBoxMonNicknames
call CopyNicknameToTemp
ld hl, sBoxMonOT
call CopyOTNameToTemp
ld hl, sBoxMons
ld bc, BOXMON_STRUCT_LENGTH
call CopyMonToTemp
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 MovePkmnWOMail_SaveGame
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 CopySpeciesToTemp
ld hl, PartyMonNicknames
call CopyNicknameToTemp
ld hl, PartyMonOT
call CopyOTNameToTemp
ld hl, PartyMon1Species
ld bc, PARTYMON_STRUCT_LENGTH
call CopyMonToTemp
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
CopySpeciesToTemp: ; e3357 (38:7357)
ld a, [CurPartyMon]
ld c, a
ld b, $0
add hl, bc
ld a, [hl]
ld [CurPartySpecies], a
ret
CopyNicknameToTemp: ; e3363 (38:7363)
ld bc, PKMN_NAME_LENGTH
ld a, [CurPartyMon]
call AddNTimes
ld de, wd002
ld bc, PKMN_NAME_LENGTH
call CopyBytes
ret
CopyOTNameToTemp: ; e3376 (38:7376)
ld bc, NAME_LENGTH
ld a, [CurPartyMon]
call AddNTimes
ld de, wd00d
ld bc, NAME_LENGTH
call CopyBytes
ret
CopyMonToTemp: ; e3389 (38:7389)
ld a, [CurPartyMon]
call AddNTimes
ld de, wd018_Mon
call CopyBytes
ret
GetBoxPointer: ; e3396 (38:7396)
dec b
ld c, b
ld b, 0
ld hl, .boxes
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)
.boxes: ; 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 [wMenuScrollPosition], 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
call LoadMenuDataHeader
call InterpretMenu2
call ExitMenu
ret c
ld a, [MenuSelection2]
cp $1
jr z, .Switch
cp $2
jr z, .Name
cp $3
jr z, .Print
and a
ret
.Print
call GetBoxCount
and a
jr z, .EmptyBox
ld e, l
ld d, h
ld a, [MenuSelection]
dec a
ld c, a
callba PrintPCBox
call Functione35e2
and a
ret
.EmptyBox
call Functione37be
and a
ret
.Switch
ld a, [MenuSelection]
dec a
ld e, a
ld a, [wCurBox]
cp e
ret z
callba ChangeBoxSaveGame
ret
.Name
ld b, $4 ; box
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
db $40 ; flags
db 04, 11 ; start coords
db 13, 19 ; end coords
dw .MenuData2
db 1 ; default option
; 0xe3783
.MenuData2: ; 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