pokecrystal/mobile/mobile_12.asm

1820 lines
26 KiB
NASM

InitMobileProfile:
xor a
set 6, a
ld [wd002], a
ld hl, wd003
set 0, [hl]
ld a, c
and a
call z, InitCrystalData
call ClearBGPalettes
call Function48d3d
ld a, [wd479]
bit 1, a
jr z, .not_yet_initialized
ld a, [wd003]
set 0, a
set 1, a
set 2, a
set 3, a
ld [wd003], a
.not_yet_initialized
call Function486bf
call LoadFontsExtra
ld de, MobileUpArrowGFX
ld hl, vTiles2 tile $10
lb bc, BANK(MobileUpArrowGFX), 1
call Request1bpp
ld de, MobileDownArrowGFX
ld hl, vTiles2 tile $11
lb bc, BANK(MobileDownArrowGFX), 1
call Request1bpp
call Function4a3a7
call ClearBGPalettes
ld a, [wd002]
bit 6, a
jr z, .asm_4808a
call Function48689
jr .asm_480d7
.asm_4808a
ld a, $5
ld [wMusicFade], a
ld a, LOW(MUSIC_MOBILE_ADAPTER_MENU)
ld [wMusicFadeID], a
ld a, HIGH(MUSIC_MOBILE_ADAPTER_MENU)
ld [wMusicFadeID + 1], a
ld c, 20
call DelayFrames
ld b, CRYSTAL_CGB_MOBILE_1
call GetCrystalCGBLayout
call ClearBGPalettes
hlcoord 0, 0
ld b, 2
ld c, 20
call ClearBox
hlcoord 0, 1
ld a, $c
ld [hl], a
ld bc, $13
add hl, bc
ld [hl], a
ld de, MobileProfileString
hlcoord 1, 1
call PlaceString
hlcoord 0, 2
ld b, $a
ld c, $12
call Function48cdc
hlcoord 2, 4
ld de, MobileString_Gender
call PlaceString
.asm_480d7
hlcoord 2, 6
ld de, MobileString_Age
call PlaceString
hlcoord 2, 8
ld de, MobileString_Address
call PlaceString
hlcoord 2, 10
ld de, MobileString_ZipCode
call PlaceString
hlcoord 2, 12
ld de, MobileString_OK
call PlaceString
ld a, [wd002]
bit 6, a
jr nz, .asm_48113
ld a, [wPlayerGender]
ld hl, Strings_484fb
call GetNthString
ld d, h
ld e, l
hlcoord 11, 4
call PlaceString
.asm_48113
hlcoord 11, 6
call Function487ec
ld a, [wd474]
dec a
ld hl, Prefectures
call GetNthString
ld d, h
ld e, l
hlcoord 11, 8
call PlaceString
hlcoord 11, 10
call Function489ea
hlcoord 0, 14
ld b, $2
ld c, $12
call Textbox
hlcoord 1, 16
ld de, MobileString_PersonalInfo
call PlaceString
call Function48187
call WaitBGMap2
call SetPalettes
call StaticMenuJoypad
ld hl, wMenuCursorY
ld b, [hl]
push bc
jr asm_4815f
Function48157:
call ScrollingMenuJoypad
ld hl, wMenuCursorY
ld b, [hl]
push bc
asm_4815f:
bit A_BUTTON_F, a
jp nz, Function4820d
ld b, a
ld a, [wd002]
bit 6, a
jr z, .dont_check_b_button
ld hl, wd479
bit 1, [hl]
jr z, .dont_check_b_button
bit B_BUTTON_F, b
jr nz, .b_button
.dont_check_b_button
jp Function48272
.b_button
call ClearBGPalettes
call Function48d30
pop bc
call ClearTilemap
ld a, $ff
ret
Function48187:
ld a, [wd479]
bit 1, a
jr nz, .asm_481f1
ld a, [wd003]
ld d, a
call Function48725
jr c, .asm_481a2
lb bc, 1, 4
hlcoord 2, 12
call ClearBox
jr .asm_481ad
.asm_481a2
push de
hlcoord 2, 12
ld de, MobileString_OK
call PlaceString
pop de
.asm_481ad
ld a, [wd002]
bit 6, a
jr nz, .asm_481c1
bit 0, d
jr nz, .asm_481c1
lb bc, 1, 8
hlcoord 11, 4
call ClearBox
.asm_481c1
bit 1, d
jr nz, .asm_481ce
lb bc, 1, 8
hlcoord 11, 6
call ClearBox
.asm_481ce
bit 2, d
jr nz, .asm_481db
lb bc, 2, 8
hlcoord 11, 7
call ClearBox
.asm_481db
bit 3, d
jr nz, .asm_481f1
ld a, [wd479]
bit 0, a
jr nz, .asm_481f8
lb bc, 1, 8
hlcoord 11, 10
call ClearBox
jr .asm_48201
.asm_481f1
ld a, [wd479]
bit 0, a
jr nz, .asm_48201
.asm_481f8
hlcoord 11, 10
ld de, .String_TellLater
call PlaceString
.asm_48201
ret
.String_TellLater:
db "Tell Later@"
Function4820d:
call PlaceHollowCursor
ld hl, wMenuCursorY
ld a, [hl]
push af
ld a, [wd002]
bit 6, a
jr z, .asm_4821f
pop af
inc a
push af
.asm_4821f
pop af
cp $1
jr z, asm_4828d
cp $2
jp z, Function4876f
cp $3
jp z, Function48304
cp $4
jp z, Function488d3
ld a, $2
call MenuClickSound
ld a, [wd002]
bit 6, a
jr z, .asm_4825c
jr .asm_4825c
hlcoord 1, 15
ld b, $2
ld c, $12
call ClearBox
ld de, MobileString_ProfileChanged
hlcoord 1, 16
call PlaceString
call WaitBGMap
ld c, 48
call DelayFrames
.asm_4825c
call ClearBGPalettes
call Function48d30
pop bc
call ClearTilemap
ld b, SCGB_DIPLOMA
call GetSGBLayout
ld hl, wd479
set 1, [hl]
xor a
ret
Function48272:
jp Function4840c
MobileString_PersonalInfo:
db "Personal Info@"
Function48283:
lb bc, 2, 18
hlcoord 1, 15
call ClearBox
ret
asm_4828d:
call Function48283
hlcoord 1, 16
ld de, MobileDesc_Gender
call PlaceString
ld hl, MenuHeader_0x484f1
call LoadMenuHeader
call Function4873c
hlcoord 11, 2
ld b, $4
ld c, $7
call Function48cdc
hlcoord 13, 4
ld de, String_484fb
call PlaceString
hlcoord 13, 6
ld de, String_484ff
call PlaceString
call WaitBGMap
ld a, [wPlayerGender]
inc a
ld [wMenuCursorBuffer], a
call StaticMenuJoypad
call PlayClickSFX
call ExitMenu
bit 0, a
jp z, Function4840c
ld hl, wMenuCursorY
ld a, [hl]
ld hl, Strings_484fb
cp $1
jr z, .asm_482ed
.asm_482e1
ld a, [hli]
cp $50
jr nz, .asm_482e1
ld a, 1 << PLAYERGENDER_FEMALE_F
ld [wPlayerGender], a
jr .asm_482f1
.asm_482ed
xor a
ld [wPlayerGender], a
.asm_482f1
ld d, h
ld e, l
hlcoord 11, 4
call PlaceString
ld a, [wd003]
set 0, a
ld [wd003], a
jp Function4840c
Function48304:
call Function48283
hlcoord 1, 16
ld de, MobileDesc_Address
call PlaceString
ld hl, MenuHeader_0x48504
call LoadMenuHeader
ld hl, MenuHeader_0x48513
call LoadMenuHeader
hlcoord 10, 0
ld b, $c
ld c, $8
call Function48cdc
ld a, [wMenuCursorBuffer]
ld b, a
ld a, [wMenuScrollPosition]
ld c, a
push bc
ld a, [wd474]
dec a
cp $29
jr c, .asm_4833f
sub $29
inc a
ld [wMenuCursorBuffer], a
ld a, $29
.asm_4833f
ld [wMenuScrollPosition], a
farcall Mobile_OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
.asm_48348
call ScrollingMenu
ld de, $629
call Function48383
jr c, .asm_48348
ld d, a
pop bc
ld a, b
ld [wMenuCursorBuffer], a
ld a, c
ld [wMenuScrollPosition], a
ld a, d
push af
call ExitMenu
call ExitMenu
pop af
ldh a, [hJoyPressed]
bit 0, a
jr z, .asm_48377
call Function483bb
ld a, [wd003]
set 2, a
ld [wd003], a
.asm_48377
call Function48187
farcall Mobile_OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
jp Function4840c
Function48383:
push bc
push af
bit 5, a
jr nz, .asm_48390
bit 4, a
jr nz, .asm_4839f
and a
jr .asm_483b7
.asm_48390
ld a, [wMenuScrollPosition]
sub d
ld [wMenuScrollPosition], a
jr nc, .asm_483af
xor a
ld [wMenuScrollPosition], a
jr .asm_483af
.asm_4839f
ld a, [wMenuScrollPosition]
add d
ld [wMenuScrollPosition], a
cp e
jr c, .asm_483af
ld a, e
ld [wMenuScrollPosition], a
jr .asm_483af
.asm_483af
ld hl, wMenuCursorY
ld a, [hl]
ld [wMenuCursorBuffer], a
scf
.asm_483b7
pop bc
ld a, b
pop bc
ret
Function483bb:
ld hl, wScrollingMenuCursorPosition
ld a, [hl]
inc a
ld [wd474], a
dec a
ld b, a
ld hl, Prefectures
.asm_483c8
and a
jr z, .asm_483d5
.asm_483cb
ld a, [hli]
cp "@"
jr nz, .asm_483cb
ld a, b
dec a
ld b, a
jr .asm_483c8
.asm_483d5
ld d, h
ld e, l
ld b, $2
ld c, $8
hlcoord 11, 7
call ClearBox
hlcoord 11, 8
call PlaceString
ret
Function483e8:
push de
ld hl, Prefectures
ld a, [wMenuSelection]
cp $ff
jr nz, .asm_483f8
ld hl, Wakayama ; last string
jr .asm_48405
.asm_483f8
ld d, a
and a
jr z, .asm_48405
.asm_483fc
ld a, [hli]
cp "@"
jr nz, .asm_483fc
ld a, d
dec a
jr .asm_483f8
.asm_48405
ld d, h
ld e, l
pop hl
call PlaceString
ret
Function4840c:
call Function48187
call Function48283
hlcoord 1, 16
ld de, MobileString_PersonalInfo
call PlaceString
call Function486bf
pop bc
ld hl, wMenuCursorY
ld [hl], b
ld a, [wd002]
bit 6, a
jr nz, .narrower_box
ld b, 9
ld c, 1
hlcoord 1, 4
call ClearBox
jp Function48157
.narrower_box
ld b, 7
ld c, 1
hlcoord 1, 6
call ClearBox
jp Function48157
Mobile12_Bin2Dec:
push bc
push af
push de
push hl
ld hl, .DigitStrings
.loop
and a
jr z, .got_string
inc hl
inc hl
dec a
jr .loop
.got_string
ld d, h
ld e, l
pop hl
call PlaceString
pop de
pop af
pop bc
ret
.DigitStrings:
db "0@"
db "1@"
db "2@"
db "3@"
db "4@"
db "5@"
db "6@"
db "7@"
db "8@"
db "9@"
MobileProfileString: db " Mobile Profile@"
MobileString_Gender: db "Gender@"
MobileString_Age: db "Age@"
MobileString_Address: db "Address@"
MobileString_ZipCode: db "Zip Code@"
MobileString_OK: db "OK@"
MobileString_ProfileChanged: db "Profile Changed@"
MobileDesc_Gender: db "Boy or girl?@"
MobileDesc_Age: db "How old are you?@"
MobileDesc_Address: db "Where do you live?@"
MobileDesc_ZipCode: db "Your zip code?@"
MenuHeader_0x484f1:
db MENU_BACKUP_TILES ; flags
menu_coords 11, 2, SCREEN_WIDTH - 1, 7
dw MenuData_0x484f9
db 1 ; default option
MenuData_0x484f9:
db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
db 2 ; items
Strings_484fb:
String_484fb: db "Boy@"
String_484ff: db "Girl@"
MenuHeader_0x48504:
db MENU_BACKUP_TILES ; flags
menu_coords 10, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
MenuHeader_0x48509:
db MENU_BACKUP_TILES ; flags
menu_coords 10, 5, SCREEN_WIDTH - 1, 7
MenuHeader_0x4850e:
db MENU_BACKUP_TILES ; flags
menu_coords 10, 9, SCREEN_WIDTH - 1, TEXTBOX_Y - 1
MenuHeader_0x48513:
db MENU_BACKUP_TILES ; flags
menu_coords 11, 1, 18, 12
dw MenuData_0x4851b
db 1 ; default option
MenuData_0x4851b:
db SCROLLINGMENU_DISPLAY_ARROWS | SCROLLINGMENU_ENABLE_RIGHT | SCROLLINGMENU_ENABLE_LEFT | SCROLLINGMENU_CALL_FUNCTION1_CANCEL ; flags
db 6, 0 ; rows, columns
db SCROLLINGMENU_ITEMS_NORMAL ; item format
dba .Items
dba Function483e8
dba NULL
dba NULL
.Items:
db 46
x = 0
rept 46
db x
x = x + 1
endr
db -1
Prefectures:
Aichi: db "あいちけん@" ; Aichi
Aomori: db "あおもりけん@" ; Aomori
Akita: db "あきたけん@" ; Akita
Ishikawa: db "いしかわけん@" ; Ishikawa
Ibaraki: db "いばらきけん@" ; Ibaraki
Iwate: db "いわてけん@" ; Iwate
Ehime: db "えひめけん@" ; Ehime
Oita: db "おおいたけん@" ; Oita
Osakafu: db "おおさかふ@" ; Osakafu
Okayama: db "おかやまけん@" ; Okayama
Okinawa: db "おきなわけん@" ; Okinawa
Kagawa: db "かがわけん@" ; Kagawa
Kagoshima: db "かごしまけん@" ; Kagoshima
Kanagawa: db "かながわけん@" ; Kanagawa
Gifu: db "ぎふけん@" ; Gifu
Kyotofu: db "きょうとふ@" ; Kyotofu
Kumamoto: db "くまもとけん@" ; Kumamoto
Gunma: db "ぐんまけん@" ; Gunma
Kochi: db "こうちけん@" ; Kochi
Saitama: db "さいたまけん@" ; Saitama
Saga: db "さがけん@" ; Saga
Shiga: db "しがけん@" ; Shiga
Shizuoka: db "しずおかけん@" ; Shizuoka
Shimane: db "しまねけん@" ; Shimane
Chiba: db "ちばけん@" ; Chiba
Tokyo: db "とうきょうと@" ; Tokyo
Tokushima: db "とくしまけん@" ; Tokushima
Tochigi: db "とちぎけん@" ; Tochigi
Tottori: db "とっとりけん@" ; Tottori
Toyama: db "とやまけん@" ; Toyama
Nagasaki: db "ながさきけん@" ; Nagasaki
Nagano: db "ながのけん@" ; Nagano
Naraken: db "ならけん@" ; Naraken
Niigata: db "にいがたけん@" ; Niigata
Hyogo: db "ひょうごけん@" ; Hyogo
Hiroshima: db "ひろしまけん@" ; Hiroshima
Fukui: db "ふくいけん@" ; Fukui
Fukuoka: db "ふくおかけん@" ; Fukuoka
Fukushima: db "ふくしまけん@" ; Fukushima
Hokkaido: db "ほっかいどう@" ; Hokkaido
Mie: db "みえけん@" ; Mie
Miyagi: db "みやぎけん@" ; Miyagi
Miyazaki: db "みやざきけん@" ; Miyazaki
Yamagata: db "やまがたけん@" ; Yamagata
Yamaguchi: db "やまぐちけん@" ; Yamaguchi
Yamanashi: db "やまなしけん@" ; Yamanashi
Wakayama: db "わかやまけん@" ; Wakayama
Function48689:
ld c, 7
call DelayFrames
ld b, CRYSTAL_CGB_MOBILE_1
call GetCrystalCGBLayout
call ClearBGPalettes
hlcoord 0, 0
ld b, 4
ld c, SCREEN_WIDTH
call ClearBox
hlcoord 0, 2
ld a, $c
ld [hl], a
ld bc, SCREEN_WIDTH - 1
add hl, bc
ld [hl], a
ld de, MobileProfileString
hlcoord 1, 2
call PlaceString
hlcoord 0, 4
ld b, $8
ld c, $12
call Function48cdc
ret
Function486bf:
ld hl, w2DMenuCursorInitY
ld a, [wd002]
bit 6, a
jr nz, .start_at_6
ld a, 4
ld [hli], a
jr .got_init_y
.start_at_6
ld a, 6
ld [hli], a
.got_init_y
ld a, 1
ld [hli], a ; init x
ld a, [wd002]
bit 6, a
jr nz, .check_wd479
call Function48725
ld a, 4
jr nc, .got_num_rows_1
ld a, 5
.got_num_rows_1
ld [hli], a
jr .got_num_rows_2
.check_wd479
ld a, [wd479]
bit 1, a
jr nz, .four_rows
call Function48725
jr c, .four_rows
ld a, 3
ld [hli], a
jr .got_num_rows_2
.four_rows
ld a, 4
ld [hli], a
.got_num_rows_2
ld a, 1
ld [hli], a ; num cols
ld [hl], 0 ; flags 1
set 5, [hl]
inc hl
xor a
ld [hli], a ; flags 2
ld a, $20
ld [hli], a ; cursor offsets
ld a, A_BUTTON
add D_UP
add D_DOWN
push af
ld a, [wd002]
bit 6, a
jr z, .got_joypad_mask
pop af
add B_BUTTON
push af
.got_joypad_mask
pop af
ld [hli], a
ld a, $1
ld [hli], a ; cursor y
ld [hli], a ; cursor x
xor a
ld [hli], a ; off char
ld [hli], a ; cursor tile
ld [hli], a ; cursor tile + 1
ret
Function48725:
; ld a, [wd003]
; and $f
; cp $f
; jr nz, .clear_carry
; scf
; ret
; .clear_carry
; and a
; ret
ld a, [wd003]
bit 0, a
jr z, .clear_carry
bit 1, a
jr z, .clear_carry
bit 2, a
jr z, .clear_carry
bit 3, a
jr z, .clear_carry
scf
ret
.clear_carry
and a
ret
Function4873c:
ld hl, w2DMenuCursorInitY
ld a, 4
ld [hli], a
ld a, 12
ld [hli], a ; init x
ld a, 2
ld [hli], a ; num rows
ld a, 1
ld [hli], a ; num cols
ld [hl], 0 ; flags 1
set 5, [hl]
inc hl
xor a
ld [hli], a ; flags 2
ln a, 2, 0
ld [hli], a ; cursor offsets
ld a, A_BUTTON
add B_BUTTON
ld [hli], a ; joypad filter
; ld a, [wPlayerGender]
; xor 1 << PLAYERGENDER_FEMALE_F
; inc a
ld a, [wPlayerGender]
and a
jr z, .male
ld a, 2
jr .okay_gender
.male
ld a, 1
.okay_gender
ld [hli], a ; cursor y
ld a, $1
ld [hli], a ; cursor x
xor a
ld [hli], a ; off char
ld [hli], a ; cursor tile
ld [hli], a ; cursor tile + 1
ret
Function4876f:
call Function48283
hlcoord 1, 16
ld de, MobileDesc_Age
call PlaceString
ld hl, MenuHeader_0x48509
call LoadMenuHeader
ldh a, [hInMenu]
push af
ld a, $1
ldh [hInMenu], a
hlcoord 10, 5
ld b, $1
ld c, $8
call Function48cdc
call WaitBGMap
ld a, [wd473]
and a
jr z, .asm_487ab
cp $64
jr z, .asm_487b2
hlcoord 12, 5
ld [hl], $10
hlcoord 12, 7
ld [hl], $11
jr .asm_487b7
.asm_487ab
hlcoord 12, 5
ld [hl], $10
jr .asm_487b7
.asm_487b2
hlcoord 12, 7
ld [hl], $11
.asm_487b7
hlcoord 11, 6
call Function487ec
ld c, 10
call DelayFrames
ld a, [wd473]
push af
.asm_487c6
call JoyTextDelay
call Function4880e
jr nc, .asm_487c6
ld a, $1
call MenuClickSound
pop bc
jr nz, .asm_487da
ld a, b
ld [wd473], a
.asm_487da
ld a, [wd473]
call ExitMenu
hlcoord 11, 6
call Function487ec
pop af
ldh [hInMenu], a
jp Function4840c
Function487ec:
push hl
ld de, wd473
call Function487ff
pop hl
rept 4
inc hl
endr
ld de, String_4880d
call PlaceString
ret
Function487ff:
push hl
ld a, " "
ld [hli], a
ld [hl], a
pop hl
ld b, PRINTNUM_LEADINGZEROS | 1
ld c, 3
call PrintNum
ret
String_4880d:
db "@"
Function4880e:
ldh a, [hJoyPressed]
and A_BUTTON
jp nz, Function488b9
ldh a, [hJoyPressed]
and B_BUTTON
jp nz, Function488b4
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_48843
ld a, [hl]
and D_DOWN
jr nz, .asm_48838
ld a, [hl]
and D_LEFT
jr nz, .asm_4884f
ld a, [hl]
and D_RIGHT
jr nz, .asm_4885f
call DelayFrame
and a
ret
.asm_48838
ld hl, wd473
ld a, [hl]
and a
jr z, .asm_48840
dec a
.asm_48840
ld [hl], a
jr .asm_4886f
.asm_48843
ld hl, wd473
ld a, [hl]
cp $64
jr nc, .asm_4884c
inc a
.asm_4884c
ld [hl], a
jr .asm_4886f
.asm_4884f
ld a, [wd473]
cp $5b
jr c, .asm_48858
ld a, $5a
.asm_48858
add $a
ld [wd473], a
jr .asm_4886f
.asm_4885f
ld a, [wd473]
cp $a
jr nc, .asm_48868
ld a, $a
.asm_48868
sub $a
ld [wd473], a
jr .asm_4886f
.asm_4886f
ld a, [wd473]
and a
jr z, .asm_48887
cp $64
jr z, .asm_48898
jr z, .asm_488a7
hlcoord 12, 5
ld [hl], $10
hlcoord 12, 7
ld [hl], $11
jr .asm_488a7
.asm_48887
hlcoord 10, 5
ld b, $1
ld c, $8
call Function48cdc
hlcoord 12, 5
ld [hl], $10
jr .asm_488a7
.asm_48898
hlcoord 10, 5
ld b, $1
ld c, $8
call Function48cdc
hlcoord 12, 7
ld [hl], $11
.asm_488a7
hlcoord 11, 6
call Function487ec
call WaitBGMap
ld a, $1
and a
ret
Function488b4:
ld a, $0
and a
scf
ret
Function488b9:
ld a, [wd003]
set 1, a
ld [wd003], a
scf
ret
MobileUpArrowGFX:
INCBIN "gfx/mobile/up_arrow.1bpp"
MobileDownArrowGFX:
INCBIN "gfx/mobile/down_arrow.1bpp"
Function488d3:
call Function48283
hlcoord 1, 16
ld de, MobileDesc_ZipCode
call PlaceString
call Function48a3a
jp c, Function4840c
ld hl, MenuHeader_0x4850e
call LoadMenuHeader
ldh a, [hInMenu]
push af
ld a, $1
ldh [hInMenu], a
hlcoord 10, 9
ld b, $1
ld c, $8
call Function48cdc
ld a, [wd475]
and $f
ld d, $0
hlcoord 11, 10
call Function489ea
call WaitBGMap
ld a, [wd475]
ld b, a
ld a, [wd476]
ld c, a
ld a, [wd477]
ld d, a
ld a, [wd478]
ld e, a
push de
push bc
ld d, $0
ld b, $0
asm_48922:
push bc
call JoyTextDelay
ldh a, [hJoyDown]
and a
jp z, Function4896e
bit 0, a
jp nz, Function4896e
bit 1, a
jp nz, Function4896e
ld a, [wd002]
and %11001111
res 7, a
ld [wd002], a
pop bc
inc b
ld a, b
cp $5
push bc
jr c, .asm_4894c
pop bc
ld b, $4
push bc
.asm_4894c
pop bc
push bc
ld a, b
cp $4
jr nz, asm_48972
ld c, 10
call DelayFrames
jr asm_48972
Function4895a: ; unreferenced
ldh a, [hJoyPressed]
and a
jr z, .asm_48965
pop bc
ld b, $1
push bc
jr asm_48972
.asm_48965
ldh a, [hJoyLast]
and a
jr z, asm_48972
pop bc
ld b, $1
push bc
Function4896e:
pop bc
ld b, $0
push bc
asm_48972:
call Function48ab5
push af
cp $f0
jr z, .asm_48994
cp $f
jr nz, .asm_48988
ld a, [wd002]
set 7, a
and $cf
ld [wd002], a
.asm_48988
hlcoord 11, 10
ld b, $0
ld c, d
add hl, bc
ld b, $3
call Function48c11
.asm_48994
call WaitBGMap
pop af
pop bc
jr nc, asm_48922
jr nz, .asm_489b1
pop bc
ld a, b
ld [wd475], a
ld a, c
ld [wd476], a
pop bc
ld a, b
ld [wd477], a
ld a, c
ld [wd478], a
jr .asm_489c5
.asm_489b1
push af
ld a, [wd479]
set 0, a
ld [wd479], a
ld a, [wd003]
set 3, a
ld [wd003], a
pop af
pop bc
pop bc
.asm_489c5
push af
push bc
push de
push hl
ld a, $1
call MenuClickSound
pop hl
pop de
pop bc
pop af
call ExitMenu
hlcoord 11, 10
call Function489ea
hlcoord 11, 9
lb bc, 1, 8
call ClearBox
pop af
ldh [hInMenu], a
jp Function4840c
Function489ea:
push de
ld a, [wd475]
and $f
call Mobile12_Bin2Dec
ld a, [wd476]
and $f0
swap a
inc hl
call Mobile12_Bin2Dec
ld a, [wd476]
and $f
inc hl
call Mobile12_Bin2Dec
inc hl
ld de, String_48a38
call PlaceString
ld a, [wd477]
and $f0
swap a
inc hl
call Mobile12_Bin2Dec
ld a, [wd477]
and $f
inc hl
call Mobile12_Bin2Dec
ld a, [wd478]
and $f0
swap a
inc hl
call Mobile12_Bin2Dec
ld a, [wd478]
and $f
inc hl
call Mobile12_Bin2Dec
pop de
ret
String_48a38:
db "-@"
Function48a3a:
ld hl, MenuHeader_0x48a9c
call LoadMenuHeader
call Function4873c
ld a, $a
ld [w2DMenuCursorInitY], a
ld a, $b
ld [w2DMenuCursorInitX], a
ld a, $1
ld [wMenuCursorY], a
hlcoord 10, 8
ld b, $4
ld c, $8
call Function48cdc
hlcoord 12, 10
ld de, String_48aa1
call PlaceString
call StaticMenuJoypad
push af
call PlayClickSFX
call ExitMenu
pop af
bit 1, a
jp nz, Function48a9a
ld a, [wMenuCursorY]
cp $1
jr z, .asm_48a98
ld a, [wd003]
set 3, a
ld [wd003], a
ld a, [wd479]
res 0, a
ld [wd479], a
xor a
ld bc, $4
ld hl, wd475
call ByteFill
jr Function48a9a
.asm_48a98
and a
ret
Function48a9a:
scf
ret
MenuHeader_0x48a9c:
db MENU_BACKUP_TILES ; flags
menu_coords 10, 8, SCREEN_WIDTH - 1, 13
String_48aa1:
db "Tell Now"
next "Tell Later@"
Function48ab5:
ldh a, [hJoyPressed]
and A_BUTTON
jp nz, Function48c0f
ldh a, [hJoyPressed]
and B_BUTTON
jp nz, Function48c0d
ld a, d
and a
jr z, .asm_48adf
cp $1
jr z, .asm_48ae7
cp $2
jr z, .asm_48af1
cp $3
jr z, .asm_48af9
cp $4
jr z, .asm_48b03
cp $5
jr z, .asm_48b0b
cp $6
jr .asm_48b15
.asm_48adf
ld hl, wd475
ld a, [hl]
and $f
jr .asm_48b1d
.asm_48ae7
ld hl, wd476
ld a, [hl]
swap a
or $f0
jr .asm_48b1d
.asm_48af1
ld hl, wd476
ld a, [hl]
and $f
jr .asm_48b1d
.asm_48af9
ld hl, wd477
ld a, [hl]
swap a
or $f0
jr .asm_48b1d
.asm_48b03
ld hl, wd477
ld a, [hl]
and $f
jr .asm_48b1d
.asm_48b0b
ld hl, wd478
ld a, [hl]
swap a
or $f0
jr .asm_48b1d
.asm_48b15
ld hl, wd478
ld a, [hl]
and $f
jr .asm_48b1d
.asm_48b1d
push hl
push af
ld e, $0
hlcoord 11, 10
ld a, d
.asm_48b25
and a
jr z, .asm_48b2c
inc e
dec a
jr .asm_48b25
.asm_48b2c
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_48b8d
ld a, [hl]
and D_DOWN
jr nz, .asm_48b55
ld a, [hl]
and D_LEFT
jp nz, Function48bd7
ld a, [hl]
and D_RIGHT
jr nz, .asm_48b9d
hlcoord 11, 10
call Function489ea
ld a, [wd002]
bit 7, a
jr nz, .asm_48b51
.asm_48b51
pop bc
pop bc
and a
ret
.asm_48b55
pop af
ld b, a
and $f
and a
ld a, b
jr nz, .asm_48b61
and $f0
add $a
.asm_48b61
dec a
.asm_48b62
push de
push af
hlcoord 10, 9
ld b, $1
ld c, $8
call Function48cdc
pop af
pop de
hlcoord 11, 10
ld b, a
ld a, d
cp $3
jr c, .asm_48b7a
inc hl
.asm_48b7a
ld a, b
pop hl
bit 7, a
jr z, .asm_48b85
call Function48c4d
jr .asm_48b88
.asm_48b85
call Function48c5a
.asm_48b88
ld a, $f0
jp Function48c00
.asm_48b8d
pop af
ld b, a
and $f
cp $9
ld a, b
jr c, .asm_48b9a
and $f0
add $ff
.asm_48b9a
inc a
jr .asm_48b62
.asm_48b9d
push de
hlcoord 10, 9
ld b, $1
ld c, $8
call Function48cdc
pop de
ld a, d
cp $6
jr nc, .asm_48baf
inc d
.asm_48baf
pop af
pop hl
ld b, a
ld a, d
cp $6
ld a, b
jr z, .asm_48bc4
bit 7, a
jr nz, .asm_48bc4
inc hl
ld a, [hl]
swap a
and $f
jr asm_48bc7
.asm_48bc4
ld a, [hl]
and $f
asm_48bc7:
hlcoord 11, 10
push af
ld a, d
cp $3
pop bc
ld a, b
jr c, .asm_48bd3
inc hl
.asm_48bd3
ld a, $f
jr Function48c00
Function48bd7:
push de
hlcoord 10, 9
ld b, $1
ld c, $8
call Function48cdc
pop de
ld a, d
and a
pop af
pop hl
ld b, a
ld a, d
and a
ld a, b
jr z, .asm_48bf3
bit 7, a
jr z, .asm_48bf8
dec d
dec hl
.asm_48bf3
ld a, [hl]
and $f
jr asm_48bc7
.asm_48bf8
dec d
ld a, [hl]
swap a
and $f
jr asm_48bc7
Function48c00:
push af
hlcoord 11, 10
call Function489ea
ld a, $1
and a
pop bc
ld a, b
ret
Function48c0d:
xor a
and a
Function48c0f:
scf
ret
Function48c11:
ld a, [wd002]
bit 7, a
jr z, .asm_48c20
ld a, d
cp $3
jr c, .asm_48c1e
inc hl
.asm_48c1e
ld [hl], $7f
.asm_48c20
ld a, [wd002]
swap a
and $3
inc a
cp b
jr nz, .asm_48c40
ld a, [wd002]
bit 7, a
jr z, .asm_48c3a
res 7, a
ld [wd002], a
xor a
jr .asm_48c40
.asm_48c3a
set 7, a
ld [wd002], a
xor a
.asm_48c40
swap a
ld b, a
ld a, [wd002]
and $cf
or b
ld [wd002], a
ret
Function48c4d:
swap a
and $f0
push af
ld a, [hl]
and $f
ld [hl], a
pop af
or [hl]
ld [hl], a
ret
Function48c5a:
push af
ld a, [hl]
and $f0
ld [hl], a
pop af
or [hl]
ld [hl], a
ret
Function48c63:
ld a, "@"
ld [de], a
ld a, c
cp $30
jr nc, .asm_48c8c
and a
jr z, .asm_48c8c
dec c
push de
ld h, d
ld l, e
ld a, "@"
ld b, 7
.asm_48c76
ld [hli], a
dec b
jr nz, .asm_48c76
ld hl, Prefectures
ld a, c
call GetNthString
.asm_48c81
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
cp "@"
jr nz, .asm_48c81
and a
pop de
ret
.asm_48c8c
scf
ret
Function48c8e: ; unreferenced
ld hl, wd019 + $11
ld d, h
ld e, l
farcall Function48c63
hlcoord 10, 7
call PlaceString
call WaitBGMap
ret
Function48ca3: ; unreferenced
push af
push bc
push de
push hl
ld b, 0
ld c, 0
ld d, 0
.asm_48cad
cp 100
jr c, .asm_48cb6
sub 100
inc b
jr .asm_48cad
.asm_48cb6
cp 10
jr c, .asm_48cbf
sub 10
inc c
jr .asm_48cb6
.asm_48cbf
cp 1
jr c, .asm_48cc7
dec a
inc d
jr .asm_48cbf
.asm_48cc7
ld a, b
call Mobile12_Bin2Dec
inc hl
ld a, c
call Mobile12_Bin2Dec
inc hl
ld a, d
call Mobile12_Bin2Dec
pop hl
pop de
pop bc
pop af
ret
Function48cda:
ld h, d
ld l, e
Function48cdc:
push bc
push hl
call Function48cfd
pop hl
pop bc
ld de, wAttrmap - wTilemap
add hl, de
inc b
inc b
inc c
inc c
ld a, $0
.asm_48ced
push bc
push hl
.asm_48cef
ld [hli], a
dec c
jr nz, .asm_48cef
pop hl
ld de, $14
add hl, de
pop bc
dec b
jr nz, .asm_48ced
ret
Function48cfd:
push hl
ld a, $4
ld [hli], a
inc a
call Function48d2a
inc a
ld [hl], a
pop hl
ld de, $14
add hl, de
.asm_48d0c
push hl
ld a, $7
ld [hli], a
ld a, $7f
call Function48d2a
ld [hl], $8
pop hl
ld de, $14
add hl, de
dec b
jr nz, .asm_48d0c
ld a, $9
ld [hli], a
ld a, $a
call Function48d2a
ld [hl], $b
ret
Function48d2a:
ld d, c
.asm_48d2b
ld [hli], a
dec d
jr nz, .asm_48d2b
ret
Function48d30:
ld hl, wd475
call Function48d4a
ld hl, wd477
call Function48d4a
ret
Function48d3d:
ld hl, wd475
call Function48d94
ld hl, wd477
call Function48d94
ret
Function48d4a:
inc hl
ld a, [hl]
ld b, a
and $f
ld c, a
srl b
srl b
srl b
srl b
push bc
ld c, 10
ld a, b
call SimpleMultiply
pop bc
add c
ld [hld], a
xor a
ldh [hMultiplicand + 0], a
ldh [hMultiplicand + 1], a
ld a, [hl]
srl a
srl a
srl a
srl a
ld c, 10
call SimpleMultiply
ld b, a
ld a, [hli]
and $f
add b
ldh [hMultiplicand + 2], a
ld a, 100
ldh [hMultiplier], a
call Multiply
ldh a, [hProduct + 2]
ld b, a
ldh a, [hProduct + 3]
ld c, a
ld e, [hl]
add e
ld c, a
ld a, b
adc 0
ld b, a
ld a, c
ld [hld], a
ld [hl], b
ret
Function48d94:
xor a
ldh [hDividend + 0], a
ldh [hDividend + 1], a
ld a, [hli]
ldh [hDividend + 0], a
ld a, [hl]
ldh [hDividend + 1], a
ld a, 100
ldh [hDivisor], a
ld b, 2
call Divide
ldh a, [hRemainder]
ld c, 10
call SimpleDivide
sla b
sla b
sla b
sla b
or b
ld [hld], a
ldh a, [hQuotient + 3]
ld c, 10
call SimpleDivide
sla b
sla b
sla b
sla b
or b
ld [hl], a
ret