summaryrefslogtreecommitdiff
path: root/engine/billspc.asm
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2018-03-13 13:07:16 +0100
committermid-kid <esteve.varela@gmail.com>2018-03-13 13:21:40 +0100
commitbaa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch)
tree968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/billspc.asm
parent12070ca50067d3abe36a730190f88ee43f2cace9 (diff)
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by creating categorized subdirectories, in order to make it easier to navigate and find things. The directories created are as follows: * engine/game: Contains all "minigames", things like the unown puzzle and slot machine. * engine/gfx: Contains all handling of graphics. From loading palettes to playing animations. * engine/link: Contains all multiplayer functionality. * engine/menu: Contains all generic/misc. menus and menu code. Other, more specialized menus are in their own subdirectories (pokedex, pokegear, party menu, etc). * engine/overworld: Contains all handling of the overworld. From loading and connecting maps to wild encounters and the scripting engine. * engine/pokegear: In the same vein as engine/pokedex, except it could use some more splitting up. * engine/pokemon: Contains everything related to manipulating pokemon data. From the pokemon storage system to evolution and mail. * engine/printer: Contains everything related to printing things as well as the printer communication. * engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/billspc.asm')
-rwxr-xr-xengine/billspc.asm2618
1 files changed, 0 insertions, 2618 deletions
diff --git a/engine/billspc.asm b/engine/billspc.asm
deleted file mode 100755
index 96d6ac310..000000000
--- a/engine/billspc.asm
+++ /dev/null
@@ -1,2618 +0,0 @@
-_DepositPKMN: ; e2391 (38:6391)
- ld hl, wOptions
- ld a, [hl]
- push af
- set 4, [hl]
- ld a, [wVramState]
- push af
- xor a
- ld [wVramState], 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 [wVramState], a
- pop af
- ld [wOptions], 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 [wCurPartySpecies], 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 [wCurPartySpecies], 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, BillsPCDepositMenuHeader
- call CopyMenuHeader
- ld a, [wMenuCursorY]
- call StoreTo_wMenuCursorBuffer
- call VerticalMenu
- jp c, BillsPCDepositFuncCancel
- ld a, [wMenuCursorY]
- dec a
- and %11
- 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 LoadStandardMenuHeader
- call BillsPC_StatsScreen
- call ExitMenu
- call PCMonInfo
- call BillsPC_GetSelectedPokemonSpecies
- ld [wCurPartySpecies], 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 LoadStandardMenuHeader
- 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 [wCurPartyMon], a
- xor a ; REMOVE_PARTY
- ld [wPokemonWithdrawDepositParameter], a
- farcall 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)
-
-BillsPCDepositMenuHeader: ; 0xe253d (38:653d)
- db MENU_BACKUP_TILES ; flags
- menu_coords 9, 4, SCREEN_WIDTH - 1, 13
- dw .MenuData
- db 1 ; default option
-; 0xe2545
-
-.MenuData: ; 0xe2545 (38:6545)
- db STATICMENU_CURSOR ; flags
- db 4 ; items
- db "DEPOSIT@"
- db "STATS@"
- db "RELEASE@"
- db "CANCEL@"
-; 0xe2564 (38:6564)
-
-Unreferenced_BillsPCClearThreeBoxes: ; e2564
- 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, wOptions
- ld a, [hl]
- push af
- set 4, [hl]
- ld a, [wVramState]
- push af
- xor a
- ld [wVramState], 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 [wVramState], a
- pop af
- ld [wOptions], 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 [wCurPartySpecies], 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 [wCurPartySpecies], 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, .MenuHeader
- call CopyMenuHeader
- ld a, [wMenuCursorY]
- call StoreTo_wMenuCursorBuffer
- call VerticalMenu
- jp c, .cancel
- ld a, [wMenuCursorY]
- dec a
- and %11
- 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 LoadStandardMenuHeader
- call BillsPC_StatsScreen
- call ExitMenu
- call PCMonInfo
- call BillsPC_GetSelectedPokemonSpecies
- ld [wCurPartySpecies], 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 LoadStandardMenuHeader
- 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 [wCurPartyMon], a
- ld a, REMOVE_BOX
- ld [wPokemonWithdrawDepositParameter], a
- farcall 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)
-
-.MenuHeader: ; 0xe2731
- db MENU_BACKUP_TILES ; flags
- menu_coords 9, 4, SCREEN_WIDTH - 1, 13
- dw .MenuData
- db 1 ; default option
-; 0xe2739
-
-.MenuData: ; 0xe2739
- db STATICMENU_CURSOR ; flags
- db 4 ; items
- db "WITHDRAW@"
- db "STATS@"
- db "RELEASE@"
- db "CANCEL@"
-; 0xe2759
-
-_MovePKMNWithoutMail: ; e2759
- ld hl, wOptions
- ld a, [hl]
- push af
- set 4, [hl]
- ld a, [wVramState]
- push af
- xor a
- ld [wVramState], 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 [wVramState], a
- pop af
- ld [wOptions], 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 [wCurPartySpecies], 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 MoveMonWithoutMail_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 [wCurPartySpecies], 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, .MenuHeader
- call CopyMenuHeader
- ld a, [wMenuCursorY]
- call StoreTo_wMenuCursorBuffer
- call VerticalMenu
- jp c, .Cancel
- ld a, [wMenuCursorY]
- dec a
- and %11
- 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 LoadStandardMenuHeader
- call BillsPC_StatsScreen
- call ExitMenu
- call PCMonInfo
- call BillsPC_GetSelectedPokemonSpecies
- ld [wCurPartySpecies], a
- ld a, SCGB_BILLS_PC
- call BillsPC_ApplyPalettes
- ret
-; e28bd
-
-.Cancel: ; e28bd
- ld a, $0
- ld [wJumptableIndex], a
- ret
-; e28c3
-
-.MenuHeader: ; 0xe28c3
- db MENU_BACKUP_TILES ; flags
- menu_coords 9, 4, SCREEN_WIDTH - 1, 13
- dw .MenuData
- db 1 ; default option
-; 0xe28cb
-
-.MenuData: ; 0xe28cb
- db STATICMENU_CURSOR ; 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 MoveMonWithoutMail_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)
-
-MoveMonWithoutMail_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
-
-MoveMonWithoutMail_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 [wCurPartySpecies], a
- ld [wCurSpecies], a
- ld hl, wTempMonDVs
- predef GetUnownLetter
- call GetBaseData
- ld de, vTiles2 tile $00
- predef GetMonFrontpic
- xor a
- ld [wBillsPC_MonHasMail], a
- ld a, [wCurPartySpecies]
- ld [wd265], a
- cp EGG
- ret z
-
- call GetBasePokemonName
- hlcoord 1, 14
- call PlaceString
-
- hlcoord 1, 12
- call PrintLevel
-
- ld a, $3
- ld [wMonType], a
- farcall GetGender
- jr c, .skip_gender
- ld a, "♂"
- jr nz, .printgender
- ld a, "♀"
-.printgender
- hlcoord 5, 12
- ld [hl], a
-.skip_gender
-
- ld a, [wTempMonItem]
- and a
- ret z
-
- ld d, a
- callfar 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 [wTempMonLevel], 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 [wTempMonItem], a
- pop hl
- ld bc, sBoxMon1DVs - sBox
- add hl, bc
- ld bc, BOXMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld de, wTempMonDVs
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- call CloseSRAM
- ret
-
-.party
- ld hl, wPartyMon1Level
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld a, [hl]
- ld [wTempMonLevel], a
- ld hl, wPartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld a, [hl]
- ld [wTempMonItem], a
- ld hl, wPartyMon1DVs
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld de, wTempMonDVs
- 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 [wTempMonLevel], a
-
- ld hl, sBoxMon1Item
- ld bc, BOXMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld a, [hl]
- ld [wTempMonItem], a
-
- ld hl, sBoxMon1DVs
- ld bc, BOXMON_STRUCT_LENGTH
- ld a, e
- call AddNTimes
- ld de, wTempMonDVs
- 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, MON_NAME_LENGTH
- ld a, e
- call AddNTimes
- ld de, wStringBuffer1
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- call CloseSRAM
- pop hl
- ld de, wStringBuffer1
- call PlaceString
- ret
-
-.boxfail
- call CloseSRAM
- pop hl
- jr .placeholder_string
-
-.party
- push hl
- ld hl, wPartySpecies
- ld d, $0
- add hl, de
- ld a, [hl]
- and a
- jr z, .partyfail
- ld hl, wPartyMonNicknames
- ld bc, MON_NAME_LENGTH
- ld a, e
- call AddNTimes
- ld de, wStringBuffer1
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- pop hl
- ld de, wStringBuffer1
- 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, MON_NAME_LENGTH
- ld a, e
- call AddNTimes
- ld de, wStringBuffer1
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- call CloseSRAM
- pop hl
- ld de, wStringBuffer1
- 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, wPartySpecies
- 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, wVirtualOAMSprite00
-.loop
- ld a, [hl]
- cp -1
- ret z
- ld a, [wBillsPC_CursorPosition]
- and $7
- swap a
- add [hl]
- inc hl
- ld [de], a ; y
- inc de
-rept SPRITEOAMSTRUCT_LENGTH + -1
- ld a, [hli]
- ld [de], a
- inc de
-endr
- jr .loop
-; e2e2b (38:6e2b)
-
-.OAM: ; e2e2b
- dsprite 4, 6, 10, 0, $00, 0
- dsprite 4, 6, 11, 0, $00, 0
- dsprite 4, 6, 12, 0, $00, 0
- dsprite 4, 6, 13, 0, $00, 0
- dsprite 4, 6, 14, 0, $00, 0
- dsprite 4, 6, 15, 0, $00, 0
- dsprite 4, 6, 16, 0, $00, 0
- dsprite 4, 6, 17, 0, $00, 0
- dsprite 4, 6, 18, 0, $00, 0
- dsprite 4, 6, 18, 7, $00, 0
- dsprite 7, 1, 10, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 11, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 12, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 13, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 14, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 15, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 16, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 17, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 18, 0, $00, 0 | Y_FLIP
- dsprite 7, 1, 18, 7, $00, 0 | Y_FLIP
- dsprite 5, 6, 9, 6, $01, 0
- dsprite 6, 1, 9, 6, $01, 0 | Y_FLIP
- dsprite 5, 6, 19, 1, $01, 0 | X_FLIP
- dsprite 6, 1, 19, 1, $01, 0 | X_FLIP | Y_FLIP
- db -1
-; e2e8c
-
-BillsPC_UpdateInsertCursor: ; e2e8c
- ld hl, .OAM
- ld de, wVirtualOAMSprite00
-.loop
- ld a, [hl]
- cp -1
- ret z
- ld a, [wBillsPC_CursorPosition]
- and $7
- swap a
- add [hl]
- inc hl
- ld [de], a ; y
- inc de
-rept SPRITEOAMSTRUCT_LENGTH + -1
- ld a, [hli]
- ld [de], a
- inc de
-endr
- jr .loop
-; e2eac
-
-.OAM: ; e2eac
- dsprite 4, 7, 10, 0, $06, 0
- dsprite 5, 3, 11, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 12, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 13, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 14, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 15, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 16, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 17, 0, $00, 0 | Y_FLIP
- dsprite 5, 3, 18, 0, $00, 0 | Y_FLIP
- dsprite 4, 7, 19, 0, $07, 0
- db -1
-; e2ed5
-
-Unreferenced_BillsPC_FillBox: ; 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 [wCurPartyMon], a
- farcall 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, [wCurPartySpecies]
- 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 [wMonType], 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 [wCurPartySpecies], a
- ld [wCurSpecies], a
- ld hl, wTempMonDVs
- 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 [wCurPartyMon], 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, [wCurPartyMon]
- call AddNTimes
- ld de, wBufferMon
- ld bc, PARTYMON_STRUCT_LENGTH
- call CopyBytes
- call CloseSRAM
- farcall CalcBufferMonStats
- ret
-
-.party
- ld hl, wPartySpecies
- call CopySpeciesToTemp
- ld hl, wPartyMonNicknames
- call CopyNicknameToTemp
- ld hl, wPartyMonOT
- call CopyOTNameToTemp
- ld hl, wPartyMon1
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [wCurPartyMon]
- 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
- farcall CalcBufferMonStats
- ret
-
-DepositPokemon: ; e307c (38:707c)
- ld a, [wBillsPC_CursorPosition]
- ld hl, wBillsPC_ScrollPosition
- add [hl]
- ld [wCurPartyMon], a
- ld hl, wPartyMonNicknames
- ld a, [wCurPartyMon]
- call GetNick
- ld a, PC_DEPOSIT
- ld [wPokemonWithdrawDepositParameter], a
- predef SendGetMonIntoFromBox
- jr c, .asm_boxisfull
- xor a ; REMOVE_PARTY
- ld [wPokemonWithdrawDepositParameter], a
- farcall RemoveMonFromPartyOrBox
- ld a, [wCurPartySpecies]
- call PlayMonCry
- 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, wStringBuffer1
- 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 [wCurPartyMon], a
- ld a, BANK(sBoxMonNicknames)
- call GetSRAMBank
- ld a, [wCurPartyMon]
- ld hl, sBoxMonNicknames
- call GetNick
- call CloseSRAM
- xor a
- ld [wPokemonWithdrawDepositParameter], a
- predef SendGetMonIntoFromBox
- jr c, .PartyFull
- ld a, REMOVE_BOX
- ld [wPokemonWithdrawDepositParameter], a
- farcall RemoveMonFromPartyOrBox
- ld a, [wCurPartySpecies]
- call PlayMonCry
- 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, wStringBuffer1
- 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, [wCurPartySpecies]
- call GetCryIndex
- jr c, .skip_cry
- ld e, c
- ld d, b
- call PlayCry
-.skip_cry
-
- ld a, [wCurPartySpecies]
- 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, wStringBuffer1
- 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
- farcall MoveMonWOMail_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
- farcall 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
- farcall MoveMonWOMail_SaveGame
- ld a, [wBillsPC_BackupCursorPosition]
- ld hl, wBillsPC_BackupScrollPosition
- add [hl]
- ld [wCurPartyMon], a
- 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
- call CopyMonToTemp
- call CloseSRAM
- farcall CalcBufferMonStats
- ld a, REMOVE_BOX
- ld [wPokemonWithdrawDepositParameter], a
- farcall RemoveMonFromPartyOrBox
- ret
-; e32fa
-
-.CopyToBox: ; e32fa
- ld a, [wBillsPC_LoadedBox]
- dec a
- ld e, a
- farcall MoveMonWOMail_SaveGame
- ld a, [wBillsPC_CursorPosition]
- ld hl, wBillsPC_ScrollPosition
- add [hl]
- ld [wCurPartyMon], a
- farcall InsertPokemonIntoBox
- ret
-; e3316
-
-.CopyFromParty: ; e3316
- ld a, [wBillsPC_BackupCursorPosition]
- ld hl, wBillsPC_BackupScrollPosition
- add [hl]
- ld [wCurPartyMon], a
- ld hl, wPartySpecies
- call CopySpeciesToTemp
- ld hl, wPartyMonNicknames
- call CopyNicknameToTemp
- ld hl, wPartyMonOT
- call CopyOTNameToTemp
- ld hl, wPartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- call CopyMonToTemp
- xor a ; REMOVE_PARTY
- ld [wPokemonWithdrawDepositParameter], a
- farcall RemoveMonFromPartyOrBox
- ret
-; e3346
-
-.CopyToParty: ; e3346
- ld a, [wBillsPC_CursorPosition]
- ld hl, wBillsPC_ScrollPosition
- add [hl]
- ld [wCurPartyMon], a
- farcall InsertPokemonIntoParty
- ret
-; e3357
-
-CopySpeciesToTemp: ; e3357 (38:7357)
- ld a, [wCurPartyMon]
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [hl]
- ld [wCurPartySpecies], a
- ret
-
-CopyNicknameToTemp: ; e3363 (38:7363)
- ld bc, MON_NAME_LENGTH
- ld a, [wCurPartyMon]
- call AddNTimes
- ld de, wBufferMonNick
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- ret
-
-CopyOTNameToTemp: ; e3376 (38:7376)
- ld bc, NAME_LENGTH
- ld a, [wCurPartyMon]
- call AddNTimes
- ld de, wBufferMonOT
- ld bc, NAME_LENGTH
- call CopyBytes
- ret
-
-CopyMonToTemp: ; e3389 (38:7389)
- ld a, [wCurPartyMon]
- 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/pc.2bpp.lz"
-PCMailGFX: INCBIN "gfx/pc/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 LoadStandardMenuHeader
- call BillsPC_ClearTilemap
-.loop
- xor a
- ld [hBGMapMode], a
- call BillsPC_PrintBoxName
- call BillsPC_PlaceChooseABoxString
- ld hl, _ChangeBox_MenuHeader
- call CopyMenuHeader
- 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_MenuHeader: ; 0xe35f1
- db MENU_BACKUP_TILES ; flags
- menu_coords 1, 5, 9, 12
- dw .MenuData
- db 1 ; default option
-; 0xe35f9
-
-.MenuData ; 0xe35f9
- db MENU_UNUSED_1 | MENU_UNUSED_3 ; 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, [wMenuSelection]
- 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, [wMenuSelection]
- 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, [wMenuSelection]
- 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, .MenuHeader
- call LoadMenuHeader
- 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, [wMenuSelection]
- dec a
- ld c, a
- farcall PrintPCBox
- call BillsPC_ClearTilemap
- and a
- ret
-
-.EmptyBox:
- call BillsPC_PlaceEmptyBoxString_SFX
- and a
- ret
-
-.Switch:
- ld a, [wMenuSelection]
- dec a
- ld e, a
- ld a, [wCurBox]
- cp e
- ret z
- farcall ChangeBoxSaveGame
- ret
-
-.Name:
- ld b, $4 ; box
- ld de, wd002
- farcall NamingScreen
- call ClearTileMap
- call LoadStandardFont
- call LoadFontsBattleExtra
- ld a, [wMenuSelection]
- dec a
- call GetBoxName
- ld e, l
- ld d, h
- ld hl, wd002
- ld c, BOX_NAME_LENGTH - 1
- call InitString
- ld a, [wMenuSelection]
- dec a
- call GetBoxName
- ld de, wd002
- call CopyName2
- ret
-; e3778 (38:7778)
-
- hlcoord 11, 7 ; unused
-
-.MenuHeader: ; 0xe377b
- db MENU_BACKUP_TILES ; flags
- menu_coords 11, 4, SCREEN_WIDTH - 1, 13
- dw .MenuData
- db 1 ; default option
-; 0xe3783
-
-.MenuData: ; 0xe3783
- db STATICMENU_CURSOR ; 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