diff options
author | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:07:16 +0100 |
---|---|---|
committer | mid-kid <esteve.varela@gmail.com> | 2018-03-13 13:21:40 +0100 |
commit | baa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch) | |
tree | 968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/billspc.asm | |
parent | 12070ca50067d3abe36a730190f88ee43f2cace9 (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-x | engine/billspc.asm | 2618 |
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 |