diff --git a/include/functions.h b/include/functions.h index e023498ed6..07f44e4b8b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -37,6 +37,36 @@ s32 create_entity(StaticEntityData*, s32, s32, s32, s32, s32); void func_80070550(s32, f32, f32, f32, f32, f32, s32, s32); void func_802E263C(Entity* entity); +void create_shadow_callback(Shadow* entity); +void func_802E10F4(Entity* entity); +void func_802E114C(void); +void func_802E117C(void); +void save_game_at_player_position(void); +void func_802E1204(Entity* entity); +void func_802E1270(Entity* entity); +void func_802E1298(void); +void func_802E12F8(void); +void func_802E1328(Entity* entity); +void func_802E1350(Entity* entity); +void func_802E13B8(Entity* entity); + +void func_802E1400(Entity* entity); +void func_802E1460(Entity* entity); +void func_802E14D8(Entity* entity); +void func_802E1614(Entity* entity); +void func_802E1660(Entity* entity); +void func_802E1740(Entity* entity); +void func_802E176C(Entity* entity); +s32 func_802E17A8(Entity* entity); +void func_802E1EA8(Entity* entity); +void func_802E1EDC(Entity* entity); +void func_802E234C(Entity* entity); +f32 func_802E31EC(Entity* entity); +void func_802E328C(Entity* entity); +s32 func_802E3BA4(Entity* entity); +void entity_init_BlueSwitch(Entity* entity); +void entity_init_HugeBlueSwitch(Entity* entity); + UNK_TYPE func_80072230(s32, f32, f32, f32, f32, s32); // Text diff --git a/src/code_102C80.c b/src/code_102C80.c index 959dafb008..38be52b429 100644 --- a/src/code_102C80.c +++ b/src/code_102C80.c @@ -313,7 +313,7 @@ s32 func_802E17A8(Entity* entity) { } } #else -INCLUDE_ASM(s32, "code_102C80", func_802E17A8); +INCLUDE_ASM(s32, "code_102C80", func_802E17A8, Entity* entity); #endif void func_802E1EA8(Entity* entity) { @@ -464,7 +464,7 @@ void func_802E1EDC(Entity* entity) { } } #else -INCLUDE_ASM(s32, "code_102C80", func_802E1EDC); +INCLUDE_ASM(void, "code_102C80", func_802E1EDC, Entity* entity); #endif void func_802E234C(Entity* entity) { @@ -518,7 +518,7 @@ void func_802E2450(Entity* entity) { INCLUDE_ASM(void, "code_102C80", func_802E246C, Entity* entity, void* arg1, void* arg2); -INCLUDE_ASM(s32, "code_102C80", func_802E263C); +INCLUDE_ASM(void, "code_102C80", func_802E263C, Entity* entity); #ifdef NON_MATCHING // display list issues diff --git a/src/code_104730.c b/src/code_104730.c index 0949342384..c1de4a3b4d 100644 --- a/src/code_104730.c +++ b/src/code_104730.c @@ -1,5 +1,29 @@ #include "common.h" +void func_802E2EB0(Entity* entity); + +extern UNK_TYPE D_802E9170; +extern UNK_TYPE D_802E91F0; +extern UNK_TYPE D_802E9270; +extern UNK_TYPE D_802E92B0; + +extern UNK_TYPE D_0A003508; +extern UNK_TYPE D_00E4B2E0; +extern UNK_TYPE D_00E4E7F0; +extern UNK_TYPE D_0A000EF8; +extern UNK_TYPE D_0A000EF8; +extern UNK_TYPE D_0A000EE8; +extern UNK_TYPE D_0A000740; + +extern UNK_TYPE D_00E62AC0; +extern UNK_TYPE D_00E639C0; +extern UNK_TYPE D_00E639C0; +extern UNK_TYPE D_00E648D0; +extern UNK_TYPE D_00E639C0; +extern UNK_TYPE D_00E648D0; +extern UNK_TYPE D_00E62370; +extern UNK_TYPE D_00E62AC0; + extern UNK_TYPE D_0A0031E0; extern UNK_TYPE D_0A001508; extern UNK_TYPE D_0A0031B0; @@ -9,6 +33,208 @@ extern UNK_TYPE D_0A001218; extern UNK_TYPE D_0A003F70; extern UNK_TYPE D_0A002318; +Gfx D_802E96F0[] = { + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetTextureConvert(G_TC_FILT), + gsSPEndDisplayList(), +}; + +Gfx D_802E9738[] = { + gsSPDisplayList(&D_802E96F0), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureTile_4b(&D_802E9170, G_IM_FMT_I, 16, 0, 0, 0, 15, 15, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), +}; + +Gfx D_802E9788[] = { + gsSPDisplayList(&D_802E96F0), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureTile_4b(&D_802E91F0, G_IM_FMT_I, 16, 0, 0, 0, 15, 15, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), +}; + +Gfx D_802E97B0[] = { + gsSPDisplayList(&D_802E9738), + gsSPClearGeometryMode(G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&D_802E92B0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), +}; + +Gfx D_802E97D8[] = { + gsSPDisplayList(&D_802E9788), + gsSPClearGeometryMode(G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&D_802E9270, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), +}; + +Gfx D_802E9828[] = { + gsSPEndDisplayList(), +}; + +// Entity "script" data; unknown if it's used or not. +s32 D_802E9830[8] = { + 0x00000001, 0x0000003C, (s32)&D_802E9828, 0x00000002, + 0x00000000, 0x00000000, 0x00000000, 0x00000000 + }; + + +s32 D_802E9850[9] = { + 0x00000005, 0x00000800, 0x00000004, 0x00000020, + 0x00000001, 0x0000003C, (s32)&D_802E97D8, 0x00000002, + 0x00000000 + }; + +s32 D_802E9874[9] = { + 0x00000005, 0x00000800, 0x00000004, 0x00000020, + 0x00000001, 0x0000003C, (s32)&D_802E97D8, 0x00000002, + 0x00000000 + }; +s32 D_802E9898[9] = { + 0x00000005, 0x00000800, 0x00000004, 0x00000020, + 0x00000001, 0x0000003C, &D_802E9788[10], 0x00000002, + 0x00000000, + }; + +s32 D_802E98BC[8] = { + 0x00200000, (s32)&D_802E9850, 0x00000000, (s32)create_shadow_callback, + 0x00000000, 0x00000000, 0x00000000, 0x00000000 + }; + +s32 D_802E98DC[9] = { + 0x01190A19, 0x00200000, (s32)&D_802E9874, 0x00000000, + (s32)create_shadow_callback, 0x00000000, 0x00000000, 0x00000000, + 0x00000000 + }; + +s32 D_802E9900[9] = { + 0x01190A19, 0x00200000, (s32)&D_802E9898, 0x00000000, + (s32)create_shadow_callback, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, + }; + +s32 D_802E9924[3] = { + 0x01190A19, 0x00000000, 0x00000000 + }; + +s32 D_802E9930[51] = { + 0x00000003, 0x00000000, (s32)func_802E10F4, 0x00000009, + 0x0000014E, 0x00000002, (s32)func_802E114C, 0x00000002, + (s32)func_802E31EC, 0x00000003, 0x00000006, (s32)func_802E328C, + 0x00000003, 0x00000002, 0x00000000, 0x00000002, + (s32)func_802E1204, 0x00000003, 0x00000000, (s32)func_802E1270, + 0x00000003, 0x0000000E, 0x00000000, 0x00000002, + (s32)func_802E1298, 0x00000003, 0x00000000, (s32)func_802E1350, + 0x00000002, (s32)save_game_at_player_position, 0x00000002, (s32)func_802E12F8, + 0x00000003, 0x00000000, (s32)func_802E1328, 0x00000002, + (s32)func_802E117C, 0x00000003, 0x0000000C, 0x00000000, + 0x00000004, 0x00000000, 0x00000000, 0x00000002, + (s32)func_802E117C, 0x00000003, 0x00000002, 0x00000000, + 0x00000001, (s32)D_802E9930, 0x00000000, + }; + +s32 D_802E99FC[7] = { + + 0x00000004, 0x00000022, 0x00000001, 0x0000003C, + &D_0A003508, 0x00000002, 0x00000000, + }; + +StaticEntityData D_802E9A18 = { 0x4200, 0x0020, &D_802E99FC, {0, 0, 0, 0}, func_802E13B8, &D_802E9930, func_802E3BA4, &D_00E4B2E0, &D_00E4E7F0, 32, {0x19, 0x19, 0x19}}; + +// potential file split(?) +s32 D_802E9A3C[1] = { + 0x00000000 + }; + +s32 D_802E9A40[18] = { + 0x00000003, 0x00000000, (s32)func_802E1660, 0x00000009, + 0x00000152, 0x00000002, (s32)func_802E1EA8, 0x00000002, + (s32)func_802E176C, 0x00000003, 0x00000000, (s32)func_802E17A8, + 0x00000003, 0x00000000, (s32)func_802E1740, 0x00000004, + 0x00000000, 0x00000000, + }; + +s32 D_802E9A88[15] = { + 0x00000003, 0x00000000, (s32)func_802E1614, 0x00000009, + 0x00000152, 0x00000002, (s32)func_802E1EA8, 0x00000002, + (s32)func_802E176C, 0x00000003, 0x00000000, (s32)func_802E1EDC, + 0x00000007, 0x20000000, 0x00000000 + }; + +s32 D_802E9AC4[15] = { + 0x00000003, 0x00000000, (s32)func_802E1660, 0x00000009, + 0x00000152, 0x00000002, (s32)func_802E1EA8, 0x00000002, + (s32)func_802E176C, 0x00000003, 0x00000000, (s32)func_802E1EDC, + 0x00000007, 0x20000000, 0x00000000 + }; + +s32 D_802E9B00[16] = { + 0x00000003, 0x00000000, (s32)func_802E1400, 0x00000003, + 0x00000000, (s32)func_802E1460, 0x00000009, 0x00000152, + 0x00000003, 0x00000080, 0x00000000, 0x00000003, + 0x00000000, (s32)func_802E14D8, 0x00000004, 0x00000000, + }; + +s32 D_802E9B40[7] = { + 0x00000004, 0x00000011, 0x00000001, 0x0000003C, + &D_0A000EF8, 0x00000002, 0x00000000, + }; + +s32 D_802E9B5C[7] = { + 0x00000004, 0x00000011, 0x00000001, 0x0000003C, + (s32)&D_0A000EF8, 0x00000002, 0x00000000, + }; + +s32 D_802E9B78[7] = { + 0x00000004, 0x00000011, 0x00000001, 0x0000003C, + (s32)&D_0A000EE8, 0x00000002, 0x00000000 + }; + +s32 D_802E9B94[7] = { + 0x00000004, 0x00000001, 0x00000001, 0x0000003C, + (s32)&D_0A000740, 0x00000002, 0x00000000, + }; + +// TODO: resolve FILL_LATER +StaticEntityData D_802E9BB0 = { 0xA000, 0x002C, &D_802E9B78, {0, 0, 0, 0}, func_802E234C, &D_802E9A40, NULL, &D_00E62AC0, &D_00E639C0, 8, {0x16, 0x17, 0x16} }; +StaticEntityData D_802E9BD4 = { 0xAA04, 0x002C, &D_802E9B40, {0, 0, 0, 0}, entity_init_BlueSwitch, &D_802E9AC4, NULL, &D_00E639C0, &D_00E648D0, 7, {0x16, 0x17, 0x16} }; +StaticEntityData D_802E9BF8 = { 0xAA04, 0x002C, &D_802E9B5C, {0, 0, 0, 0}, entity_init_HugeBlueSwitch, &D_802E9A88, NULL, &D_00E639C0, &D_00E648D0, 9, {0x42, 0x4B, 0x42} }; +StaticEntityData D_802E9C1C = { 0xC000, 0x002C, &D_802E9B94, {0, 0, 0, 0}, func_802E234C, &D_802E9B00, NULL, &D_00E62370, &D_00E62AC0, 10, {0x32, 0x0F, 0x32} }; + +s32 D_802E9C40[] = { + 0x00000007, 0x00000020, 0x00000003, 0x00000000, + func_802E263C, 0x00000007, 0x00000001, 0x00000007, + 0x20000000, 0x00000000, 0x00000000, 0x00000000 + }; + +s32 D_802E9C70[] = { + 0x00000004, 0x00000011, 0x00000001, 0x0000003C, + (s32)&D_802E9828, 0x00000002, 0x00000000 + }; + +//ROM addrs; todo +extern UNK_TYPE D_00E32420; +extern UNK_TYPE D_00E35670; +extern UNK_TYPE D_00E38890; +extern UNK_TYPE D_00E3B870; +extern UNK_TYPE D_00E3E260; +extern UNK_TYPE D_00E42240; + +StaticEntityData D_802E9C8C = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E32420, &D_00E35670, 21, {0x10, 0x10, 0x10}}; +StaticEntityData D_802E9CB0 = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E35670, &D_00E38890, 22, {0x10, 0x10, 0x10}}; +StaticEntityData D_802E9CD4 = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E38890, &D_00E3B870, 23, {0x10, 0x10, 0x10}}; +StaticEntityData D_802E9CF8 = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E32420, &D_00E35670, 24, {0x08, 0x08, 0x08}}; +StaticEntityData D_802E9D1C = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E35670, &D_00E38890, 25, {0x08, 0x08, 0x08}}; +StaticEntityData D_802E9D40 = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E38890, &D_00E3B870, 26, {0x08, 0x08, 0x08}}; +StaticEntityData D_802E9D64 = { 0x0000, 0x0250, &D_802E9C70, {0, 0, 0, 0}, func_802E2EB0, &D_802E9C40, NULL, &D_00E3E260, &D_00E42240, 13, {0x08, 0x08, 0x08}}; + void func_802E2EB0(Entity* entity) { u32 type; void* a2 = NULL; @@ -60,22 +286,6 @@ void func_802E2EB0(Entity* entity) { func_802E246C(entity, a1, a2); } -//ROM addrs; todo -extern UNK_TYPE D_00E32420; -extern UNK_TYPE D_00E35670; -extern UNK_TYPE D_00E38890; -extern UNK_TYPE D_00E3B870; -extern UNK_TYPE D_00E3E260; -extern UNK_TYPE D_00E42240; - -extern StaticEntityData D_802E9C8C; -extern StaticEntityData D_802E9CB0; -extern StaticEntityData D_802E9CD4; -extern StaticEntityData D_802E9CF8; -extern StaticEntityData D_802E9D1C; -extern StaticEntityData D_802E9D40; -extern StaticEntityData D_802E9D64; - void func_802E2FD0(Entity* entity) { u32 type; StaticEntityData* addr = NULL; diff --git a/tools/splat.yaml b/tools/splat.yaml index f81967e5ff..ca8303d181 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -323,8 +323,7 @@ segments: - [0x10AAF0, bin] #- [0x10AB70, i4, shadow/10AB70, 32, 32] #- [0x10AD70, i4, shadow/10AD70, 32, 32] - - [0x10AF70, bin] # TODO - - [0x10B4C0, .data, code_104730] + - [0x10AF70, .data, code_104730] - [0x10B608, bin] - [0x10C880, rodata, code_102c80] - [0x10C9E0, .rodata, code_104730] diff --git a/undefined_syms.txt b/undefined_syms.txt index 0f1675b2c5..3f90eef00c 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -75,9 +75,11 @@ D_0A000808 = 0x0A000808; D_0A000328 = 0x0A000328; D_0A000380 = 0x0A000380; D_0A000380 = 0x0A000380; +D_0A000740 = 0x0A000740; +D_0A000750 = 0x0A000750; D_0A000800 = 0x0A000800; -D_0A000750 = 0x0A000750; -D_0A000750 = 0x0A000750; +D_0A000EE8 = 0x0A000EE8; +D_0A000EF8 = 0x0A000EF8; D_0A004350 = 0x0A004350; D_0A0026F0 = 0x0A0026F0; D_00074210 = 0x00074210; @@ -90,13 +92,27 @@ D_0A002F78 = 0x0A002F78; D_0A001218 = 0x0A001218; D_0A003F70 = 0x0A003F70; D_0A002318 = 0x0A002318; +D_0A003508 = 0x0A003508; D_802E9828 = 0x802E9828; D_802E9C40 = 0x802E9C40; D_802E9C70 = 0x802E9C70; +D_802E91F0 = 0x802E91F0; +D_802E9170 = 0x802E9170; +D_802E9270 = 0x802E9270; +D_802E92B0 = 0x802E92B0; + + D_00E32420 = 0x00E32420; D_00E35670 = 0x00E35670; D_00E38890 = 0x00E38890; D_00E3B870 = 0x00E3B870; D_00E3E260 = 0x00E3E260; -D_00E42240 = 0x00E42240; \ No newline at end of file +D_00E42240 = 0x00E42240; + +D_00E4B2E0 = 0x00E4B2E0; +D_00E4E7F0 = 0x00E4E7F0; +D_00E62370 = 0x00E62370; +D_00E62AC0 = 0x00E62AC0; +D_00E639C0 = 0x00E639C0; +D_00E648D0 = 0x00E648D0; \ No newline at end of file