Obj_Tokeidai (Clock Tower) OK and mostly documented (#442)

* Migrate data to C

* ObjTokeidai_Init OK

* ObjTokeidai_Destroy OK

* func_80AB2BBC OK

* func_80AB3BB0 OK

* func_80AB29F8 OK

* func_80AB27B4 OK

* func_80AB2834 OK

* func_80AB2790 OK

* func_80AB28C8 OK

* ObjTokeidai_Update OK

* func_80AB4040 OK

* func_80AB3010 OK

* func_80AB3CCC OK

* func_80AB3240 OK

* func_80AB3C50 OK

* func_80AB4080 OK

* func_80AB4160 OK

* func_80AB319C OK

* func_80AB3BE8 OK

* func_80AB3BD8 OK

* func_80AB3B34 OK

* func_80AB3A7C OK

* func_80AB3ED0 OK

* func_80AB39BC OK

* func_80AB38B0 OK

* func_80AB3880 OK

* func_80AB363C OK

* func_80AB36C4 OK

* func_80AB3808 OK

* func_80AB365C OK

* func_80AB3598 OK

* func_80AB3544 OK

* func_80AB34CC OK

* func_80AB3370 OK

* func_80AB32F0 OK

* ObjTokeidai_Draw OK

* func_80AB4894 OK

* func_80AB4664 OK

* func_80AB4394 OK

* Use compiled reloc

* Initial documentation pass

* Little more documentation

* Last bit of first pass documentation

* Finish documentation

* Respond to review feedback

* Respond to Anghelo's feedback

* Incorporate new enum

* Respond to engineer's feedback

* Respond to engineer's feedback

* Update comments because the things I thought were unused ARE actually used

* Switch to using "Open" instead of "Transform"

* Run ./format.sh

* Respond to engineer + hensldm by removing some macros

* Fix func_801A3F54 argument

* Fix func_801A3F54 argument

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* This is a legacy PR, so using autogenned object symbols

* Move enum to .c

* Revert "Move enum to .c"

This reverts commit de13c50f0aac35470cec29bc90665c780055651f.

* Move tokeidai-specific defines to .c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Tom Overton
2021-12-28 02:10:15 +00:00
committed by GitHub
co-authored by engineer124
parent 7cb71922e3
commit 527c54b66e
6 changed files with 871 additions and 123 deletions
+1 -1
View File
@@ -3884,7 +3884,7 @@ void func_801A3CD8(s8 param_1);
// void func_801A3D98(void);
// void func_801A3E38(void);
// void func_801A3EC0(void);
// void func_801A3F54(void);
void func_801A3F54(s32 arg0);
// void func_801A3F6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_801A3FB4(void);
// void func_801A3FFC(UNK_TYPE1 param_1);
+1 -2
View File
@@ -3361,8 +3361,7 @@ beginseg
name "ovl_Obj_Tokeidai"
compress
include "build/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.o"
include "build/data/ovl_Obj_Tokeidai/ovl_Obj_Tokeidai.data.o"
include "build/data/ovl_Obj_Tokeidai/ovl_Obj_Tokeidai.reloc.o"
include "build/src/overlays/actors/ovl_Obj_Tokeidai/ovl_Obj_Tokeidai_reloc.o"
endseg
beginseg
File diff suppressed because it is too large Load Diff
@@ -3,14 +3,63 @@
#include "global.h"
#define OBJ_TOKEIDAI_TYPE(thisx) (((thisx)->params & 0xF000) >> 12)
typedef enum {
/* 0 */ OBJ_TOKEIDAI_TYPE_TOWER_GEAR_CLOCK_TOWN,
/* 1 */ OBJ_TOKEIDAI_TYPE_UNUSED_WALL,
/* 2 */ OBJ_TOKEIDAI_TYPE_TOWER_CLOCK_CLOCK_TOWN,
/* 3 */ OBJ_TOKEIDAI_TYPE_COUNTERWEIGHT_CLOCK_TOWN,
/* 4 */ OBJ_TOKEIDAI_TYPE_TOWER_GEAR_TERMINA_FIELD,
/* 5 */ OBJ_TOKEIDAI_TYPE_TOWER_CLOCK_TERMINA_FIELD,
/* 6 */ OBJ_TOKEIDAI_TYPE_COUNTERWEIGHT_TERMINA_FIELD,
/* 8 */ OBJ_TOKEIDAI_TYPE_TOWER_WALLS_TERMINA_FIELD = 8,
/* 9 */ OBJ_TOKEIDAI_TYPE_WALL_CLOCK,
/* 10 */ OBJ_TOKEIDAI_TYPE_SMALL_WALL_CLOCK,
/* 11 */ OBJ_TOKEIDAI_TYPE_STAIRCASE_INTO_TOWER,
} ObjTokeidaiType;
struct ObjTokeidai;
typedef void (*ObjTokeidaiActionFunc)(struct ObjTokeidai*, GlobalContext*);
typedef struct ObjTokeidai {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x30];
/* 0x0174 */ ObjTokeidaiActionFunc actionFunc;
/* 0x000 */ Actor actor;
/* 0x144 */ Gfx* opaDList;
/* 0x148 */ Gfx* xluDList;
/* 0x14C */ s16 outerRingOrGearRotation;
/* 0x14E */ s16 outerRingOrGearRotationalVelocity;
/* 0x150 */ s16 outerRingOrGearRotationTimer;
/* 0x152 */ s16 clockFaceRotation;
/* 0x154 */ union {
s16 clockFaceRotationalVelocity;
s16 settleTimer;
s16 counterweightRotationalVelocity;
s16 openingWaitTimer;
s16 slidingClockFaceAngle;
};
/* 0x156 */ union {
s16 clockFaceRotationTimer;
s16 settleAmount;
s16 counterweightRotationalAcceleration;
s16 aerialClockFaceSpeed;
};
/* 0x158 */ s32 sunMoonDiskRotation;
/* 0x15C */ union {
s16 sunMoonDiskRotationalVelocity;
s16 fallingClockFaceRotationalVelocity;
};
/* 0x15E */ s16 yTranslation;
/* 0x160 */ s16 xRotation;
/* 0x162 */ s16 clockFaceZTranslation; // amount the clock face recesses inwards once it transforms
/* 0x164 */ s16 boundCount;
/* 0x168 */ s32 clockMinute; // only 30 minutes in an hour
/* 0x16C */ union {
s32 clockHour;
s32 spotlightIntensity;
};
/* 0x170 */ u16 currentTime;
/* 0x174 */ ObjTokeidaiActionFunc actionFunc;
} ObjTokeidai; // size = 0x178
extern const ActorInit Obj_Tokeidai_InitVars;
+35 -35
View File
@@ -11667,45 +11667,45 @@
0x80AB2544:("DmChar09_Update",),
0x80AB25D8:("func_80AB25D8",),
0x80AB261C:("DmChar09_Draw",),
0x80AB2790:("func_80AB2790",),
0x80AB27B4:("func_80AB27B4",),
0x80AB2834:("func_80AB2834",),
0x80AB28C8:("func_80AB28C8",),
0x80AB29F8:("func_80AB29F8",),
0x80AB2BBC:("func_80AB2BBC",),
0x80AB2790:("ObjTokeidai_GetTargetSunMoonDiskRotation",),
0x80AB27B4:("ObjTokeidai_SetupClockOrGear",),
0x80AB2834:("ObjTokeidai_Clock_Init",),
0x80AB28C8:("ObjTokeidai_TowerGear_Init",),
0x80AB29F8:("ObjTokeidai_TowerClock_Init",),
0x80AB2BBC:("ObjTokeidai_Counterweight_Init",),
0x80AB2DEC:("ObjTokeidai_Init",),
0x80AB3000:("ObjTokeidai_Destroy",),
0x80AB3010:("func_80AB3010",),
0x80AB319C:("func_80AB319C",),
0x80AB3240:("func_80AB3240",),
0x80AB32F0:("func_80AB32F0",),
0x80AB3370:("func_80AB3370",),
0x80AB34CC:("func_80AB34CC",),
0x80AB3544:("func_80AB3544",),
0x80AB3598:("func_80AB3598",),
0x80AB363C:("func_80AB363C",),
0x80AB365C:("func_80AB365C",),
0x80AB36C4:("func_80AB36C4",),
0x80AB3808:("func_80AB3808",),
0x80AB3880:("func_80AB3880",),
0x80AB38B0:("func_80AB38B0",),
0x80AB39BC:("func_80AB39BC",),
0x80AB3A7C:("func_80AB3A7C",),
0x80AB3B34:("func_80AB3B34",),
0x80AB3BB0:("func_80AB3BB0",),
0x80AB3BD8:("func_80AB3BD8",),
0x80AB3BE8:("func_80AB3BE8",),
0x80AB3C50:("func_80AB3C50",),
0x80AB3CCC:("func_80AB3CCC",),
0x80AB3ED0:("func_80AB3ED0",),
0x80AB4040:("func_80AB4040",),
0x80AB4080:("func_80AB4080",),
0x80AB4160:("func_80AB4160",),
0x80AB3010:("ObjTokeidai_RotateOnMinuteChange",),
0x80AB319C:("ObjTokeidai_TowerGear_Collapse",),
0x80AB3240:("ObjTokeidai_TowerGear_OpenedIdle",),
0x80AB32F0:("ObjTokeidai_TowerClock_Fall",),
0x80AB3370:("ObjTokeidai_TowerClock_SlideOff",),
0x80AB34CC:("ObjTokeidai_TowerClock_OpenedIdle",),
0x80AB3544:("ObjTokeidai_Counterweight_Collapse",),
0x80AB3598:("ObjTokeidai_Counterweight_OpenedIdle",),
0x80AB363C:("ObjTokeidai_Walls_Collapse",),
0x80AB365C:("ObjTokeidai_Walls_Idle",),
0x80AB36C4:("ObjTokeidai_TowerTransformation_EndCutscene",),
0x80AB3808:("ObjTokeidai_TowerOpening_FinishOpening",),
0x80AB3880:("ObjTokeidai_TowerOpening_Wait",),
0x80AB38B0:("ObjTokeidai_TowerOpening_DropCounterweight",),
0x80AB39BC:("ObjTokeidai_TowerOpening_FinishRaise",),
0x80AB3A7C:("ObjTokeidai_TowerOpening_RaiseTower",),
0x80AB3B34:("ObjTokeidai_TowerOpening_Start",),
0x80AB3BB0:("ObjTokeidai_SetupTowerOpening",),
0x80AB3BD8:("ObjTokeidai_DoNothing",),
0x80AB3BE8:("ObjTokeidai_StaircaseIntoTower_Idle",),
0x80AB3C50:("ObjTokeidai_IsPostFirstCycleFinalHours",),
0x80AB3CCC:("ObjTokeidai_RotateOnHourChange",),
0x80AB3ED0:("ObjTokeidai_TowerClock_Idle",),
0x80AB4040:("ObjTokeidai_WallClock_Idle",),
0x80AB4080:("ObjTokeidai_TowerGear_Idle",),
0x80AB4160:("ObjTokeidai_Counterweight_Idle",),
0x80AB4278:("ObjTokeidai_Update",),
0x80AB429C:("ObjTokeidai_Draw",),
0x80AB4394:("func_80AB4394",),
0x80AB4664:("func_80AB4664",),
0x80AB4894:("func_80AB4894",),
0x80AB4394:("ObjTokeidai_Clock_Draw",),
0x80AB4664:("ObjTokeidai_Counterweight_Draw",),
0x80AB4894:("ObjTokeidai_TowerGear_Draw",),
0x80AB4D10:("func_80AB4D10",),
0x80AB4E34:("func_80AB4E34",),
0x80AB4E58:("func_80AB4E58",),
-15
View File
@@ -4273,21 +4273,6 @@ D_06001CB0 = 0x06001CB0;
D_06001400 = 0x06001400;
// ovl_Obj_Tokeidai
D_06009A08 = 0x06009A08;
D_0600B0C0 = 0x0600B0C0;
D_0600B208 = 0x0600B208;
D_0600BA78 = 0x0600BA78;
D_0600BEE8 = 0x0600BEE8;
D_0600C368 = 0x0600C368;
D_0600CF28 = 0x0600CF28;
D_0600D388 = 0x0600D388;
D_0600D8E0 = 0x0600D8E0;
D_0600D8E8 = 0x0600D8E8;
D_0600E818 = 0x0600E818;
D_0600F518 = 0x0600F518;
// ovl_Obj_Tokei_Turret
D_06002508 = 0x06002508;