pokecrystal-board/engine/pokemon/bills_pc_top.asm

373 lines
5.2 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
_BillsPC:
2016-03-27 09:47:28 -07:00
call .CheckCanUsePC
ret c
call .LogIn
call .UseBillsPC
jp .LogOut
2018-06-24 07:09:41 -07:00
.CheckCanUsePC:
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2016-03-27 09:47:28 -07:00
and a
ret nz
ld hl, .PCGottaHavePokemonText
2019-04-08 05:15:10 -07:00
call MenuTextboxBackup
2016-03-27 09:47:28 -07:00
scf
ret
.PCGottaHavePokemonText:
text_far _PCGottaHavePokemonText
text_end
2016-03-27 09:47:28 -07:00
2018-06-24 07:09:41 -07:00
.LogIn:
2016-03-27 09:47:28 -07:00
xor a
ldh [hBGMapMode], a
call LoadStandardMenuHeader
2016-03-27 09:47:28 -07:00
call ClearPCItemScreen
2018-01-23 14:39:09 -08:00
ld hl, wOptions
2016-03-27 09:47:28 -07:00
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
ld hl, .PCWhatText
2016-03-27 09:47:28 -07:00
call PrintText
pop af
2018-01-23 14:39:09 -08:00
ld [wOptions], a
2016-03-27 09:47:28 -07:00
call LoadFontsBattleExtra
ret
.PCWhatText:
text_far _PCWhatText
text_end
2016-03-27 09:47:28 -07:00
2018-06-24 07:09:41 -07:00
.LogOut:
2016-03-27 09:47:28 -07:00
call CloseSubmenu
ret
2018-06-24 07:09:41 -07:00
.UseBillsPC:
ld hl, .MenuHeader
call LoadMenuHeader
2016-03-27 09:47:28 -07:00
ld a, $1
.loop
ld [wMenuCursorPosition], a
2016-03-27 09:47:28 -07:00
call SetPalettes
xor a
ld [wWhichIndexSet], a
ldh [hBGMapMode], a
2016-03-27 09:47:28 -07:00
call DoNthMenu
jr c, .cancel
ld a, [wMenuCursorPosition]
2016-03-27 09:47:28 -07:00
push af
2018-01-23 14:39:09 -08:00
ld a, [wMenuSelection]
2016-03-27 09:47:28 -07:00
ld hl, .Jumptable
rst JumpTable
pop bc
ld a, b
jr nc, .loop
.cancel
call CloseWindow
ret
.MenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
dw .MenuData
2016-03-27 09:47:28 -07:00
db 1 ; default option
.MenuData:
db STATICMENU_CURSOR ; flags
2016-03-27 09:47:28 -07:00
db 0 ; items
dw .items
dw PlaceMenuStrings
dw .strings
2018-06-24 07:09:41 -07:00
.strings
2016-03-27 09:47:28 -07:00
db "WITHDRAW <PK><MN>@"
db "DEPOSIT <PK><MN>@"
db "CHANGE BOX@"
db "MOVE <PK><MN> W/O MAIL@"
db "SEE YA!@"
2018-06-24 07:09:41 -07:00
.Jumptable:
2016-03-27 09:47:28 -07:00
dw BillsPC_WithdrawMenu
dw BillsPC_DepositMenu
dw BillsPC_ChangeBoxMenu
dw BillsPC_MovePKMNMenu
dw BillsPC_SeeYa
2018-06-24 07:09:41 -07:00
.items
2018-05-20 14:55:27 -07:00
db 5 ; # items
2016-03-27 09:47:28 -07:00
db 0 ; WITHDRAW
2018-05-20 14:55:27 -07:00
db 1 ; DEPOSIT
2016-03-27 09:47:28 -07:00
db 2 ; CHANGE BOX
db 3 ; MOVE PKMN
db 4 ; SEE YA!
db -1
2018-06-24 07:09:41 -07:00
BillsPC_SeeYa:
2016-03-27 09:47:28 -07:00
scf
ret
2018-06-24 07:09:41 -07:00
BillsPC_MovePKMNMenu:
call LoadStandardMenuHeader
2017-12-24 09:47:30 -08:00
farcall IsAnyMonHoldingMail
2016-03-27 09:47:28 -07:00
jr nc, .no_mail
ld hl, .PCMonHoldingMailText
2016-03-27 09:47:28 -07:00
call PrintText
jr .quit
.no_mail
farcall StartMoveMonWOMail_SaveGame
2016-03-27 09:47:28 -07:00
jr c, .quit
2017-12-24 09:47:30 -08:00
farcall _MovePKMNWithoutMail
2016-03-27 09:47:28 -07:00
call ReturnToMapFromSubmenu
call ClearPCItemScreen
.quit
call CloseWindow
and a
ret
.PCMonHoldingMailText:
text_far _PCMonHoldingMailText
text_end
2016-03-27 09:47:28 -07:00
2018-06-24 07:09:41 -07:00
BillsPC_DepositMenu:
call LoadStandardMenuHeader
2017-12-24 09:47:30 -08:00
farcall _DepositPKMN
2016-03-27 09:47:28 -07:00
call ReturnToMapFromSubmenu
call ClearPCItemScreen
call CloseWindow
and a
ret
2020-10-05 17:10:01 -07:00
BillsPC_Deposit_CheckPartySize: ; unreferenced
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2016-03-27 09:47:28 -07:00
and a
jr z, .no_mon
2016-03-27 09:47:28 -07:00
cp 2
jr c, .only_one_mon
2016-03-27 09:47:28 -07:00
and a
ret
.no_mon
ld hl, .PCNoSingleMonText
2019-04-08 05:15:10 -07:00
call MenuTextboxBackup
2016-03-27 09:47:28 -07:00
scf
ret
.only_one_mon
ld hl, .PCCantDepositLastMonText
2019-04-08 05:15:10 -07:00
call MenuTextboxBackup
2016-03-27 09:47:28 -07:00
scf
ret
.PCNoSingleMonText:
text_far _PCNoSingleMonText
text_end
2016-03-27 09:47:28 -07:00
.PCCantDepositLastMonText:
text_far _PCCantDepositLastMonText
text_end
2016-03-27 09:47:28 -07:00
2018-06-24 07:09:41 -07:00
CheckCurPartyMonFainted:
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1HP
2016-03-27 09:47:28 -07:00
ld de, PARTYMON_STRUCT_LENGTH
ld b, $0
.loop
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
2016-03-27 09:47:28 -07:00
cp b
jr z, .skip
ld a, [hli]
or [hl]
jr nz, .notfainted
dec hl
.skip
inc b
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2016-03-27 09:47:28 -07:00
cp b
jr z, .done
add hl, de
jr .loop
.done
scf
ret
.notfainted
and a
ret
2018-06-24 07:09:41 -07:00
BillsPC_WithdrawMenu:
call LoadStandardMenuHeader
2017-12-24 09:47:30 -08:00
farcall _WithdrawPKMN
2016-03-27 09:47:28 -07:00
call ReturnToMapFromSubmenu
call ClearPCItemScreen
call CloseWindow
and a
ret
2020-10-05 17:10:01 -07:00
BillsPC_Withdraw_CheckPartySize: ; unreferenced
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
2016-03-27 09:47:28 -07:00
cp PARTY_LENGTH
jr nc, .party_full
2016-03-27 09:47:28 -07:00
and a
ret
.party_full
ld hl, PCCantTakeText
2019-04-08 05:15:10 -07:00
call MenuTextboxBackup
2016-03-27 09:47:28 -07:00
scf
ret
PCCantTakeText:
text_far _PCCantTakeText
text_end
2016-03-27 09:47:28 -07:00
2018-06-24 07:09:41 -07:00
BillsPC_ChangeBoxMenu:
2017-12-24 09:47:30 -08:00
farcall _ChangeBox
2016-03-27 09:47:28 -07:00
and a
ret
2018-06-24 07:09:41 -07:00
ClearPCItemScreen:
2016-03-27 09:47:28 -07:00
call DisableSpriteUpdates
xor a
ldh [hBGMapMode], a
2016-03-27 09:47:28 -07:00
call ClearBGPalettes
call ClearSprites
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
call ByteFill
hlcoord 0, 0
2016-03-27 09:47:28 -07:00
lb bc, 10, 18
2019-04-08 05:15:10 -07:00
call Textbox
hlcoord 0, 12
2016-03-27 09:47:28 -07:00
lb bc, 4, 18
2019-04-08 05:15:10 -07:00
call Textbox
2016-03-27 09:47:28 -07:00
call WaitBGMap2
call SetPalettes ; load regular palettes?
ret
2018-06-24 07:09:41 -07:00
CopyBoxmonToTempMon:
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
2016-03-27 09:47:28 -07:00
ld hl, sBoxMon1Species
ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
2018-01-23 14:39:09 -08:00
ld de, wTempMonSpecies
2016-03-27 09:47:28 -07:00
ld bc, BOXMON_STRUCT_LENGTH
ld a, BANK(sBoxMon1Species)
call OpenSRAM
2016-03-27 09:47:28 -07:00
call CopyBytes
call CloseSRAM
ret
LoadBoxMonListing: ; unreferenced
2016-03-27 09:47:28 -07:00
ld a, [wCurBox]
cp b
jr z, .same_box
ld a, b
ld hl, .BoxAddresses
2016-03-27 09:47:28 -07:00
ld bc, 3
call AddNTimes
ld a, [hli]
push af
ld a, [hli]
ld h, [hl]
ld l, a
pop af
jr .okay
.same_box
ld a, BANK(sBoxCount)
ld hl, sBoxCount
.okay
call OpenSRAM
2016-03-27 09:47:28 -07:00
ld a, [hl]
2019-11-23 17:56:22 -08:00
ld bc, sBoxMons - sBox
2016-03-27 09:47:28 -07:00
add hl, bc
ld b, a
ld c, $0
2019-11-23 17:56:22 -08:00
ld de, wBoxPartialData
2016-03-27 09:47:28 -07:00
ld a, b
and a
jr z, .empty_box
.loop
push hl
push bc
ld a, c
2019-11-23 17:56:22 -08:00
ld bc, sBoxMon1Species - sBoxMons
2016-03-27 09:47:28 -07:00
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [de], a
inc de
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
2016-03-27 09:47:28 -07:00
call GetBaseData
pop bc
pop hl
push hl
push bc
ld a, c
2019-11-23 17:56:22 -08:00
ld bc, sBoxMonNicknames - sBoxMons
2016-03-27 09:47:28 -07:00
add hl, bc
call SkipNames
call CopyBytes
pop bc
pop hl
push hl
push bc
ld a, c
ld bc, MON_LEVEL
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [de], a
inc de
pop bc
pop hl
push hl
push bc
ld a, c
ld bc, MON_DVS
add hl, bc
ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
and $f0
ld b, a
ld a, [hl]
and $f0
swap a
or b
ld b, a
2018-01-23 14:39:09 -08:00
ld a, [wBaseGender]
2016-03-27 09:47:28 -07:00
cp b
ld a, $1
jr c, .okay2
xor a
.okay2
ld [de], a
inc de
pop bc
pop hl
inc c
dec b
jr nz, .loop
.empty_box
call CloseSRAM
ret
.BoxAddresses:
table_width 3, LoadBoxMonListing.BoxAddresses
for n, 1, NUM_BOXES + 1
dba sBox{d:n}
endr
assert_table_length NUM_BOXES