diff options
| author | emilybrooks <emilybrooksemilybrooks@gmail.com> | 2024-03-10 15:27:50 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-10 15:27:50 -0700 |
| commit | abd5ecba65e19c3fe08e8c481549538071024251 (patch) | |
| tree | 6777753580e518d36719f65334ba1bb57f5d0521 | |
| parent | 55a27a19353e0d5a0d8706ad1a5fcb877290b949 (diff) | |
ac_sum_hal_chest02 OK (#153)
* initial commit
* started draw function
* fully matching
* fix compile errors
| -rw-r--r-- | include/m_common_data.h | 12 | ||||
| -rw-r--r-- | include/tables/dmatables/dmadata_table_jp.h | 4 | ||||
| -rw-r--r-- | linker_scripts/jp/symbol_addrs_overlays.txt | 12 | ||||
| -rw-r--r-- | linker_scripts/jp/undefined_syms.ld | 7 | ||||
| -rw-r--r-- | src/overlays/actors/ovl_My_Room/ac_my_room.h | 45 | ||||
| -rw-r--r-- | src/overlays/furniture/ovl_sum_hal_chest02/ac_sum_hal_chest02.c | 93 | ||||
| -rw-r--r-- | yamls/jp/overlays.yaml | 14 |
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: |
