You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-09-08 08:13:02 -07:00
Split up banks 1-3 of main.asm
This commit is contained in:
388
engine/billspctop.asm
Executable file
388
engine/billspctop.asm
Executable file
@@ -0,0 +1,388 @@
|
||||
_BillsPC: ; e3fd
|
||||
call .CheckCanUsePC
|
||||
ret c
|
||||
call .LogIn
|
||||
call .UseBillsPC
|
||||
jp .LogOut
|
||||
|
||||
.CheckCanUsePC: ; e40a (3:640a)
|
||||
ld a, [PartyCount]
|
||||
and a
|
||||
ret nz
|
||||
ld hl, .Text_GottaHavePokemon
|
||||
call MenuTextBoxBackup
|
||||
scf
|
||||
ret
|
||||
|
||||
.Text_GottaHavePokemon: ; 0xe417
|
||||
; You gotta have #MON to call!
|
||||
text_jump UnknownText_0x1c1006
|
||||
db "@"
|
||||
|
||||
.LogIn: ; e41c (3:641c)
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
call LoadStandardMenuDataHeader
|
||||
call ClearPCItemScreen
|
||||
ld hl, Options
|
||||
ld a, [hl]
|
||||
push af
|
||||
set NO_TEXT_SCROLL, [hl]
|
||||
ld hl, .Text_What
|
||||
call PrintText
|
||||
pop af
|
||||
ld [Options], a
|
||||
call LoadFontsBattleExtra
|
||||
ret
|
||||
|
||||
.Text_What: ; 0xe43a
|
||||
; What?
|
||||
text_jump UnknownText_0x1c1024
|
||||
db "@"
|
||||
|
||||
.LogOut: ; e43f (3:643f)
|
||||
call CloseSubmenu
|
||||
ret
|
||||
|
||||
.UseBillsPC: ; e443 (3:6443)
|
||||
ld hl, .MenuDataHeader
|
||||
call LoadMenuDataHeader
|
||||
ld a, $1
|
||||
.loop
|
||||
ld [wMenuCursorBuffer], a
|
||||
call SetPalettes
|
||||
xor a
|
||||
ld [wWhichIndexSet], a
|
||||
ld [hBGMapMode], a
|
||||
call DoNthMenu
|
||||
jr c, .cancel
|
||||
ld a, [wMenuCursorBuffer]
|
||||
push af
|
||||
ld a, [MenuSelection]
|
||||
ld hl, .Jumptable
|
||||
rst JumpTable
|
||||
pop bc
|
||||
ld a, b
|
||||
jr nc, .loop
|
||||
.cancel
|
||||
call CloseWindow
|
||||
ret
|
||||
|
||||
.MenuDataHeader: ; 0xe46f
|
||||
db $40 ; flags
|
||||
db 00, 00 ; start coords
|
||||
db 17, 19 ; end coords
|
||||
dw .MenuData2
|
||||
db 1 ; default option
|
||||
|
||||
.MenuData2: ; 0xe477
|
||||
db $80 ; flags
|
||||
db 0 ; items
|
||||
dw .items
|
||||
dw PlaceMenuStrings
|
||||
dw .strings
|
||||
|
||||
.strings: ; e47f
|
||||
db "WITHDRAW <PK><MN>@"
|
||||
db "DEPOSIT <PK><MN>@"
|
||||
db "CHANGE BOX@"
|
||||
db "MOVE <PK><MN> W/O MAIL@"
|
||||
db "SEE YA!@"
|
||||
|
||||
.Jumptable: ; e4ba (3:64ba)
|
||||
dw BillsPC_WithdrawMenu
|
||||
dw BillsPC_DepositMenu
|
||||
dw BillsPC_ChangeBoxMenu
|
||||
dw BillsPC_MovePKMNMenu
|
||||
dw BillsPC_SeeYa
|
||||
|
||||
.items: ; e4c4
|
||||
db 5
|
||||
db 0 ; WITHDRAW
|
||||
db 1; DEPOSIT
|
||||
db 2 ; CHANGE BOX
|
||||
db 3 ; MOVE PKMN
|
||||
db 4 ; SEE YA!
|
||||
db -1
|
||||
|
||||
BillsPC_SeeYa: ; e4cb
|
||||
scf
|
||||
ret
|
||||
|
||||
BillsPC_MovePKMNMenu: ; e4cd
|
||||
call LoadStandardMenuDataHeader
|
||||
callba IsAnyMonHoldingMail
|
||||
jr nc, .no_mail
|
||||
ld hl, .Text_MonHoldingMail
|
||||
call PrintText
|
||||
jr .quit
|
||||
|
||||
.no_mail
|
||||
callba StartMovePkmnWOMail_SaveGame
|
||||
jr c, .quit
|
||||
callba _MovePKMNWithoutMail
|
||||
call ReturnToMapFromSubmenu
|
||||
call ClearPCItemScreen
|
||||
|
||||
.quit
|
||||
call CloseWindow
|
||||
and a
|
||||
ret
|
||||
|
||||
.Text_MonHoldingMail: ; 0xe4f9
|
||||
; There is a #MON holding MAIL. Please remove the MAIL.
|
||||
text_jump UnknownText_0x1c102b
|
||||
db "@"
|
||||
|
||||
BillsPC_DepositMenu: ; e4fe (3:64fe)
|
||||
call LoadStandardMenuDataHeader
|
||||
callba _DepositPKMN
|
||||
call ReturnToMapFromSubmenu
|
||||
call ClearPCItemScreen
|
||||
call CloseWindow
|
||||
and a
|
||||
ret
|
||||
|
||||
Functione512: ; unused
|
||||
ld a, [PartyCount]
|
||||
and a
|
||||
jr z, .no_pkmn
|
||||
cp 2
|
||||
jr c, .only_one_pkmn
|
||||
and a
|
||||
ret
|
||||
|
||||
.no_pkmn
|
||||
ld hl, .Text_NoPKMN
|
||||
call MenuTextBoxBackup
|
||||
scf
|
||||
ret
|
||||
|
||||
.only_one_pkmn
|
||||
ld hl, .Text_ItsYourLastPKMN
|
||||
call MenuTextBoxBackup
|
||||
scf
|
||||
ret
|
||||
|
||||
.Text_NoPKMN: ; 0xe52e
|
||||
; You don't have a single #MON!
|
||||
text_jump UnknownText_0x1c1062
|
||||
db "@"
|
||||
|
||||
.Text_ItsYourLastPKMN: ; 0xe533
|
||||
; You can't deposit your last #MON!
|
||||
text_jump UnknownText_0x1c1080
|
||||
db "@"
|
||||
|
||||
CheckCurPartyMonFainted: ; e538
|
||||
ld hl, PartyMon1HP
|
||||
ld de, PARTYMON_STRUCT_LENGTH
|
||||
ld b, $0
|
||||
.loop
|
||||
ld a, [CurPartyMon]
|
||||
cp b
|
||||
jr z, .skip
|
||||
ld a, [hli]
|
||||
or [hl]
|
||||
jr nz, .notfainted
|
||||
dec hl
|
||||
|
||||
.skip
|
||||
inc b
|
||||
ld a, [PartyCount]
|
||||
cp b
|
||||
jr z, .done
|
||||
add hl, de
|
||||
jr .loop
|
||||
|
||||
.done
|
||||
scf
|
||||
ret
|
||||
|
||||
.notfainted
|
||||
and a
|
||||
ret
|
||||
|
||||
BillsPC_WithdrawMenu: ; e559 (3:6559)
|
||||
call LoadStandardMenuDataHeader
|
||||
callba _WithdrawPKMN
|
||||
call ReturnToMapFromSubmenu
|
||||
call ClearPCItemScreen
|
||||
call CloseWindow
|
||||
and a
|
||||
ret
|
||||
|
||||
Functione56d: ; unused
|
||||
ld a, [PartyCount]
|
||||
cp PARTY_LENGTH
|
||||
jr nc, .asm_e576
|
||||
and a
|
||||
ret
|
||||
|
||||
.asm_e576
|
||||
ld hl, UnknownText_0xe57e
|
||||
call MenuTextBoxBackup
|
||||
scf
|
||||
ret
|
||||
|
||||
UnknownText_0xe57e: ; 0xe57e
|
||||
; You can't take any more #MON.
|
||||
text_jump UnknownText_0x1c10a2
|
||||
db "@"
|
||||
|
||||
BillsPC_ChangeBoxMenu: ; e583 (3:6583)
|
||||
callba _ChangeBox
|
||||
and a
|
||||
ret
|
||||
|
||||
ClearPCItemScreen: ; e58b
|
||||
call DisableSpriteUpdates
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
call ClearBGPalettes
|
||||
call ClearSprites
|
||||
hlcoord 0, 0
|
||||
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
|
||||
ld a, " "
|
||||
call ByteFill
|
||||
hlcoord 0,0
|
||||
lb bc, 10, 18
|
||||
call TextBox
|
||||
hlcoord 0,12
|
||||
lb bc, 4, 18
|
||||
call TextBox
|
||||
call WaitBGMap2
|
||||
call SetPalettes ; load regular palettes?
|
||||
ret
|
||||
|
||||
CopyBoxmonToTempMon: ; e5bb
|
||||
ld a, [CurPartyMon]
|
||||
ld hl, sBoxMon1Species
|
||||
ld bc, BOXMON_STRUCT_LENGTH
|
||||
call AddNTimes
|
||||
ld de, TempMonSpecies
|
||||
ld bc, BOXMON_STRUCT_LENGTH
|
||||
ld a, BANK(sBoxMon1Species)
|
||||
call GetSRAMBank
|
||||
call CopyBytes
|
||||
call CloseSRAM
|
||||
ret
|
||||
|
||||
Functione5d9: ; unreferenced
|
||||
ld a, [wCurBox]
|
||||
cp b
|
||||
jr z, .same_box
|
||||
ld a, b
|
||||
ld hl, .BoxAddrs
|
||||
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 GetSRAMBank
|
||||
ld a, [hl]
|
||||
ld bc, 1 + MONS_PER_BOX + 1
|
||||
add hl, bc
|
||||
ld b, a
|
||||
ld c, $0
|
||||
ld de, wc608
|
||||
ld a, b
|
||||
and a
|
||||
jr z, .empty_box
|
||||
.loop
|
||||
push hl
|
||||
push bc
|
||||
ld a, c
|
||||
ld bc, 0
|
||||
add hl, bc
|
||||
ld bc, BOXMON_STRUCT_LENGTH
|
||||
call AddNTimes
|
||||
ld a, [hl]
|
||||
ld [de], a
|
||||
inc de
|
||||
ld [CurSpecies], a
|
||||
call GetBaseData
|
||||
pop bc
|
||||
pop hl
|
||||
|
||||
push hl
|
||||
push bc
|
||||
ld a, c
|
||||
ld bc, MONS_PER_BOX * (BOXMON_STRUCT_LENGTH + NAME_LENGTH)
|
||||
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
|
||||
ld a, [BaseGender]
|
||||
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
|
||||
|
||||
.BoxAddrs: ; e66e
|
||||
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
|
||||
Reference in New Issue
Block a user