summaryrefslogtreecommitdiff
path: root/mobile/mobile_12.asm
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/mobile_12.asm')
-rwxr-xr-xmobile/mobile_12.asm1845
1 files changed, 1845 insertions, 0 deletions
diff --git a/mobile/mobile_12.asm b/mobile/mobile_12.asm
new file mode 100755
index 000000000..8b21bb6a6
--- /dev/null
+++ b/mobile/mobile_12.asm
@@ -0,0 +1,1845 @@
+InitMobileProfile: ; 4802f (12:402f)
+ 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 [MusicFade], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
+ ld [MusicFadeID], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
+ ld [MusicFadeID + 1], a
+ ld c, 20
+ call DelayFrames
+ ld b, $1
+ call GetMysteryGift_MobileAdapterLayout
+ 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, [PlayerGender]
+ 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: ; 48157 (12:4157)
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+asm_4815f: ; 4815f (12:415f)
+ 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: ; 48187 (12:4187)
+ 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
+; 48202 (12:4202)
+
+.String_TellLater: ; 48202
+ db "Tell Later@"
+; 4820d
+
+Function4820d: ; 4820d (12:420d)
+ 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
+; 48241 (12:4241)
+
+ 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: ; 48272 (12:4272)
+ jp Function4840c
+; 48275 (12:4275)
+
+MobileString_PersonalInfo: ; 48275
+ db "Personal Info@"
+; 48283
+
+Function48283: ; 48283 (12:4283)
+ lb bc, 2, 18
+ hlcoord 1, 15
+ call ClearBox
+ ret
+
+asm_4828d: ; 4828d (12:428d)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Gender
+ call PlaceString
+ ld hl, MenuDataHeader_0x484f1
+ call LoadMenuDataHeader
+ 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, [PlayerGender]
+ 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
+ ld [PlayerGender], a
+ jr .asm_482f1
+.asm_482ed
+ xor a
+ ld [PlayerGender], 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: ; 48304 (12:4304)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Address
+ call PlaceString
+ ld hl, MenuDataHeader_0x48504
+ call LoadMenuDataHeader
+ ld hl, MenuDataHeader_0x48513
+ call LoadMenuDataHeader
+ 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
+ callba 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
+ ld a, [hJoyPressed]
+ bit 0, a
+ jr z, .asm_48377
+ call Function483bb
+ ld a, [wd003]
+ set 2, a
+ ld [wd003], a
+.asm_48377
+ call Function48187
+ callba Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ jp Function4840c
+
+Function48383: ; 48383 (12:4383)
+ 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: ; 483bb (12:43bb)
+ 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
+; 483e8 (12:43e8)
+
+Function483e8: ; 483e8
+ push de
+ ld hl, Prefectures
+ ld a, [MenuSelection]
+ 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
+; 4840c
+
+Function4840c: ; 4840c (12:440c)
+ 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: ; 48444 (12:4444)
+ 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
+; 4845d (12:445d)
+
+.DigitStrings: ; 4845d
+; 4845d
+ db "0@"
+ db "1@"
+ db "2@"
+ db "3@"
+ db "4@"
+ db "5@"
+ db "6@"
+ db "7@"
+ db "8@"
+ db "9@"
+; 48471
+
+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?@"
+; 484f1
+
+MenuDataHeader_0x484f1: ; 0x484f1
+ db $40 ; flags
+ db 02, 11 ; start coords
+ db 07, 19 ; end coords
+ dw MenuData2_0x484f9
+ db 1 ; default option
+; 0x484f9
+
+MenuData2_0x484f9: ; 0x484f9
+ db $a0 ; flags
+ db 2 ; items
+Strings_484fb:
+String_484fb: db "Boy@"
+String_484ff: db "Girl@"
+; 0x48504
+
+MenuDataHeader_0x48504: ; 0x48504
+ db $40 ; flags
+ db 00, 10 ; start coords
+ db 17, 19 ; end coords
+
+MenuDataHeader_0x48509: ; 0x48509
+ db $40 ; flags
+ db 05, 10 ; start coords
+ db 07, 19 ; end coords
+
+MenuDataHeader_0x4850e: ; 0x4850e
+ db $40 ; flags
+ db 09, 10 ; start coords
+ db 11, 19 ; end coords
+
+MenuDataHeader_0x48513: ; 0x48513
+ db $40 ; flags
+ db 01, 11 ; start coords
+ db 12, 18 ; end coords
+ dw MenuData2_0x4851b
+ db 1 ; default option
+; 0x4851b
+
+MenuData2_0x4851b: ; 0x4851b
+ db $1d ; flags
+ db 6 ; items
+
+Unknown_4851d: ; 4851d
+ db $00, $01, $12, $2b, $45, $12, $e8, $43, $00, $00, $00, $00, $00, $00, $2e, $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f, $10, $11, $12, $13, $14, $15, $16, $17, $18
+ db $19, $1a, $1b, $1c, $1d, $1e, $1f, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c
+ db $2d, $ff
+
+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
+; 48689
+
+Function48689: ; 48689 (12:4689)
+ ld c, 7
+ call DelayFrames
+ ld b, $1
+ call GetMysteryGift_MobileAdapterLayout
+ 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: ; 486bf (12:46bf)
+ 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: ; 48725 (12:4725)
+; 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: ; 4873c (12:473c)
+ 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, [PlayerGender]
+ ; xor 1
+ ; inc a
+ ld a, [PlayerGender]
+ 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: ; 4876f (12:476f)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Age
+ call PlaceString
+ ld hl, MenuDataHeader_0x48509
+ call LoadMenuDataHeader
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [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
+ ld [hInMenu], a
+ jp Function4840c
+
+Function487ec: ; 487ec (12:47ec)
+ push hl
+ ld de, wd473
+ call Function487ff
+ pop hl
+rept 4
+ inc hl
+endr
+ ld de, String_4880d
+ call PlaceString
+ ret
+
+Function487ff: ; 487ff (12:47ff)
+ push hl
+ ld a, " "
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ ld b, PRINTNUM_LEADINGZEROS | 1
+ ld c, 3
+ call PrintNum
+ ret
+; 4880d (12:480d)
+
+String_4880d: ; 4880d
+ db "@"
+; 4880e
+
+Function4880e: ; 4880e (12:480e)
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, Function488b9
+ ld 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: ; 488b4 (12:48b4)
+ ld a, $0
+ and a
+ scf
+ ret
+
+Function488b9: ; 488b9 (12:48b9)
+ ld a, [wd003]
+ set 1, a
+ ld [wd003], a
+ scf
+ ret
+; 488c3 (12:48c3)
+
+MobileUpArrowGFX: ; 488c3
+INCBIN "gfx/mobile/up_arrow.2bpp"
+
+MobileDownArrowGFX: ; 488cb
+INCBIN "gfx/mobile/down_arrow.2bpp"
+
+Function488d3: ; 488d3 (12:48d3)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_ZipCode
+ call PlaceString
+ call Function48a3a
+ jp c, Function4840c
+ ld hl, MenuDataHeader_0x4850e
+ call LoadMenuDataHeader
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [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: ; 48922 (12:4922)
+ push bc
+ call JoyTextDelay
+ ld 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
+; 4895a (12:495a)
+
+Function4895a: ; 4895a
+ ld a, [hJoyPressed]
+ and a
+ jr z, .asm_48965
+ pop bc
+ ld b, $1
+ push bc
+ jr asm_48972
+
+.asm_48965
+ ld a, [hJoyLast]
+ and a
+ jr z, asm_48972
+
+ pop bc
+ ld b, $1
+ push bc
+
+Function4896e: ; 4896e (12:496e)
+ pop bc
+ ld b, $0
+ push bc
+
+asm_48972: ; 48972 (12:4972)
+ 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
+ ld [hInMenu], a
+ jp Function4840c
+
+Function489ea: ; 489ea (12:49ea)
+ 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
+; 48a38 (12:4a38)
+
+String_48a38: ; 48a38
+ db "-@"
+; 48a3a
+
+Function48a3a: ; 48a3a (12:4a3a)
+ ld hl, MenuDataHeader_0x48a9c
+ call LoadMenuDataHeader
+ 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: ; 48a9a (12:4a9a)
+ scf
+ ret
+; 48a9c (12:4a9c)
+
+MenuDataHeader_0x48a9c: ; 0x48a9c
+ db $40 ; flags
+ db 08, 10 ; start coords
+ db 13, 19 ; end coord
+
+String_48aa1: ; 48aa1
+ db "Tell Now"
+ next "Tell Later@"
+; 48ab5
+
+
+Function48ab5: ; 48ab5 (12:4ab5)
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, Function48c0f
+ ld 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: ; 48bc7 (12:4bc7)
+ 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: ; 48bd7 (12:4bd7)
+ 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: ; 48c00 (12:4c00)
+ push af
+ hlcoord 11, 10
+ call Function489ea
+ ld a, $1
+ and a
+ pop bc
+ ld a, b
+ ret
+
+Function48c0d: ; 48c0d (12:4c0d)
+ xor a
+ and a
+
+Function48c0f: ; 48c0f (12:4c0f)
+ scf
+ ret
+
+Function48c11: ; 48c11 (12:4c11)
+ 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: ; 48c4d (12:4c4d)
+ swap a
+ and $f0
+ push af
+ ld a, [hl]
+ and $f
+ ld [hl], a
+ pop af
+ or [hl]
+ ld [hl], a
+ ret
+
+Function48c5a: ; 48c5a (12:4c5a)
+ push af
+ ld a, [hl]
+ and $f0
+ ld [hl], a
+ pop af
+ or [hl]
+ ld [hl], a
+ ret
+
+Function48c63: ; 48c63
+ 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
+; 48c8e
+
+Function48c8e: ; 48c8e
+; unreferenced
+ ld hl, $d02a
+ ld d, h
+ ld e, l
+ callba Function48c63
+ hlcoord 10, 7
+ call PlaceString
+ call WaitBGMap
+ ret
+; 48ca3
+
+Function48ca3: ; 48ca3
+ 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
+; 48cda
+
+Function48cda: ; 48cda (12:4cda)
+ ld h, d
+ ld l, e
+
+Function48cdc: ; 48cdc (12:4cdc)
+ push bc
+ push hl
+ call Function48cfd
+ pop hl
+ pop bc
+ ld de, AttrMap - TileMap
+ 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: ; 48cfd (12:4cfd)
+ 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: ; 48d2a (12:4d2a)
+ ld d, c
+.asm_48d2b
+ ld [hli], a
+ dec d
+ jr nz, .asm_48d2b
+ ret
+
+Function48d30: ; 48d30 (12:4d30)
+ ld hl, wd475
+ call Function48d4a
+ ld hl, wd477
+ call Function48d4a
+ ret
+
+Function48d3d: ; 48d3d (12:4d3d)
+ ld hl, wd475
+ call Function48d94
+ ld hl, wd477
+ call Function48d94
+ ret
+
+Function48d4a: ; 48d4a (12:4d4a)
+ 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
+ ld [hMultiplicand + 0], a
+ ld [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
+ ld [hMultiplicand + 2], a
+ ld a, 100
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hProduct + 2]
+ ld b, a
+ ld 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: ; 48d94 (12:4d94)
+ xor a
+ ld [hDividend + 0], a
+ ld [hDividend + 1], a
+ ld a, [hli]
+ ld [hDividend + 0], a
+ ld a, [hl]
+ ld [hDividend + 1], a
+ ld a, 100
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+ ld a, [hRemainder]
+ ld c, 10
+ call SimpleDivide
+ sla b
+ sla b
+ sla b
+ sla b
+ or b
+ ld [hld], a
+ ld a, [hQuotient + 2]
+ ld c, 10
+ call SimpleDivide
+ sla b
+ sla b
+ sla b
+ sla b
+ or b
+ ld [hl], a
+ ret