pokecrystal-board/mobile/mobile_22_2.asm
mid-kid 11d67567d2 Use constants for menu flags
Added a bunch of constants for the bitflags of each kind of menu. Some
are slightly vague or too long, but I'm not sure how to else name them.
2018-01-14 11:59:56 +01:00

1163 lines
16 KiB
NASM

Function8b342:: ; 8b342
; Loads the secondary map header pointer, then runs through a
; dw with three dummy functions. Spends a lot of energy
; doing pretty much nothing.
call GetSecondaryMapHeaderPointer
ld d, h
ld e, l
; Everything between here and "ret" is useless.
xor a
.loop
push af
ld hl, .dw
rst JumpTable
pop af
inc a
cp 3
jr nz, .loop
ret
; 8b354
.dw ; 8b354
dw .zero
dw .one
dw .two
; 8b35a
.zero ; 8b35a
mobile
; 8b35b
.one ; 8b35b
mobile
; 8b35c
.two ; 8b35c
mobile
; 8b35d
Function8b35d: ; 8b35d
ld a, h
cp d
ret nz
ld a, l
cp e
ret
; 8b363
Function8b363: ; 8b363
push bc
farcall Mobile_AlwaysReturnNotCarry
pop bc
ret
; 8b36c
Function8b36c: ; 8b36c (22:736c)
; [bc + (0:4)] = -1
push bc
ld h, b
ld l, c
ld bc, 4
ld a, -1
call ByteFill
pop bc
ret
Function8b379: ; 8b379 (22:7379)
; d = [bc + e]
push bc
ld a, c
add e
ld c, a
ld a, $0
adc b
ld b, a
ld a, [bc]
ld d, a
pop bc
ret
Function8b385: ; 8b385 (22:7385)
; [bc + e] = d
push bc
ld a, c
add e
ld c, a
ld a, $0
adc b
ld b, a
ld a, d
ld [bc], a
pop bc
ret
Function8b391: ; 8b391 (22:7391)
; find first e in range(4) such that [bc + e] == -1
; if none exist, return carry
push bc
ld e, 0
ld d, 4
.loop
ld a, [bc]
inc bc
cp -1
jr z, .done
inc e
dec d
jr nz, .loop
dec e
scf
.done
pop bc
ret
Function8b3a4: ; 8b3a4 (22:73a4)
; strcmp(hl, bc, 4)
push de
push bc
ld d, b
ld e, c
ld c, 4
call Function89185
pop bc
pop de
ret
Function8b3b0: ; 8b3b0 (22:73b0)
ld bc, $a037 ; 4:a037
ld a, [$a60b]
and a
jr z, .asm_8b3c2
cp $3
jr nc, .asm_8b3c2
call Function8b391
jr c, .asm_8b3c9
.asm_8b3c2
call Function8b36c
xor a
ld [$a60b], a
.asm_8b3c9
ld a, [$a60b]
ret
Function8b3cd: ; 8b3cd (22:73cd)
push de
push bc
ld e, $4
.asm_8b3d1
ld a, [bc]
inc bc
call Function8998b
inc hl
dec e
jr nz, .asm_8b3d1
pop bc
pop de
ret
Function8b3dd: ; 8b3dd (22:73dd)
push de
push bc
call JoyTextDelay_ForcehJoyDown ; joypad
ld a, c
pop bc
pop de
bit A_BUTTON_F, a
jr nz, .a_button
bit B_BUTTON_F, a
jr nz, .b_button
bit D_UP_F, a
jr nz, .d_up
bit D_DOWN_F, a
jr nz, .d_down
and a
ret
.a_button
ld a, e
cp $3
jr z, .e_is_zero
inc e
ld d, 0
call Function8b385
xor a
ld [wd010], a
ret
.e_is_zero
call PlayClickSFX
ld d, $0
scf
ret
.b_button
ld a, e
and a
jr nz, .e_is_not_zero
call PlayClickSFX
ld d, -1
call Function8b385
ld d, 1
scf
ret
.e_is_not_zero
ld d, -1
call Function8b385
dec e
xor a
ld [wd010], a
ret
.d_up
call Function8b379
ld a, d
cp $a
jr c, .less_than_10_up_1
ld d, $9
.less_than_10_up_1
inc d
ld a, d
cp $a
jr c, .less_than_10_up_2
ld d, $0
.less_than_10_up_2
call Function8b385
xor a
ld [wd010], a
ret
.d_down
call Function8b379
ld a, d
cp $a
jr c, .less_than_10_down
ld d, $0
.less_than_10_down
ld a, d
dec d
and a
jr nz, .nonzero_down
ld d, $9
.nonzero_down
call Function8b385
xor a
ld [wd010], a
ret
Function8b45c: ; 8b45c (22:745c)
call Function8b36c
xor a
ld [wd010], a
ld [wd012], a
call Function8b391
ld d, $0
call Function8b385
.asm_8b46e
call Mobile22_SetBGMapMode0
call Function8b493
call Function8b4cc
call Function8b518
call Function89b78
push bc
call Function8b4fd
call Function89c44
ld a, $1
ld [hBGMapMode], a
pop bc
call Function8b3dd
jr nc, .asm_8b46e
ld a, d
and a
ret z
scf
ret
Function8b493: ; 8b493 (22:7493)
push bc
call Mobile22_SetBGMapMode0
call Function8b521
ld hl, Jumptable_8b4a0
pop bc
rst JumpTable
ret
Jumptable_8b4a0: ; 8b4a0 (22:74a0)
dw Function8b4a4
dw Function8b4b8
Function8b4a4: ; 8b4a4 (22:74a4)
push bc
push de
call Function8b4d8
call TextBox
pop de
pop bc
call Function8b4cc
call Function8b518
call Function8b3cd
ret
Function8b4b8: ; 8b4b8 (22:74b8)
push bc
push de
call Function8b4ea
call Function89b3b
pop de
pop bc
call Function8b4cc
call Function8b518
call Function8b3cd
ret
Function8b4cc: ; 8b4cc (22:74cc)
push bc
ld hl, Unknown_8b529
call Function8b50a
ld a, [hli]
ld h, [hl]
ld l, a
pop bc
ret
Function8b4d8: ; 8b4d8 (22:74d8)
ld hl, Unknown_8b529
call Function8b50a
push hl
inc hl
inc hl
ld a, [hli]
ld b, a
ld a, [hl]
ld c, a
pop hl
ld a, [hli]
ld h, [hl]
ld l, a
ret
Function8b4ea: ; 8b4ea (22:74ea)
ld hl, Unknown_8b529
call Function8b50a
push hl
inc hl
inc hl
ld a, [hli]
ld b, a
ld a, [hl]
ld c, a
pop hl
ld a, [hli]
ld e, a
ld a, [hl]
ld d, a
ret
Function8b4fd: ; 8b4fd (22:74fd)
ld hl, Unknown_8b529 + 4
call Function8b50a
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
ld a, [hli]
ld d, a
ret
Function8b50a: ; 8b50a (22:750a)
ld a, [wd02e]
and a
ret z
ld b, $0
ld c, $8
.asm_8b513
add hl, bc
dec a
jr nz, .asm_8b513
ret
Function8b518: ; 8b518 (22:7518)
push de
ld d, $0
ld e, $14
add hl, de
inc hl
pop de
ret
Function8b521: ; 8b521 (22:7521)
ld hl, Unknown_8b529 + 7
call Function8b50a
ld a, [hl]
ret
; 8b529 (22:7529)
Unknown_8b529: ; 8b529
dwcoord 2, 5
db 1, 4, $20, $49, 0, 1
dwcoord 7, 4
db 1, 4, $48, $41, 0, 0
; 8b539
Function8b539: ; 8b539 (22:7539)
ld bc, wd017
call Function8b36c
xor a
ld [wd012], a
ld [wd02e], a
call Function8b493
call Function8b4fd
ld e, $0
call Function89c44
call CGBOnly_CopyTilemapAtOnce
ret
Function8b555: ; 8b555 (22:7555)
.loop
ld hl, UnknownText_0x8b5ce
call PrintText
ld bc, wd017
call Function8b45c
jr c, .asm_8b5c8
call Function89448
ld bc, wd017
call Function8b493
ld bc, wd017
call Function8b664
jr nz, .asm_8b57c
ld hl, UnknownText_0x8b5e2
call PrintText
jr .loop
.asm_8b57c
ld hl, UnknownText_0x8b5d3
call PrintText
ld bc, wd013
call Function8b45c
jr c, .loop
ld bc, wd017
ld hl, wd013
call Function8b3a4
jr z, .strings_equal
call Function89448
ld bc, wd013
call Function8b493
ld hl, UnknownText_0x8b5d8
call PrintText
jr .asm_8b57c
.strings_equal
call OpenSRAMBank4
ld hl, wd013
ld de, $a037 ; 4:a037
ld bc, $4
call CopyBytes
call CloseSRAM
call Function89448
ld bc, wd013
call Function8b493
ld hl, UnknownText_0x8b5dd
call PrintText
and a
.asm_8b5c8
push af
call Function89448
pop af
ret
; 8b5ce (22:75ce)
UnknownText_0x8b5ce: ; 0x8b5ce
; Please enter any four-digit number.
text_jump UnknownText_0x1bc187
db "@"
; 0x8b5d3
UnknownText_0x8b5d3: ; 0x8b5d3
; Enter the same number to confirm.
text_jump UnknownText_0x1bc1ac
db "@"
; 0x8b5d8
UnknownText_0x8b5d8: ; 0x8b5d8
; That's not the same number.
text_jump UnknownText_0x1bc1cf
db "@"
; 0x8b5dd
UnknownText_0x8b5dd: ; 0x8b5dd
; Your PASSCODE has been set. Enter this number next time to open the CARD FOLDER.
text_jump UnknownText_0x1bc1eb
db "@"
; 0x8b5e2
UnknownText_0x8b5e2: ; 0x8b5e2
; 0000 is invalid!
text_jump UnknownText_0x1bc23e
db "@"
; 0x8b5e7
Function8b5e7: ; 8b5e7 (22:75e7)
ld bc, wd013
call Function8b36c
xor a
ld [wd012], a
ld [wd02e], a
call Function8b493
call Function891ab
call Function8b4fd
ld e, $0
call Function89c44
.asm_8b602
ld hl, UnknownText_0x8b642
call PrintText
ld bc, wd013
call Function8b45c
jr c, .asm_8b63c
call Function89448
ld bc, wd013
call Function8b493
call OpenSRAMBank4
ld hl, $a037 ; 4:a037
call Function8b3a4
call CloseSRAM
jr z, .asm_8b635
ld hl, UnknownText_0x8b647
call PrintText
ld bc, wd013
call Function8b36c
jr .asm_8b602
.asm_8b635
ld hl, UnknownText_0x8b64c
call PrintText
and a
.asm_8b63c
push af
call Function89448
pop af
ret
; 8b642 (22:7642)
UnknownText_0x8b642: ; 0x8b642
; Enter the CARD FOLDER PASSCODE.
text_jump UnknownText_0x1bc251
db "@"
; 0x8b647
UnknownText_0x8b647: ; 0x8b647
; Incorrect PASSCODE!
text_jump UnknownText_0x1bc272
db "@"
; 0x8b64c
UnknownText_0x8b64c: ; 0x8b64c
; CARD FOLDER open.@ @
text_jump UnknownText_0x1bc288
start_asm
ld de, SFX_TWINKLE
call PlaySFX
call WaitSFX
ld c, $8
call DelayFrames
ld hl, .string_8b663
ret
.string_8b663
db "@"
; 8b664
Function8b664: ; 8b664 (22:7664)
push bc
ld de, $4
.asm_8b668
ld a, [bc]
cp $0
jr nz, .asm_8b66e
inc d
.asm_8b66e
inc bc
dec e
jr nz, .asm_8b668
pop bc
ld a, d
cp $4
ret
Function8b677: ; 8b677
call ClearBGPalettes
call DisableLCD
call Function8b690
call Function8b6bb
call Function8b6ed
call EnableLCD
call Function891ab
call SetPalettes
ret
; 8b690
Function8b690: ; 8b690
ld hl, GFX_17afa5 + $514
ld de, vTiles2
ld bc, $160
ld a, BANK(GFX_17afa5)
call FarCopyBytes
ld hl, GFX_17afa5 + $514 + $160 - $10
ld de, vTiles2 tile $61
ld bc, $10
ld a, BANK(GFX_17afa5)
call FarCopyBytes
ld hl, GFX_17afa5 + $514 + $160
ld de, vTiles1 tile $6e
ld bc, $10
ld a, BANK(GFX_17afa5)
call FarCopyBytes
ret
; 8b6bb
Function8b6bb: ; 8b6bb
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, Palette_8b6d5
ld de, wBGPals1
ld bc, 3 palettes
call CopyBytes
pop af
ld [rSVBK], a
call Function8949c
ret
; 8b6d5
Palette_8b6d5: ; 8b6d5
RGB 31, 31, 31
RGB 31, 21, 00
RGB 14, 07, 03
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 21, 00
RGB 22, 09, 17
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 21, 00
RGB 06, 24, 08
RGB 00, 00, 00
; 8b6ed
Function8b6ed: ; 8b6ed
hlcoord 0, 0, AttrMap
ld bc, $012c
xor a
call ByteFill
hlcoord 0, 14, AttrMap
ld bc, $0050
ld a, $7
call ByteFill
ret
; 8b703
Function8b703: ; 8b703
call Mobile22_SetBGMapMode0
push hl
ld a, $c
ld [hli], a
inc a
call Function8b73e
inc a
ld [hl], a
pop hl
push hl
push bc
ld de, SCREEN_WIDTH
add hl, de
.asm_8b717
push hl
ld a, $f
ld [hli], a
ld a, $7f
call Function8b73e
ld a, $11
ld [hl], a
pop hl
ld de, SCREEN_WIDTH
add hl, de
dec b
jr nz, .asm_8b717
call Function8b732
pop bc
pop hl
jr Function8b744
; 8b732
Function8b732: ; 8b732
ld a, $12
ld [hli], a
ld a, $13
call Function8b73e
ld a, $14
ld [hl], a
ret
; 8b73e
Function8b73e: ; 8b73e
ld d, c
.asm_8b73f
ld [hli], a
dec d
jr nz, .asm_8b73f
ret
; 8b744
Function8b744: ; 8b744
ld de, AttrMap - TileMap
add hl, de
inc b
inc b
inc c
inc c
xor a
.asm_8b74d
push bc
push hl
.asm_8b74f
ld [hli], a
dec c
jr nz, .asm_8b74f
pop hl
ld de, SCREEN_WIDTH
add hl, de
pop bc
dec b
jr nz, .asm_8b74d
ret
; 8b75d
Function8b75d: ; 8b75d
call Mobile22_SetBGMapMode0
hlcoord 0, 0
ld a, $1
ld bc, SCREEN_WIDTH
call ByteFill
hlcoord 0, 1
ld a, $2
ld [hl], a
hlcoord 9, 1
ld c, $b
call Function8b788
hlcoord 1, 1
ld a, $4
ld e, $8
.asm_8b780
ld [hli], a
inc a
dec e
jr nz, .asm_8b780
jr Function8b79e
; 8b787
Function8b787: ; 8b787
ret
; 8b788
Function8b788: ; 8b788
.asm_8b788
ld a, $2
ld [hli], a
dec c
ret z
ld a, $1
ld [hli], a
dec c
ret z
ld a, $3
ld [hli], a
dec c
ret z
ld a, $1
ld [hli], a
dec c
jr nz, .asm_8b788
ret
; 8b79e
Function8b79e: ; 8b79e
hlcoord 0, 1, AttrMap
ld a, $1
ld [hli], a
hlcoord 9, 1, AttrMap
ld e, $b
.asm_8b7a9
ld a, $2
ld [hli], a
dec e
ret z
xor a
ld [hli], a
dec e
ret z
ld a, $1
ld [hli], a
dec e
ret z
xor a
ld [hli], a
dec e
jr nz, .asm_8b7a9
ret
; 8b7bd
Function8b7bd: ; 8b7bd
call Function8b855
ld hl, MenuDataHeader_0x8b867
call CopyMenuDataHeader
ld a, [wd030]
ld [wMenuCursorBuffer], a
ld a, [wd031]
ld [wMenuScrollPosition], a
ld a, [wd032]
and a
jr z, .asm_8b7e0
ld a, [wMenuFlags]
set 3, a
ld [wMenuFlags], a
.asm_8b7e0
ld a, [wd0e3]
and a
jr z, .asm_8b7ea
dec a
ld [wScrollingMenuCursorPosition], a
.asm_8b7ea
hlcoord 0, 2
ld b, $b
ld c, $12
call Function8b703
call Function8b75d
call UpdateSprites
call Function89209
call ScrollingMenu
call Function8920f
ld a, [wMenuJoypad]
cp $2
jr z, .asm_8b823
cp $20
jr nz, .asm_8b813
call Function8b832
jr .asm_8b7ea
.asm_8b813
cp $10
jr nz, .asm_8b81c
call Function8b83e
jr .asm_8b7ea
.asm_8b81c
ld a, [MenuSelection]
cp $ff
jr nz, .asm_8b824
.asm_8b823
xor a
.asm_8b824
ld c, a
ld a, [wMenuCursorY]
ld [wd030], a
ld a, [wMenuScrollPosition]
ld [wd031], a
ret
; 8b832
Function8b832: ; 8b832
ld a, [wMenuScrollPosition]
ld hl, wMenuData2Items
sub [hl]
jr nc, Function8b84b
xor a
jr Function8b84b
; 8b83e
Function8b83e: ; 8b83e
ld a, [wMenuScrollPosition]
ld hl, wMenuData2Items
add [hl]
cp $24
jr c, Function8b84b
ld a, $24
Function8b84b: ; 8b84b
ld [wMenuScrollPosition], a
ld a, [wMenuCursorY]
ld [wMenuCursorBuffer], a
ret
; 8b855
Function8b855: ; 8b855
ld a, $28
ld hl, wd002
ld [hli], a
ld c, $28
xor a
.asm_8b85e
inc a
ld [hli], a
dec c
jr nz, .asm_8b85e
ld a, $ff
ld [hl], a
ret
; 8b867
MenuDataHeader_0x8b867: ; 0x8b867
db MENU_BACKUP_TILES ; flags
db 03, 01 ; start coords
db 13, 18 ; end coords
dw MenuData2_0x8b870
db 1 ; default option
; 0x8b86f
db 0
MenuData2_0x8b870: ; 0x8b870
db SCROLLINGMENU_ENABLE_FUNCTION3 | SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_RIGHT | SCROLLINGMENU_ENABLE_LEFT ; flags
db 5 ; items
db 3, 1
dbw 0, wd002
dba Function8b880
dba Function8b88c
dba Function8b8c8
; 8b880
Function8b880: ; 8b880
ld h, d
ld l, e
ld de, MenuSelection
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
; 8b88c
Function8b88c: ; 8b88c
call OpenSRAMBank4
ld h, d
ld l, e
push hl
ld de, String_89116
call Function8931b
call Function8932d
jr c, .asm_8b8a3
ld hl, 0
add hl, bc
ld d, h
ld e, l
.asm_8b8a3
pop hl
push hl
call PlaceString
pop hl
ld d, $0
ld e, $6
add hl, de
push hl
ld de, String_89116
call Function8931b
call Function8934a
jr c, .asm_8b8c0
ld hl, $0006
add hl, bc
ld d, h
ld e, l
.asm_8b8c0
pop hl
call PlaceString
call CloseSRAM
ret
; 8b8c8
Function8b8c8: ; 8b8c8
hlcoord 0, 14
ld b, $2
ld c, $12
call TextBox
ld a, [wd033]
ld b, 0
ld c, a
ld hl, Unknown_8b903
add hl, bc
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld d, h
ld e, l
hlcoord 1, 16
call PlaceString
hlcoord 0, 13
ld a, $f
ld [hl], a
hlcoord 19, 13
ld a, $11
ld [hl], a
ld a, [wMenuScrollPosition]
cp $24
ret c
hlcoord 0, 13
ld c, $12
call Function8b732
ret
; 8b903
Unknown_8b903: ; 8b903
dw String_8b90b
dw String_8b919
dw String_8b92a
dw String_8b938
String_8b90b: db "めいしを えらんでください@" ; Please select a noun.
String_8b919: db "どの めいしと いれかえますか?@" ; OK to swap with any noun?
String_8b92a: db "あいてを えらんでください@" ; Please select an opponent.
String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
; 8b94a
Function8b94a: ; 8b94a
ld [wd033], a
xor a
ld [wMenuScrollPosition], a
ld [wd032], a
ld [wd0e3], a
ld [wd031], a
ld a, $1
ld [wd030], a
ret
; 8b960
Function8b960: ; 8b960 (22:7960)
ld hl, MenuDataHeader_0x8b9ac
call LoadMenuDataHeader
call Function8b9e9
jr c, .asm_8b97a
hlcoord 11, 0
ld b, $6
ld c, $7
call Function8b703
ld hl, MenuDataHeader_0x8b9b1
jr .asm_8b987
.asm_8b97a
hlcoord 11, 0
ld b, $a
ld c, $7
call Function8b703
ld hl, MenuDataHeader_0x8b9ca
.asm_8b987
ld a, $1
call Function89d5e
ld hl, Function8b9ab
call Function89d85
call ExitMenu
jr c, .asm_8b99c
call Function8b99f
jr nz, .asm_8b99d
.asm_8b99c
xor a
.asm_8b99d
ld c, a
ret
Function8b99f: ; 8b99f (22:799f)
ld hl, wd002
dec a
ld c, a
ld b, $0
add hl, bc
ld a, [hl]
cp $ff
ret
; 8b9ab (22:79ab)
Function8b9ab: ; 8b9ab
ret
; 8b9ac
MenuDataHeader_0x8b9ac: ; 0x8b9ac
db MENU_BACKUP_TILES ; flags
db 00, 11 ; start coords
db 11, 19 ; end coords
MenuDataHeader_0x8b9b1: ; 0x8b9b1
db MENU_BACKUP_TILES ; flags
db 00, 11 ; start coords
db 07, 19 ; end coords
dw MenuData2_0x8b9b9
db 1 ; default option
; 0x8b9b9
MenuData2_0x8b9b9: ; 0x8b9b9
db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
db 3 ; items
db "へんしゅう@" ; EDIT
db "いれかえ@" ; REPLACE
db "やめる@" ; QUIT
; 0x8b9ca
MenuDataHeader_0x8b9ca: ; 0x8b9ca
db MENU_BACKUP_TILES ; flags
db 00, 11 ; start coords
db 11, 19 ; end coords
dw MenuData2_0x8b9d2
db 1 ; default option
; 0x8b9d2
MenuData2_0x8b9d2: ; 0x8b9d2
db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
db 5 ; items
db "みる@" ; VIEW
db "へんしゅう@" ; EDIT
db "いれかえ@" ; REPLACE
db "けす@" ; ERASE
db "やめる@" ; QUIT
; 0x8b9e9
Function8b9e9: ; 8b9e9 (22:79e9)
call OpenSRAMBank4
call Function8931b
call Function8932d
jr nc, .asm_8b9f6
jr .asm_8b9ff
.asm_8b9f6
ld hl, $11
add hl, bc
call Function89b45
jr c, .asm_8ba08
.asm_8b9ff
call Function892b4
and a
ld de, Unknown_8ba1c
jr .asm_8ba0c
.asm_8ba08
ld de, Unknown_8ba1f
scf
.asm_8ba0c
push af
ld hl, wd002
.asm_8ba10
ld a, [de]
inc de
ld [hli], a
cp $ff
jr nz, .asm_8ba10
call CloseSRAM
pop af
ret
; 8ba1c (22:7a1c)
Unknown_8ba1c: ; 8b1ac
db 2, 4, -1
Unknown_8ba1f: ; 8ba1f
db 1, 2, 4, 3, -1
; 8ba24