diff options
author | entrpntr <entrpntr@gmail.com> | 2020-05-25 05:25:43 -0400 |
---|---|---|
committer | entrpntr <entrpntr@gmail.com> | 2020-05-25 17:04:16 -0400 |
commit | 14f6ddbe3c61dc0b395bc295403ceef9d7ef6b2e (patch) | |
tree | e5377a053beeae4ac5d719f2974c3b9f3a67855f /engine | |
parent | f84274fb73db48c998e5c811559388ebab6419ce (diff) |
Finish disassembling banks 7 and 8.
Diffstat (limited to 'engine')
-rw-r--r-- | engine/events/catch_tutorial.asm | 81 | ||||
-rw-r--r-- | engine/menus/main_menu.asm | 4 | ||||
-rw-r--r-- | engine/rtc/restart_clock.asm | 236 | ||||
-rw-r--r-- | engine/tilesets/mapgroup_roofs.asm | 18 |
4 files changed, 337 insertions, 2 deletions
diff --git a/engine/events/catch_tutorial.asm b/engine/events/catch_tutorial.asm new file mode 100644 index 00000000..5c12a02f --- /dev/null +++ b/engine/events/catch_tutorial.asm @@ -0,0 +1,81 @@ +CatchTutorial:: + ld a, [wBattleType] + dec a + ld c, a + ld hl, .dw + ld b, 0 + add hl, bc + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.dw + dw .DudeTutorial + dw .DudeTutorial + dw .DudeTutorial + +.DudeTutorial: +; Back up your name to your Mom's name. + ld hl, wPlayerName + ld de, wMomsName + ld bc, NAME_LENGTH + call CopyBytes +; Copy Dude's name to your name + ld hl, .Dude + ld de, wPlayerName + ld bc, NAME_LENGTH + call CopyBytes + + call .LoadDudeData + + xor a + ldh [hJoyDown], a + ldh [hJoyPressed], a + ld a, [wOptions] + push af + and $ff ^ TEXT_DELAY_MASK + add TEXT_DELAY_MED + ld [wOptions], a + ld hl, .AutoInput + ld a, BANK(.AutoInput) + call StartAutoInput + callfar StartBattle + call StopAutoInput + pop af + + ld [wOptions], a + ld hl, wMomsName + ld de, wPlayerName + ld bc, NAME_LENGTH + call CopyBytes + ret + +.LoadDudeData: + ld hl, wDudeNumItems + ld [hl], 1 + inc hl + ld [hl], POTION + inc hl + ld [hl], 1 + inc hl + ld [hl], -1 + ld hl, wDudeNumKeyItems + ld [hl], 0 + inc hl + ld [hl], -1 + ld hl, wDudeNumBalls + ld a, 1 + ld [hli], a + ld a, POKE_BALL + ld [hli], a + ld [hli], a + ld [hl], -1 + ret + +.Dude: + db "DUDE@" + +.AutoInput: + db NO_INPUT, $ff ; end diff --git a/engine/menus/main_menu.asm b/engine/menus/main_menu.asm index 4e9113a8..5907324d 100644 --- a/engine/menus/main_menu.asm +++ b/engine/menus/main_menu.asm @@ -176,7 +176,7 @@ MainMenu_PrintCurrentTimeAndDay: call GetWeekday ld b, a decoord 1, 14 - call .PlaceCurrentDay + call PrintDayOfWeek decoord 4, 16 ldh a, [hHours] ld c, a @@ -205,7 +205,7 @@ MainMenu_PrintCurrentTimeAndDay: text_far _MainMenuTimeUnknownText text_end -.PlaceCurrentDay: +PrintDayOfWeek: push de ld hl, .Days ld a, b diff --git a/engine/rtc/restart_clock.asm b/engine/rtc/restart_clock.asm new file mode 100644 index 00000000..5dc98718 --- /dev/null +++ b/engine/rtc/restart_clock.asm @@ -0,0 +1,236 @@ +RestartClock_GetWraparoundTime: + push hl + dec a + ld e, a + ld d, 0 + ld hl, .WrapAroundTimes +rept 4 + add hl, de +endr + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld b, [hl] + inc hl + ld c, [hl] + pop hl + ret + +.WrapAroundTimes: + dw wBuffer4 + db 7, 4 + + dw wBuffer5 + db 24, 12 + + dw wBuffer6 + db 60, 15 + +RestartClock: +; If we're here, we had an RTC overflow. + ld hl, .ClockTimeMayBeWrongText + call PrintText + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + call LoadStandardMenuHeader + call ClearTilemap + ld hl, .ClockSetWithControlPadText + call PrintText + call .SetClock + call ExitMenu + pop bc + ld hl, wOptions + ld [hl], b + ld c, a + ret + +.ClockTimeMayBeWrongText: + text_far _ClockTimeMayBeWrongText + text_end + +.ClockSetWithControlPadText: + text_far _ClockSetWithControlPadText + text_end + +.SetClock: + ld a, 1 + ld [wBuffer1], a ; which digit + ld [wBuffer2], a + ld a, 8 + ld [wBuffer3], a + call UpdateTime + call GetWeekday + ld [wBuffer4], a + ldh a, [hHours] + ld [wBuffer5], a + ldh a, [hMinutes] + ld [wBuffer6], a + +.loop + call .joy_loop + jr nc, .loop + and a + ret nz + call .PrintTime + ld hl, .ClockIsThisOKText + call PrintText + call YesNoBox + jr c, .cancel + ld a, [wBuffer4] + ld [wStringBuffer2], a + ld a, [wBuffer5] + ld [wStringBuffer2 + 1], a + ld a, [wBuffer6] + ld [wStringBuffer2 + 2], a + xor a + ld [wStringBuffer2 + 3], a + call InitTime + call .PrintTime + ld hl, .ClockHasResetText + call PrintText + call WaitPressAorB_BlinkCursor + xor a + ret + +.cancel + ld a, $1 + ret + +.ClockIsThisOKText: + text_far _ClockIsThisOKText + text_end + +.ClockHasResetText: + text_far _ClockHasResetText + text_end + +.joy_loop + call JoyTextDelay_ForcehJoyDown + ld c, a + push af + call .PrintTime + pop af + bit 0, a + jr nz, .press_A + bit 1, a + jr nz, .press_B + bit 6, a + jr nz, .pressed_up + bit 7, a + jr nz, .pressed_down + bit 5, a + jr nz, .pressed_left + bit 4, a + jr nz, .pressed_right + jr .joy_loop + +.press_A + ld a, $0 + scf + ret + +.press_B + ld a, $1 + scf + ret + +.pressed_up + ld a, [wBuffer1] + call RestartClock_GetWraparoundTime + ld a, [de] + inc a + ld [de], a + cp b + jr c, .done_scroll + ld a, $0 + ld [de], a + jr .done_scroll + +.pressed_down + ld a, [wBuffer1] + call RestartClock_GetWraparoundTime + ld a, [de] + dec a + ld [de], a + cp -1 + jr nz, .done_scroll + ld a, b + dec a + ld [de], a + jr .done_scroll + +.pressed_left + ld hl, wBuffer1 + dec [hl] + jr nz, .done_scroll + ld [hl], $3 + jr .done_scroll + +.pressed_right + ld hl, wBuffer1 + inc [hl] + ld a, [hl] + cp $4 + jr c, .done_scroll + ld [hl], $1 + +.done_scroll + xor a + ret + +.PrintTime: + hlcoord 0, 5 + ld b, 5 + ld c, 18 + call Textbox + decoord 1, 8 + ld a, [wBuffer4] + ld b, a + farcall PrintDayOfWeek + ld a, [wBuffer5] + ld b, a + ld a, [wBuffer6] + ld c, a + decoord 11, 8 + farcall PrintHoursMins + ld a, [wBuffer2] + lb de, " ", " " + call .PlaceChars + ld a, [wBuffer1] + lb de, "▲", "▼" + call .PlaceChars + ld a, [wBuffer1] + ld [wBuffer2], a + ret + +.unreferenced +; unused + ld a, [wBuffer3] + ld b, a + call Coord2Tile + ret + +.PlaceChars: + push de + call RestartClock_GetWraparoundTime + ld a, [wBuffer3] + dec a + ld b, a + call Coord2Tile + pop de + ld [hl], d + ld bc, 2 * SCREEN_WIDTH + add hl, bc + ld [hl], e + ret + +UnreferencedString_HourJP: +; unused + db "じ@" ; HR + +UnreferencedString_MinuteJP: +; unused + db "ふん@" ; MIN diff --git a/engine/tilesets/mapgroup_roofs.asm b/engine/tilesets/mapgroup_roofs.asm new file mode 100644 index 00000000..b269e527 --- /dev/null +++ b/engine/tilesets/mapgroup_roofs.asm @@ -0,0 +1,18 @@ +LoadMapGroupRoof:: + ld a, [wMapGroup] + ld e, a + ld d, 0 + ld hl, MapGroupRoofs + add hl, de + ld a, [hl] + cp -1 + ret z + ld hl, Roofs + ld bc, 9 tiles + call AddNTimes + ld de, vTiles2 tile $0a + ld bc, 9 tiles + call CopyBytes + ret + +INCLUDE "data/maps/roofs.asm" |