summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/clock.s175
-rw-r--r--asm/dewford_trend.s6
-rw-r--r--asm/easy_chat.s8
-rw-r--r--asm/field_screen.s6
-rwxr-xr-xasm/learn_move.s8
-rw-r--r--asm/main_menu.s2
-rwxr-xr-xasm/menu.s6
-rw-r--r--asm/menu_helpers.s2
-rwxr-xr-xasm/party_menu.s22
-rw-r--r--asm/player_pc.s2
-rwxr-xr-xasm/pokemon_storage_system.s8
-rw-r--r--asm/rom6.s34
-rw-r--r--asm/rom_8011DC0.s8
-rw-r--r--asm/script_menu.s2
-rw-r--r--asm/slot_machine.s2
-rw-r--r--asm/start_menu.s6
-rw-r--r--asm/trade.s4
-rwxr-xr-xasm/use_pokeblock.s2
-rw-r--r--asm/wallclock.s1515
-rw-r--r--data/data4c.s33
-rw-r--r--data/scripts/maps/BattleFrontier_Lounge2.inc24
-rw-r--r--data/scripts/maps/BattleFrontier_Lounge3.inc20
-rw-r--r--data/scripts/players_house.inc2
-rw-r--r--data/specials.inc2
-rw-r--r--data/starter_choose.s3
-rw-r--r--graphics/wallclock/graphics_85b1f58.pngbin0 -> 204 bytes
-rw-r--r--graphics/wallclock/palette_85b21d4.pal7
-rw-r--r--include/constants/vars.h13
-rw-r--r--include/dewford_trend.h1
-rw-r--r--include/field_screen.h1
-rw-r--r--include/gba/macro.h75
-rw-r--r--include/graphics.h5
-rw-r--r--include/menu.h2
-rw-r--r--include/rom6.h6
-rw-r--r--include/strings.h3
-rw-r--r--include/tv.h1
-rw-r--r--include/wallclock.h6
-rw-r--r--ld_script.txt5
-rw-r--r--src/berry_blender.c2
-rwxr-xr-xsrc/clear_save_data_screen.c2
-rw-r--r--src/clock.c93
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/starter_choose.c2
-rw-r--r--src/tv.c2
-rw-r--r--src/wallclock.c1057
46 files changed, 1364 insertions, 1825 deletions
diff --git a/asm/clock.s b/asm/clock.s
deleted file mode 100644
index 5d771a8b6..000000000
--- a/asm/clock.s
+++ /dev/null
@@ -1,175 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_809E778
-sub_809E778: @ 809E778
- push {lr}
- ldr r0, =0x00000895
- bl FlagSet
- bl RtcCalcLocalTime
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r2, 0xA0
- ldr r3, =gLocalTime
- ldr r0, [r3]
- ldr r1, [r3, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, =0x00004040
- ldrh r1, [r3]
- bl VarSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E778
-
- thumb_func_start DoTimeBasedEvents
-DoTimeBasedEvents: @ 809E7B0
- push {r4,lr}
- ldr r0, =0x00000895
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0809E7DA
- bl sub_813B9C0
- lsls r0, 24
- cmp r0, 0
- bne _0809E7DA
- bl RtcCalcLocalTime
- ldr r4, =gLocalTime
- adds r0, r4, 0
- bl sub_809E7E8
- adds r0, r4, 0
- bl sub_809E858
-_0809E7DA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTimeBasedEvents
-
- thumb_func_start sub_809E7E8
-sub_809E7E8: @ 809E7E8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =0x00004040
- bl GetVarPointer
- adds r6, r0, 0
- ldrh r0, [r6]
- movs r2, 0
- ldrsh r1, [r5, r2]
- cmp r0, r1
- beq _0809E84E
- cmp r0, r1
- bgt _0809E84E
- ldrh r4, [r5]
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- bl ClearUpperFlags
- adds r0, r4, 0
- bl sub_8122580
- adds r0, r4, 0
- bl sub_80ED888
- adds r0, r4, 0
- bl sub_80AEFBC
- adds r0, r4, 0
- bl UpdatePartyPokerusTime
- adds r0, r4, 0
- bl sub_8137904
- adds r0, r4, 0
- bl sub_8137A20
- adds r0, r4, 0
- bl sub_8139EF4
- adds r0, r4, 0
- bl sub_813A7F4
- adds r0, r4, 0
- bl sub_813945C
- adds r0, r4, 0
- bl SetRandomLotteryNumber
- ldrh r0, [r5]
- strh r0, [r6]
-_0809E84E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E7E8
-
- thumb_func_start sub_809E858
-sub_809E858: @ 809E858
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- mov r4, sp
- ldr r6, =gSaveBlock2Ptr
- ldr r1, [r6]
- adds r1, 0xA0
- mov r0, sp
- adds r2, r5, 0
- bl CalcTimeDifference
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 5
- movs r2, 0x2
- ldrsb r2, [r4, r2]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 2
- adds r1, r0
- movs r0, 0x3
- ldrsb r0, [r4, r0]
- adds r0, r1, r0
- cmp r0, 0
- beq _0809E8A8
- cmp r0, 0
- blt _0809E8A8
- bl BerryTreeTimeUpdate
- ldr r2, [r6]
- adds r2, 0xA0
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
-_0809E8A8:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E858
-
- thumb_func_start sub_809E8B4
-sub_809E8B4: @ 809E8B4
- push {lr}
- bl sub_809E778
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E8B4
-
- thumb_func_start Special_StartWallClock
-Special_StartWallClock: @ 809E8C8
- push {lr}
- ldr r0, =Cb2_StartWallClock
- bl SetMainCallback2
- ldr r1, =gMain
- ldr r0, =sub_809E8B4
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end Special_StartWallClock
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s
index 89f89c4e0..7d9d67902 100644
--- a/asm/dewford_trend.s
+++ b/asm/dewford_trend.s
@@ -79,8 +79,8 @@ _08122522:
.pool
thumb_func_end InitDewfordTrend
- thumb_func_start sub_8122580
-sub_8122580: @ 8122580
+ thumb_func_start UpdateDewfordTrendPerDay
+UpdateDewfordTrendPerDay: @ 8122580
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -253,7 +253,7 @@ _081226BE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8122580
+ thumb_func_end UpdateDewfordTrendPerDay
thumb_func_start sub_81226D8
sub_81226D8: @ 81226D8
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 602e7b3e7..3a359c9fa 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -1635,7 +1635,7 @@ _0811AF86:
thumb_func_start sub_811AF8C
sub_811AF8C: @ 811AF8C
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1684,7 +1684,7 @@ _0811AFE6:
thumb_func_start sub_811AFEC
sub_811AFEC: @ 811AFEC
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1727,7 +1727,7 @@ _0811B03A:
thumb_func_start sub_811B040
sub_811B040: @ 811B040
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1832,7 +1832,7 @@ sub_811B0E8: @ 811B0E8
thumb_func_start sub_811B0F8
sub_811B0F8: @ 811B0F8
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/field_screen.s b/asm/field_screen.s
index c4028555d..92c2a4924 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -7777,8 +7777,8 @@ _080AEFB6:
bx r1
thumb_func_end sub_80AEEE8
- thumb_func_start sub_80AEFBC
-sub_80AEFBC: @ 80AEFBC
+ thumb_func_start UpdateWeatherPerDay
+UpdateWeatherPerDay: @ 80AEFBC
lsls r0, 16
ldr r1, =gSaveBlock1Ptr
ldr r2, [r1]
@@ -7794,7 +7794,7 @@ sub_80AEFBC: @ 80AEFBC
strb r1, [r2]
bx lr
.pool
- thumb_func_end sub_80AEFBC
+ thumb_func_end UpdateWeatherPerDay
thumb_func_start sub_80AEFDC
sub_80AEFDC: @ 80AEFDC
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 159b16f7e..acd9f4f98 100755
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -353,7 +353,7 @@ _08160994:
b _08160E88
.pool
_081609A8:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -433,7 +433,7 @@ _08160A50:
b _08160E88
.pool
_08160A64:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -493,7 +493,7 @@ _08160ADC:
b _08160E88
.pool
_08160AEC:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -551,7 +551,7 @@ _08160B6C:
b _08160E88
.pool
_08160B80:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 7b7ce49f7..52afc783e 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -3025,7 +3025,7 @@ task_new_game_prof_birch_speech_part2_4: @ 8031188
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/menu.s b/asm/menu.s
index e1102893a..64644504e 100755
--- a/asm/menu.s
+++ b/asm/menu.s
@@ -2266,8 +2266,8 @@ sub_8198C34: @ 8198C34
bx r0
thumb_func_end sub_8198C34
- thumb_func_start sub_8198C58
-sub_8198C58: @ 8198C58
+ thumb_func_start ProcessMenuInputNoWrap_
+ProcessMenuInputNoWrap_: @ 8198C58
push {r4,lr}
bl ProcessMenuInputNoWrapAround
lsls r0, 24
@@ -2282,7 +2282,7 @@ _08198C6E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8198C58
+ thumb_func_end ProcessMenuInputNoWrap_
thumb_func_start sub_8198C78
sub_8198C78: @ 8198C78
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
index 423f653d9..444632dc5 100644
--- a/asm/menu_helpers.s
+++ b/asm/menu_helpers.s
@@ -277,7 +277,7 @@ Task_CallYesOrNoCallback: @ 8121FDC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 4ae689d4d..27ff4721c 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -2554,7 +2554,7 @@ sub_81B1708: @ 81B1708
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4010,7 +4010,7 @@ sub_81B227C: @ 81B227C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -7952,7 +7952,7 @@ sub_81B43DC: @ 81B43DC
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8485,7 +8485,7 @@ sub_81B48DC: @ 81B48DC
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8777,7 +8777,7 @@ sub_81B4BA0: @ 81B4BA0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8883,7 +8883,7 @@ sub_81B4C94: @ 81B4C94
push {r7}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9691,7 +9691,7 @@ sub_81B5430: @ 81B5430
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9985,7 +9985,7 @@ sub_81B56D8: @ 81B56D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -12970,7 +12970,7 @@ sub_81B7028: @ 81B7028
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -13272,7 +13272,7 @@ sub_81B72C8: @ 81B72C8
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r5, r0, 24
cmp r5, 0
@@ -15054,7 +15054,7 @@ sub_81B82D4: @ 81B82D4
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 2287d4123..c1bb4f632 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1378,7 +1378,7 @@ sub_816B9D8: @ 816B9D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r0, 24
movs r1, 0x1
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index c30cd7c28..2deae56ab 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -3409,7 +3409,7 @@ _080C8F0C:
adds r0, 0x1
strb r0, [r1]
_080C8F22:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4133,7 +4133,7 @@ _080C9584:
b _080C9664
.pool
_080C95A4:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4927,7 +4927,7 @@ _080C9C78:
b _080C9CAA
.pool
_080C9C8C:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -5058,7 +5058,7 @@ _080C9DAC:
b _080C9DE0
.pool
_080C9DC0:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/rom6.s b/asm/rom6.s
index d3bb605e3..80b2a98ec 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -4188,6 +4188,8 @@ sp0C8_whiteout_maybe: @ 813787C
.pool
thumb_func_end sp0C8_whiteout_maybe
+@ time_events.o
+
thumb_func_start sub_8137890
sub_8137890: @ 8137890
push {r4,lr}
@@ -4244,8 +4246,8 @@ sub_81378E4: @ 81378E4
bx r0
thumb_func_end sub_81378E4
- thumb_func_start sub_8137904
-sub_8137904: @ 8137904
+ thumb_func_start UpdateMirageRnd
+UpdateMirageRnd: @ 8137904
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -4271,7 +4273,7 @@ _08137928:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8137904
+ thumb_func_end UpdateMirageRnd
thumb_func_start sub_813793C
sub_813793C: @ 813793C
@@ -4385,8 +4387,8 @@ sub_8137A0C: @ 8137A0C
.pool
thumb_func_end sub_8137A0C
- thumb_func_start sub_8137A20
-sub_8137A20: @ 8137A20
+ thumb_func_start UpdateBirchState
+UpdateBirchState: @ 8137A20
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -4405,7 +4407,9 @@ sub_8137A20: @ 8137A20
pop {r0}
bx r0
.pool
- thumb_func_end sub_8137A20
+ thumb_func_end UpdateBirchState
+
+@ birch_pc.o
thumb_func_start sub_8137A4C
sub_8137A4C: @ 8137A4C
@@ -7605,15 +7609,15 @@ _08139456:
bx r1
thumb_func_end sub_81393FC
- thumb_func_start sub_813945C
-sub_813945C: @ 813945C
+ thumb_func_start SetShoalItemFlag
+SetShoalItemFlag: @ 813945C
push {lr}
ldr r0, =0x000008bf
bl FlagSet
pop {r0}
bx r0
.pool
- thumb_func_end sub_813945C
+ thumb_func_end SetShoalItemFlag
thumb_func_start sub_813946C
sub_813946C: @ 813946C
@@ -8934,8 +8938,8 @@ _08139EEE:
bx r1
thumb_func_end sub_8139ED0
- thumb_func_start sub_8139EF4
-sub_8139EF4: @ 8139EF4
+ thumb_func_start UpdateFrontierManiac
+UpdateFrontierManiac: @ 8139EF4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -8954,7 +8958,7 @@ sub_8139EF4: @ 8139EF4
pop {r0}
bx r0
.pool
- thumb_func_end sub_8139EF4
+ thumb_func_end UpdateFrontierManiac
thumb_func_start sub_8139F20
sub_8139F20: @ 8139F20
@@ -10002,8 +10006,8 @@ _0813A7C6:
.pool
thumb_func_end sub_813A7B8
- thumb_func_start sub_813A7F4
-sub_813A7F4: @ 813A7F4
+ thumb_func_start UpdateFrontierGambler
+UpdateFrontierGambler: @ 813A7F4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -10022,7 +10026,7 @@ sub_813A7F4: @ 813A7F4
pop {r0}
bx r0
.pool
- thumb_func_end sub_813A7F4
+ thumb_func_end UpdateFrontierGambler
thumb_func_start sub_813A820
sub_813A820: @ 813A820
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index d89593cb4..08f2db942 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -8381,7 +8381,7 @@ _080170E0:
negs r0, r0
b _08017110
_080170F2:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r2, 0x80
@@ -11739,7 +11739,7 @@ _08018BD6:
b _08018C3E
.pool
_08018BE4:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r6, r0, 24
movs r1, 0x80
@@ -34351,7 +34351,7 @@ _0802426A:
bl sub_8197930
b _080242D0
_08024270:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -53272,7 +53272,7 @@ _0802DA84:
thumb_func_start sub_802DA8C
sub_802DA8C: @ 802DA8C
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r0, 24
pop {r1}
diff --git a/asm/script_menu.s b/asm/script_menu.s
index be7cbfbc7..233a5e14c 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -444,7 +444,7 @@ task_yes_no_maybe: @ 80E215C
b _080E21C4
.pool
_080E2180:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 6390ae992..24e755648 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -1581,7 +1581,7 @@ sub_812B158: @ 812B158
thumb_func_start sub_812B1B0
sub_812B1B0: @ 812B1B0
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 7eb31db12..b169c480c 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -1121,7 +1121,7 @@ sub_80A00EC: @ 80A00EC
thumb_func_start sub_80A0108
sub_80A0108: @ 80A0108
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1226,7 +1226,7 @@ sub_80A01D0: @ 80A01D0
thumb_func_start sub_80A01EC
sub_80A01EC: @ 80A01EC
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1441,7 +1441,7 @@ sub_80A0388: @ 80A0388
thumb_func_start sub_80A03A4
sub_80A03A4: @ 80A03A4
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/trade.s b/asm/trade.s
index 621e413f0..304d874f2 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -3696,7 +3696,7 @@ _0807920E:
thumb_func_start sub_8079218
sub_8079218: @ 8079218
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3798,7 +3798,7 @@ _080792D8:
thumb_func_start sub_80792E4
sub_80792E4: @ 80792E4
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index 3c580654c..f22fd9061 100755
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -1240,7 +1240,7 @@ sub_8166D44: @ 8166D44
thumb_func_start sub_8166DE4
sub_8166DE4: @ 8166DE4
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
lsrs r4, r0, 24
asrs r1, r0, 24
diff --git a/asm/wallclock.s b/asm/wallclock.s
deleted file mode 100644
index 5c818212c..000000000
--- a/asm/wallclock.s
+++ /dev/null
@@ -1,1515 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81347B4
-sub_81347B4: @ 81347B4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81347B4
-
- thumb_func_start LoadWallClockGraphics
-LoadWallClockGraphics: @ 81347C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0813486C:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _0813486C
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, =gUnknown_08DCC05C
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _081348FC
- ldr r0, =gUnknown_08DCC01C
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- b _08134906
- .pool
-_081348FC:
- ldr r0, =gUnknown_08DCC03C
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
-_08134906:
- bl GetOverworldTextboxPalettePtr
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085B21D4
- movs r1, 0xC0
- movs r2, 0x8
- bl LoadPalette
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085B21FC
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_085B21DC
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r1, 0x94
- lsls r1, 2
- movs r0, 0
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- ldr r0, =gUnknown_085B2208
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_085B2218
- bl LoadSpritePalettes
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end LoadWallClockGraphics
-
- thumb_func_start sub_813498C
-sub_813498C: @ 813498C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_81347B4
- bl SetVBlankCallback
- ldr r0, =sub_8134C9C
- bl SetMainCallback2
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_813498C
-
- thumb_func_start Cb2_StartWallClock
-Cb2_StartWallClock: @ 81349F4
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0xC
- bl LoadWallClockGraphics
- ldr r0, =gUnknown_08DCC648
- ldr r1, =0x06003800
- bl LZ77UnCompVram
- ldr r0, =sub_8134CB8
- movs r1, 0
- bl CreateTask
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- mov r8, r1
- movs r1, 0xA
- strh r1, [r0, 0xC]
- mov r2, r8
- strh r2, [r0, 0xE]
- strh r2, [r0, 0x10]
- strh r2, [r0, 0x12]
- strh r2, [r0, 0x14]
- strh r2, [r0, 0x8]
- movs r1, 0x96
- lsls r1, 1
- strh r1, [r0, 0xA]
- ldr r0, =gUnknown_085B2250
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- mov r9, r1
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- ldrb r2, [r1, 0x1]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- movs r2, 0x1
- mov r10, r2
- mov r2, r10
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r2, [r1, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x3]
- ldr r0, =gUnknown_085B2268
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- ldrb r0, [r1, 0x1]
- ands r5, r0
- mov r0, r10
- orrs r5, r0
- strb r5, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- ands r4, r0
- movs r0, 0x2
- orrs r4, r0
- strb r4, [r1, 0x3]
- ldr r0, =gUnknown_085B22A0
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- movs r0, 0x2D
- strh r0, [r1, 0x30]
- ldr r0, =gUnknown_085B22B8
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- movs r0, 0x5A
- strh r0, [r1, 0x30]
- bl sub_813498C
- ldr r2, =gText_Confirm3
- movs r0, 0x1
- str r0, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Cb2_StartWallClock
-
- thumb_func_start Cb2_ViewWallClock
-Cb2_ViewWallClock: @ 8134B44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- bl LoadWallClockGraphics
- ldr r0, =gUnknown_08DCC908
- ldr r1, =0x06003800
- bl LZ77UnCompVram
- ldr r0, =sub_8134F10
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- bl sub_8135130
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08134B9C
- movs r2, 0x2D
- mov r10, r2
- movs r0, 0x5A
- str r0, [sp, 0xC]
- b _08134BA4
- .pool
-_08134B9C:
- movs r1, 0x5A
- mov r10, r1
- movs r2, 0x87
- str r2, [sp, 0xC]
-_08134BA4:
- ldr r0, =gUnknown_085B2250
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0
- mov r9, r0
- strh r7, [r1, 0x2E]
- ldrb r2, [r1, 0x1]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- movs r2, 0x1
- mov r8, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r2, [r1, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x3]
- ldr r0, =gUnknown_085B2268
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- ldrb r0, [r1, 0x1]
- ands r5, r0
- mov r0, r8
- orrs r5, r0
- strb r5, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- ands r4, r0
- movs r0, 0x2
- orrs r4, r0
- strb r4, [r1, 0x3]
- ldr r0, =gUnknown_085B22A0
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- mov r2, r10
- strh r2, [r1, 0x30]
- ldr r0, =gUnknown_085B22B8
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- mov r0, sp
- ldrh r0, [r0, 0xC]
- strh r0, [r1, 0x30]
- bl sub_813498C
- ldr r2, =gText_Cancel4
- movs r0, 0x1
- str r0, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Cb2_ViewWallClock
-
- thumb_func_start sub_8134C9C
-sub_8134C9C: @ 8134C9C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8134C9C
-
- thumb_func_start sub_8134CB8
-sub_8134CB8: @ 8134CB8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134CD8
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134CE8
- str r0, [r1]
-_08134CD8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134CB8
-
- thumb_func_start sub_8134CE8
-sub_8134CE8: @ 8134CE8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- beq _08134D1C
- ldrh r0, [r5, 0x8]
- ldrb r1, [r5, 0x10]
- ldrb r2, [r5, 0x14]
- bl sub_8134FFC
- strh r0, [r5, 0x8]
- b _08134DBE
- .pool
-_08134D1C:
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- strh r0, [r5, 0x8]
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- movs r1, 0xC
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- adds r4, r1
- strh r4, [r5, 0xA]
- ldr r2, =gMain
- ldrh r0, [r2, 0x2E]
- movs r3, 0x1
- adds r1, r3, 0
- ands r1, r0
- cmp r1, 0
- beq _08134D70
- ldr r0, =sub_8134DC4
- str r0, [r5]
- b _08134DBE
- .pool
-_08134D70:
- strh r1, [r5, 0x10]
- ldrh r1, [r2, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08134D7E
- strh r3, [r5, 0x10]
-_08134D7E:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08134D8C
- movs r0, 0x2
- strh r0, [r5, 0x10]
-_08134D8C:
- ldrh r1, [r5, 0x10]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08134DBC
- ldrh r2, [r5, 0x14]
- movs r3, 0x14
- ldrsh r0, [r5, r3]
- cmp r0, 0xFE
- bgt _08134DA4
- adds r0, r2, 0x1
- strh r0, [r5, 0x14]
-_08134DA4:
- ldrh r0, [r5, 0x8]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r5, 0x14]
- bl sub_8134FFC
- strh r0, [r5, 0x8]
- ldrb r1, [r5, 0x10]
- adds r0, r6, 0
- bl sub_813504C
- b _08134DBE
-_08134DBC:
- strh r0, [r5, 0x14]
-_08134DBE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8134CE8
-
- thumb_func_start sub_8134DC4
-sub_8134DC4: @ 8134DC4
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x94
- lsls r5, 2
- movs r0, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r2, =gText_IsThisTheCorrectTime
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_085B21F4
- adds r1, r5, 0
- movs r2, 0xD
- movs r3, 0x1
- bl CreateYesNoMenu
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =c3_80BF560
- str r1, [r0]
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134DC4
-
- thumb_func_start c3_80BF560
-c3_80BF560: @ 8134E30
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8198C58
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08134E56
- cmp r1, 0
- bgt _08134E50
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08134E74
- b _08134E96
-_08134E50:
- cmp r1, 0x1
- beq _08134E74
- b _08134E96
-_08134E56:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134EA4
- b _08134E94
- .pool
-_08134E74:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- bl ClearWindowTilemap
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134CE8
-_08134E94:
- str r0, [r1]
-_08134E96:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_80BF560
-
- thumb_func_start sub_8134EA4
-sub_8134EA4: @ 8134EA4
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- bl RtcInitLocalTimeOffset
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =c2_080111BC
- str r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134EA4
-
- thumb_func_start c2_080111BC
-c2_080111BC: @ 8134EE8
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134F02
- bl FreeAllWindowBuffers
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08134F02:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_080111BC
-
- thumb_func_start sub_8134F10
-sub_8134F10: @ 8134F10
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134F30
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134F40
- str r0, [r1]
-_08134F30:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F10
-
- thumb_func_start sub_8134F40
-sub_8134F40: @ 8134F40
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8135130
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08134F66
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134F78
- str r0, [r1]
-_08134F66:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F40
-
- thumb_func_start sub_8134F78
-sub_8134F78: @ 8134F78
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8134FB0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F78
-
- thumb_func_start sub_8134FB0
-sub_8134FB0: @ 8134FB0
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134FC6
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08134FC6:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134FB0
-
- thumb_func_start sub_8134FD4
-sub_8134FD4: @ 8134FD4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x3C
- bls _08134FE4
- movs r0, 0x6
- b _08134FF6
-_08134FE4:
- cmp r0, 0x1E
- bls _08134FEC
- movs r0, 0x3
- b _08134FF6
-_08134FEC:
- cmp r1, 0xA
- bhi _08134FF4
- movs r0, 0x1
- b _08134FF6
-_08134FF4:
- movs r0, 0x2
-_08134FF6:
- pop {r1}
- bx r1
- thumb_func_end sub_8134FD4
-
- thumb_func_start sub_8134FFC
-sub_8134FFC: @ 8134FFC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r2, 0
- bl sub_8134FD4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r5, 0x1
- beq _0813501E
- cmp r5, 0x2
- beq _08135030
- b _08135044
-_0813501E:
- cmp r4, 0
- beq _08135026
- subs r0, r4, r1
- b _0813503C
-_08135026:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- b _0813503C
-_08135030:
- movs r0, 0xB4
- lsls r0, 1
- subs r0, r1
- cmp r4, r0
- bge _08135042
- adds r0, r4, r1
-_0813503C:
- lsls r0, 16
- lsrs r4, r0, 16
- b _08135044
-_08135042:
- movs r4, 0
-_08135044:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8134FFC
-
- thumb_func_start sub_813504C
-sub_813504C: @ 813504C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r4, 0x1
- beq _08135060
- cmp r4, 0x2
- beq _081350A0
- b _081350DE
-_08135060:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r5, 0xE
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _08135080
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081350DE
- .pool
-_08135080:
- movs r0, 0x3B
- strh r0, [r1, 0xE]
- ldrh r2, [r1, 0xC]
- movs r6, 0xC
- ldrsh r0, [r1, r6]
- cmp r0, 0
- ble _08135092
- subs r0, r2, 0x1
- b _08135094
-_08135092:
- movs r0, 0x17
-_08135094:
- strh r0, [r1, 0xC]
- adds r0, r3, 0
- adds r1, r4, 0
- bl sub_81350E8
- b _081350DE
-_081350A0:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r5, 0xE
- ldrsh r0, [r1, r5]
- cmp r0, 0x3A
- bgt _081350C0
- adds r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081350DE
- .pool
-_081350C0:
- movs r5, 0
- strh r5, [r1, 0xE]
- ldrh r2, [r1, 0xC]
- movs r6, 0xC
- ldrsh r0, [r1, r6]
- cmp r0, 0x16
- bgt _081350D4
- adds r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _081350D6
-_081350D4:
- strh r5, [r1, 0xC]
-_081350D6:
- adds r0, r3, 0
- adds r1, r4, 0
- bl sub_81350E8
-_081350DE:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_813504C
-
- thumb_func_start sub_81350E8
-sub_81350E8: @ 81350E8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0xC]
- cmp r3, 0x1
- beq _0813510C
- cmp r3, 0x2
- beq _0813511E
- b _0813512A
- .pool
-_0813510C:
- cmp r0, 0xB
- beq _08135116
- cmp r0, 0x17
- beq _0813511A
- b _0813512A
-_08135116:
- movs r0, 0
- b _08135128
-_0813511A:
- strh r3, [r1, 0x12]
- b _0813512A
-_0813511E:
- cmp r0, 0
- beq _08135128
- cmp r0, 0xC
- bne _0813512A
- movs r0, 0x1
-_08135128:
- strh r0, [r1, 0x12]
-_0813512A:
- pop {r0}
- bx r0
- thumb_func_end sub_81350E8
-
- thumb_func_start sub_8135130
-sub_8135130: @ 8135130
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl RtcCalcLocalTime
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r6, r0, r1
- ldr r5, =gLocalTime
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- strh r0, [r6, 0xC]
- movs r0, 0x3
- ldrsb r0, [r5, r0]
- strh r0, [r6, 0xE]
- movs r0, 0xE
- ldrsh r1, [r6, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- strh r0, [r6, 0x8]
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- movs r1, 0xC
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 1
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- adds r4, r1
- strh r4, [r6, 0xA]
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- bgt _081351A0
- movs r0, 0
- b _081351A2
- .pool
-_081351A0:
- movs r0, 0x1
-_081351A2:
- strh r0, [r6, 0x12]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8135130
-
- thumb_func_start sub_81351AC
-sub_81351AC: @ 81351AC
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r4, [r0, 0x8]
- adds r7, r4, 0
- adds r0, r4, 0
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081351D4
- adds r0, 0xF
-_081351D4:
- lsls r0, 12
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081351E8
- adds r0, 0xF
-_081351E8:
- lsls r1, r0, 12
- lsrs r1, 16
- lsls r3, r5, 16
- lsrs r2, r3, 16
- negs r3, r3
- lsrs r3, 16
- str r1, [sp]
- movs r0, 0
- bl SetOamMatrix
- ldr r1, =gUnknown_085B22D0
- lsls r2, r7, 1
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r3, r0, 16
- adds r1, 0x1
- adds r2, r1
- movs r0, 0
- ldrsb r0, [r2, r0]
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r3, 0x80
- bls _08135224
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r3, r0
-_08135224:
- cmp r2, 0x80
- bls _08135230
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r2, r0
-_08135230:
- strh r3, [r6, 0x24]
- strh r2, [r6, 0x26]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81351AC
-
- thumb_func_start sub_8135244
-sub_8135244: @ 8135244
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r4, [r0, 0xA]
- adds r7, r4, 0
- adds r0, r4, 0
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0813526C
- adds r0, 0xF
-_0813526C:
- lsls r0, 12
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08135280
- adds r0, 0xF
-_08135280:
- lsls r1, r0, 12
- lsrs r1, 16
- lsls r3, r5, 16
- lsrs r2, r3, 16
- negs r3, r3
- lsrs r3, 16
- str r1, [sp]
- movs r0, 0x1
- bl SetOamMatrix
- ldr r1, =gUnknown_085B22D0
- lsls r2, r7, 1
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r3, r0, 16
- adds r1, 0x1
- adds r2, r1
- movs r0, 0
- ldrsb r0, [r2, r0]
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r3, 0x80
- bls _081352BC
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r3, r0
-_081352BC:
- cmp r2, 0x80
- bls _081352C8
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r2, r0
-_081352C8:
- strh r3, [r6, 0x24]
- strh r2, [r6, 0x26]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8135244
-
- thumb_func_start sub_81352DC
-sub_81352DC: @ 81352DC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0813531C
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x3C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _08135308
- adds r0, r1, 0x5
- strh r0, [r4, 0x30]
-_08135308:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x3B
- bgt _0813533C
- adds r0, r1, 0x1
- b _0813533A
- .pool
-_0813531C:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x2E
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _0813532E
- subs r0, r1, 0x5
- strh r0, [r4, 0x30]
-_0813532E:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x4B
- ble _0813533C
- subs r0, r1, 0x1
-_0813533A:
- strh r0, [r4, 0x30]
-_0813533C:
- ldrh r0, [r4, 0x30]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135354
- ldr r1, =0x00000fff
- adds r0, r1
-_08135354:
- asrs r0, 12
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135370
- ldr r2, =0x00000fff
- adds r0, r2
-_08135370:
- asrs r0, 12
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81352DC
-
- thumb_func_start sub_8135380
-sub_8135380: @ 8135380
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081353C0
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x69
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _081353AC
- adds r0, r1, 0x5
- strh r0, [r4, 0x30]
-_081353AC:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x68
- bgt _081353E0
- adds r0, r1, 0x1
- b _081353DE
- .pool
-_081353C0:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x5B
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _081353D2
- subs r0, r1, 0x5
- strh r0, [r4, 0x30]
-_081353D2:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x78
- ble _081353E0
- subs r0, r1, 0x1
-_081353DE:
- strh r0, [r4, 0x30]
-_081353E0:
- ldrh r0, [r4, 0x30]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _081353F8
- ldr r1, =0x00000fff
- adds r0, r1
-_081353F8:
- asrs r0, 12
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135414
- ldr r2, =0x00000fff
- adds r0, r2
-_08135414:
- asrs r0, 12
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8135380
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data4c.s b/data/data4c.s
index b86cd2add..c18d0d592 100644
--- a/data/data4c.s
+++ b/data/data4c.s
@@ -5,39 +5,6 @@
.section .rodata
-gUnknown_085B21D4:: @ 85B21D4
- .incbin "baserom.gba", 0x5b21d4, 0x8
-
-gUnknown_085B21DC:: @ 85B21DC
- .incbin "baserom.gba", 0x5b21dc, 0x18
-
-gUnknown_085B21F4:: @ 85B21F4
- .incbin "baserom.gba", 0x5b21f4, 0x8
-
-gUnknown_085B21FC:: @ 85B21FC
- .incbin "baserom.gba", 0x5b21fc, 0xc
-
-gUnknown_085B2208:: @ 85B2208
- .incbin "baserom.gba", 0x5b2208, 0x10
-
-gUnknown_085B2218:: @ 85B2218
- .incbin "baserom.gba", 0x5b2218, 0x38
-
-gUnknown_085B2250:: @ 85B2250
- .incbin "baserom.gba", 0x5b2250, 0x18
-
-gUnknown_085B2268:: @ 85B2268
- .incbin "baserom.gba", 0x5b2268, 0x38
-
-gUnknown_085B22A0:: @ 85B22A0
- .incbin "baserom.gba", 0x5b22a0, 0x18
-
-gUnknown_085B22B8:: @ 85B22B8
- .incbin "baserom.gba", 0x5b22b8, 0x18
-
-gUnknown_085B22D0:: @ 85B22D0
- .incbin "baserom.gba", 0x5b22d0, 0x2d0
-
gPokeblockFlavorCompatibilityTable:: @ 85B25A0
.incbin "baserom.gba", 0x5b25a0, 0x80
diff --git a/data/scripts/maps/BattleFrontier_Lounge2.inc b/data/scripts/maps/BattleFrontier_Lounge2.inc
index 6b43747cc..bd20f13ac 100644
--- a/data/scripts/maps/BattleFrontier_Lounge2.inc
+++ b/data/scripts/maps/BattleFrontier_Lounge2.inc
@@ -17,29 +17,29 @@ BattleFrontier_Lounge2_EventScript_26065F:: @ 826065F
end
BattleFrontier_Lounge2_EventScript_26066D:: @ 826066D
- compare_var_to_value VAR_0x402F, 0
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 0
call_if 1, BattleFrontier_Lounge2_EventScript_26070A
- compare_var_to_value VAR_0x402F, 1
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 1
call_if 1, BattleFrontier_Lounge2_EventScript_26070F
- compare_var_to_value VAR_0x402F, 2
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 2
call_if 1, BattleFrontier_Lounge2_EventScript_260714
- compare_var_to_value VAR_0x402F, 3
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3
call_if 1, BattleFrontier_Lounge2_EventScript_260719
- compare_var_to_value VAR_0x402F, 4
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4
call_if 1, BattleFrontier_Lounge2_EventScript_26071E
- compare_var_to_value VAR_0x402F, 5
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 5
call_if 1, BattleFrontier_Lounge2_EventScript_260723
- compare_var_to_value VAR_0x402F, 6
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 6
call_if 1, BattleFrontier_Lounge2_EventScript_260728
- compare_var_to_value VAR_0x402F, 7
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 7
call_if 1, BattleFrontier_Lounge2_EventScript_26072D
- compare_var_to_value VAR_0x402F, 8
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 8
call_if 1, BattleFrontier_Lounge2_EventScript_260732
- compare_var_to_value VAR_0x402F, 9
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 9
call_if 1, BattleFrontier_Lounge2_EventScript_260737
- compare_var_to_value VAR_0x402F, 3
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3
call_if 3, BattleFrontier_Lounge2_EventScript_2606F8
- compare_var_to_value VAR_0x402F, 4
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4
call_if 4, BattleFrontier_Lounge2_EventScript_260701
special sub_8139F20
waitmessage
diff --git a/data/scripts/maps/BattleFrontier_Lounge3.inc b/data/scripts/maps/BattleFrontier_Lounge3.inc
index 0612ccb8e..5fb7a8367 100644
--- a/data/scripts/maps/BattleFrontier_Lounge3.inc
+++ b/data/scripts/maps/BattleFrontier_Lounge3.inc
@@ -32,7 +32,7 @@ BattleFrontier_Lounge3_EventScript_261DAF:: @ 8261DAF
BattleFrontier_Lounge3_EventScript_261DE9:: @ 8261DE9
multichoice 20, 4, 87, 0
- copyvar VAR_0x4032, VAR_RESULT
+ copyvar VAR_FRONTIER_GAMBLER_AMOUNT_BET, VAR_RESULT
switch VAR_RESULT
case 0, BattleFrontier_Lounge3_EventScript_261E30
case 1, BattleFrontier_Lounge3_EventScript_261E3B
@@ -69,7 +69,7 @@ BattleFrontier_Lounge3_EventScript_261E51:: @ 8261E51
BattleFrontier_Lounge3_EventScript_261E75:: @ 8261E75
copyvar VAR_0x8004, VAR_0x8008
special sub_813A9A4
- setvar VAR_0x4033, 1
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
special sub_813A8FC
playse SE_REGI
msgbox BattleFrontier_Lounge3_Text_262BE0, 4
@@ -113,37 +113,37 @@ BattleFrontier_Lounge3_EventScript_261EEB:: @ 8261EEB
BattleFrontier_Lounge3_EventScript_261EF9:: @ 8261EF9
msgbox BattleFrontier_Lounge3_Text_26346B, 4
- compare_var_to_value VAR_0x4033, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
goto_if 4, BattleFrontier_Lounge3_EventScript_261F12
goto BattleFrontier_Lounge3_EventScript_261DAF
end
BattleFrontier_Lounge3_EventScript_261F12:: @ 8261F12
- compare_var_to_value VAR_0x4033, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
goto_eq BattleFrontier_Lounge3_EventScript_261F9E
- compare_var_to_value VAR_0x4033, 2
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 2
goto_eq BattleFrontier_Lounge3_EventScript_261F2E
goto BattleFrontier_Lounge3_EventScript_261F71
end
BattleFrontier_Lounge3_EventScript_261F2E:: @ 8261F2E
msgbox BattleFrontier_Lounge3_Text_263334, 4
- compare_var_to_value VAR_0x4032, 0
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 0
call_if 1, BattleFrontier_Lounge3_EventScript_261F80
- compare_var_to_value VAR_0x4032, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 1
call_if 1, BattleFrontier_Lounge3_EventScript_261F8A
- compare_var_to_value VAR_0x4032, 2
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 2
call_if 1, BattleFrontier_Lounge3_EventScript_261F94
msgbox BattleFrontier_Lounge3_Text_2633D4, 9
special sub_813A9D0
msgbox BattleFrontier_Lounge3_Text_2633F2, 4
- setvar VAR_0x4033, 0
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0
release
end
BattleFrontier_Lounge3_EventScript_261F71:: @ 8261F71
msgbox BattleFrontier_Lounge3_Text_263298, 4
- setvar VAR_0x4033, 0
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0
release
end
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index 85952d9f0..05d93c35d 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -114,7 +114,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_29283F:: @ 829283F
LittlerootTown_BrendansHouse_2F_EventScript_292849:: @ 8292849
fadescreen 1
- special Special_StartWallClock
+ special StartWallClock
waitstate
return
diff --git a/data/specials.inc b/data/specials.inc
index bb91806b8..3428e7e08 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -164,7 +164,7 @@ gSpecials:: @ 81DBA64
def_special sub_8138B8C
def_special sub_814FC9C
def_special sub_8085784
- def_special Special_StartWallClock
+ def_special StartWallClock
def_special Special_ViewWallClock
def_special sub_80B1138
def_special sub_80B086C
diff --git a/data/starter_choose.s b/data/starter_choose.s
index ae81aae20..a951a8987 100644
--- a/data/starter_choose.s
+++ b/data/starter_choose.s
@@ -63,5 +63,4 @@ sSpriteTemplate_PokeBall:: @ 85B1F28
.incbin "baserom.gba", 0x5b1f28, 0x18
gUnknown_085B1F40:: @ 85B1F40
- .incbin "baserom.gba", 0x5b1f40, 0x294
-
+ .incbin "baserom.gba", 0x5b1f40, 0x18
diff --git a/graphics/wallclock/graphics_85b1f58.png b/graphics/wallclock/graphics_85b1f58.png
new file mode 100644
index 000000000..06a4ecad0
--- /dev/null
+++ b/graphics/wallclock/graphics_85b1f58.png
Binary files differ
diff --git a/graphics/wallclock/palette_85b21d4.pal b/graphics/wallclock/palette_85b21d4.pal
new file mode 100644
index 000000000..fda317608
--- /dev/null
+++ b/graphics/wallclock/palette_85b21d4.pal
@@ -0,0 +1,7 @@
+JASC-PAL
+0100
+4
+0 0 0
+74 180 189
+255 255 255
+0 0 0
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 6828614bf..6dc8d0ccd 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -50,11 +50,14 @@
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_0x402D 0x402D
#define VAR_0x402E 0x402E
-#define VAR_0x402F 0x402F
-#define VAR_0x4030 0x4030
-#define VAR_0x4031 0x4031
-#define VAR_0x4032 0x4032
-#define VAR_0x4033 0x4033
+
+#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
+
+#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
+#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
+#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
+#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
+
#define VAR_0x4034 0x4034
#define VAR_0x4035 0x4035
#define VAR_STORAGE_UNKNOWN 0x4036
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
index 01e5d9762..dac5ea6c9 100644
--- a/include/dewford_trend.h
+++ b/include/dewford_trend.h
@@ -3,5 +3,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
+void UpdateDewfordTrendPerDay(u16 days);
#endif // GUARD_DEWFORDTREND_H
diff --git a/include/field_screen.h b/include/field_screen.h
index 089e79cc4..cfc0d081f 100644
--- a/include/field_screen.h
+++ b/include/field_screen.h
@@ -9,5 +9,6 @@
void pal_fill_black(void);
bool8 sub_80ABDFC(void);
void sub_80AF168(void);
+void UpdateWeatherPerDay(u16 days);
#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 7b6b98c06..ad4820bcf 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -78,6 +78,81 @@
#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16)
#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32)
+#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, (block)); \
+ _src += (block); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
+#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
+
+#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
+
+#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, (block)); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
+#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16)
+
+#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32)
+
+#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+}
+
+#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
+#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
+
+#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+}
+
+#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
+#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
+
+#define DmaClearDefvars(dmaNum, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaClear##bit(dmaNum, _dest, _size); \
+}
+
+#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
+#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
+
#define DmaStop(dmaNum) \
{ \
vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \
diff --git a/include/graphics.h b/include/graphics.h
index 4a522a429..aad5c0190 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -117,6 +117,11 @@ extern const u8 gUnknown_08DB9F08[];
extern const u8 gUnknown_08DB9FFC[];
extern const u8 gUnknown_08DBA020[];
extern const u8 gUnknown_08DBA12C[];
+extern const u8 gUnknown_08DCC05C[];
+extern const u16 gUnknown_08DCC01C[];
+extern const u16 gUnknown_08DCC03C[];
+extern const u8 gUnknown_08DCC648[];
+extern const u8 gUnknown_08DCC908[];
extern const u8 gUnknown_08DD87C0[];
extern const u8 gUnknown_08DD8EE0[];
extern const u16 gUnknown_08DD8780[];
diff --git a/include/menu.h b/include/menu.h
index 6b24a7a04..730eac732 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -29,8 +29,8 @@ int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u
bool8 free_temp_tile_data_buffers_if_possible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
-s8 sub_8198C58(void);
void copy_decompressed_tile_data_to_vram_autofree(u8 arg0, const void *arg1, bool32 arg2, u16 arg3, u8 arg4);
+s8 ProcessMenuInputNoWrap_(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str);
diff --git a/include/rom6.h b/include/rom6.h
index b4a972794..6d20752e2 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -5,5 +5,11 @@ void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
+bool8 sub_813B9C0(void);
+void UpdateMirageRnd(u16 days);
+void UpdateBirchState(u16 days);
+void UpdateFrontierManiac(u16 days);
+void UpdateFrontierGambler(u16 days);
+void SetShoalItemFlag(u16 days);
#endif //GUARD_ROM6_H
diff --git a/include/strings.h b/include/strings.h
index 26233a458..a8b872c11 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -87,6 +87,9 @@ extern const u8 gText_MoveCloserToLinkPartner[];
extern const u8 gText_CommErrorCheckConnections[];
extern const u8 gText_ABtnTitleScreen[];
extern const u8 gText_ABtnRegistrationCounter[];
+extern const u8 gText_Confirm3[];
+extern const u8 gText_Cancel4[];
+extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
diff --git a/include/tv.h b/include/tv.h
index 75338704f..eca11385e 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -15,5 +15,6 @@ void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
+void UpdateTVShowsPerDay(u16 days);
#endif //GUARD_TV_H
diff --git a/include/wallclock.h b/include/wallclock.h
new file mode 100644
index 000000000..48697c19f
--- /dev/null
+++ b/include/wallclock.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_WALLCLOCK_H
+#define GUARD_WALLCLOCK_H
+
+void Cb2_StartWallClock(void);
+
+#endif //GUARD_WALLCLOCK_H
diff --git a/ld_script.txt b/ld_script.txt
index eb159553a..31add07ea 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -108,7 +108,7 @@ SECTIONS {
src/event_data.o(.text);
asm/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
- asm/clock.o(.text);
+ src/clock.o(.text);
asm/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
asm/start_menu.o(.text);
@@ -179,7 +179,7 @@ SECTIONS {
src/battle_ai_script_commands.o(.text);
asm/trader.o(.text);
src/starter_choose.o(.text);
- asm/wallclock.o(.text);
+ src/wallclock.o(.text);
asm/rom6.o(.text);
asm/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
@@ -427,6 +427,7 @@ SECTIONS {
src/battle_ai_script_commands.o(.rodata);
data/data4.o(.rodata);
data/starter_choose.o(.rodata);
+ src/wallclock.o(.rodata);
data/data4c.o(.rodata);
src/battle_controller_link_partner.o(.rodata);
src/battle_message.o(.rodata);
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 84a431127..7200f3465 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -2444,7 +2444,7 @@ static void CB2_HandleBlenderEndGame(void)
sBerryBlenderData->gameEndState++;
break;
case 10:
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 1:
case -1:
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index d00944ac1..6d6a1545b 100755
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -88,7 +88,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
{
- switch(sub_8198C58())
+ switch(ProcessMenuInputNoWrap_())
{
case 0:
FillWindowPixelBuffer(0, 17);
diff --git a/src/clock.c b/src/clock.c
new file mode 100644
index 000000000..7cea30166
--- /dev/null
+++ b/src/clock.c
@@ -0,0 +1,93 @@
+#include "global.h"
+#include "rom6.h"
+#include "event_data.h"
+#include "rtc.h"
+#include "lottery_corner.h"
+#include "dewford_trend.h"
+#include "tv.h"
+#include "field_screen.h"
+#include "berry.h"
+#include "main.h"
+#include "overworld.h"
+#include "wallclock.h"
+
+// static types
+
+// static declarations
+
+static void UpdatePerDay(struct Time *localTime);
+static void UpdatePerMinute(struct Time *localTime);
+
+// rodata
+
+// text
+
+static void InitTimeBasedEvents(void)
+{
+ FlagSet(FLAG_SYS_CLOCK_SET);
+ RtcCalcLocalTime();
+ gSaveBlock2Ptr->lastBerryTreeUpdate = gLocalTime;
+ VarSet(VAR_DAYS, gLocalTime.days);
+}
+
+void DoTimeBasedEvents(void)
+{
+ if (FlagGet(FLAG_SYS_CLOCK_SET) && !sub_813B9C0())
+ {
+ RtcCalcLocalTime();
+ UpdatePerDay(&gLocalTime);
+ UpdatePerMinute(&gLocalTime);
+ }
+}
+
+static void UpdatePerDay(struct Time *localTime)
+{
+ u16 *days = GetVarPointer(VAR_DAYS);
+ u16 daysSince;
+
+ if (*days != localTime->days && *days <= localTime->days)
+ {
+ daysSince = localTime->days - *days;
+ ClearUpperFlags();
+ UpdateDewfordTrendPerDay(daysSince);
+ UpdateTVShowsPerDay(daysSince);
+ UpdateWeatherPerDay(daysSince);
+ UpdatePartyPokerusTime(daysSince);
+ UpdateMirageRnd(daysSince);
+ UpdateBirchState(daysSince);
+ UpdateFrontierManiac(daysSince);
+ UpdateFrontierGambler(daysSince);
+ SetShoalItemFlag(daysSince);
+ SetRandomLotteryNumber(daysSince);
+ *days = localTime->days;
+ }
+}
+
+static void UpdatePerMinute(struct Time *localTime)
+{
+ struct Time difference;
+ int minutes;
+
+ CalcTimeDifference(&difference, &gSaveBlock2Ptr->lastBerryTreeUpdate, localTime);
+ minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes;
+ if (minutes != 0)
+ {
+ if (minutes >= 0)
+ {
+ BerryTreeTimeUpdate(minutes);
+ gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime;
+ }
+ }
+}
+
+static void ReturnFromStartWallClock(void)
+{
+ InitTimeBasedEvents();
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void StartWallClock(void)
+{
+ SetMainCallback2(Cb2_StartWallClock);
+ gMain.savedCallback = ReturnFromStartWallClock;
+}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 8bd9d34c9..3235f6144 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -663,7 +663,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 10:
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 3813fdef4..3bbdaca13 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -1165,7 +1165,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
break;
case 4:
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0:
sEvoCursorPos = 0;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 82f8f75f6..2d78af8fb 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -265,7 +265,7 @@ static void Task_StarterChoose5(u8 taskId)
{
u8 spriteId;
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0: // YES
// Return the starter choice and exit.
diff --git a/src/tv.c b/src/tv.c
index 1605be29c..205adbf4d 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1793,7 +1793,7 @@ void EndMassOutbreak(void)
gSaveBlock1Ptr->outbreakDaysLeft = 0;
}
-void sub_80ED888(u16 days)
+void UpdateTVShowsPerDay(u16 days)
{
sub_80ED8B4(days);
diff --git a/src/wallclock.c b/src/wallclock.c
new file mode 100644
index 000000000..892ef3f05
--- /dev/null
+++ b/src/wallclock.c
@@ -0,0 +1,1057 @@
+#include "global.h"
+#include "main.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "rtc.h"
+#include "clock.h"
+#include "wallclock.h"
+#include "event_data.h"
+#include "graphics.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "menu.h"
+#include "unknown_task.h"
+#include "task.h"
+#include "strings.h"
+#include "sound.h"
+#include "songs.h"
+#include "trig.h"
+#include "decompress.h"
+
+// static types
+
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
+#define TAG_GFX_WALL_CLOCK_HAND 0x1000
+#define TAG_PAL_WALL_CLOCK_HAND 0x1000
+
+// static declarations
+
+static void WallClockMainCallback(void);
+static void Task_SetClock1(u8 taskId);
+static void Task_SetClock2(u8 taskId);
+static void Task_SetClock3(u8 taskId);
+static void Task_SetClock4(u8 taskId);
+static void Task_SetClock5(u8 taskId);
+static void Task_SetClock6(u8 taskId);
+static void Task_ViewClock1(u8 taskId);
+static void Task_ViewClock2(u8 taskId);
+static void Task_ViewClock3(u8 taskId);
+static void Task_ViewClock4(u8 taskId);
+static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2);
+static bool32 AdvanceClock(u8 taskId, u8 command);
+static void UpdateClockPeriod(u8 taskId, u8 command);
+static void InitClockWithRtc(u8 taskId);
+static void SpriteCB_MinuteHand(struct Sprite *sprite);
+static void SpriteCB_HourHand(struct Sprite *sprite);
+static void SpriteCB_AMIndicator(struct Sprite *sprite);
+static void SpriteCB_PMIndicator(struct Sprite *sprite);
+
+// rodata
+
+static const u8 gUnknown_085B1F58[] = INCBIN_U8("graphics/wallclock/graphics_85b1f58.4bpp.lz");
+static const u16 gUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal");
+static const struct WindowTemplate gUnknown_085B21DC[] = {
+ { 0x00, 0x03, 0x11, 0x18, 0x02, 0x0e, 0x200 },
+ { 0x02, 0x18, 0x10, 0x06, 0x02, 0x0c, 0x230 },
+ DUMMY_WIN_TEMPLATE
+};
+static const struct WindowTemplate gUnknown_085B21F4 = {
+ 0x00, 0x18, 0x09, 0x05, 0x04, 0x0e, 0x23c
+};
+static const struct BgTemplate gUnknown_085B21FC[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .priority = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 8,
+ .priority = 1
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 7,
+ .priority = 2
+ }
+};
+static const struct CompressedSpriteSheet gUnknown_085B2208 = {
+ gUnknown_085B1F58, 0x2000, TAG_GFX_WALL_CLOCK_HAND
+};
+static const u32 filler_85B2210[2] = {};
+static const struct SpritePalette gUnknown_085B2218[] = {
+ { gUnknown_08DCC01C, TAG_PAL_WALL_CLOCK_HAND },
+ { gUnknown_08DCC03C, 0x1001 },
+ {}
+};
+static const struct OamData Unknown_085B2230 = {
+ .y = 0xa0,
+ .size = 3,
+ .priority = 1
+};
+static const union AnimCmd Unknown_085B2238[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd Unknown_085B2240[] = {
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd *const gUnknown_085B2248[] = {
+ Unknown_085B2238
+};
+static const union AnimCmd *const gUnknown_085B224C[] = {
+ Unknown_085B2240
+};
+static const struct SpriteTemplate gUnknown_085B2250 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2230,
+ gUnknown_085B2248,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_MinuteHand
+};
+static const struct SpriteTemplate gUnknown_085B2268 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2230,
+ gUnknown_085B224C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_HourHand
+};
+static const struct OamData Unknown_085B2280 = {
+ .y = 0xa0,
+ .size = 1,
+ .priority = 3
+};
+static const union AnimCmd Unknown_085B2288[] = {
+ ANIMCMD_FRAME(0x84, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd Unknown_085B2290[] = {
+ ANIMCMD_FRAME(0x80, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd *const gUnknown_085B2298[] = {
+ Unknown_085B2288
+};
+static const union AnimCmd *const gUnknown_085B229C[] = {
+ Unknown_085B2290
+};
+static const struct SpriteTemplate gUnknown_085B22A0 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2280,
+ gUnknown_085B2298,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_AMIndicator
+};
+static const struct SpriteTemplate gUnknown_085B22B8 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2280,
+ gUnknown_085B229C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_PMIndicator
+};
+static const s8 sClockHandCoords[][2] = {
+ { 0x00, -0x18},
+ { 0x01, -0x19},
+ { 0x01, -0x19},
+ { 0x02, -0x19},
+ { 0x02, -0x19},
+ { 0x02, -0x19},
+ { 0x03, -0x18},
+ { 0x03, -0x19},
+ { 0x04, -0x19},
+ { 0x04, -0x19},
+ { 0x04, -0x19},
+ { 0x05, -0x19},
+ { 0x05, -0x19},
+ { 0x06, -0x18},
+ { 0x06, -0x18},
+ { 0x06, -0x18},
+ { 0x07, -0x18},
+ { 0x07, -0x18},
+ { 0x07, -0x18},
+ { 0x08, -0x18},
+ { 0x08, -0x18},
+ { 0x09, -0x18},
+ { 0x09, -0x18},
+ { 0x0a, -0x17},
+ { 0x0a, -0x17},
+ { 0x0b, -0x16},
+ { 0x0b, -0x16},
+ { 0x0b, -0x16},
+ { 0x0c, -0x16},
+ { 0x0c, -0x15},
+ { 0x0d, -0x15},
+ { 0x0d, -0x15},
+ { 0x0d, -0x15},
+ { 0x0e, -0x15},
+ { 0x0e, -0x15},
+ { 0x0e, -0x14},
+ { 0x0e, -0x14},
+ { 0x0f, -0x14},
+ { 0x0f, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x12},
+ { 0x10, -0x12},
+ { 0x11, -0x12},
+ { 0x11, -0x11},
+ { 0x11, -0x11},
+ { 0x12, -0x11},
+ { 0x12, -0x11},
+ { 0x12, -0x10},
+ { 0x12, -0x10},
+ { 0x13, -0x10},
+ { 0x13, -0x0f},
+ { 0x13, -0x0f},
+ { 0x14, -0x0f},
+ { 0x14, -0x0e},
+ { 0x14, -0x0e},
+ { 0x14, -0x0d},
+ { 0x14, -0x0d},
+ { 0x15, -0x0d},
+ { 0x15, -0x0d},
+ { 0x15, -0x0c},
+ { 0x16, -0x0c},
+ { 0x16, -0x0c},
+ { 0x16, -0x0b},
+ { 0x16, -0x0b},
+ { 0x16, -0x0a},
+ { 0x17, -0x0a},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x08},
+ { 0x17, -0x08},
+ { 0x17, -0x07},
+ { 0x17, -0x07},
+ { 0x17, -0x06},
+ { 0x18, -0x06},
+ { 0x18, -0x06},
+ { 0x19, -0x05},
+ { 0x19, -0x05},
+ { 0x18, -0x04},
+ { 0x19, -0x04},
+ { 0x18, -0x03},
+ { 0x19, -0x03},
+ { 0x19, -0x03},
+ { 0x19, -0x02},
+ { 0x19, -0x02},
+ { 0x18, -0x01},
+ { 0x19, -0x01},
+ { 0x18, 0x00},
+ { 0x18, 0x00},
+ { 0x18, 0x00},
+ { 0x18, 0x01},
+ { 0x18, 0x01},
+ { 0x19, 0x02},
+ { 0x18, 0x02},
+ { 0x19, 0x02},
+ { 0x18, 0x03},
+ { 0x18, 0x03},
+ { 0x19, 0x04},
+ { 0x18, 0x04},
+ { 0x18, 0x05},
+ { 0x18, 0x05},
+ { 0x18, 0x05},
+ { 0x18, 0x06},
+ { 0x17, 0x06},
+ { 0x17, 0x06},
+ { 0x17, 0x07},
+ { 0x17, 0x08},
+ { 0x17, 0x08},
+ { 0x17, 0x08},
+ { 0x17, 0x09},
+ { 0x17, 0x09},
+ { 0x17, 0x0a},
+ { 0x16, 0x0a},
+ { 0x16, 0x0a},
+ { 0x16, 0x0b},
+ { 0x16, 0x0b},
+ { 0x16, 0x0b},
+ { 0x16, 0x0c},
+ { 0x15, 0x0c},
+ { 0x15, 0x0c},
+ { 0x15, 0x0d},
+ { 0x14, 0x0d},
+ { 0x14, 0x0d},
+ { 0x13, 0x0d},
+ { 0x13, 0x0d},
+ { 0x13, 0x0e},
+ { 0x13, 0x0e},
+ { 0x13, 0x0f},
+ { 0x13, 0x0f},
+ { 0x12, 0x0f},
+ { 0x12, 0x10},
+ { 0x11, 0x10},
+ { 0x11, 0x10},
+ { 0x11, 0x11},
+ { 0x11, 0x11},
+ { 0x10, 0x11},
+ { 0x10, 0x12},
+ { 0x10, 0x12},
+ { 0x0f, 0x12},
+ { 0x0e, 0x12},
+ { 0x0f, 0x13},
+ { 0x0e, 0x13},
+ { 0x0e, 0x13},
+ { 0x0d, 0x13},
+ { 0x0d, 0x14},
+ { 0x0d, 0x14},
+ { 0x0d, 0x14},
+ { 0x0c, 0x14},
+ { 0x0c, 0x14},
+ { 0x0c, 0x15},
+ { 0x0b, 0x15},
+ { 0x0b, 0x15},
+ { 0x0b, 0x15},
+ { 0x0a, 0x15},
+ { 0x0a, 0x16},
+ { 0x0a, 0x16},
+ { 0x09, 0x16},
+ { 0x09, 0x16},
+ { 0x08, 0x16},
+ { 0x07, 0x16},
+ { 0x07, 0x17},
+ { 0x07, 0x17},
+ { 0x06, 0x17},
+ { 0x06, 0x17},
+ { 0x05, 0x17},
+ { 0x05, 0x17},
+ { 0x05, 0x18},
+ { 0x04, 0x18},
+ { 0x04, 0x18},
+ { 0x04, 0x18},
+ { 0x03, 0x18},
+ { 0x02, 0x18},
+ { 0x02, 0x18},
+ { 0x01, 0x18},
+ { 0x01, 0x18},
+ { 0x00, 0x18},
+ { 0x00, 0x18},
+ {-0x01, 0x17},
+ { 0x00, 0x18},
+ { 0x00, 0x18},
+ {-0x01, 0x18},
+ {-0x01, 0x18},
+ {-0x02, 0x18},
+ {-0x02, 0x18},
+ {-0x03, 0x18},
+ {-0x03, 0x18},
+ {-0x04, 0x18},
+ {-0x04, 0x18},
+ {-0x05, 0x18},
+ {-0x05, 0x17},
+ {-0x05, 0x17},
+ {-0x06, 0x17},
+ {-0x06, 0x17},
+ {-0x07, 0x17},
+ {-0x07, 0x17},
+ {-0x07, 0x17},
+ {-0x08, 0x17},
+ {-0x08, 0x16},
+ {-0x09, 0x16},
+ {-0x09, 0x16},
+ {-0x0a, 0x16},
+ {-0x0a, 0x16},
+ {-0x0a, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x14},
+ {-0x0c, 0x14},
+ {-0x0c, 0x14},
+ {-0x0d, 0x14},
+ {-0x0d, 0x14},
+ {-0x0d, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x12},
+ {-0x0f, 0x12},
+ {-0x0f, 0x12},
+ {-0x0f, 0x11},
+ {-0x10, 0x11},
+ {-0x10, 0x11},
+ {-0x11, 0x11},
+ {-0x11, 0x10},
+ {-0x11, 0x10},
+ {-0x12, 0x10},
+ {-0x11, 0x0f},
+ {-0x12, 0x0f},
+ {-0x12, 0x0f},
+ {-0x13, 0x0f},
+ {-0x13, 0x0e},
+ {-0x13, 0x0e},
+ {-0x13, 0x0d},
+ {-0x13, 0x0d},
+ {-0x14, 0x0d},
+ {-0x14, 0x0c},
+ {-0x14, 0x0c},
+ {-0x15, 0x0c},
+ {-0x15, 0x0c},
+ {-0x15, 0x0b},
+ {-0x15, 0x0b},
+ {-0x15, 0x0a},
+ {-0x15, 0x0a},
+ {-0x15, 0x09},
+ {-0x16, 0x09},
+ {-0x16, 0x09},
+ {-0x16, 0x08},
+ {-0x16, 0x08},
+ {-0x16, 0x07},
+ {-0x17, 0x07},
+ {-0x17, 0x07},
+ {-0x17, 0x06},
+ {-0x17, 0x06},
+ {-0x17, 0x05},
+ {-0x18, 0x05},
+ {-0x17, 0x04},
+ {-0x17, 0x04},
+ {-0x18, 0x04},
+ {-0x18, 0x04},
+ {-0x18, 0x03},
+ {-0x18, 0x03},
+ {-0x18, 0x02},
+ {-0x18, 0x02},
+ {-0x18, 0x01},
+ {-0x18, 0x01},
+ {-0x18, 0x01},
+ {-0x18, 0x00},
+ {-0x19, 0x00},
+ {-0x18, -0x01},
+ {-0x19, -0x01},
+ {-0x18, -0x01},
+ {-0x18, -0x02},
+ {-0x18, -0x02},
+ {-0x18, -0x03},
+ {-0x18, -0x03},
+ {-0x18, -0x04},
+ {-0x18, -0x04},
+ {-0x18, -0x04},
+ {-0x18, -0x05},
+ {-0x18, -0x05},
+ {-0x18, -0x06},
+ {-0x18, -0x06},
+ {-0x17, -0x06},
+ {-0x17, -0x07},
+ {-0x17, -0x07},
+ {-0x17, -0x08},
+ {-0x17, -0x08},
+ {-0x17, -0x09},
+ {-0x17, -0x09},
+ {-0x16, -0x09},
+ {-0x16, -0x09},
+ {-0x16, -0x0a},
+ {-0x16, -0x0a},
+ {-0x15, -0x0a},
+ {-0x15, -0x0b},
+ {-0x16, -0x0b},
+ {-0x16, -0x0c},
+ {-0x15, -0x0c},
+ {-0x15, -0x0d},
+ {-0x15, -0x0d},
+ {-0x14, -0x0d},
+ {-0x15, -0x0e},
+ {-0x14, -0x0e},
+ {-0x14, -0x0e},
+ {-0x13, -0x0e},
+ {-0x13, -0x0f},
+ {-0x13, -0x0f},
+ {-0x12, -0x10},
+ {-0x12, -0x10},
+ {-0x12, -0x10},
+ {-0x12, -0x11},
+ {-0x12, -0x11},
+ {-0x11, -0x11},
+ {-0x11, -0x12},
+ {-0x11, -0x12},
+ {-0x10, -0x12},
+ {-0x10, -0x12},
+ {-0x10, -0x13},
+ {-0x10, -0x13},
+ {-0x0f, -0x13},
+ {-0x0f, -0x13},
+ {-0x0f, -0x14},
+ {-0x0e, -0x14},
+ {-0x0e, -0x14},
+ {-0x0e, -0x15},
+ {-0x0d, -0x15},
+ {-0x0d, -0x15},
+ {-0x0d, -0x15},
+ {-0x0c, -0x15},
+ {-0x0c, -0x16},
+ {-0x0b, -0x16},
+ {-0x0b, -0x16},
+ {-0x0b, -0x16},
+ {-0x0a, -0x16},
+ {-0x0a, -0x16},
+ {-0x09, -0x16},
+ {-0x09, -0x17},
+ {-0x09, -0x17},
+ {-0x08, -0x17},
+ {-0x08, -0x17},
+ {-0x07, -0x17},
+ {-0x07, -0x17},
+ {-0x07, -0x18},
+ {-0x06, -0x18},
+ {-0x06, -0x18},
+ {-0x05, -0x18},
+ {-0x05, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x19},
+ {-0x03, -0x19},
+ {-0x02, -0x19},
+ {-0x02, -0x18},
+ {-0x02, -0x18},
+ {-0x01, -0x19},
+ {-0x01, -0x19},
+ { 0x00, -0x19}
+};
+
+// text
+
+static void WallClockVblankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void LoadWallClockGraphics(void)
+{
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0x0000);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3, (void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ LZ77UnCompVram(gUnknown_08DCC05C, (void *)VRAM);
+ if (gSpecialVar_0x8004 == 0)
+ {
+ LoadPalette(gUnknown_08DCC01C, 0x00, 0x20);
+ }
+ else
+ {
+ LoadPalette(gUnknown_08DCC03C, 0x00, 0x20);
+ }
+ LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 0x20);
+ LoadPalette(gUnknown_085B21D4, 0xc0, 0x08);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085B21FC, 3);
+ InitWindows(gUnknown_085B21DC);
+ DeactivateAllTextPrinters();
+ sub_809882C(0, 0x250, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ LoadCompressedObjectPic(&gUnknown_085B2208);
+ LoadSpritePalettes(gUnknown_085B2218);
+}
+
+static void WallClockInit(void)
+{
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(WallClockVblankCallback);
+ SetMainCallback2(WallClockMainCallback);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDY, 0x0000);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(2);
+ ShowBg(3);
+}
+
+void Cb2_StartWallClock(void)
+{
+ u8 taskId;
+ u8 spriteId;
+
+ LoadWallClockGraphics();
+ LZ77UnCompVram(gUnknown_08DCC648, (u16 *)BG_SCREEN_ADDR(7));
+
+ taskId = CreateTask(Task_SetClock1, 0);
+ gTasks[taskId].tHours = 10;
+ gTasks[taskId].tMinutes = 0;
+ gTasks[taskId].tMvmtDir = 0;
+ gTasks[taskId].tPeriod = 0;
+ gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMinuteHandAngle = 0;
+ gTasks[taskId].tHourHandAngle = 300;
+
+ spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 0;
+
+ spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 1;
+
+ spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 45;
+
+ spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 90;
+
+ WallClockInit();
+
+ PrintTextOnWindow(1, 1, gText_Confirm3, 0, 1, 0, NULL);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void Cb2_ViewWallClock(void)
+{
+ u8 taskId;
+ u8 spriteId;
+ u8 angle1;
+ u8 angle2;
+
+ LoadWallClockGraphics();
+ LZ77UnCompVram(gUnknown_08DCC908, (u16 *)BG_SCREEN_ADDR(7));
+
+ taskId = CreateTask(Task_ViewClock1, 0);
+ InitClockWithRtc(taskId);
+ if (gTasks[taskId].tPeriod == 0)
+ {
+ angle1 = 45;
+ angle2 = 90;
+ }
+ else
+ {
+ angle1 = 90;
+ angle2 = 135;
+ }
+
+ spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 0;
+
+ spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 1;
+
+ spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = angle1;
+
+ spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = angle2;
+
+ WallClockInit();
+
+ PrintTextOnWindow(1, 1, gText_Cancel4, 0, 1, 0, NULL);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+static void WallClockMainCallback(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void Task_SetClock1(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = Task_SetClock2;
+ }
+}
+
+static void Task_SetClock2(u8 taskId)
+{
+ if (gTasks[taskId].tMinuteHandAngle % 6)
+ {
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
+ }
+ else
+ {
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].func = Task_SetClock3;
+ }
+ else
+ {
+ gTasks[taskId].tMvmtDir = 0;
+ if (gMain.heldKeys & DPAD_LEFT)
+ {
+ gTasks[taskId].tMvmtDir = 1;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT)
+ {
+ gTasks[taskId].tMvmtDir = 2;
+ }
+ if (gTasks[taskId].tMvmtDir != 0)
+ {
+ if (gTasks[taskId].tMvmtSpeed < 0xFF)
+ {
+ gTasks[taskId].tMvmtSpeed++;
+ }
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
+ }
+ else
+ {
+ gTasks[taskId].tMvmtSpeed = 0;
+ }
+ }
+ }
+}
+
+static void Task_SetClock3(u8 taskId)
+{
+ SetWindowBorderStyle(0, FALSE, 0x250, 0x0d);
+ PrintTextOnWindow(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL);
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ CreateYesNoMenu(&gUnknown_085B21F4, 0x250, 0x0d, 1);
+ gTasks[taskId].func = Task_SetClock4;
+}
+
+static void Task_SetClock4(u8 taskId)
+{
+ switch (ProcessMenuInputNoWrap_())
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_SetClock5;
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ sub_8198070(0, FALSE);
+ ClearWindowTilemap(0);
+ gTasks[taskId].func = Task_SetClock2;
+ break;
+ }
+}
+
+static void Task_SetClock5(u8 taskId)
+{
+ RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_SetClock6;
+}
+
+static void Task_SetClock6(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static void Task_ViewClock1(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = Task_ViewClock2;
+ }
+}
+
+static void Task_ViewClock2(u8 taskId)
+{
+ InitClockWithRtc(taskId);
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ gTasks[taskId].func = Task_ViewClock3;
+ }
+}
+
+static void Task_ViewClock3(u8 taskId)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_ViewClock4;
+}
+
+static void Task_ViewClock4(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static u8 CalcMinHandDelta(u16 a0)
+{
+ if (a0 > 60)
+ {
+ return 6;
+ }
+ if (a0 > 30)
+ {
+ return 3;
+ }
+ if (a0 > 10)
+ {
+ return 2;
+ }
+ return 1;
+}
+
+static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2)
+{
+ u8 r1 = CalcMinHandDelta(a2);
+ switch (command)
+ {
+ case 1:
+ if (a0) a0 -= r1;
+ else a0 = 360 - r1;
+ break;
+ case 2:
+ if (a0 < 360 - r1) a0 += r1;
+ else a0 = 0;
+ break;
+ }
+ return a0;
+}
+
+static bool32 AdvanceClock(u8 taskId, u8 command)
+{
+ switch (command)
+ {
+ case 1:
+ if (gTasks[taskId].tMinutes > 0)
+ {
+ gTasks[taskId].tMinutes--;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ {
+ gTasks[taskId].tHours--;
+ }
+ else
+ {
+ gTasks[taskId].tHours = 23;
+ }
+ UpdateClockPeriod(taskId, command);
+ }
+ break;
+ case 2:
+ if (gTasks[taskId].tMinutes < 59)
+ {
+ gTasks[taskId].tMinutes++;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ {
+ gTasks[taskId].tHours++;
+ }
+ else
+ {
+ gTasks[taskId].tHours = 0;
+ }
+ UpdateClockPeriod(taskId, command);
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void UpdateClockPeriod(u8 taskId, u8 command)
+{
+ u8 hours = gTasks[taskId].tHours;
+ switch (command)
+ {
+ case 1:
+ switch (hours)
+ {
+ case 11:
+ gTasks[taskId].tPeriod = FALSE;
+ break;
+ case 23:
+ gTasks[taskId].tPeriod = TRUE;
+ break;
+ }
+ break;
+ case 2:
+ switch (hours)
+ {
+ case 0:
+ gTasks[taskId].tPeriod = FALSE;
+ break;
+ case 12:
+ gTasks[taskId].tPeriod = TRUE;
+ break;
+ }
+ break;
+ }
+}
+
+static void InitClockWithRtc(u8 taskId)
+{
+ RtcCalcLocalTime();
+ gTasks[taskId].tHours = gLocalTime.hours;
+ gTasks[taskId].tMinutes = gLocalTime.minutes;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gLocalTime.hours < 12)
+ {
+ gTasks[taskId].tPeriod = FALSE;
+ }
+ else
+ {
+ gTasks[taskId].tPeriod = TRUE;
+ }
+}
+
+static void SpriteCB_MinuteHand(struct Sprite *sprite)
+{
+ u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle;
+ s16 sin = Sin2(angle) / 16;
+ s16 cos = Cos2(angle) / 16;
+ u16 xhat;
+ u16 yhat;
+
+ SetOamMatrix(0, cos, sin, -sin, cos);
+ xhat = sClockHandCoords[angle][0];
+ yhat = sClockHandCoords[angle][1];
+
+ if (xhat > 0x80)
+ {
+ xhat |= 0xff00;
+ }
+ if (yhat > 0x80)
+ {
+ yhat |= 0xff00;
+ }
+ sprite->pos2.x = xhat;
+ sprite->pos2.y = yhat;
+}
+
+static void SpriteCB_HourHand(struct Sprite *sprite)
+{
+ u16 angle = gTasks[sprite->data[0]].tHourHandAngle;
+ s16 sin = Sin2(angle) / 16;
+ s16 cos = Cos2(angle) / 16;
+ u16 xhat;
+ u16 yhat;
+
+ SetOamMatrix(1, cos, sin, -sin, cos);
+ xhat = sClockHandCoords[angle][0];
+ yhat = sClockHandCoords[angle][1];
+ if (xhat > 0x80)
+ {
+ xhat |= 0xff00;
+ }
+ if (yhat > 0x80)
+ {
+ yhat |= 0xff00;
+ }
+ sprite->pos2.x = xhat;
+ sprite->pos2.y = yhat;
+}
+
+static void SpriteCB_AMIndicator(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[0]].tPeriod)
+ {
+ if (sprite->data[1] >= 60 && sprite->data[1] < 90)
+ {
+ sprite->data[1] += 5;
+ }
+ if (sprite->data[1] < 60)
+ {
+ sprite->data[1]++;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] >= 46 && sprite->data[1] < 76)
+ {
+ sprite->data[1] -= 5;
+ }
+ if (sprite->data[1] > 75)
+ {
+ sprite->data[1]--;
+ }
+ }
+ sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+}
+
+static void SpriteCB_PMIndicator(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[0]].tPeriod)
+ {
+ if (sprite->data[1] >= 105 && sprite->data[1] < 135)
+ {
+ sprite->data[1] += 5;
+ }
+ if (sprite->data[1] < 105)
+ {
+ sprite->data[1]++;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] >= 91 && sprite->data[1] < 121)
+ {
+ sprite->data[1] -= 5;
+ }
+ if (sprite->data[1] > 120)
+ {
+ sprite->data[1]--;
+ }
+ }
+ sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+}