mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
e6ea1889fb
The former is arguably misleading (as you don’t access the memory location in hl to retrieve the jump location), and is consequently deprecated in newer versions of rgbds. This fix silences these deprecation warnings.
2632 lines
41 KiB
NASM
Executable File
2632 lines
41 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 BillsPC_InitRAM
|
|
xor a
|
|
ld [wBillsPC_LoadedBox], a
|
|
call DelayFrame
|
|
.loop
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .done
|
|
call .RunJumptable
|
|
call DelayFrame
|
|
jr .loop
|
|
.done
|
|
call ClearSprites
|
|
pop af
|
|
ld [hInMenu], a
|
|
pop af
|
|
ld [VramState], a
|
|
pop af
|
|
ld [Options], a
|
|
ret
|
|
|
|
.RunJumptable: ; e23d5 (38:63d5)
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call BillsPC_Jumptable
|
|
jp hl
|
|
|
|
.Jumptable: ; e23df (38:63df)
|
|
|
|
dw .Init
|
|
dw .HandleJoypad
|
|
dw .WhatsUp
|
|
dw .Submenu
|
|
dw BillsPC_EndJumptableLoop
|
|
|
|
|
|
.Init: ; e23e9 (38:63e9)
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call CopyBoxmonSpecies
|
|
call BillsPC_BoxName
|
|
ld de, PCString_ChooseaPKMN
|
|
call BillsPC_PlaceString
|
|
ld a, $5
|
|
ld [wBillsPC_NumMonsOnScreen], a
|
|
call BillsPC_RefreshTextboxes
|
|
call PCMonInfo
|
|
ld a, $ff
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
call WaitBGMap
|
|
call BillsPC_UpdateSelectionCursor
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
|
|
.HandleJoypad: ; e241a (38:641a)
|
|
ld hl, hJoyPressed ; $ffa7
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button
|
|
call Withdraw_UpDown
|
|
and a
|
|
ret z
|
|
call BillsPC_UpdateSelectionCursor
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call BillsPC_RefreshTextboxes
|
|
call PCMonInfo
|
|
ld a, $1
|
|
ld [hBGMapMode], a
|
|
call DelayFrame
|
|
call DelayFrame
|
|
ret
|
|
|
|
.a_button
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
and a
|
|
ret z
|
|
cp -1
|
|
jr z, .b_button
|
|
ld a, $2
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e2452 (38:6452)
|
|
|
|
.go_back
|
|
ld hl, wJumptableIndex
|
|
dec [hl]
|
|
ret
|
|
|
|
.b_button
|
|
ld a, $4
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.WhatsUp: ; e245d (38:645d)
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
ld a, $1
|
|
ld [wMenuCursorY], a
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
|
|
.Submenu: ; e247d (38:647d)
|
|
ld hl, BillsPCDepositMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wMenuCursorY]
|
|
call StoreTo_wMenuCursorBuffer
|
|
call VerticalMenu
|
|
jp c, BillsPCDepositFuncCancel
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
and $3
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, BillsPCDepositJumptable
|
|
add hl, de
|
|
add hl, de
|
|
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 BillsPC_CheckMail_PreventBlackout
|
|
jp c, BillsPCDepositFuncCancel
|
|
call DepositPokemon
|
|
jr c, .box_full
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ret
|
|
|
|
.box_full
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
ret
|
|
|
|
BillsPCDepositFuncStats: ; e24c8 (38:64c8)
|
|
call LoadStandardMenuDataHeader
|
|
call BillsPC_StatsScreen
|
|
call ExitMenu
|
|
call PCMonInfo
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ret
|
|
|
|
BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
|
|
call BillsPC_CheckMail_PreventBlackout
|
|
jr c, BillsPCDepositFuncCancel
|
|
call BillsPC_IsMonAnEgg
|
|
jr c, BillsPCDepositFuncCancel
|
|
ld a, [wMenuCursorY]
|
|
push af
|
|
ld de, PCString_ReleasePKMN
|
|
call BillsPC_PlaceString
|
|
call LoadStandardMenuDataHeader
|
|
lb bc, 14, 11
|
|
call PlaceYesNoBox
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
call ExitMenu
|
|
and a
|
|
jr nz, .failed_release
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
xor a
|
|
ld [wPokemonWithdrawDepositParameter], a
|
|
callba RemoveMonFromPartyOrBox
|
|
call ReleasePKMN_ByePKMN
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
pop af
|
|
ret
|
|
|
|
.failed_release
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
pop af
|
|
ld [wMenuCursorY], 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 .MenuData2
|
|
db 1 ; default option
|
|
; 0xe2545
|
|
|
|
.MenuData2: ; 0xe2545 (38:6545)
|
|
db $80 ; flags
|
|
db 4 ; items
|
|
db "DEPOSIT@"
|
|
db "STATS@"
|
|
db "RELEASE@"
|
|
db "CANCEL@"
|
|
; 0xe2564 (38:6564)
|
|
|
|
BillsPC_ClearThreeBoxes: ; e2564
|
|
; unreferenced
|
|
hlcoord 0, 0
|
|
ld b, 4
|
|
ld c, 8
|
|
call ClearBox
|
|
hlcoord 0, 4
|
|
ld b, 10
|
|
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 BillsPC_InitRAM
|
|
ld a, NUM_BOXES + 1
|
|
ld [wBillsPC_LoadedBox], a
|
|
call DelayFrame
|
|
.loop
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .done
|
|
call .RunJumptable
|
|
call DelayFrame
|
|
jr .loop
|
|
.done
|
|
call ClearSprites
|
|
pop af
|
|
ld [hInMenu], a
|
|
pop af
|
|
ld [VramState], a
|
|
pop af
|
|
ld [Options], a
|
|
ret
|
|
|
|
.RunJumptable: ; e25c8 (38:65c8)
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call BillsPC_Jumptable
|
|
jp hl
|
|
|
|
.Jumptable: ; e25d2 (38:65d2)
|
|
|
|
dw .Init
|
|
dw .Joypad
|
|
dw .PrepSubmenu
|
|
dw BillsPC_Withdraw
|
|
dw BillsPC_EndJumptableLoop
|
|
|
|
|
|
.Init: ; e25dc (38:65dc)
|
|
ld a, NUM_BOXES + 1
|
|
ld [wBillsPC_LoadedBox], a
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call CopyBoxmonSpecies
|
|
call BillsPC_BoxName
|
|
ld de, PCString_ChooseaPKMN
|
|
call BillsPC_PlaceString
|
|
ld a, $5
|
|
ld [wBillsPC_NumMonsOnScreen], a
|
|
call BillsPC_RefreshTextboxes
|
|
call PCMonInfo
|
|
ld a, $ff
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
call WaitBGMap
|
|
call BillsPC_UpdateSelectionCursor
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
|
|
.Joypad: ; e2612 (38:6612)
|
|
ld hl, hJoyPressed ; $ffa7
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button
|
|
call Withdraw_UpDown
|
|
and a
|
|
ret z
|
|
call BillsPC_UpdateSelectionCursor
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call BillsPC_RefreshTextboxes
|
|
call PCMonInfo
|
|
ld a, $1
|
|
ld [hBGMapMode], a
|
|
call DelayFrame
|
|
call DelayFrame
|
|
ret
|
|
.a_button
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
and a
|
|
ret z
|
|
cp -1
|
|
jr z, .b_button
|
|
ld a, $2
|
|
ld [wJumptableIndex], a
|
|
ret ; e264a (38:664a)
|
|
|
|
.unused
|
|
ld hl, wJumptableIndex
|
|
dec [hl]
|
|
ret
|
|
|
|
.b_button
|
|
ld a, $4
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e2655
|
|
|
|
.PrepSubmenu: ; e2655 (38:6655)
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
ld a, $1
|
|
ld [wMenuCursorY], a
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
|
|
BillsPC_Withdraw: ; e2675 (38:6675)
|
|
ld hl, .MenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wMenuCursorY]
|
|
call StoreTo_wMenuCursorBuffer
|
|
call VerticalMenu
|
|
jp c, .cancel
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
and 3
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .dw
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
.dw ; e2699 (38:6699) #mark
|
|
dw .withdraw ; Withdraw
|
|
dw .stats ; Stats
|
|
dw .release ; Release
|
|
dw .cancel ; Cancel
|
|
|
|
|
|
.withdraw ; e26a1 (38:66a1)
|
|
call BillsPC_CheckMail_PreventBlackout
|
|
jp c, .cancel
|
|
call TryWithdrawPokemon
|
|
jr c, .FailedWithdraw
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ret
|
|
.FailedWithdraw:
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
ret
|
|
|
|
.stats ; e26c0 (38:66c0)
|
|
call LoadStandardMenuDataHeader
|
|
call BillsPC_StatsScreen
|
|
call ExitMenu
|
|
call PCMonInfo
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ret
|
|
|
|
.release ; e26d8 (38:66d8)
|
|
ld a, [wMenuCursorY]
|
|
push af
|
|
call BillsPC_IsMonAnEgg
|
|
jr c, .FailedRelease
|
|
ld de, PCString_ReleasePKMN
|
|
call BillsPC_PlaceString
|
|
call LoadStandardMenuDataHeader
|
|
lb bc, 14, 11
|
|
call PlaceYesNoBox
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
call ExitMenu
|
|
and a
|
|
jr nz, .FailedRelease
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
ld a, PC_DEPOSIT
|
|
ld [wPokemonWithdrawDepositParameter], a
|
|
callba RemoveMonFromPartyOrBox
|
|
call ReleasePKMN_ByePKMN
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
pop af
|
|
ret
|
|
.FailedRelease:
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
pop af
|
|
ld [wMenuCursorY], 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 BillsPC_InitRAM
|
|
ld a, [wCurBox]
|
|
and $f
|
|
inc a
|
|
ld [wBillsPC_LoadedBox], a
|
|
call DelayFrame
|
|
.asm_e2781
|
|
call JoyTextDelay
|
|
ld a, [wJumptableIndex]
|
|
bit 7, a
|
|
jr nz, .asm_e2793
|
|
call .RunJumptable
|
|
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
|
|
|
|
.RunJumptable: ; e27a2
|
|
ld a, [wJumptableIndex]
|
|
ld hl, .Jumptable
|
|
call BillsPC_Jumptable
|
|
jp hl
|
|
; e27ac
|
|
|
|
.Jumptable: ; e27ac
|
|
|
|
dw .Init
|
|
dw .Joypad
|
|
dw .PrepSubmenu
|
|
dw .MoveMonWOMailSubmenu
|
|
dw .PrepInsertCursor
|
|
dw .Joypad2
|
|
dw BillsPC_EndJumptableLoop
|
|
; e27ba
|
|
|
|
.Init: ; e27ba
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call CopyBoxmonSpecies
|
|
ld de, PCString_ChooseaPKMN
|
|
call BillsPC_PlaceString
|
|
ld a, 5
|
|
ld [wBillsPC_NumMonsOnScreen], a
|
|
call BillsPC_RefreshTextboxes
|
|
call BillsPC_MoveMonWOMail_BoxNameAndArrows
|
|
call PCMonInfo
|
|
ld a, $ff
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
call WaitBGMap
|
|
call BillsPC_UpdateSelectionCursor
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
; e27eb
|
|
|
|
.Joypad: ; e27eb
|
|
ld hl, hJoyPressed
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button
|
|
call MovePkmnWithoutMail_DPad
|
|
jr c, .d_pad
|
|
and a
|
|
ret z
|
|
call BillsPC_UpdateSelectionCursor
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call BillsPC_RefreshTextboxes
|
|
call PCMonInfo
|
|
ld a, $1
|
|
ld [hBGMapMode], a
|
|
call DelayFrame
|
|
call DelayFrame
|
|
ret
|
|
|
|
.d_pad
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.a_button
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
and a
|
|
ret z
|
|
cp -1
|
|
jr z, .b_button
|
|
ld a, $2
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.unused
|
|
ld hl, wJumptableIndex
|
|
dec [hl]
|
|
ret
|
|
|
|
.b_button
|
|
ld a, $6
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e283d
|
|
|
|
.PrepSubmenu: ; e283d
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call ClearSprites
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ld de, PCString_WhatsUp
|
|
call BillsPC_PlaceString
|
|
ld a, $1
|
|
ld [wMenuCursorY], a
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
; e285d
|
|
|
|
.MoveMonWOMailSubmenu: ; e285d
|
|
ld hl, .MenuDataHeader
|
|
call CopyMenuDataHeader
|
|
ld a, [wMenuCursorY]
|
|
call StoreTo_wMenuCursorBuffer
|
|
call VerticalMenu
|
|
jp c, .Cancel
|
|
ld a, [wMenuCursorY]
|
|
dec a
|
|
and 3
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, .Jumptable2
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
; e2881
|
|
|
|
.Jumptable2: ; e2881
|
|
dw .Move
|
|
dw .Stats
|
|
dw .Cancel
|
|
; e2887
|
|
|
|
.Move: ; e2887
|
|
call BillsPC_CheckMail_PreventBlackout
|
|
jp c, .Cancel
|
|
ld a, [wBillsPC_ScrollPosition]
|
|
ld [wBillsPC_BackupScrollPosition], a
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld [wBillsPC_BackupCursorPosition], a
|
|
ld a, [wBillsPC_LoadedBox]
|
|
ld [wBillsPC_BackupLoadedBox], a
|
|
ld a, $4
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e28a5
|
|
|
|
.Stats: ; e28a5
|
|
call LoadStandardMenuDataHeader
|
|
call BillsPC_StatsScreen
|
|
call ExitMenu
|
|
call PCMonInfo
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [CurPartySpecies], a
|
|
ld a, SCGB_BILLS_PC
|
|
call BillsPC_ApplyPalettes
|
|
ret
|
|
; e28bd
|
|
|
|
.Cancel: ; e28bd
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e28c3
|
|
|
|
.MenuDataHeader: ; 0xe28c3
|
|
db $40 ; flags
|
|
db 04, 09 ; start coords
|
|
db 13, 19 ; end coords
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0xe28cb
|
|
|
|
.MenuData2: ; 0xe28cb
|
|
db $80 ; flags
|
|
db 3 ; items
|
|
db "MOVE@"
|
|
db "STATS@"
|
|
db "CANCEL@"
|
|
; 0xe28df
|
|
|
|
.PrepInsertCursor: ; e28df
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call CopyBoxmonSpecies
|
|
ld de, PCString_MoveToWhere
|
|
call BillsPC_PlaceString
|
|
ld a, $5
|
|
ld [wBillsPC_NumMonsOnScreen], a
|
|
call BillsPC_RefreshTextboxes
|
|
call BillsPC_MoveMonWOMail_BoxNameAndArrows
|
|
call ClearSprites
|
|
call BillsPC_UpdateInsertCursor
|
|
call WaitBGMap
|
|
call BillsPC_IncrementJumptableIndex
|
|
ret
|
|
; e2903
|
|
|
|
.Joypad2: ; e2903
|
|
ld hl, hJoyPressed
|
|
ld a, [hl]
|
|
and B_BUTTON
|
|
jr nz, .b_button_2
|
|
ld a, [hl]
|
|
and A_BUTTON
|
|
jr nz, .a_button_2
|
|
call MovePkmnWithoutMail_DPad_2
|
|
jr c, .dpad_2
|
|
and a
|
|
ret z
|
|
call BillsPC_UpdateInsertCursor
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call BillsPC_RefreshTextboxes
|
|
ld a, $1
|
|
ld [hBGMapMode], a
|
|
call DelayFrame
|
|
call DelayFrame
|
|
ret
|
|
|
|
.dpad_2
|
|
xor a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ld a, $4
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.a_button_2
|
|
call BillsPC_CheckSpaceInDestination
|
|
jr c, .no_space
|
|
call MovePKMNWitoutMail_InsertMon
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
|
|
.no_space
|
|
ld hl, wJumptableIndex
|
|
dec [hl]
|
|
ret
|
|
|
|
.b_button_2
|
|
ld a, [wBillsPC_BackupScrollPosition]
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ld a, [wBillsPC_BackupCursorPosition]
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld a, [wBillsPC_BackupLoadedBox]
|
|
ld [wBillsPC_LoadedBox], a
|
|
ld a, $0
|
|
ld [wJumptableIndex], a
|
|
ret
|
|
; e2963
|
|
|
|
BillsPC_InitRAM: ; e2963 (38:6963)
|
|
call ClearBGPalettes
|
|
call ClearSprites
|
|
call ClearTileMap
|
|
call BillsPC_InitGFX
|
|
ld hl, wBillsPCPokemonList
|
|
ld bc, $338
|
|
xor a
|
|
call ByteFill
|
|
xor a
|
|
ld [wJumptableIndex], a
|
|
ld [wcf64], a
|
|
ld [wcf65], a
|
|
ld [wcf66], a
|
|
ld [wBillsPC_CursorPosition], a
|
|
ld [wBillsPC_ScrollPosition], a
|
|
ret
|
|
|
|
BillsPC_IncrementJumptableIndex: ; e298d (38:698d)
|
|
ld hl, wJumptableIndex
|
|
inc [hl]
|
|
ret
|
|
|
|
BillsPC_EndJumptableLoop: ; e2992 (38:6992)
|
|
ld hl, wJumptableIndex
|
|
set 7, [hl]
|
|
ret
|
|
|
|
_StatsScreenDPad: ; e2998 (38:6998)
|
|
ld a, [wBillsPC_NumMonsOnScreen]
|
|
ld d, a
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
and a
|
|
jr z, .empty
|
|
dec a
|
|
cp $1
|
|
jr z, .empty
|
|
ld e, a
|
|
ld a, [hl]
|
|
and D_UP
|
|
jr nz, BillsPC_PressUp
|
|
ld a, [hl]
|
|
and D_DOWN
|
|
jr nz, BillsPC_PressDown
|
|
.empty
|
|
jp BillsPC_JoypadDidNothing
|
|
|
|
Withdraw_UpDown: ; e29b5 (38:69b5)
|
|
ld hl, hJoyLast
|
|
ld a, [wBillsPC_NumMonsOnScreen]
|
|
ld d, a
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
ld e, a
|
|
and a
|
|
jr z, .empty
|
|
ld a, [hl]
|
|
and D_UP
|
|
jr nz, BillsPC_PressUp
|
|
ld a, [hl]
|
|
and D_DOWN
|
|
jr nz, BillsPC_PressDown
|
|
.empty
|
|
jp BillsPC_JoypadDidNothing
|
|
; e29d0 (38:69d0)
|
|
|
|
MovePkmnWithoutMail_DPad: ; e29d0
|
|
ld hl, hJoyLast
|
|
ld a, [wBillsPC_NumMonsOnScreen]
|
|
ld d, a
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
ld e, a
|
|
and a
|
|
jr z, .check_left_right
|
|
ld a, [hl]
|
|
and D_UP
|
|
jr nz, BillsPC_PressUp
|
|
ld a, [hl]
|
|
and D_DOWN
|
|
jr nz, BillsPC_PressDown
|
|
|
|
.check_left_right
|
|
ld a, [hl]
|
|
and D_LEFT
|
|
jr nz, BillsPC_PressLeft
|
|
ld a, [hl]
|
|
and D_RIGHT
|
|
jr nz, BillsPC_PressRight
|
|
jr BillsPC_JoypadDidNothing
|
|
|
|
MovePkmnWithoutMail_DPad_2: ; e29f4
|
|
ld hl, hJoyLast
|
|
ld a, [wBillsPC_NumMonsOnScreen]
|
|
ld d, a
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
ld e, a
|
|
and a
|
|
jr z, .check_left_right
|
|
|
|
ld a, [hl]
|
|
and D_UP
|
|
jr nz, BillsPC_PressUp
|
|
ld a, [hl]
|
|
and D_DOWN
|
|
jr nz, BillsPC_PressDown
|
|
|
|
.check_left_right
|
|
ld a, [hl]
|
|
and D_LEFT
|
|
jr nz, BillsPC_PressLeft
|
|
ld a, [hl]
|
|
and D_RIGHT
|
|
jr nz, BillsPC_PressRight
|
|
jr BillsPC_JoypadDidNothing
|
|
|
|
BillsPC_PressUp: ; e2a18 (38:6a18)
|
|
ld hl, wBillsPC_CursorPosition
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .top
|
|
dec [hl]
|
|
jr BillsPC_UpDownDidSomething
|
|
|
|
.top
|
|
ld hl, wBillsPC_ScrollPosition
|
|
ld a, [hl]
|
|
and a
|
|
jr z, BillsPC_JoypadDidNothing
|
|
dec [hl]
|
|
jr BillsPC_UpDownDidSomething
|
|
|
|
BillsPC_PressDown: ; e2a2c (38:6a2c)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
inc a
|
|
cp e
|
|
jr nc, BillsPC_JoypadDidNothing
|
|
|
|
ld hl, wBillsPC_CursorPosition
|
|
ld a, [hl]
|
|
inc a
|
|
cp d
|
|
jr nc, .not_bottom
|
|
inc [hl]
|
|
jr BillsPC_UpDownDidSomething
|
|
|
|
.not_bottom
|
|
ld hl, wBillsPC_ScrollPosition
|
|
inc [hl]
|
|
jr BillsPC_UpDownDidSomething
|
|
; e2a48 (38:6a48)
|
|
|
|
BillsPC_PressLeft: ; e2a48
|
|
ld hl, wBillsPC_LoadedBox
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .wrap_around
|
|
dec [hl]
|
|
jr BillsPC_LeftRightDidSomething
|
|
|
|
.wrap_around
|
|
ld [hl], NUM_BOXES
|
|
jr BillsPC_LeftRightDidSomething
|
|
|
|
BillsPC_PressRight: ; e2a56
|
|
ld hl, wBillsPC_LoadedBox
|
|
ld a, [hl]
|
|
cp NUM_BOXES
|
|
jr z, .wrap_around
|
|
inc [hl]
|
|
jr BillsPC_LeftRightDidSomething
|
|
|
|
.wrap_around
|
|
ld [hl], 0
|
|
jr BillsPC_LeftRightDidSomething
|
|
|
|
BillsPC_JoypadDidNothing: ; e2a65 (38:6a65)
|
|
xor a
|
|
and a
|
|
ret
|
|
|
|
BillsPC_UpDownDidSomething: ; e2a68 (38:6a68)
|
|
ld a, TRUE
|
|
and a
|
|
ret
|
|
; e2a6c (38:6a6c)
|
|
|
|
BillsPC_LeftRightDidSomething: ; e2a6c
|
|
scf
|
|
ret
|
|
; e2a6e
|
|
|
|
BillsPC_PlaceString: ; 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)
|
|
|
|
BillsPC_MoveMonWOMail_BoxNameAndArrows: ; e2a80
|
|
call BillsPC_BoxName
|
|
hlcoord 8, 1
|
|
ld [hl], $5f
|
|
hlcoord 19, 1
|
|
ld [hl], $5e
|
|
ret
|
|
; e2a8e
|
|
|
|
BillsPC_BoxName: ; e2a8e (38:6a8e)
|
|
hlcoord 8, 0
|
|
lb bc, 1, 10
|
|
call TextBox
|
|
|
|
ld a, [wBillsPC_LoadedBox]
|
|
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, .PartyPKMN
|
|
.print
|
|
hlcoord 10, 1
|
|
call PlaceString
|
|
ret
|
|
; e2abd (38:6abd)
|
|
|
|
.PartyPKMN:
|
|
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 BillsPC_GetSelectedPokemonSpecies
|
|
and a
|
|
ret z
|
|
cp -1
|
|
ret z
|
|
|
|
ld [wd265], a
|
|
hlcoord 1, 4
|
|
xor a
|
|
ld b, 7
|
|
.row
|
|
ld c, 7
|
|
push af
|
|
push hl
|
|
.col
|
|
ld [hli], a
|
|
add 7
|
|
dec c
|
|
jr nz, .col
|
|
pop hl
|
|
ld de, SCREEN_WIDTH
|
|
add hl, de
|
|
pop af
|
|
inc a
|
|
dec b
|
|
jr nz, .row
|
|
|
|
call BillsPC_LoadMonStats
|
|
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 [wBillsPC_MonHasMail], 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, .skip_gender
|
|
ld a, "♂"
|
|
jr nz, .printgender
|
|
ld a, "♀"
|
|
.printgender
|
|
hlcoord 5, 12
|
|
ld [hl], a
|
|
.skip_gender
|
|
|
|
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 [wBillsPC_MonHasMail], a
|
|
ld a, $5c ; mail icon
|
|
.printitem
|
|
hlcoord 7, 12
|
|
ld [hl], a
|
|
ret
|
|
|
|
BillsPC_LoadMonStats: ; e2b6d (38:6b6d)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wBillsPCPokemonList + 1 ; box number
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .party
|
|
cp NUM_BOXES + 1
|
|
jr z, .sBox
|
|
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
|
|
|
|
.party
|
|
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
|
|
|
|
.sBox
|
|
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
|
|
|
|
BillsPC_RefreshTextboxes: ; e2c2c (38:6c2c)
|
|
hlcoord 8, 2
|
|
lb bc, 10, 10
|
|
call TextBox
|
|
|
|
hlcoord 8, 2
|
|
ld [hl], "└"
|
|
hlcoord 19, 2
|
|
ld [hl], "┘"
|
|
|
|
ld a, [wBillsPC_ScrollPosition]
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, wBillsPCPokemonList
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld e, l
|
|
ld d, h
|
|
hlcoord 9, 4
|
|
ld a, [wBillsPC_NumMonsOnScreen]
|
|
.loop
|
|
push af
|
|
push de
|
|
push hl
|
|
call .PlaceNickname
|
|
pop hl
|
|
ld de, 2 * SCREEN_WIDTH
|
|
add hl, de
|
|
pop de
|
|
inc de
|
|
inc de
|
|
inc de
|
|
pop af
|
|
dec a
|
|
jr nz, .loop
|
|
ret
|
|
; e2c67 (38:6c67)
|
|
|
|
.CancelString:
|
|
db "CANCEL@"
|
|
; e2c6e
|
|
|
|
.PlaceNickname: ; e2c6e (38:6c6e)
|
|
ld a, [de]
|
|
and a
|
|
ret z
|
|
cp -1
|
|
jr nz, .get_nickname
|
|
ld de, .CancelString
|
|
call PlaceString
|
|
ret
|
|
|
|
.get_nickname
|
|
inc de
|
|
ld a, [de]
|
|
ld b, a
|
|
inc de
|
|
ld a, [de]
|
|
ld e, a
|
|
ld a, b
|
|
and a
|
|
jr z, .party
|
|
cp NUM_BOXES + 1
|
|
jr z, .sBox
|
|
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, .boxfail
|
|
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
|
|
|
|
.boxfail
|
|
call CloseSRAM
|
|
pop hl
|
|
jr .placeholder_string
|
|
|
|
.party
|
|
push hl
|
|
ld hl, PartySpecies
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .partyfail
|
|
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
|
|
|
|
.partyfail
|
|
pop hl
|
|
jr .placeholder_string
|
|
|
|
.sBox
|
|
push hl
|
|
ld a, BANK(sBox)
|
|
call GetSRAMBank
|
|
ld hl, sBoxSpecies
|
|
ld d, $0
|
|
add hl, de
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .sBoxFail
|
|
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
|
|
|
|
.sBoxFail
|
|
call CloseSRAM
|
|
pop hl
|
|
.placeholder_string
|
|
ld de, .Placeholder
|
|
call PlaceString
|
|
ret
|
|
; e2d2a (38:6d2a)
|
|
|
|
.Placeholder:
|
|
db "-----@"
|
|
; e2d30
|
|
|
|
copy_box_data: MACRO
|
|
.loop\@
|
|
ld a, [hl]
|
|
cp -1
|
|
jr z, .done\@
|
|
and a
|
|
jr z, .done\@
|
|
ld [de], a
|
|
inc de
|
|
ld a, [wBillsPC_LoadedBox]
|
|
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 .loop\@
|
|
|
|
.done\@
|
|
IF \1
|
|
call CloseSRAM
|
|
ENDC
|
|
ld a, -1
|
|
ld [de], a
|
|
ld a, [wd004]
|
|
inc a
|
|
ld [wBillsPC_NumMonsInBox], a
|
|
endm
|
|
|
|
CopyBoxmonSpecies: ; e2d30 (38:6d30)
|
|
xor a
|
|
ld hl, wBillsPCPokemonList
|
|
ld bc, 3 * 30
|
|
call ByteFill
|
|
ld de, wBillsPCPokemonList
|
|
xor a
|
|
ld [wd003], a
|
|
ld [wd004], a
|
|
ld a, [wBillsPC_LoadedBox]
|
|
and a
|
|
jr z, .party
|
|
cp NUM_BOXES + 1
|
|
jr z, .sBox
|
|
ld b, a
|
|
call GetBoxPointer
|
|
ld a, b
|
|
call GetSRAMBank
|
|
inc hl
|
|
copy_box_data 1
|
|
ret
|
|
|
|
.party
|
|
ld hl, PartySpecies
|
|
copy_box_data 0
|
|
ret
|
|
|
|
.sBox
|
|
ld a, BANK(sBox)
|
|
call GetSRAMBank
|
|
ld hl, sBoxSpecies
|
|
copy_box_data 1
|
|
ret
|
|
|
|
BillsPC_GetSelectedPokemonSpecies: ; e2def (38:6def)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, wBillsPCPokemonList
|
|
add hl, de
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hl]
|
|
ret
|
|
|
|
BillsPC_UpdateSelectionCursor: ; e2e01 (38:6e01)
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
and a
|
|
jr nz, .place_cursor
|
|
call ClearSprites
|
|
ret
|
|
|
|
.place_cursor
|
|
ld hl, .OAM
|
|
ld de, Sprites
|
|
.loop
|
|
ld a, [hl]
|
|
cp -1
|
|
ret z
|
|
ld a, [wBillsPC_CursorPosition]
|
|
and $7
|
|
swap a
|
|
add [hl]
|
|
inc hl
|
|
ld [de], a
|
|
inc de
|
|
rept 3
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
endr
|
|
jr .loop
|
|
; e2e2b (38:6e2b)
|
|
|
|
.OAM: ; e2e2b
|
|
dsprite 4, 6, 10, 0, $00, $00
|
|
dsprite 4, 6, 11, 0, $00, $00
|
|
dsprite 4, 6, 12, 0, $00, $00
|
|
dsprite 4, 6, 13, 0, $00, $00
|
|
dsprite 4, 6, 14, 0, $00, $00
|
|
dsprite 4, 6, 15, 0, $00, $00
|
|
dsprite 4, 6, 16, 0, $00, $00
|
|
dsprite 4, 6, 17, 0, $00, $00
|
|
dsprite 4, 6, 18, 0, $00, $00
|
|
dsprite 4, 6, 18, 7, $00, $00
|
|
dsprite 7, 1, 10, 0, $00, $40
|
|
dsprite 7, 1, 11, 0, $00, $40
|
|
dsprite 7, 1, 12, 0, $00, $40
|
|
dsprite 7, 1, 13, 0, $00, $40
|
|
dsprite 7, 1, 14, 0, $00, $40
|
|
dsprite 7, 1, 15, 0, $00, $40
|
|
dsprite 7, 1, 16, 0, $00, $40
|
|
dsprite 7, 1, 17, 0, $00, $40
|
|
dsprite 7, 1, 18, 0, $00, $40
|
|
dsprite 7, 1, 18, 7, $00, $40
|
|
dsprite 5, 6, 9, 6, $01, $00
|
|
dsprite 6, 1, 9, 6, $01, $40
|
|
dsprite 5, 6, 19, 1, $01, $20
|
|
dsprite 6, 1, 19, 1, $01, $60
|
|
db -1
|
|
; e2e8c
|
|
|
|
BillsPC_UpdateInsertCursor: ; e2e8c
|
|
ld hl, .OAM
|
|
ld de, Sprites
|
|
.loop
|
|
ld a, [hl]
|
|
cp -1
|
|
ret z
|
|
ld a, [wBillsPC_CursorPosition]
|
|
and $7
|
|
swap a
|
|
add [hl]
|
|
inc hl
|
|
ld [de], a
|
|
inc de
|
|
rept 3
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
endr
|
|
jr .loop
|
|
; e2eac
|
|
|
|
.OAM: ; e2eac
|
|
dsprite 4, 7, 10, 0, $06, $00
|
|
dsprite 5, 3, 11, 0, $00, $40
|
|
dsprite 5, 3, 12, 0, $00, $40
|
|
dsprite 5, 3, 13, 0, $00, $40
|
|
dsprite 5, 3, 14, 0, $00, $40
|
|
dsprite 5, 3, 15, 0, $00, $40
|
|
dsprite 5, 3, 16, 0, $00, $40
|
|
dsprite 5, 3, 17, 0, $00, $40
|
|
dsprite 5, 3, 18, 0, $00, $40
|
|
dsprite 4, 7, 19, 0, $07, $00
|
|
db -1
|
|
; e2ed5
|
|
|
|
BillsPC_UnusedFillBox: ; e2ed5
|
|
.row
|
|
push bc
|
|
push hl
|
|
.col
|
|
ld [hli], a
|
|
dec c
|
|
jr nz, .col
|
|
pop hl
|
|
ld bc, SCREEN_WIDTH
|
|
add hl, bc
|
|
pop bc
|
|
dec b
|
|
jr nz, .row
|
|
ret
|
|
; e2ee5
|
|
|
|
BillsPC_CheckSpaceInDestination: ; e2ee5
|
|
; If moving within a box, no need to be here.
|
|
ld hl, wBillsPC_LoadedBox
|
|
ld a, [wBillsPC_BackupLoadedBox]
|
|
cp [hl]
|
|
jr z, .same_box
|
|
|
|
; Exceeding box or party capacity is a big no-no.
|
|
ld a, [wBillsPC_LoadedBox]
|
|
and a
|
|
jr z, .party
|
|
ld e, MONS_PER_BOX + 1
|
|
jr .compare
|
|
|
|
.party
|
|
ld e, PARTY_LENGTH + 1
|
|
.compare
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
cp e
|
|
jr nc, .no_room
|
|
.same_box
|
|
and a
|
|
ret
|
|
|
|
.no_room
|
|
ld de, PCString_TheresNoRoom
|
|
call BillsPC_PlaceString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
scf
|
|
ret
|
|
; e2f18
|
|
|
|
BillsPC_CheckMail_PreventBlackout: ; e2f18 (38:6f18)
|
|
ld a, [wBillsPC_LoadedBox]
|
|
and a
|
|
jr nz, .Okay
|
|
ld a, [wBillsPC_NumMonsInBox]
|
|
cp $3
|
|
jr c, .ItsYourLastPokemon
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
callba CheckCurPartyMonFainted
|
|
jr c, .AllOthersFainted
|
|
ld a, [wBillsPC_MonHasMail]
|
|
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 BillsPC_PlaceString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
scf
|
|
ret
|
|
|
|
BillsPC_IsMonAnEgg: ; e2f5f (38:6f5f)
|
|
ld a, [CurPartySpecies]
|
|
cp EGG
|
|
jr z, .egg
|
|
and a
|
|
ret
|
|
|
|
.egg
|
|
ld de, PCString_NoReleasingEGGS
|
|
call BillsPC_PlaceString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
scf
|
|
ret
|
|
|
|
BillsPC_StatsScreen: ; e2f7e (38:6f7e)
|
|
call LowVolume
|
|
call BillsPC_CopyMon
|
|
ld a, $3
|
|
ld [MonType], a
|
|
predef StatsScreenInit
|
|
call BillsPC_InitGFX
|
|
call MaxVolume
|
|
ret
|
|
|
|
StatsScreenDPad: ; e2f95 (38:6f95)
|
|
ld hl, hJoyPressed ; $ffa7
|
|
ld a, [hl]
|
|
and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
|
|
ld [wMenuJoypad], a
|
|
jr nz, .pressed_a_b_right_left
|
|
ld a, [hl]
|
|
and D_DOWN | D_UP
|
|
ld [wMenuJoypad], a
|
|
jr nz, .pressed_down_up
|
|
jr .pressed_a_b_right_left
|
|
|
|
.pressed_down_up
|
|
call _StatsScreenDPad
|
|
and a
|
|
jr z, .did_nothing
|
|
call BillsPC_GetSelectedPokemonSpecies
|
|
ld [wd265], a
|
|
call BillsPC_LoadMonStats
|
|
ld a, [wd265]
|
|
ld [CurPartySpecies], a
|
|
ld [CurSpecies], a
|
|
ld hl, TempMonDVs
|
|
predef GetUnownLetter
|
|
call GetBaseData
|
|
call BillsPC_CopyMon
|
|
.pressed_a_b_right_left
|
|
ret
|
|
|
|
.did_nothing
|
|
xor a
|
|
ld [wMenuJoypad], a
|
|
ret
|
|
|
|
BillsPC_CopyMon: ; e2fd6 (38:6fd6)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
ld a, [wBillsPC_LoadedBox]
|
|
and a
|
|
jr z, .party
|
|
cp NUM_BOXES + 1
|
|
jr nz, .box
|
|
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, wBufferMon
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call CopyBytes
|
|
call CloseSRAM
|
|
callba CalcwBufferMonStats
|
|
ret
|
|
|
|
.party
|
|
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, wBufferMon
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call CopyBytes
|
|
ret
|
|
|
|
.box
|
|
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 CalcwBufferMonStats
|
|
ret
|
|
|
|
DepositPokemon: ; e307c (38:707c)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
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 RemoveMonFromPartyOrBox
|
|
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 BillsPC_PlaceString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
scf
|
|
ret
|
|
|
|
TryWithdrawPokemon: ; e30fa (38:70fa)
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
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 RemoveMonFromPartyOrBox
|
|
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 BillsPC_PlaceString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
scf
|
|
ret
|
|
|
|
|
|
ReleasePKMN_ByePKMN: ; 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, .skip_cry
|
|
ld e, c
|
|
ld d, b
|
|
call PlayCryHeader
|
|
.skip_cry
|
|
|
|
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)
|
|
|
|
MovePKMNWitoutMail_InsertMon: ; e31e7
|
|
push hl
|
|
push de
|
|
push bc
|
|
push af
|
|
hlcoord 0, 15
|
|
lb bc, 1, 18
|
|
call TextBox
|
|
hlcoord 1, 16
|
|
ld de, .Saving_LeaveOn
|
|
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, [wBillsPC_BackupLoadedBox]
|
|
and a
|
|
jr nz, .moving_from_box
|
|
set 0, c
|
|
|
|
.moving_from_box
|
|
ld a, [wBillsPC_LoadedBox]
|
|
and a
|
|
jr nz, .moving_to_box
|
|
set 1, c
|
|
|
|
.moving_to_box
|
|
ld hl, .Jumptable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, .dw_return
|
|
push de
|
|
jp hl
|
|
; e322a
|
|
|
|
.dw_return ; e322a
|
|
pop af
|
|
ld e, a
|
|
callba MovePkmnWOMail_InsertMon_SaveGame
|
|
ret
|
|
; e3233
|
|
|
|
.Saving_LeaveOn:
|
|
db "Saving… Leave ON!@"
|
|
; e3245
|
|
|
|
.Jumptable: ; e3245
|
|
|
|
dw .BoxToBox
|
|
dw .PartyToBox
|
|
dw .BoxToParty
|
|
dw .PartyToParty
|
|
; e324d
|
|
|
|
.BoxToBox: ; e324d
|
|
ld hl, wBillsPC_BackupLoadedBox
|
|
ld a, [wBillsPC_LoadedBox]
|
|
cp [hl]
|
|
jr z, .same_box
|
|
call .CopyFromBox
|
|
call .CopyToBox
|
|
ret
|
|
|
|
.same_box
|
|
call .CopyFromBox
|
|
call .CheckTrivialMove
|
|
call .CopyToBox
|
|
ret
|
|
; e3267
|
|
|
|
.PartyToBox: ; e3267
|
|
call .CopyFromParty
|
|
ld a, $1
|
|
ld [wGameLogicPaused], a
|
|
callba SaveGameData
|
|
xor a
|
|
ld [wGameLogicPaused], a
|
|
call .CopyToBox
|
|
ret
|
|
; e327d
|
|
|
|
.BoxToParty: ; e327d
|
|
call .CopyFromBox
|
|
call .CopyToParty
|
|
ret
|
|
; e3284
|
|
|
|
.PartyToParty: ; e3284
|
|
call .CopyFromParty
|
|
call .CheckTrivialMove
|
|
call .CopyToParty
|
|
ret
|
|
; e328e
|
|
|
|
.CheckTrivialMove: ; e328e
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld e, a
|
|
ld a, [wBillsPC_BackupCursorPosition]
|
|
ld hl, wBillsPC_BackupScrollPosition
|
|
add [hl]
|
|
cp e
|
|
ret nc
|
|
ld hl, wBillsPC_CursorPosition
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .top_of_screen
|
|
dec [hl]
|
|
ret
|
|
|
|
.top_of_screen
|
|
ld hl, wBillsPC_ScrollPosition
|
|
ld a, [hl]
|
|
and a
|
|
ret z
|
|
dec [hl]
|
|
ret
|
|
; e32b0
|
|
|
|
.CopyFromBox: ; e32b0
|
|
ld a, [wBillsPC_BackupLoadedBox]
|
|
dec a
|
|
ld e, a
|
|
callba MovePkmnWOMail_SaveGame
|
|
ld a, [wBillsPC_BackupCursorPosition]
|
|
ld hl, wBillsPC_BackupScrollPosition
|
|
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 CalcwBufferMonStats
|
|
ld a, PC_DEPOSIT
|
|
ld [wPokemonWithdrawDepositParameter], a
|
|
callba RemoveMonFromPartyOrBox
|
|
ret
|
|
; e32fa
|
|
|
|
.CopyToBox: ; e32fa
|
|
ld a, [wBillsPC_LoadedBox]
|
|
dec a
|
|
ld e, a
|
|
callba MovePkmnWOMail_SaveGame
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
callba InsertPokemonIntoBox
|
|
ret
|
|
; e3316
|
|
|
|
.CopyFromParty: ; e3316
|
|
ld a, [wBillsPC_BackupCursorPosition]
|
|
ld hl, wBillsPC_BackupScrollPosition
|
|
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 RemoveMonFromPartyOrBox
|
|
ret
|
|
; e3346
|
|
|
|
.CopyToParty: ; e3346
|
|
ld a, [wBillsPC_CursorPosition]
|
|
ld hl, wBillsPC_ScrollPosition
|
|
add [hl]
|
|
ld [CurPartyMon], a
|
|
callba InsertPokemonIntoParty
|
|
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, wBufferMonNick
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call CopyBytes
|
|
ret
|
|
|
|
CopyOTNameToTemp: ; e3376 (38:7376)
|
|
ld bc, NAME_LENGTH
|
|
ld a, [CurPartyMon]
|
|
call AddNTimes
|
|
ld de, wBufferMonOT
|
|
ld bc, NAME_LENGTH
|
|
call CopyBytes
|
|
ret
|
|
|
|
CopyMonToTemp: ; e3389 (38:7389)
|
|
ld a, [CurPartyMon]
|
|
call AddNTimes
|
|
ld de, wBufferMon
|
|
call CopyBytes
|
|
ret
|
|
|
|
GetBoxPointer: ; e3396 (38:7396)
|
|
dec b
|
|
ld c, b
|
|
ld b, 0
|
|
ld hl, .boxes
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
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
|
|
|
|
BillsPC_ApplyPalettes: ; e33d0 (38:73d0)
|
|
ld b, a
|
|
call GetSGBLayout
|
|
ld a, %11100100
|
|
call DmgToCgbBGPals
|
|
ld a, %11111100
|
|
call DmgToCgbObjPal0
|
|
ret
|
|
|
|
BillsPC_Jumptable: ; e33df (38:73df)
|
|
ld e, a
|
|
ld d, $0
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ret
|
|
|
|
BillsPC_InitGFX: ; e33e8 (38:73e8)
|
|
call DisableLCD
|
|
ld hl, VTiles2 tile $00
|
|
ld bc, $31 tiles
|
|
xor a
|
|
call ByteFill
|
|
call LoadStandardFont
|
|
call LoadFontsBattleExtra
|
|
ld hl, PCMailGFX
|
|
ld de, VTiles2 tile $5c
|
|
ld bc, 4 tiles
|
|
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 BillsPC_ClearTilemap
|
|
.loop
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call BillsPC_PrintBoxName
|
|
call BillsPC_PlaceChooseABoxString
|
|
ld hl, _ChangeBox_menudataheader
|
|
call CopyMenuDataHeader
|
|
xor a
|
|
ld [wMenuScrollPosition], a
|
|
hlcoord 0, 4
|
|
lb bc, 8, 9
|
|
call TextBox
|
|
call ScrollingMenu
|
|
ld a, [wMenuJoypad]
|
|
cp B_BUTTON
|
|
jr z, .done
|
|
call BillsPC_PlaceWhatsUpString
|
|
call BillsPC_ChangeBoxSubmenu
|
|
jr .loop
|
|
.done
|
|
call CloseWindow
|
|
ret
|
|
|
|
BillsPC_ClearTilemap: ; 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 BillsPC_PrintBoxCountAndCapacity
|
|
; 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)
|
|
|
|
BillsPC_PrintBoxCountAndCapacity: ; e3632
|
|
hlcoord 11, 7
|
|
lb bc, 5, 7
|
|
call TextBox
|
|
ld a, [MenuSelection]
|
|
cp -1
|
|
ret z
|
|
hlcoord 12, 9
|
|
ld de, .Pokemon
|
|
call PlaceString
|
|
call GetBoxCount
|
|
ld [wd265], a
|
|
hlcoord 13, 11
|
|
ld de, wd265
|
|
lb bc, 1, 2
|
|
call PrintNum
|
|
ld de, .out_of_20
|
|
call PlaceString
|
|
ret
|
|
; e3663
|
|
|
|
.Pokemon: ; e3663
|
|
db "#MON@"
|
|
; e3668
|
|
|
|
.out_of_20 ; 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
|
|
add hl, bc
|
|
add hl, bc
|
|
add hl, bc
|
|
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
|
|
|
|
BillsPC_PrintBoxName: ; e36cf (38:76cf)
|
|
hlcoord 0, 0
|
|
ld b, 2
|
|
ld c, 18
|
|
call TextBox
|
|
hlcoord 1, 2
|
|
ld de, .Current
|
|
call PlaceString
|
|
ld a, [wCurBox]
|
|
and $f
|
|
call GetBoxName
|
|
hlcoord 11, 2
|
|
call PlaceString
|
|
ret
|
|
; e36f1 (38:76f1)
|
|
|
|
.Current: ; e36f1
|
|
db "CURRENT@"
|
|
; e36f9
|
|
|
|
BillsPC_ChangeBoxSubmenu: ; e36f9 (38:76f9)
|
|
ld hl, .MenuDataHeader
|
|
call LoadMenuDataHeader
|
|
call VerticalMenu
|
|
call ExitMenu
|
|
ret c
|
|
ld a, [wMenuCursorY]
|
|
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 BillsPC_ClearTilemap
|
|
and a
|
|
ret
|
|
|
|
.EmptyBox:
|
|
call BillsPC_PlaceEmptyBoxString_SFX
|
|
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, BOX_NAME_LENGTH - 1
|
|
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
|
|
|
|
BillsPC_PlaceChooseABoxString: ; e379c (38:779c)
|
|
ld de, .ChooseABox
|
|
jr BillsPC_PlaceChangeBoxString
|
|
; e37a1 (38:77a1)
|
|
|
|
.ChooseABox: ; e37a1
|
|
db "Choose a BOX.@"
|
|
; e37af
|
|
|
|
BillsPC_PlaceWhatsUpString: ; e37af (38:77af)
|
|
ld de, .WhatsUp
|
|
jr BillsPC_PlaceChangeBoxString
|
|
; e37b4 (38:77b4)
|
|
|
|
.WhatsUp: ; e37b4
|
|
db "What's up?@"
|
|
; e37be
|
|
|
|
BillsPC_PlaceEmptyBoxString_SFX: ; e37be (38:77be)
|
|
ld de, .NoMonString
|
|
call BillsPC_PlaceChangeBoxString
|
|
ld de, SFX_WRONG
|
|
call WaitPlaySFX
|
|
call WaitSFX
|
|
ld c, 50
|
|
call DelayFrames
|
|
ret
|
|
; e37d3 (38:77d3)
|
|
|
|
.NoMonString: ; e37d3
|
|
db "There's no #MON.@"
|
|
; e37e3
|
|
|
|
BillsPC_PlaceChangeBoxString: ; 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
|