summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremilybrooks <emilybrooksemilybrooks@gmail.com>2024-03-10 15:27:50 -0700
committerGitHub <noreply@github.com>2024-03-10 15:27:50 -0700
commitabd5ecba65e19c3fe08e8c481549538071024251 (patch)
tree6777753580e518d36719f65334ba1bb57f5d0521
parent55a27a19353e0d5a0d8706ad1a5fcb877290b949 (diff)
ac_sum_hal_chest02 OK (#153)
* initial commit * started draw function * fully matching * fix compile errors
-rw-r--r--include/m_common_data.h12
-rw-r--r--include/tables/dmatables/dmadata_table_jp.h4
-rw-r--r--linker_scripts/jp/symbol_addrs_overlays.txt12
-rw-r--r--linker_scripts/jp/undefined_syms.ld7
-rw-r--r--src/overlays/actors/ovl_My_Room/ac_my_room.h45
-rw-r--r--src/overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02.c93
-rw-r--r--yamls/jp/overlays.yaml14
7 files changed, 167 insertions, 20 deletions
diff --git a/include/m_common_data.h b/include/m_common_data.h
index ced543a..ac54467 100644
--- a/include/m_common_data.h
+++ b/include/m_common_data.h
@@ -25,6 +25,7 @@ struct Game_Play;
struct struct_809AEFA4;
struct ToolClip;
struct ShadowData;
+struct FurnitureActor;
typedef UNK_RET (*CommonData_unk_1004C_unk_04)(struct ActorOverlay*, const struct struct_801161E8_jp*, size_t, s32);
typedef UNK_RET (*CommonData_unk_1004C_unk_08)(void);
@@ -85,6 +86,13 @@ typedef struct CommonData_unk_10080 {
/* 0x04 */ CommonData_unk_10080_unk_04 unk_04;
} CommonData_unk_10080; // size >= 0x8
+typedef UNK_RET (*CommonData_unk_1008C_unk_34)(struct FurnitureActor* furnitureActor, struct Actor* myHouseActor, struct Game_Play* game_play, f32 arg0, f32 arg1);
+
+typedef struct CommonData_unk_1008C {
+ /* 0x00 */ UNK_TYPE1 unk_00[0x34];
+ /* 0x34 */ CommonData_unk_1008C_unk_34 unk_34; // open close proc
+} CommonData_unk_1008C; // size >= 0x8
+
typedef UNK_RET (*CommonData_unk_10098_unk_4)(struct ActorOverlay*, size_t);
typedef UNK_RET (*CommonData_unk_10098_unk_8)(void);
typedef UNK_PTR (*CommonData_unk_10098_unk_0C)(void);
@@ -217,7 +225,9 @@ typedef struct CommonData {
/* 0x10078 */ CommonData_unk_10078* unk_10078;
/* 0x1007C */ UNK_TYPE1 unk_1007C[0x4];
/* 0x10080 */ CommonData_unk_10080* unk_10080;
- /* 0x10084 */ UNK_TYPE1 unk_10084[0x14];
+ /* 0x10084 */ UNK_TYPE1 unk_10084[0x8];
+ /* 0x1008C */ CommonData_unk_1008C* unk_1008C;
+ /* 0x10090 */ UNK_TYPE1 unk_10090[0x8];
/* 0x10098 */ CommonData_unk_10098* unk_10098;
/* 0x1009C */ UNK_TYPE1 unk_1009C[0x4];
/* 0x100A0 */ struct ToolClip* toolClip;
diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h
index 21afbce..876c72b 100644
--- a/include/tables/dmatables/dmadata_table_jp.h
+++ b/include/tables/dmatables/dmadata_table_jp.h
@@ -1362,8 +1362,8 @@ DEFINE_DMA_ENTRY(ovl__0092F760, "ovl__0092F760")
DEFINE_DMA_ENTRY(ovl__0092F760_reloc, "ovl__0092F760_reloc")
DEFINE_DMA_ENTRY(ovl__0092FAF0, "ovl__0092FAF0")
DEFINE_DMA_ENTRY(ovl__0092FAF0_reloc, "ovl__0092FAF0_reloc")
-DEFINE_DMA_ENTRY(ovl__0092FE80, "ovl__0092FE80")
-DEFINE_DMA_ENTRY(ovl__0092FE80_reloc, "ovl__0092FE80_reloc")
+DEFINE_DMA_ENTRY(ovl_sum_hal_chest02, "ovl__0092FE80")
+DEFINE_DMA_ENTRY(ovl_sum_hal_chest02_reloc, "ovl__0092FE80_reloc")
DEFINE_DMA_ENTRY(ovl__00930210, "ovl__00930210")
DEFINE_DMA_ENTRY(ovl__00930210_reloc, "ovl__00930210_reloc")
DEFINE_DMA_ENTRY(ovl__009305A0, "ovl__009305A0")
diff --git a/linker_scripts/jp/symbol_addrs_overlays.txt b/linker_scripts/jp/symbol_addrs_overlays.txt
index 912bad7..29fced2 100644
--- a/linker_scripts/jp/symbol_addrs_overlays.txt
+++ b/linker_scripts/jp/symbol_addrs_overlays.txt
@@ -18496,15 +18496,15 @@ D_80A6FB64_jp = 0x80A6FB64; //
// .text
-func_80A6FBE0_jp = 0x80A6FBE0; // type:func
-func_80A6FC74_jp = 0x80A6FC74; // type:func
-func_80A6FCBC_jp = 0x80A6FCBC; // type:func
-func_80A6FED0_jp = 0x80A6FED0; // type:func
+aSumHalChest02_ct = 0x80A6FBE0; // type:func
+aSumHalChest02_mv = 0x80A6FC74; // type:func
+aSumHalChest03_dw = 0x80A6FCBC; // type:func
+aSumHalChest03_dt = 0x80A6FED0; // type:func
// .data
-D_80A6FEE0_jp = 0x80A6FEE0; //
-D_80A6FEF4_jp = 0x80A6FEF4; //
+aSumHalChest02_func = 0x80A6FEE0; //
+iam_sum_hal_chest02 = 0x80A6FEF4; //
// .text
diff --git a/linker_scripts/jp/undefined_syms.ld b/linker_scripts/jp/undefined_syms.ld
index 95a1287..28aa199 100644
--- a/linker_scripts/jp/undefined_syms.ld
+++ b/linker_scripts/jp/undefined_syms.ld
@@ -4207,13 +4207,12 @@ D_6000020 = 0x06000020;
D_60008E8 = 0x060008E8;
D_60011D4 = 0x060011D4;
-// ovl__0092FE80
+// ovl_sum_hal_chest02
D_6000000 = 0x06000000;
D_6000020 = 0x06000020;
-D_6000898 = 0x06000898;
-D_6001014 = 0x06001014;
-D_6001020 = 0x06001020;
+cKF_ba_r_int_sum_hal_chest02 = 0x06000898;
+cKF_bs_r_int_sum_hal_chest02 = 0x06001014;
// ovl__00930210
diff --git a/src/overlays/actors/ovl_My_Room/ac_my_room.h b/src/overlays/actors/ovl_My_Room/ac_my_room.h
index 701dffc..e9f0f87 100644
--- a/src/overlays/actors/ovl_My_Room/ac_my_room.h
+++ b/src/overlays/actors/ovl_My_Room/ac_my_room.h
@@ -4,9 +4,12 @@
#include "ultra64.h"
#include "m_actor.h"
#include "unk.h"
+#include "c_keyframe.h"
struct Game_Play;
struct My_Room;
+struct Actor;
+
typedef void (*My_RoomActionFunc)(struct My_Room*, struct Game_Play*);
@@ -15,4 +18,46 @@ typedef struct My_Room {
/* 0x174 */ UNK_TYPE1 unk_174[0x36C];
} My_Room; // size = 0x4E0
+typedef struct FurnitureActor {
+ /* 0x000 */ UNK_TYPE1 unk_000[0x134];
+ /* 0x134 */ SkeletonInfoR skeletonInfo;
+ /* 0x1A4 */ s_xyz jointTable[9];
+ /* 0x1DA */ s_xyz morphTable[9];
+ /* 0x210 */ Mtx matrix[2][10]; // not sure if the array dimensions are correct
+} FurnitureActor; // size >= 0xA10
+
+typedef void (*FurnitureCreate)(FurnitureActor* this, u8* data);
+typedef void (*FurnitureMove)(FurnitureActor* this, struct Actor* myRoomActor, struct Game_Play* game_play, u8* data);
+typedef void (*FurnitureDraw)(FurnitureActor* this, struct Actor* myRoomActor, struct Game_Play* game_play, u8* data);
+typedef void (*FurnitureDestroy)(FurnitureActor* this, u8* data);
+typedef void (*FurnitureDma)(u16* name, u8* data);
+
+typedef struct FurnitureActorFunctions {
+ /* 0x00 */ FurnitureCreate furnitureCreate;
+ /* 0x04 */ FurnitureMove furnitureMove;
+ /* 0x08 */ FurnitureDraw furnitureDraw;
+ /* 0x0C */ FurnitureDestroy furnitureDestroy;
+ /* 0x10 */ FurnitureDma furnitureDma;
+} FurnitureActorFunctions; // size = 0x14
+
+typedef struct FurnitureActorUnkStruct {
+ /* 0x00 */ UNK_TYPE4 unk00;
+ /* 0x04 */ UNK_TYPE4 unk04;
+ /* 0x08 */ UNK_TYPE4 unk08;
+ /* 0x0C */ UNK_TYPE4 unk0C;
+ /* 0x10 */ UNK_TYPE4 unk10;
+ /* 0x14 */ UNK_TYPE4 unk14;
+ /* 0x18 */ UNK_TYPE4 unk18;
+ /* 0x1C */ UNK_TYPE4 unk1C;
+ /* 0x20 */ UNK_TYPE4 unk20;
+ /* 0x24 */ UNK_TYPE4 unk24;
+ /* 0x28 */ UNK_TYPE4 unk28;
+ /* 0x2C */ UNK_TYPE4 unk2C;
+ /* 0x30 */ UNK_TYPE4 unk30;
+ /* 0x34 */ UNK_TYPE4 unk34;
+ /* 0x38 */ UNK_TYPE4 unk38;
+ /* 0x3C */ UNK_TYPE4 unk3C;
+ /* 0x40 */ FurnitureActorFunctions* furnitureActorFunctions;
+} FurnitureActorUnkStruct; // size = 0x44
+
#endif
diff --git a/src/overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02.c b/src/overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02.c
new file mode 100644
index 0000000..f5758dc
--- /dev/null
+++ b/src/overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02.c
@@ -0,0 +1,93 @@
+#include "m_lib.h"
+#include "c_keyframe.h"
+#include "src/overlays/actors/ovl_My_Room/ac_my_room.h"
+
+void aSumHalChest02_ct(FurnitureActor* this, u8* data);
+void aSumHalChest02_mv(FurnitureActor* this, Actor* myRoomActor, Game_Play* game_play, u8* data);
+void aSumHalChest03_dw(FurnitureActor* this, Actor* myRoomActor, Game_Play* game_play, u8* data);
+void aSumHalChest03_dt(FurnitureActor* this, u8* data);
+
+FurnitureActorFunctions aSumHalChest02_func = {
+ /* */ aSumHalChest02_ct,
+ /* */ aSumHalChest02_mv,
+ /* */ aSumHalChest03_dw,
+ /* */ aSumHalChest03_dt,
+ /* */ NULL,
+};
+
+FurnitureActorUnkStruct iam_sum_hal_chest02 = {
+ /* */ 0x015C8000,
+ /* */ 0x015C9020,
+ /* */ 0x06000000,
+ /* */ 0x06001020,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x00000000,
+ /* */ 0x42200000,
+ /* */ 0x3C23D70A,
+ /* */ 0x04000000,
+ /* */ 0x00000004,
+ /* */ &aSumHalChest02_func,
+};
+
+extern BaseSkeletonR cKF_bs_r_int_sum_hal_chest02;
+extern BaseAnimationR cKF_ba_r_int_sum_hal_chest02;
+
+void aSumHalChest02_ct(FurnitureActor* this, u8* data UNUSED) {
+ UNUSED s32 pad[2];
+ SkeletonInfoR* skeletonInfo = &this->skeletonInfo;
+
+ cKF_SkeletonInfo_R_ct(skeletonInfo, Lib_SegmentedToVirtual(&cKF_bs_r_int_sum_hal_chest02),
+ Lib_SegmentedToVirtual(&cKF_ba_r_int_sum_hal_chest02), this->jointTable, this->morphTable);
+ cKF_SkeletonInfo_R_init_standard_stop(skeletonInfo, Lib_SegmentedToVirtual(&cKF_ba_r_int_sum_hal_chest02), NULL);
+ skeletonInfo->frameControl.speed = 0.0f;
+ cKF_SkeletonInfo_R_play(skeletonInfo);
+}
+
+void aSumHalChest02_mv(FurnitureActor* this, Actor* myRoomActor, Game_Play* game_play, u8* data UNUSED) {
+ if (common_data.unk_1008C != NULL) {
+ common_data.unk_1008C->unk_34(this, myRoomActor, game_play, 1.0f, 16.0f);
+ }
+}
+
+extern UNK_PTR D_6000020;
+extern UNK_PTR D_6000000;
+
+void aSumHalChest03_dw(FurnitureActor* this, Actor* myRoomActor UNUSED, Game_Play* game_play, u8* data UNUSED) {
+ UNUSED s32 pad;
+ s32 temp = game_play->state.unk_A0 & 1;
+ Mtx* mtx = &this->matrix[temp][0];
+
+ OPEN_DISPS(game_play->state.gfxCtx);
+ if (1) {}
+ if (1) {}
+ gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(game_play->state.gfxCtx),
+ G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_I, G_IM_SIZ_16b, 1, &D_6000020);
+ gDPSetTile(POLY_OPA_DISP++, G_IM_FMT_I, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_MIRROR | G_TX_WRAP, 7,
+ G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 7, G_TX_NOLOD);
+ gDPLoadSync(POLY_OPA_DISP++);
+ gDPLoadBlock(POLY_OPA_DISP++, G_TX_LOADTILE, 0, 0, 2047, 0);
+ gDPPipeSync(POLY_OPA_DISP++);
+ gDPSetTile(POLY_OPA_DISP++, G_IM_FMT_I, G_IM_SIZ_8b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_MIRROR | G_TX_WRAP, 7,
+ G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 7, G_TX_NOLOD);
+ gDPSetTileSize(POLY_OPA_DISP++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x00FC);
+ gDPSetTextureImage(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, &D_6000000);
+ gDPTileSync(POLY_OPA_DISP++);
+ gDPSetTile(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_4b, 0, 0x01F0, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
+ G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
+ gDPLoadSync(POLY_OPA_DISP++);
+ gDPLoadTLUTCmd(POLY_OPA_DISP++, G_TX_LOADTILE, 15);
+ gDPPipeSync(POLY_OPA_DISP++);
+ CLOSE_DISPS(game_play->state.gfxCtx);
+
+ cKF_Si3_draw_R_SV(game_play, &this->skeletonInfo, mtx, NULL, NULL, NULL);
+}
+
+void aSumHalChest03_dt(FurnitureActor* this UNUSED, u8* data UNUSED) {
+}
diff --git a/yamls/jp/overlays.yaml b/yamls/jp/overlays.yaml
index 343bd1b..b45e230 100644
--- a/yamls/jp/overlays.yaml
+++ b/yamls/jp/overlays.yaml
@@ -12819,7 +12819,7 @@
subsegments:
- [0x92FE50, data, overlays/other_ovl/ovl__0092FAF0/ovl__0092FAF0_reloc]
- - name: ovl__0092FE80
+ - name: ovl_sum_hal_chest02
type: code
start: 0x92FE80
vram: 0x80A6FBE0
@@ -12827,22 +12827,22 @@
compress: True
bss_size: 0x0
subsegments:
- - [0x92FE80, asm, overlays/other_ovl/ovl__0092FE80/ovl__0092FE80]
- - [0x930180, data, overlays/other_ovl/ovl__0092FE80/ovl__0092FE80]
- - name: ovl__0092FE80_reloc
+ - [0x92FE80, c, overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02]
+ - [0x930180, .data, overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02]
+ - name: ovl_sum_hal_chest02_reloc
type: code
start: 0x9301E0
vram: 0x80A6FF40
- follows_vram: ovl__0092FE80
+ follows_vram: ovl_sum_hal_chest02
compress: True
subsegments:
- - [0x9301E0, data, overlays/other_ovl/ovl__0092FE80/ovl__0092FE80_reloc]
+ - [0x9301E0, data, overlays/furniture/ovl_sum_hal_chest02/ovl_sum_hal_chest02_reloc]
- name: ovl__00930210
type: code
start: 0x930210
vram: 0x80A6FF70
- follows_vram: ovl__0092FE80_reloc
+ follows_vram: ovl_sum_hal_chest02_reloc
compress: True
bss_size: 0x0
subsegments: