44*/
55
66#include " d/actor/d_a_obj_timer.h"
7- #include " dol2asm.h"
8-
9- //
10- // Forward References:
11- //
12-
13- extern " C" void _create__Q210daObjTimer5Act_cFv ();
14- extern " C" bool _delete__Q210daObjTimer5Act_cFv ();
15- extern " C" void mode_wait_init__Q210daObjTimer5Act_cFv ();
16- extern " C" void mode_wait__Q210daObjTimer5Act_cFv ();
17- extern " C" void mode_count_init__Q210daObjTimer5Act_cFv ();
18- extern " C" void mode_count__Q210daObjTimer5Act_cFv ();
19- extern " C" void _execute__Q210daObjTimer5Act_cFv ();
20- extern " C" static void func_804855A4 ();
21- extern " C" static void func_804855C4 ();
22- extern " C" static void func_804855E8 ();
23- extern " C" static bool func_8048560C ();
24- extern " C" static bool func_80485614 ();
25- extern " C" void func_8048561C (void * _this, fopAc_ac_c const *, daObjTimer::Act_c::Prm_e,
26- daObjTimer::Act_c::Prm_e);
27-
28- //
29- // External References:
30- //
31-
32- extern " C" void __ct__10fopAc_ac_cFv ();
33- extern " C" void fopAcM_delete__FP10fopAc_ac_c ();
34- extern " C" void fopDwTg_DrawQTo__FP16create_tag_class ();
35- extern " C" void offSwitch__10dSv_info_cFii ();
36- extern " C" void isSwitch__10dSv_info_cCFii ();
37- extern " C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc ();
38- extern " C" void __ptmf_scall ();
39- extern " C" extern u8 g_dComIfG_gameInfo[122384 ];
40- extern " C" u8 mAudioMgrPtr__10Z2AudioMgr [4 + 4 /* padding */ ];
41- extern " C" extern u8 data_804856E8[4 ];
42-
43- //
44- // Declarations:
45- //
7+ #include " d/d_com_inf_game.h"
8+ #include " f_op/f_op_actor_mng.h"
9+
10+ UNK_REL_DATA
4611
4712/* 80485198-8048526C 000078 00D4+00 1/1 0/0 0/0 .text _create__Q210daObjTimer5Act_cFv */
48- void daObjTimer::Act_c::_create () {
49- // NONMATCHING
13+ int daObjTimer::Act_c::_create () {
14+ fopAcM_SetupActor (this , Act_c);
15+ fopAcM_offDraw (this );
16+
17+ if (fopAcM_isSwitch (this , prm_get_sw2Save ())) {
18+ return cPhs_ERROR_e;
19+ } else {
20+ if (fopAcM_isSwitch (this , prm_get_swSave ())) {
21+ mode_count_init ();
22+ } else {
23+ mode_wait_init ();
24+ }
25+ return cPhs_COMPLEATE_e;
26+ }
5027}
5128
5229/* 8048526C-80485274 00014C 0008+00 1/1 0/0 0/0 .text _delete__Q210daObjTimer5Act_cFv */
@@ -56,151 +33,127 @@ bool daObjTimer::Act_c::_delete() {
5633
5734/* 80485274-80485284 000154 0010+00 2/2 0/0 0/0 .text mode_wait_init__Q210daObjTimer5Act_cFv */
5835void daObjTimer::Act_c::mode_wait_init () {
59- // NONMATCHING
36+ field_0x56c = 0 ;
37+ field_0x568 = 0 ;
6038}
6139
62- /* 80485284-804852E0 000164 005C+00 1/0 0/0 0/0 .text mode_wait__Q210daObjTimer5Act_cFv
63- */
40+ /* 80485284-804852E0 000164 005C+00 1/0 0/0 0/0 .text mode_wait__Q210daObjTimer5Act_cFv */
6441void daObjTimer::Act_c::mode_wait () {
65- // NONMATCHING
42+ if (fopAcM_isSwitch (this , prm_get_swSave ())) {
43+ mode_count_init ();
44+ }
6645}
6746
6847/* 804852E0-80485324 0001C0 0044+00 2/2 0/0 0/0 .text mode_count_init__Q210daObjTimer5Act_cFv */
6948void daObjTimer::Act_c::mode_count_init () {
70- // NONMATCHING
49+ field_0x56c = prm_get_time () * 15 ;
50+ field_0x568 = 1 ;
7151}
7252
73- /* ############################################################################################## */
74- /* 80485640-80485644 000000 0004+00 1/1 0/0 0/0 .rodata @3720 */
75- SECTION_RODATA static f32 const lit_3720 = 1 .0f ;
76- COMPILER_STRIP_GATE (0x80485640 , &lit_3720);
77-
78- /* 80485644-80485648 000004 0004+00 1/1 0/0 0/0 .rodata @3721 */
79- SECTION_RODATA static f32 const lit_3721 = -1 .0f ;
80- COMPILER_STRIP_GATE (0x80485644 , &lit_3721);
81-
82- /* 80485324-804854BC 000204 0198+00 1/0 0/0 0/0 .text mode_count__Q210daObjTimer5Act_cFv
83- */
53+ /* 80485324-804854BC 000204 0198+00 1/0 0/0 0/0 .text mode_count__Q210daObjTimer5Act_cFv */
8454void daObjTimer::Act_c::mode_count () {
85- // NONMATCHING
55+ Z2SoundID soundID;
56+
57+ if (!field_0x570) {
58+ field_0x56c--;
59+ if (prm_get_SeStop () && field_0x56c % 30 == 0 ) {
60+ if (dComIfGp_event_runCheck () && prm_get_demoStop ()) {
61+ field_0x56c += 30 ;
62+ }
63+
64+ int iVar1 = field_0x56c / 30 ;
65+ if (iVar1 <= 20 ) {
66+ if (iVar1 > 10 ) {
67+ soundID = JA_SE_SYS_EV_TIMER_20;
68+ } else if (iVar1 > 5 ) {
69+ soundID = JA_SE_SYS_EV_TIMER_10;
70+ } else if (iVar1 > 0 ) {
71+ soundID = JA_SE_SYS_EV_TIMER_5;
72+ } else {
73+ soundID = JA_SE_SYS_EV_TIMER_0;
74+ }
75+
76+ mDoAud_seStart (soundID, 0 , 0 , 0 );
77+ }
78+ }
79+
80+ if (field_0x56c > 0 ) {
81+ if (fopAcM_isSwitch (this , prm_get_swSave ())) {
82+ return ;
83+ }
84+ }
85+
86+ fopAcM_offSwitch (this , prm_get_swSave ());
87+ mode_wait_init ();
88+ }
8689}
8790
88- /* ############################################################################################## */
89- /* 80485648-80485654 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
90- SECTION_DATA static u8 cNullVec__6Z2Calc[12 ] = {
91- 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
92- };
93-
94- /* 80485654-80485668 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
95- #pragma push
96- #pragma force_active on
97- SECTION_DATA static u32 lit_1787[1 + 4 /* padding */ ] = {
98- 0x02000201 ,
99- /* padding */
100- 0x40080000 ,
101- 0x00000000 ,
102- 0x3FE00000 ,
103- 0x00000000 ,
104- };
105- #pragma pop
106-
107- /* 80485668-80485674 -00001 000C+00 0/1 0/0 0/0 .data @3726 */
108- #pragma push
109- #pragma force_active on
110- SECTION_DATA static void * lit_3726[3 ] = {
111- (void *)NULL ,
112- (void *)0xFFFFFFFF ,
113- (void *)mode_wait__Q210daObjTimer5Act_cFv,
114- };
115- #pragma pop
116-
117- /* 80485674-80485680 -00001 000C+00 0/1 0/0 0/0 .data @3727 */
118- #pragma push
119- #pragma force_active on
120- SECTION_DATA static void * lit_3727[3 ] = {
121- (void *)NULL ,
122- (void *)0xFFFFFFFF ,
123- (void *)mode_count__Q210daObjTimer5Act_cFv,
124- };
125- #pragma pop
126-
127- /* 80485680-80485698 000038 0018+00 0/1 0/0 0/0 .data mode_proc$3725 */
128- #pragma push
129- #pragma force_active on
130- SECTION_DATA static u8 mode_proc[24 ] = {
131- 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
132- 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
133- };
134- #pragma pop
135-
13691/* 804854BC-804855A4 00039C 00E8+00 1/1 0/0 0/0 .text _execute__Q210daObjTimer5Act_cFv */
137- void daObjTimer::Act_c::_execute () {
138- // NONMATCHING
139- }
140-
141- /* 804855A4-804855C4 000484 0020+00 1/0 0/0 0/0 .text
142- * Mthd_Create__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@FPv */
143- static void func_804855A4 () {
144- // NONMATCHING
92+ int daObjTimer::Act_c::_execute () {
93+ static daObjTimer::Act_c::modeProc const mode_proc[2 ] = {
94+ &daObjTimer::Act_c::mode_wait,
95+ &daObjTimer::Act_c::mode_count,
96+ };
97+
98+ if (fopAcM_isSwitch (this , prm_get_sw2Save ())) {
99+ fopAcM_delete (this );
100+ return 1 ;
101+ } else {
102+ (this ->*mode_proc[field_0x568])();
103+ return 1 ;
104+ }
145105}
146106
147- /* 804855C4-804855E8 0004A4 0024+00 1/0 0/0 0/0 .text
148- * Mthd_Delete__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@FPv */
149- static void func_804855C4 () {
150- // NONMATCHING
107+ namespace {
108+ /* 804855A4-804855C0 .text daObjTimer::@unnamed@d_a_obj_timer_cpp@::Mthd_Create */
109+ int Mthd_Create (fopAc_ac_c* i_this) {
110+ return static_cast <daObjTimer::Act_c*>(i_this)->_create ();
111+ }
112+
113+ /* 804855C4-804855E4 .text daObjTimer::@unnamed@d_a_obj_timer_cpp@::Mthd_Delete */
114+ int Mthd_Delete (fopAc_ac_c* i_this) {
115+ return static_cast <daObjTimer::Act_c*>(i_this)->_delete ();
116+ }
117+
118+ /* 804855E8-80485608 .text daObjTimer::@unnamed@d_a_obj_timer_cpp@::Mthd_Execute */
119+ int Mthd_Execute (fopAc_ac_c* i_this) {
120+ // NONMATCHING
121+ return static_cast <daObjTimer::Act_c*>(i_this)->_execute ();
122+ }
123+
124+ /* 8048560C-80485610 .text daObjTimer::@unnamed@d_a_obj_timer_cpp@::Mthd_Draw */
125+ int Mthd_Draw (fopAc_ac_c* i_this) {
126+ return 1 ;
127+ }
128+
129+ /* 80485614-80485618 .text daObjTimer::@unnamed@d_a_obj_timer_cpp@::Mthd_IsDelete */
130+ int Mthd_IsDelete (fopAc_ac_c* i_this) {
131+ return 1 ;
132+ }
133+
134+ /* 80485698-804856B8 -00001 0020+00 1/0 0/0 0/0 .data Mthd_Table__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@ */
135+ actor_method_class l_daTimer_Method = {
136+ (process_method_func)Mthd_Create,
137+ (process_method_func)Mthd_Delete,
138+ (process_method_func)Mthd_Execute,
139+ (process_method_func)Mthd_Draw,
140+ (process_method_func)Mthd_IsDelete,
141+ };
151142}
152143
153- /* 804855E8-8048560C 0004C8 0024+00 1/0 0/0 0/0 .text
154- * Mthd_Execute__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@FPv */
155- static void func_804855E8 () {
156- // NONMATCHING
157- }
158-
159- /* 8048560C-80485614 0004EC 0008+00 1/0 0/0 0/0 .text
160- * Mthd_Draw__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@FPv */
161- static bool func_8048560C () {
162- return true ;
163- }
164-
165- /* 80485614-8048561C 0004F4 0008+00 1/0 0/0 0/0 .text
166- * Mthd_IsDelete__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@FPv */
167- static bool func_80485614 () {
168- return true ;
169- }
170-
171- /* 8048561C-80485638 0004FC 001C+00 5/5 0/0 0/0 .text
172- * PrmAbstract<Q310daObjTimer5Act_c5Prm_e>__5daObjFPC10fopAc_ac_cQ310daObjTimer5Act_c5Prm_eQ310daObjTimer5Act_c5Prm_e
173- */
174- extern " C" void func_8048561C (void * _this, fopAc_ac_c const * param_0,
175- daObjTimer::Act_c::Prm_e param_1,
176- daObjTimer::Act_c::Prm_e param_2) {
177- // NONMATCHING
178- }
179-
180- /* ############################################################################################## */
181- /* 80485698-804856B8 -00001 0020+00 1/0 0/0 0/0 .data
182- * Mthd_Table__Q210daObjTimer27@unnamed@d_a_obj_timer_cpp@ */
183- static actor_method_class data_80485698 = {
184- (process_method_func)func_804855A4,
185- (process_method_func)func_804855C4,
186- (process_method_func)func_804855E8,
187- (process_method_func)func_80485614,
188- (process_method_func)func_8048560C,
189- };
190-
191144/* 804856B8-804856E8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Timer */
192145extern actor_process_profile_definition g_profile_Obj_Timer = {
193146 fpcLy_CURRENT_e, // mLayerID
194147 10 , // mListID
195148 fpcPi_CURRENT_e, // mListPrio
196149 PROC_Obj_Timer, // mProcName
197150 &g_fpcLf_Method.base , // sub_method
198- sizeof (daObjTimer), // mSize
151+ sizeof (daObjTimer::Act_c), // mSize
199152 0 , // mSizeOther
200153 0 , // mParameters
201154 &g_fopAc_Method.base , // sub_method
202155 22 , // mPriority
203- &data_80485698 , // sub_method
156+ &l_daTimer_Method , // sub_method
204157 0x00040000 , // mStatus
205158 fopAc_ACTOR_e, // mActorType
206159 fopAc_CULLBOX_0_e, // cullType
0 commit comments