diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-16 21:46:36 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-11-16 21:46:36 -0500 |
commit | 042fc4bfe5f55df87712d33b6f832a591b136f1a (patch) | |
tree | 6709cb7a5b303aadaa094ce216c86e7f5f117ba0 /engine | |
parent | ba871547eda6e17e988f4e1dfa7b899050205d5e (diff) |
Split up some more banks in main.asm
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/money.asm | 209 | ||||
-rwxr-xr-x | engine/pokecenter_pc.asm | 705 | ||||
-rwxr-xr-x | engine/timeset.asm | 771 |
3 files changed, 1685 insertions, 0 deletions
diff --git a/engine/money.asm b/engine/money.asm new file mode 100755 index 000000000..5935a23e7 --- /dev/null +++ b/engine/money.asm @@ -0,0 +1,209 @@ +GiveMoney:: ; 15fd7 + ld a, $3 + call AddMoney + ld bc, MaxMoney + ld a, $3 + call CompareMoney + jr z, .asm_15ff5 + jr c, .asm_15ff5 + ld hl, MaxMoney + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + scf + ret + +.asm_15ff5 + and a + ret +; 15ff7 + +MaxMoney: ; 15ff7 + dt 999999 +; 15ffa + + +TakeMoney:: ; 15ffa + ld a, 3 + call SubtractMoney + jr nc, .asm_16009 + xor a + ld [de], a + inc de + ld [de], a + inc de + ld [de], a + scf + ret + +.asm_16009 + and a + ret +; 1600b + +CompareMoney:: ; 1600b + ld a, $3 +CompareFunds: ; 1600d + push hl + push de + push bc + ld h, b + ld l, c + ld c, $0 + ld b, a +.loop1 + dec a + jr z, .done + inc de + inc hl + jr .loop1 + +.done + and a +.loop2 + ld a, [de] + sbc [hl] + jr z, .okay + inc c + +.okay + dec de + dec hl + dec b + jr nz, .loop2 + jr c, .set_carry + ld a, c + and a + jr .skip_carry + +.set_carry + ld a, $1 + and a + scf + +.skip_carry + pop bc + pop de + pop hl + ret +; 16035 + +SubtractMoney: ; 16035 + ld a, 3 +SubtractFunds: ; 16037 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a + ld c, 0 +.loop + dec a + jr z, .done + inc de + inc hl + jr .loop + +.done + and a +.loop2 + ld a, [de] + sbc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .loop2 + pop bc + pop de + pop hl + ret +; 16053 + +AddMoney: ; 16053 + ld a, $3 +AddFunds: ; 16055 + push hl + push de + push bc + ld h, b + ld l, c + ld b, a +.loop1 + dec a + jr z, .done + inc de + inc hl + jr .loop1 + +.done + and a +.loop2 + ld a, [de] + adc [hl] + ld [de], a + dec de + dec hl + dec b + jr nz, .loop2 + pop bc + pop de + pop hl + ret +; 1606f + +GiveCoins:: ; 1606f + ld a, 2 + ld de, Coins + call AddFunds + ld a, 2 + ld bc, .maxcoins + call CompareFunds + jr c, .not_maxed + ld hl, .maxcoins + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + scf + ret + +.not_maxed + and a + ret +; 1608d + +.maxcoins: ; 1608d + bigdw 9999 +; 1608f + + +TakeCoins:: ; 1608f + ld a, 2 + ld de, Coins + call SubtractFunds + jr nc, .asm_1609f + xor a + ld [de], a + inc de + ld [de], a + scf + ret + +.asm_1609f + and a + ret +; 160a1 + +CheckCoins:: ; 160a1 + ld a, $2 + ld de, Coins + jp CompareFunds +; 160a9 diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm new file mode 100755 index 000000000..ee37edca5 --- /dev/null +++ b/engine/pokecenter_pc.asm @@ -0,0 +1,705 @@ +PokemonCenterPC: ; 1559a + call PC_CheckPartyForPokemon + ret c + call PC_PlayBootSound + ld hl, UnknownText_0x15a27 + call PC_DisplayText + ld hl, UnknownText_0x15a2c + call PC_DisplayTextWaitMenu + ld hl, .TopMenu + call LoadMenuDataHeader +.loop + xor a + ld [hBGMapMode], a + call .ChooseWhichPCListToUse + ld [wcf76], a + call DoNthMenu + jr c, .shutdown + ld a, [MenuSelection] + ld hl, .JumpTable + call MenuJumptable + jr nc, .loop + +.shutdown + call PC_PlayShutdownSound + call ExitMenu + call WriteBackup + ret +; 155d6 + +.TopMenu: ; 0x155d6 + db $48 ; flags + db 00, 00 ; start coords + db 12, 15 ; end coords + dw .MenuData2 + db 1 ; default option +; 0x155de + +.MenuData2: ; 0x155de + db $a0 ; flags + db 0 ; items + dw .WhichPC + dw PlaceNthMenuStrings + dw .JumpTable +; 0x155e6 + +.JumpTable: ; 155e6 + dw PlayersPC, .String_PlayersPC + dw BillsPC, .String_BillsPC + dw OaksPC, .String_OaksPC + dw HallOfFamePC, .String_HallOfFame + dw TurnOffPC, .String_TurnOff +; 155fa + +.String_PlayersPC: db "<PLAYER>'s PC@" +.String_BillsPC: db "BILL's PC@" +.String_OaksPC: db "PROF.OAK's PC@" +.String_HallOfFame: db "HALL OF FAME@" +.String_TurnOff: db "TURN OFF@" +; 1562c + +.WhichPC: ; 1562c + ; before pokedex + db 3 ; items + db 1, 0, 4 ; bill's, player's, turn off + db -1 + + ; before Hall Of Fame + db 4 ; items + db 1, 0, 2, 4 ; bill's, player's, oak's, turn off + db -1 + + ; postgame + db 5 ; items + db 1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off + db -1 +; 1563e + +.ChooseWhichPCListToUse: ; 1563e + call CheckReceivedDex + jr nz, .got_dex + ld a, $0 + ret + +.got_dex + ld a, [wHallOfFameCount] + and a + ld a, $1 + ret z + ld a, $2 + ret +; 15650 + +PC_CheckPartyForPokemon: ; 15650 + ld a, [PartyCount] + and a + ret nz + ld de, SFX_CHOOSE_PC_OPTION + call PlaySFX + ld hl, UnknownText_0x15663 + call PC_DisplayText + scf + ret +; 15663 + +UnknownText_0x15663: ; 0x15663 + ; Bzzzzt! You must have a #MON to use this! + text_jump UnknownText_0x1c1328 + db "@" +; 0x15668 + +BillsPC: ; 15668 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a31 + call PC_DisplayText + callba _BillsPC + and a + ret +; 15679 (5:5679) + +PlayersPC: ; 15679 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a36 + call PC_DisplayText + ld b, $0 + call _PlayersPC + and a + ret +; 15689 + +OaksPC: ; 15689 + call PC_PlayChoosePCSound + ld hl, UnknownText_0x15a3b + call PC_DisplayText + callba ProfOaksPC + and a + ret +; 1569a + +HallOfFamePC: ; 1569a + call PC_PlayChoosePCSound + call FadeToMenu + callba _HallOfFamePC + call Function2b3c + and a + ret +; 156ab + +TurnOffPC: ; 156ab + ld hl, UnknownText_0x15a40 + call PrintText + scf + ret +; 156b3 + +PC_PlayBootSound: ; 156b3 + ld de, SFX_BOOT_PC + jr PC_WaitPlaySFX + +PC_PlayShutdownSound: ; 156b8 + ld de, SFX_SHUT_DOWN_PC + call PC_WaitPlaySFX + call WaitSFX + ret + +PC_PlayChoosePCSound: ; 156c2 + ld de, SFX_CHOOSE_PC_OPTION + jr PC_WaitPlaySFX + +Function156c7: ; 156c7 + ld de, SFX_SWITCH_POKEMON + call PC_WaitPlaySFX + ld de, SFX_SWITCH_POKEMON + +PC_WaitPlaySFX: ; 156d0 + push de + call WaitSFX + pop de + call PlaySFX + ret +; 156d9 + +Function156d9: ; 156d9 + call PC_PlayBootSound + ld hl, UnknownText_0x156ff + call PC_DisplayText + ld b, $1 + call _PlayersPC + and a + jr nz, .asm_156f9 + call OverworldTextModeSwitch + call Function321c + call UpdateSprites + call PC_PlayShutdownSound + ld c, $0 + ret + +.asm_156f9 + call ClearBGPalettes + ld c, $1 + ret +; 156ff + +UnknownText_0x156ff: ; 0x156ff + ; turned on the PC. + text_jump UnknownText_0x1c1353 + db "@" +; 0x15704 + +_PlayersPC: ; 15704 + ld a, b + ld [wcf76], a + ld hl, UnknownText_0x157cc + call PC_DisplayTextWaitMenu + call Function15715 + call ExitMenu + ret +; 15715 + +Function15715: ; 15715 + xor a + ld [wd0d7], a + ld [wd0dd], a + ld hl, KrissPCMenuData + call LoadMenuDataHeader +.asm_15722 + call UpdateTimePals + call DoNthMenu + jr c, .asm_15731 + call MenuJumptable + jr nc, .asm_15722 + jr .asm_15732 + +.asm_15731 + xor a + +.asm_15732 + call ExitMenu + ret +; 15736 + +KrissPCMenuData: ; 0x15736 + db %01000000 + db 0, 0 ; top left corner coords (y, x) + db 12, 15 ; bottom right corner coords (y, x) + dw .KrissPCMenuData2 + db 1 ; default selected option + +.KrissPCMenuData2 + db %10100000 ; bit7 + db 0 ; # items? + dw .KrissPCMenuList1 + dw PlaceNthMenuStrings + dw .KrissPCMenuPointers + +.KrissPCMenuPointers ; 0x15746 + dw KrisWithdrawItemMenu, .WithdrawItem + dw KrisDepositItemMenu, .DepositItem + dw KrisTossItemMenu, .TossItem + dw KrisMailBoxMenu, .MailBox + dw KrisDecorationMenu, .Decoration + dw KrisLogOffMenu, .LogOff + dw KrisLogOffMenu, .TurnOff + +.WithdrawItem db "WITHDRAW ITEM@" +.DepositItem db "DEPOSIT ITEM@" +.TossItem db "TOSS ITEM@" +.MailBox db "MAIL BOX@" +.Decoration db "DECORATION@" +.TurnOff db "TURN OFF@" +.LogOff db "LOG OFF@" + +WITHDRAW_ITEM EQU 0 +DEPOSIT_ITEM EQU 1 +TOSS_ITEM EQU 2 +MAIL_BOX EQU 3 +DECORATION EQU 4 +TURN_OFF EQU 5 +LOG_OFF EQU 6 + +.KrissPCMenuList1 + db 5 + db WITHDRAW_ITEM + db DEPOSIT_ITEM + db TOSS_ITEM + db MAIL_BOX + db TURN_OFF + db -1 + +.KrissPCMenuList2 + db 6 + db WITHDRAW_ITEM + db DEPOSIT_ITEM + db TOSS_ITEM + db MAIL_BOX + db DECORATION + db LOG_OFF + db -1 + +PC_DisplayTextWaitMenu: ; 157bb + ld a, [Options] + push af + set NO_TEXT_SCROLL, a + ld [Options], a + call MenuTextBox + pop af + ld [Options], a + ret +; 157cc + +UnknownText_0x157cc: ; 0x157cc + ; What do you want to do? + text_jump UnknownText_0x1c1368 + db "@" +; 0x157d1 + +KrisWithdrawItemMenu: ; 0x157d1 + call LoadStandardMenuDataHeader + callba ClearPCItemScreen +.asm_157da + call Function15985 + jr c, .asm_157e4 + call Function157e9 + jr .asm_157da + +.asm_157e4 + call Function2b3c + xor a + ret +; 0x157e9 + +Function157e9: ; 0x157e9 + ; check if the item has a quantity + callba _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .askquantity + + ; items without quantity are always ×1 + ld a, 1 + ld [wItemQuantityChangeBuffer], a + jr .withdraw + +.askquantity + ld hl, .HowManyText + call MenuTextBox + callba Function24fbf + call ExitMenu + call ExitMenu + jr c, .done + +.withdraw + ld a, [wItemQuantityChangeBuffer] + ld [Buffer1], a ; quantity + ld a, [wd107] + ld [Buffer2], a + ld hl, NumItems + call ReceiveItem + jr nc, .PackFull + ld a, [Buffer1] + ld [wItemQuantityChangeBuffer], a + ld a, [Buffer2] + ld [wd107], a + ld hl, PCItems + call TossItem + predef PartyMonItemName + ld hl, .WithdrewText + call MenuTextBox + xor a + ld [hBGMapMode], a + call ExitMenu + ret + +.PackFull + ld hl, .NoRoomText + call MenuTextBoxBackup + ret + +.done + ret +; 0x15850 + +.HowManyText ; 0x15850 + text_jump _KrissPCHowManyWithdrawText + db "@" + +.WithdrewText ; 0x15855 + text_jump _KrissPCWithdrewItemsText + db "@" + +.NoRoomText ; 0x1585a + text_jump _KrissPCNoRoomWithdrawText + db "@" + + +KrisTossItemMenu: ; 0x1585f + call LoadStandardMenuDataHeader + callba ClearPCItemScreen +.asm_15868 + call Function15985 + jr c, .asm_15878 + ld de, PCItems + callba Function129f4 + jr .asm_15868 + +.asm_15878 + call Function2b3c + xor a + ret +; 0x1587d + + +KrisDecorationMenu: ; 0x1587d + callba _KrisDecorationMenu + ld a, c + and a + ret z + scf + ret +; 0x15888 + + +KrisLogOffMenu: ; 0x15888 + xor a + scf + ret +; 0x1588b + + +KrisDepositItemMenu: ; 0x1588b + call Function158b8 + jr c, .asm_158b6 + call DisableSpriteUpdates + call LoadStandardMenuDataHeader + callba Function106a5 +.asm_1589c + callba Function106be + ld a, [wcf66] + and a + jr z, .asm_158b3 + call Function158cc + callba CheckRegisteredItem + jr .asm_1589c + +.asm_158b3 + call Function2b3c + +.asm_158b6 + xor a + ret +; 0x158b8 + +Function158b8: ; 0x158b8 + callba Function129d5 + ret nc + ld hl, UnknownText_0x158c7 + call MenuTextBoxBackup + scf + ret +; 0x158c7 + +UnknownText_0x158c7: ; 0x158c7 + ; No items here! + text_jump UnknownText_0x1c13df + db "@" +; 0x158cc + + +Function158cc: ; 0x158cc + ld a, [wc2ce] + push af + ld a, $0 + ld [wc2ce], a + callba CheckItemMenu + ld a, [wItemAttributeParamBuffer] + ld hl, .jumptable + rst JumpTable + pop af + ld [wc2ce], a + ret +; 0x158e7 + +.jumptable: ; 0x158e7 + dw .tossable + dw .no_toss + dw .no_toss + dw .no_toss + dw .tossable + dw .tossable + dw .tossable + +.no_toss: + ret + +.tossable: + ld a, [Buffer1] + push af + ld a, [Buffer2] + push af + call Function1590a + pop af + ld [Buffer2], a + pop af + ld [Buffer1], a + ret +; 0x1590a + +Function1590a: ; 0x1590a + callba _CheckTossableItem + ld a, [wItemAttributeParamBuffer] + and a + jr z, .asm_1591d + ld a, $1 + ld [wItemQuantityChangeBuffer], a + jr .asm_15933 + +.asm_1591d + ld hl, .HowManyText + call MenuTextBox + callba Function24fbf + push af + call ExitMenu + call ExitMenu + pop af + jr c, .asm_1596c + +.asm_15933 + ld a, [wItemQuantityChangeBuffer] + ld [Buffer1], a + ld a, [wd107] + ld [Buffer2], a + ld hl, PCItems + call ReceiveItem + jr nc, .asm_15965 + ld a, [Buffer1] + ld [wItemQuantityChangeBuffer], a + ld a, [Buffer2] + ld [wd107], a + ld hl, NumItems + call TossItem + predef PartyMonItemName + ld hl, .DepositText + call PrintText + ret + +.asm_15965 + ld hl, .NoRoomText + call PrintText + ret + +.asm_1596c + and a + ret +; 0x1596e + + +.HowManyText ; 0x1596e + text_jump _KrissPCHowManyDepositText + db "@" + +.DepositText ; 0x15973 + text_jump _KrissPCDepositItemsText + db "@" + +.NoRoomText ; 0x15978 + text_jump _KrissPCNoRoomDepositText + db "@" + + +KrisMailBoxMenu: ; 0x1597d + callba _KrisMailBoxMenu + xor a + ret +; 0x15985 + + +Function15985: ; 0x15985 + xor a + ld [wd0e3], a +.asm_15989 + ld a, [wc2ce] + push af + ld a, $0 + ld [wc2ce], a + ld hl, MenuData15a08 + call CopyMenuDataHeader + hlcoord 0, 0 + ld b, $a + ld c, $12 + call TextBox + ld a, [wd0d7] + ld [wMenuCursorBuffer], a + ld a, [wd0dd] + ld [wd0e4], a + call HandleScrollingMenu + ld a, [wd0e4] + ld [wd0dd], a + ld a, [MenuSelection2] + ld [wd0d7], a + pop af + ld [wc2ce], a + ld a, [wd0e3] + and a + jr nz, .asm_159d8 + ld a, [wcf73] + cp $2 + jr z, .asm_15a06 + cp $1 + jr z, .asm_159fb + cp $4 + jr z, .asm_159f2 + jr .asm_159f8 + +.asm_159d8 + ld a, [wcf73] + cp $2 + jr z, .asm_159e9 + cp $1 + jr z, .asm_159ef + cp $4 + jr z, .asm_159ef + jr .asm_159f8 + +.asm_159e9 + xor a + ld [wd0e3], a + jr .asm_159f8 + +.asm_159ef + call Function156c7 + +.asm_159f2 + callba Function2490c + +.asm_159f8 + jp .asm_15989 + +.asm_159fb + callba Function24706 + call Function1bee + and a + ret + +.asm_15a06 + scf + ret +; 0x15a08 + +MenuData15a08: ; 0x15a08 + db %01000000 + db 1, 4 ; start coords + db 10, 18 ; end coords + dw .MenuData2 + db 1 ; default option + +.MenuData2 + db %10110000 + db 4, 8 ; rows/cols? + db 2 ; horizontal spacing? + dbw 0, PCItems + dba PlaceMenuItemName + dba PlaceMenuItemQuantity + dba Function244c3 + +PC_DisplayText: ; 15a20 + call MenuTextBox + call ExitMenu + ret +; 15a27 + + +UnknownText_0x15a27: ; 0x15a27 + ; turned on the PC. + text_jump UnknownText_0x1c144d + db "@" +; 0x15a2c + +UnknownText_0x15a2c: ; 0x15a2c + ; Access whose PC? + text_jump UnknownText_0x1c1462 + db "@" +; 0x15a31 + +UnknownText_0x15a31: ; 0x15a31 + ; BILL's PC accessed. #MON Storage System opened. + text_jump UnknownText_0x1c1474 + db "@" +; 0x15a36 + +UnknownText_0x15a36: ; 0x15a36 + ; Accessed own PC. Item Storage System opened. + text_jump UnknownText_0x1c14a4 + db "@" +; 0x15a3b + +UnknownText_0x15a3b: ; 0x15a3b + ; PROF.OAK's PC accessed. #DEX Rating System opened. + text_jump UnknownText_0x1c14d2 + db "@" +; 0x15a40 + +UnknownText_0x15a40: ; 0x15a40 + ; … Link closed… + text_jump UnknownText_0x1c1505 + db "@" +; 0x15a45 diff --git a/engine/timeset.asm b/engine/timeset.asm new file mode 100755 index 000000000..00cdf9cac --- /dev/null +++ b/engine/timeset.asm @@ -0,0 +1,771 @@ +InitClock: ; 90672 (24:4672) +; Ask the player to set the time. + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + + ld a, $0 + ld [wc2ce], a + ld a, $10 + ld [MusicFade], a + ld a, MUSIC_NONE % $100 + ld [MusicFadeIDLo], a + ld a, MUSIC_NONE / $100 + ld [MusicFadeIDHi], a + ld c, 8 + call DelayFrames + call Function4dd + call ClearTileMap + call ClearSprites + ld b, SCGB_08 + call GetSGBLayout + xor a + ld [hBGMapMode], a + call LoadStandardFont + ld de, GFX_908fb + ld hl, VTiles2 tile $00 + lb bc, BANK(GFX_908fb), 1 + call Request1bpp + ld de, GFX_90903 + ld hl, VTiles2 tile $01 + lb bc, BANK(GFX_90903), 1 + call Request1bpp + ld de, GFX_9090b + ld hl, VTiles2 tile $02 + lb bc, BANK(GFX_9090b), 1 + call Request1bpp + call .ClearScreen + call WaitBGMap + call Function4a3 + ld hl, UnknownText_0x90874 + call PrintText + ld hl, wc608 + ld bc, 50 + xor a + call ByteFill + ld a, $a + ld [wInitHourBuffer], a + +.loop + ld hl, UnknownText_0x90879 + call PrintText + hlcoord 3, 7 + ld b, 2 + ld c, 15 + call TextBox + hlcoord 11, 7 + ld [hl], $1 + hlcoord 11, 10 + ld [hl], $2 + hlcoord 4, 9 + call DisplayHourOClock + ld c, 10 + call DelayFrames + +.SetHourLoop + call JoyTextDelay + call SetHour + jr nc, .SetHourLoop + + ld a, [wInitHourBuffer] + ld [StringBuffer2 + 1], a + call .ClearScreen + ld hl, UnknownText_0x90886 + call PrintText + call YesNoBox + jr nc, .HourIsSet + call .ClearScreen + jr .loop + +.HourIsSet + ld hl, UnknownText_0x9089a + call PrintText + hlcoord 11, 7 + lb bc, 2, 7 + call TextBox + hlcoord 15, 7 + ld [hl], $1 + hlcoord 15, 10 + ld [hl], $2 + hlcoord 12, 9 + call DisplayMinutesWithMinString + ld c, 10 + call DelayFrames + +.SetMinutesLoop + call JoyTextDelay + call SetMinutes + jr nc, .SetMinutesLoop + + ld a, [BattleMonNick + 5] + ld [StringBuffer2 + 2], a + call .ClearScreen + ld hl, UnknownText_0x908a4 + call PrintText + call YesNoBox + jr nc, .MinutesAreSet + call .ClearScreen + jr .HourIsSet + +.MinutesAreSet + call Function658 + ld hl, OakText_ResponseToSetTime + call PrintText + call WaitPressAorB_BlinkCursor + pop af + ld [hInMenu], a + ret + +.ClearScreen: ; 90783 (24:4783) + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + xor a + call ByteFill + ld a, $1 + ld [hBGMapMode], a + ret + +SetHour: ; 90795 (24:4795) + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .Confirm + + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + call DelayFrame + and a + ret + +.down + ld hl, wInitHourBuffer + ld a, [hl] + and a + jr nz, .DecreaseThroughMidnight + ld a, 23 + 1 +.DecreaseThroughMidnight + dec a + ld [hl], a + jr .okay + +.up + ld hl, wInitHourBuffer + ld a, [hl] + cp 23 + jr c, .AdvanceThroughMidnight + ld a, -1 +.AdvanceThroughMidnight + inc a + ld [hl], a + +.okay + hlcoord 4, 9 + ld a, " " + ld bc, 15 + call ByteFill + hlcoord 4, 9 + call DisplayHourOClock + call WaitBGMap + and a + ret + +.Confirm + scf + ret + +DisplayHourOClock: ; 907de (24:47de) + push hl + ld a, [wInitHourBuffer] + ld c, a + ld e, l + ld d, h + call PrintHour + inc hl + ld de, String_oclock + call PlaceString + pop hl + ret +; 907f1 (24:47f1) + +Function907f1: ; 907f1 + ld h, d + ld l, e + push hl + call DisplayHourOClock + pop de +rept 2 + inc de +endr + ld a, $9c + ld [de], a + inc de + push de + ld hl, $3 + add hl, de + ld a, [de] + inc de + ld [hli], a + ld a, [de] + ld [hl], a + pop hl + call DisplayMinutesWithMinString +rept 3 + inc hl +endr + ret +; 90810 + +SetMinutes: ; 90810 (24:4810) + ld a, [hJoyPressed] + and A_BUTTON + jr nz, .asm_90857 + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_90835 + ld a, [hl] + and D_DOWN + jr nz, .asm_90828 + call DelayFrame + and a + ret +.asm_90828 + ld hl, BattleMonNick + 5 + ld a, [hl] + and a + jr nz, .asm_90831 + ld a, 59 + 1 +.asm_90831 + dec a + ld [hl], a + jr .asm_90841 +.asm_90835 + ld hl, BattleMonNick + 5 + ld a, [hl] + cp 59 + jr c, .asm_9083f + ld a, -1 +.asm_9083f + inc a + ld [hl], a +.asm_90841 + hlcoord 12, 9 + ld a, " " + ld bc, 7 + call ByteFill + hlcoord 12, 9 + call DisplayMinutesWithMinString + call WaitBGMap + and a + ret +.asm_90857 + scf + ret + +DisplayMinutesWithMinString: ; 90859 (24:4859) + ld de, BattleMonNick + 5 + call PrintTwoDigitNumberRightAlign + inc hl + ld de, String_min + call PlaceString + ret + +PrintTwoDigitNumberRightAlign: ; 90867 (24:4867) + push hl + ld a, " " + ld [hli], a + ld [hl], a + pop hl + lb bc, PRINTNUM_RIGHTALIGN | 1, 2 + call PrintNum + ret +; 90874 (24:4874) + +UnknownText_0x90874: ; 0x90874 + ; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me? + text_jump UnknownText_0x1bc29c + db "@" +; 0x90879 + +UnknownText_0x90879: ; 0x90879 + ; What time is it? + text_jump UnknownText_0x1bc2eb + db "@" +; 0x9087e + +String_oclock: + db "o'clock@" +; 90886 + +UnknownText_0x90886: ; 0x90886 + ; What?@ @ + text_jump UnknownText_0x1bc2fd + start_asm + hlcoord 1, 16 + call DisplayHourOClock + ld hl, UnknownText_0x90895 + ret +; 90895 (24:4895) + +UnknownText_0x90895: ; 0x90895 + ; ? + text_jump UnknownText_0x1bc305 + db "@" +; 0x9089a + +UnknownText_0x9089a: ; 0x9089a + ; How many minutes? + text_jump UnknownText_0x1bc308 + db "@" +; 0x9089f + +String_min: + db "min.@" +; 908a4 + +UnknownText_0x908a4: ; 0x908a4 + ; Whoa!@ @ + text_jump UnknownText_0x1bc31b + start_asm +; 0x908a9 + hlcoord 7, 14 + call DisplayMinutesWithMinString + ld hl, UnknownText_0x908b3 + ret +; 908b3 (24:48b3) + +UnknownText_0x908b3: ; 0x908b3 + ; ? + text_jump UnknownText_0x1bc323 + db "@" +; 0x908b8 + +OakText_ResponseToSetTime: ; 0x908b8 + start_asm + decoord 1, 14 + ld a, [wInitHourBuffer] + ld c, a + call PrintHour + ld [hl], ":" + inc hl + ld de, BattleMonNick + 5 + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld b, h + ld c, l + ld a, [wInitHourBuffer] + cp 4 + jr c, .NITE + cp 11 + jr c, .MORN + cp 18 + jr c, .DAY +.NITE + ld hl, .sodark + ret +.MORN + ld hl, .overslept + ret +.DAY + ld hl, .yikes + ret +; 908ec (24:48ec) + +.overslept: ; 0x908ec + ; ! I overslept! + text_jump UnknownText_0x1bc326 + db "@" +; 0x908f1 + +.yikes: ; 0x908f1 + ; ! Yikes! I over- slept! + text_jump UnknownText_0x1bc336 + db "@" +; 0x908f6 + +.sodark: ; 0x908f6 + ; ! No wonder it's so dark! + text_jump UnknownText_0x1bc34f + db "@" +; 0x908fb + +GFX_908fb: ; 908fb +INCBIN "gfx/unknown/0908fb.2bpp" +GFX_90903: ; 90903 +INCBIN "gfx/unknown/090903.2bpp" +GFX_9090b: ; 9090b +INCBIN "gfx/unknown/09090b.2bpp" +; 90913 + +Special_SetDayOfWeek: ; 90913 + ld a, [hInMenu] + push af + ld a, $1 + ld [hInMenu], a + ld de, GFX_90903 + ld hl, VTiles1 tile $6f + lb bc, BANK(GFX_90903), 1 + call Request1bpp + ld de, GFX_9090b + ld hl, VTiles1 tile $75 + lb bc, BANK(GFX_9090b), 1 + call Request1bpp + xor a + ld [wd002], a +.asm_90936 + hlcoord 0, 12 + lb bc, 4, 18 + call TextBox + call LoadStandardMenuDataHeader + ld hl, UnknownText_0x90a3f + call PrintText + hlcoord 9, 3 + ld b, 2 + ld c, 9 + call TextBox + hlcoord 14, 3 + ld [hl], $ef + hlcoord 14, 6 + ld [hl], $f5 + hlcoord 10, 5 + call Function909de + call Function321c + ld c, 10 + call DelayFrames +.asm_9096a + call JoyTextDelay + call Function90993 + jr nc, .asm_9096a + call ExitMenu + call UpdateSprites + ld hl, UnknownText_0x90a44 + call PrintText + call YesNoBox + jr c, .asm_90936 + ld a, [wd002] + ld [StringBuffer2], a + call Function663 + call LoadStandardFont + pop af + ld [hInMenu], a + ret +; 90993 + +Function90993: ; 90993 + ld a, [hJoyPressed] + and A_BUTTON + jr z, .asm_9099b + scf + ret + +.asm_9099b + ld hl, hJoyLast + ld a, [hl] + and D_UP + jr nz, .asm_909ba + ld a, [hl] + and D_DOWN + jr nz, .asm_909ad + call DelayFrame + and a + ret + +.asm_909ad + ld hl, wd002 + ld a, [hl] + and a + jr nz, .asm_909b6 + ld a, 6 + 1 + +.asm_909b6 + dec a + ld [hl], a + jr .asm_909c6 + +.asm_909ba + ld hl, wd002 + ld a, [hl] + cp 6 + jr c, .asm_909c4 + ld a, -1 + +.asm_909c4 + inc a + ld [hl], a + +.asm_909c6 + xor a + ld [hBGMapMode], a + hlcoord 10, 4 + ld b, $2 + ld c, $9 + call ClearBox + hlcoord 10, 5 + call Function909de + call WaitBGMap + and a + ret +; 909de + +Function909de: ; 909de + push hl + ld a, [wd002] + ld e, a + ld d, 0 + ld hl, WeekdaysStrings +rept 2 + add hl, de +endr + ld a, [hli] + ld d, [hl] + ld e, a + pop hl + call PlaceString + ret +; 909f2 + +WeekdaysStrings: ; 909f2 + dw Sunday + dw Monday + dw Tuesday + dw Wednesday + dw Thursday + dw Friday + dw Saturday + dw Sunday + +Sunday: db " SUNDAY@" +Monday: db " MONDAY@" +Tuesday: db " TUESDAY@" +Wednesday: db "WEDNESDAY@" +Thursday: db "THURSDAY@" +Friday: db " FRIDAY@" +Saturday: db "SATURDAY@" + + +UnknownText_0x90a3f: ; 0x90a3f + ; What day is it? + text_jump UnknownText_0x1bc369 + db "@" +; 0x90a44 + +UnknownText_0x90a44: ; 0x90a44 + start_asm + hlcoord 1, 14 + call Function909de + ld hl, UnknownText_0x90a4f + ret +; 90a4f (24:4a4f) + +UnknownText_0x90a4f: ; 0x90a4f + ; , is it? + text_jump UnknownText_0x1bc37a + db "@" +; 0x90a54 + +Special_InitialSetDSTFlag: ; 90a54 + ld a, [wDST] + set 7, a + ld [wDST], a + hlcoord 1, 14 + lb bc, 3, 18 + call ClearBox + ld hl, UnknownText_0x90a6c + call PlaceWholeStringInBoxAtOnce + ret +; 90a6c + +UnknownText_0x90a6c: ; 90a6c + start_asm + call UpdateTime + ld a, [hHours] + ld b, a + ld a, [hMinutes] + ld c, a + decoord 1, 14 + callba PrintHoursMins + ld hl, TextJump_DSTIsThatOK + ret +; 90a83 (24:4a83) + +TextJump_DSTIsThatOK: ; 0x90a83 + ; DST, is that OK? + text_jump Text_DSTIsThatOK + db "@" +; 0x90a88 + +Special_InitialClearDSTFlag: ; 90a88 + ld a, [wDST] + res 7, a + ld [wDST], a + hlcoord 1, 14 + lb bc, 3, 18 + call ClearBox + ld hl, UnknownText_0x90aa0 + call PlaceWholeStringInBoxAtOnce + ret +; 90aa0 + +UnknownText_0x90aa0: ; 90aa0 + start_asm + call UpdateTime + ld a, [hHours] + ld b, a + ld a, [hMinutes] + ld c, a + decoord 1, 14 + callba PrintHoursMins + ld hl, UnknownText_0x90ab7 + ret +; 90ab7 + +UnknownText_0x90ab7: ; 0x90ab7 + ; , is that OK? + text_jump UnknownText_0x1c5ff1 + db "@" +; 0x90abc + +Function90abc: ; 90abc + hlcoord 1, 14 + lb bc, 3, SCREEN_WIDTH - 2 + call ClearBox + ld hl, UnknownText_0x90acc + call PlaceWholeStringInBoxAtOnce + ret +; 90acc + +UnknownText_0x90acc: ; 0x90acc + start_asm + + call UpdateTime + + hlcoord 1, 14 + ld [hl], "R" + inc hl + ld [hl], "T" + inc hl + ld [hl], " " + inc hl + + ld de, hRTCDayLo + call Function90b23 + + hlcoord 1, 16 + ld [hl], "D" + inc hl + ld [hl], "F" + inc hl + ld [hl], " " + inc hl + + ld de, StartDay + call Function90b23 + + ld [hl], " " + inc hl + + ld a, [wDST] + bit 7, a + jr z, .off + + ld [hl], "O" + inc hl + ld [hl], "N" + inc hl + jr .done + +.off + ld [hl], "O" + inc hl + ld [hl], "F" + inc hl + ld [hl], "F" + inc hl + +.done + ld hl, UnknownText_0x90b13 + ret +; 90b13 + +UnknownText_0x90b13: ; 0x90b13 + text "<PARA>Now on DEBUG…" + prompt +; 0x90b23 + +Function90b23: ; 90b23 + lb bc, 1, 3 + call PrintNum + ld [hl], "." + inc hl + inc de + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ld [hl], ":" + inc hl + inc de + lb bc, PRINTNUM_LEADINGZEROS | 1, 2 + call PrintNum + ret +; 90b3e + +PrintHour: ; 90b3e (24:4b3e) + ld l, e + ld h, d + push bc + call GetTimeOfDayString + call PlaceString + ld l, c + ld h, b + inc hl + pop bc + call AdjustHourForAMorPM + ld [wd265], a + ld de, wd265 + call PrintTwoDigitNumberRightAlign + ret + +GetTimeOfDayString: ; 90b58 (24:4b58) + ld a, c + cp 4 + jr c, .nite + cp 10 + jr c, .morn + cp 18 + jr c, .day +.nite + ld de, .NITE + ret +.morn + ld de, .MORN + ret +.day + ld de, .DAY + ret +; 90b71 (24:4b71) + +.NITE: db "NITE@" +.MORN: db "MORN@" +.DAY: db "DAY@" +; 90b7f + +AdjustHourForAMorPM: +; Convert the hour stored in c (0-23) to a 1-12 value + ld a, c + or a + jr z, .midnight + cp 12 + ret c + ret z + sub 12 + ret + +.midnight + ld a, 12 + ret |