diff options
Diffstat (limited to 'mobile/mobile_12.asm')
-rwxr-xr-x | mobile/mobile_12.asm | 1845 |
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 |