diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index 33f98aaf..00be3e68 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -846,6 +846,7 @@ segments: - [0x1024630, c, code_CECD0] #DONE - [0x10249F0, c, code_CF090] #DONE - [0x1024D40, c, code_CF3E0] #DONE + - [0x1024F50, c, code_CF5F0] #DONE - [0x1025140, c, ch/clankerwhipcrack] #DONE - [0x10253C0, c, ch/code_CFA60] #DONE - [0x1025B20, c, ch/clucker] #DONE @@ -1034,7 +1035,7 @@ segments: - [0x103CDF0, .data, code_9D640] - [0x103CF30, .data, code_9E370] - [0x103CFA0, .data, code_A4D00] - - [0x103D180, bin, data_E7820] + - [0x103D180, bin, data_E7820] # .data, code_A5BC0 (file needs to be broken?) - [0x103D1D0, .data, code_A5BC0] - [0x103D200, .data, code_ABC00] - [0x103E340, .data, code_AC520] @@ -1064,26 +1065,30 @@ segments: - [0x1041090, bin, data_1041090] # .data, code_CD6E0] - [0x10410C0, .data, code_CECD0] - [0x10410D0, .data, code_CF090] - - [0x1041100, bin, data_1041100] # .data, code_CF3E0] - - [0x10411C0, .data, code_CF3E0] + - [0x1041100, .data, code_CF3E0] + - [0x10411C0, .data, code_CF5F0] - [0x10411E0, .data, ch/clankerwhipcrack] - [0x1041210, .data, ch/code_CFA60] - [0x1041240, .data, ch/clucker] - - [0x1041270, bin, data_EB910] # .data, code_D0CA0] + - [0x1041270, .data, code_D0CA0] - [0x1041310, .data, code_D2180] - [0x1041460, .data, ch/firefx] - [0x1041490, .data, ch/drips] - [0x1041520, .data, ch/icecube] - [0x10415B0, .data, ch/ghost] - [0x1041650, .data, ch/flotsam] - - [0x10416F0, bin, data_EBD90] + - [0x10416F0, .data, code_D5D10] + - [0x1041770, .data, code_D5FD0] + - [0x10417F0, .data, code_D6180] + - [0x1041870, .data, code_D6600] - [0x10418E0, .data, code_D7040] - - [0x1041950, bin, data_EBFF0] + - [0x1041950, .data, code_D7D10] + - [0x1041A60, .data, code_D89E0] - [0x1041AD0, .data, ch/whipcrack] - [0x1041B00, .data, code_DA3A0] - [0x1041B80, .data, code_DA760] - - [0x1041BB0, bin, code_EC250] - - [0x1041CB0, bin, code_EC350] #.data, code_DB010] + - [0x1041BB0, .data, code_DAAA0] + - [0x1041CB0, .data, code_DB010] - [0x1042790, .data, code_DC4B0] - [0x10427C0, ".rodata", animctrl] - [0x10427F0, .rodata, code_AD0] diff --git a/include/enums.h b/include/enums.h index e9237812..ebabcc7c 100644 --- a/include/enums.h +++ b/include/enums.h @@ -13,15 +13,16 @@ enum bkprog_e{ - // BKPROG_03_ "1st Note Text"}, -- 0x00 > 3 - // BKPROG_04_ "1st Mumbo Token Text"}, -- 0x00 > 4 - // BKPROG_05_ "1st Egg Text"}, -- 0x00 > 5 - // BKPROG_06_ "1st Red Feather Text"}, -- 0x00 > 6 - // BKPROG_07_ "1st Gold Feather Text"}, -- 0x00 > 7 - // BKPROG_08_ "1st Gold Bullion Text"}, -- 0x01 > 1 (flipped, but only for this byte, no idea why) - // BKPROG_09_ "1st Orange Text"}, -- 0x01 > 0 (flipped, but only for this byte, no idea why) - // BKPROG_0A_ "1st Honeycomb Text"}, -- 0x01 > 2 - // BKPROG_0B_ "1st Empty Honeycomb Text"}, -- 0x01 > 3 + BKPROG_3_MUSIC_NOTE_TEXT = 0x3, + BKPROG_4_MUMBO_TOKEN_TEXT, + BKPROG_5_BLUE_EGG_TEXT, + BKPROG_6_RED_FEATHER_TEXT, + BKPROG_7_GOLD_FEATHER_TEXT, + BKPROG_8_GOLD_BULLION_TEXT, + BKPROG_9_ORANGE_TEXT, + BKPROG_A_HONEYCOMB_TEXT, + BKPROG_B_EMPTY_HONEYCOMB_TEXT, + BKPROG_C_EXTRA_LIFE_TEXT, // BKPROG_0C_ "1st Extra Life Text"}, // BKPROG_0D_ "1st Beehive Text"}, BKPROG_D_BEEHIVE_TEXT = 0xD, @@ -179,9 +180,8 @@ enum bkprog_e{ BKPROG_A8_HAS_DIED, BKPROG_A9_HAS_TOUCHED_RBB_OVEN, BKPROG_AA_HAS_TOUCHED_CCW_BRAMBLE_FIELD, - // {index=0xAA, type="Prog", level=8, name="1st CCW Bramble Field Text"}, - // {index=0xAB, type="Prog", level=9, name="Oily Water Surface Text"}, - // {index=0xAC, type="Prog", level=9, name="Oily Water Underwater Text"}, + BKPROG_AB_SWIM_OILY_WATER, + BKPROG_AC_DIVE_OILY_WATER, // {index=0xAD, type="Prog", level=6, name="Cheato: BLUEEGGS Unlocked"}, // {index=0xAE, type="Prog", level=6, name="Cheato: REDFEATHERS Unlocked"}, // {index=0xAF, type="Prog", level=6, name="Cheato: GOLDFEATHERS Unlocked"}, @@ -230,7 +230,7 @@ enum bkprog_e{ // {index=0xDA, type="Prog", level=6, name="??FF PATTERN 2^7"}, BKPROG_DC_HAS_HAD_ENOUGH_TOKENS_BEFORE = 0xDC, - // {index=0xDD, type="Prog", level=8, name="1st CCW Icy Water Text"}, + BKPROG_DD_HAS_TOUCHED_ICY_WATER, // {index=0xDF, type="Prog", level=6, name="Remove Puzzle Piece Text"}, // {index=0xE0, type="Prog", level=6, name="Place All Puzzle Pieces Text"}, diff --git a/include/structs.h b/include/structs.h index 4dffa765..a8193df3 100644 --- a/include/structs.h +++ b/include/structs.h @@ -33,6 +33,7 @@ typedef struct{ t n[2][3];\ } +#define KEY_VALUE_PAIR(T1, T2) struct { T1 key; T2 value; } typedef struct variable_length_array{ s32 elem_size; diff --git a/src/RBB/code_8520.c b/src/RBB/code_8520.c index dab05dfe..3c990a7c 100644 --- a/src/RBB/code_8520.c +++ b/src/RBB/code_8520.c @@ -45,9 +45,6 @@ s32 RBB_D_80390DD0[3] = {0xDE, 0xA7, 0x71}; s32 D_80390DDC[4] = {0xFF, 0xFF, 0xFF, 0xFF}; s32 D_80390DEC[4] = {0,0,0,0}; -/* .rodata */ - - /* .bss */ f32 D_803912A0[3]; diff --git a/src/SM/code_0.c b/src/SM/code_0.c index 9c784bc3..aa19f7d5 100644 --- a/src/SM/code_0.c +++ b/src/SM/code_0.c @@ -4,14 +4,6 @@ extern void func_80288F78(Actor*, f32, s32); -typedef struct { - s16 unk0; - //u8 pad2[2]; - void (*unk4)(Actor *, s32); - s32 pad8; - s32 padC; -}Struct_SM_0; - /* .code */ void SM_func_803863F0(Actor *this, s32 arg1) { func_80288F78(this, 0.20f, 0xF280FA); @@ -27,7 +19,12 @@ void SM_func_80386420(Actor *arg0, s32 arg1) { } /* .data */ -Struct_SM_0 D_8038AAC0[2] = { - {0x20A, SM_func_803863F0, 0, 0}, - {0x208, SM_func_80386420, 0, 0}, +Struct63s D_8038AAC0[] = { + {0x20A, SM_func_803863F0}, + 0 +}; + +Struct63s D_8038AAD0[] = { + {0x208, SM_func_80386420}, + 0 }; diff --git a/src/core1/code_EAF0.c b/src/core1/code_EAF0.c index b9559901..a525b965 100644 --- a/src/core1/code_EAF0.c +++ b/src/core1/code_EAF0.c @@ -11,20 +11,6 @@ extern f32 D_80275D24; //aspect extern f32 D_80275D28; //near extern f32 D_80275D2C; //far - -/* .rodata */ -extern f64 D_802779F0; -extern f32 D_80277A08; -extern f64 D_80277A30; -extern f32 D_80277A00; -extern f32 D_80277A04; -extern f32 D_80277A0C; -extern f32 D_80277A10; -extern f32 D_80277A14; -extern f32 D_80277A18; -extern f32 D_80277A1C; -extern f32 D_80277A20; - /* .data */ f32 D_80280EA0[3]; f32 D_80280EB0[3]; diff --git a/src/core2/code_12F30.c b/src/core2/code_12F30.c index 452107ca..0cf38047 100644 --- a/src/core2/code_12F30.c +++ b/src/core2/code_12F30.c @@ -85,12 +85,6 @@ s16 D_80364580[] = { 0 }; -/* .rodata */ -extern f32 D_80374CF0; -extern f64 D_80374CF8; -extern f64 D_80374D00; -extern f32 D_80374D08; - /*.bss*/ struct { u8 unk0; diff --git a/src/core2/code_4BD70.c b/src/core2/code_4BD70.c index ad04cfba..1ae889f0 100644 --- a/src/core2/code_4BD70.c +++ b/src/core2/code_4BD70.c @@ -11,7 +11,6 @@ ActorInfo D_80367578 = { MARKER_1E9_MUMBO_COST_SIGN, ACTOR_36A_15_MUMBO_TOKEN_SI ActorInfo D_8036759C = { MARKER_1E9_MUMBO_COST_SIGN, ACTOR_369_20_MUMBO_TOKEN_SIGN, ASSET_304_MODEL_20_MUMBO_TOKEN_SIGN, 0x0, 0x0, func_802D2D00, func_80326224, func_80325888, 0, 0, 0.0f, 0}; ActorInfo D_803675C0 = { MARKER_1E9_MUMBO_COST_SIGN, ACTOR_36C_25_MUMBO_TOKEN_SIGN, ASSET_305_MODEL_25_MUMBO_TOKEN_SIGN, 0x0, 0x0, func_802D2D00, func_80326224, func_80325888, 0, 0, 0.0f, 0}; -/* .rodata */ void func_802D2D00(Actor *this) { if (!this->unk16C_4) { if( func_8031FF1C(this->modelCacheIndex - ACTOR_368_5_MUMBO_TOKEN_SIGN + BKPROG_90_PAID_TERMITE_COST) diff --git a/src/core2/code_82000.c b/src/core2/code_82000.c index adaf25f2..1524e88b 100644 --- a/src/core2/code_82000.c +++ b/src/core2/code_82000.c @@ -159,8 +159,6 @@ Struct_core2_82000_0 D_8036ABE0[] = { 0 }; -/* .rodata */ - /* .bss */ struct { void *unk0; diff --git a/src/core2/code_956B0.c b/src/core2/code_956B0.c index aca930a0..de8b17e2 100644 --- a/src/core2/code_956B0.c +++ b/src/core2/code_956B0.c @@ -29,12 +29,6 @@ extern u8 D_8037DCCE[]; /* .data */ enum actor_e D_8036DDD0[] = {0, 0x184, 0x185, 0x186, -1}; -/* .rodata */ -extern f32 D_80378D40; -extern f32 D_80378D44; -// 3FE66666 -// 3F4CCCCD - /* .bss */ u8 D_80383190; diff --git a/src/core2/code_C3A40.c b/src/core2/code_C3A40.c index 9d6a2e51..9c19451e 100644 --- a/src/core2/code_C3A40.c +++ b/src/core2/code_C3A40.c @@ -2,9 +2,6 @@ #include "functions.h" #include "variables.h" -/* .rodata */ -extern f32 D_80379170; - /* .code */ f32 func_8034A9D0(f32 arg0[4], f32 arg1) { if (arg0[1] <= arg1) { diff --git a/src/core2/code_C4B0.c b/src/core2/code_C4B0.c index 9826066e..962cf4d7 100644 --- a/src/core2/code_C4B0.c +++ b/src/core2/code_C4B0.c @@ -33,13 +33,6 @@ typedef struct { s32 unk8C; }Struct_core2_C4B0_0; -/* .rodata */ -extern f64 D_80374760; -extern f64 D_80374768; -extern f64 D_80374770; -extern f64 D_80374778; -extern f64 D_80374780; - /* .bss */ f32 D_8037C1F0[2]; f32 D_8037C1F8[2]; diff --git a/src/core2/code_C89C0.c b/src/core2/code_C89C0.c index 9a288034..a6511cd3 100644 --- a/src/core2/code_C89C0.c +++ b/src/core2/code_C89C0.c @@ -34,17 +34,6 @@ typedef struct { f32 unk38; }Struct_core2_C89C0_0; -/* .rodata */ -extern f32 D_80379300; -extern f32 D_80379304; -extern f32 D_80379308; -extern f64 D_80379310; -extern f32 D_80379318; -extern f64 D_80379320; -extern f32 D_80379328; -extern f32 D_8037932C; -extern f32 D_80379330; - /* .bss */ struct { void *unk0; //2D_fish_bin diff --git a/src/core2/code_CB8A0.c b/src/core2/code_CB8A0.c index b32b0d95..f590dcd4 100644 --- a/src/core2/code_CB8A0.c +++ b/src/core2/code_CB8A0.c @@ -16,7 +16,6 @@ typedef struct { /* .bss */ Struct_Core2_CB610_0 D_803861C0[40]; -/* .rodata */ void func_80352830(void){ s32 i; for(i = 1; i < 40; i++){ diff --git a/src/core2/code_CF3E0.c b/src/core2/code_CF3E0.c index a18c5bdf..ef5ba885 100644 --- a/src/core2/code_CF3E0.c +++ b/src/core2/code_CF3E0.c @@ -2,34 +2,68 @@ #include "functions.h" #include "variables.h" -typedef struct { - s16 a; - s16 b; -} unkD_80372730; -// Needs to be a struct to match, s16 array doesn't work -extern unkD_80372730 D_80372730[]; -// 0104 1100: 00 AB 0B A1 00 AC 0B A2 00 AA 0C E6 00 0F 0C 85 ........ ........ -// 0104 1110: 00 A9 0B A0 00 10 0A 7E 00 14 0C 11 00 0F 0C 85 .......~ ........ -// 0104 1120: 00 86 0A E1 00 DD 0C E7 00 03 0D 9C 00 04 0D 9D ........ ........ -// 0104 1130: 00 05 0D 9E 00 06 0D 9F 00 07 0D A0 00 08 0B 46 ........ .......F -// 0104 1140: 00 09 0A 21 00 0A 0D A1 00 0B 0D A2 00 0C 0D A3 ...!.... ........ -// 0104 1150: 00 BE 0F A8 00 BF 0F A9 00 C0 0F AA 00 95 0B 50 ........ .......P -// 0104 1160: 00 A7 0F 7B FF FF FF FF +typedef KEY_VALUE_PAIR(s16, s16) unkD_80372730; + +unkD_80372730 D_80372730[] = { + { BKPROG_AB_SWIM_OILY_WATER, 0xBA1}, + { BKPROG_AC_DIVE_OILY_WATER, 0xBA2}, + { BKPROG_AA_HAS_TOUCHED_CCW_BRAMBLE_FIELD, 0xCE6}, + { BKPROG_F_HAS_TOUCHED_PIRAHANA_WATER, 0xC85}, + { BKPROG_A9_HAS_TOUCHED_RBB_OVEN, 0xBA0}, + { BKPROG_10_HAS_TOUCHED_SAND_EEL_SAND, 0xA7E}, + { BKPROG_14_HAS_TOUCHED_FP_ICY_WATER, 0xC11}, + { BKPROG_F_HAS_TOUCHED_PIRAHANA_WATER, 0xC85}, + { BKPROG_86_HAS_TOUCHED_MMM_THORN_HEDGE, 0xAE1}, + { BKPROG_DD_HAS_TOUCHED_ICY_WATER, 0xCE7}, + { BKPROG_3_MUSIC_NOTE_TEXT, 0xD9C}, + { BKPROG_4_MUMBO_TOKEN_TEXT, 0xD9D}, + { BKPROG_5_BLUE_EGG_TEXT, 0xD9E}, + { BKPROG_6_RED_FEATHER_TEXT, 0xD9F}, + { BKPROG_7_GOLD_FEATHER_TEXT, 0xDA0}, + { BKPROG_8_GOLD_BULLION_TEXT, 0xB46}, + { BKPROG_9_ORANGE_TEXT, 0xA21}, + { BKPROG_A_HONEYCOMB_TEXT, 0xDA1}, + { BKPROG_B_EMPTY_HONEYCOMB_TEXT, 0xDA2}, + { BKPROG_C_EXTRA_LIFE_TEXT, 0xDA3}, + { BKPROG_BE_CHEATO_BLUEEGGS, 0xFA8}, + { BKPROG_BF_CHEATO_REDFEATHERS, 0xFA9}, + { BKPROG_C0_CHEATO_GOLDFEATHERS, 0xFAA}, + {0x95, 0xB50}, + { BKPROG_A7_NEAR_PUZZLE_PODIUM_TEXT, 0xF7B}, + { -1, -1} +}; -extern unkD_80372730 D_80372798[]; -// 00 9E 0B A3 00 9F 0C E8 ...{.... ........ -// 0104 1170: 00 A0 10 32 00 A1 10 33 00 A2 10 34 00 A3 10 35 ...2...3 ...4...5 -// 0104 1180: 00 A4 10 36 00 A5 10 37 00 A6 10 38 00 A7 10 39 ...6...7 ...8...9 -// 0104 1190: 00 A8 10 3A 00 A9 10 3B 00 AA 10 3C 00 AB 10 3D ...:...; ...<...= -// 0104 11A0: 00 AC 0A 88 00 AD 0A E2 00 AE 0C 8B 00 AF 0C 8C ........ ........ -// 0104 11B0: 00 B0 0F BD 00 C2 0E 36 00 C5 0D B6 FF FF FF FF .......6 ........ +unkD_80372730 D_80372798[] = { + {0x9E, 0xBA3}, + {0x9F, 0xCE8}, + {0xA0, 0x1032}, + {0xA1, 0x1033}, + {0xA2, 0x1034}, + {0xA3, 0x1035}, + {0xA4, 0x1036}, + {0xA5, 0x1037}, + {0xA6, 0x1038}, + {0xA7, 0x1039}, + {0xA8, 0x103A}, + {0xA9, 0x103B}, + {0xAA, 0x103C}, + {0xAB, 0x103D}, + {0xAC, 0xA88}, + {0xAD, 0xAE2}, + {0xAE, 0xC8B}, + {0xAF, 0xC8C}, + {0xB0, 0xFBD}, + {0xC2, 0xE36}, + {0xC5, 0xDB6}, + { -1, -1} +}; -s32 func_80356370(unkD_80372730 *arg0, s32 arg1) { +static s32 __findIndex(unkD_80372730 *arg0, s32 arg1) { s32 phi_v1 = 0; - while (arg0[phi_v1].a >= 0) { - if (arg1 == arg0[phi_v1].a) { + while (arg0[phi_v1].key >= 0) { + if (arg1 == arg0[phi_v1].key) { return phi_v1; } phi_v1++; @@ -37,15 +71,15 @@ s32 func_80356370(unkD_80372730 *arg0, s32 arg1) { return -1; } -s32 func_803563B8(s32 arg0, s32 arg1) { - s32 temp_v0; +s32 func_803563B8(enum bkprog_e arg0, s32 arg1) { + s32 index; if (func_8031FF1C(arg0) != 0) { return 0; } else { - temp_v0 = func_80356370(D_80372730, arg0); - if (temp_v0 != -1) { - if (func_80311480(D_80372730[temp_v0].b, arg1, 0, 0, 0, 0) != 0) { + index = __findIndex(D_80372730, arg0); + if (index != -1) { + if (func_80311480(D_80372730[index].value, arg1, 0, 0, 0, 0) != 0) { func_80320004(arg0, 1); } return func_8031FF1C(arg0); @@ -63,14 +97,14 @@ void func_8035646C(s32 arg0) { } s32 func_8035648C(s32 arg0, s32 arg1) { - s32 temp_v0; + s32 index; if (func_803203FC() != 0) { return 0; } else { - temp_v0 = func_80356370(D_80372798, arg0); - if (temp_v0 != -1) { - if (func_80311480(D_80372798[temp_v0].b, arg1, 0, 0, 0, 0) != 0) { + index = __findIndex(D_80372798, arg0); + if (index != -1) { + if (func_80311480(D_80372798[index].value, arg1, 0, 0, 0, 0) != 0) { func_803204E4(arg0, 1); } return func_803203FC(arg0); @@ -90,89 +124,3 @@ void func_80356540(s32 arg0) { void func_80356560(s32 arg0) { func_8035648C(arg0, 0xE); } - -/* BREAK */ - -//THIS VALUE -#ifndef CORE2_CODE_CRC2 - #define CORE2_CODE_CRC2 0x9E44C2DC -#endif - -// bk_boot segment start (skipping entry function) -extern u8 boot_bk_boot_ROM_START[]; -// bk_boot segment end -extern u8 boot_bk_boot_ROM_END[]; -extern u8 crc_ROM_START[]; - -// bk_boot segment crc next word -s32 D_803727F0 = 0; -s32 core2_D_803727F4 = CORE2_CODE_CRC2; -s32 D_803727F8 = 0; -s32 D_803727FC = 0; - -// bk_boot segment crc values -s32 D_80372800 = 0; -s32 D_80372804 = 0; - -// bk_boot segment crc remaining words -s32 D_80372808 = 0; - -// init bk_boot crc -void func_80356580(void) { - D_803727FC = (s32) boot_bk_boot_ROM_START; - D_80372800 = 0; - D_80372804 = -1; - D_80372808 = (s32) (boot_bk_boot_ROM_END - boot_bk_boot_ROM_START); -} - -// advance bk_boot crc by one word -s32 func_803565BC(void) { - u32 crc1; - u32 crc2; - u8 romBytes[4]; - u8 curByte; - - if (D_803727FC != 0) { - if (D_80372808 != 0) { - crc1 = D_80372800; - crc2 = D_80372804; - osPiReadIo(D_803727FC, (u32*)romBytes); - curByte = romBytes[0]; - crc1 += curByte; - crc2 ^= curByte << (crc1 & 0x17); - curByte = romBytes[1]; - crc1 += curByte; - crc2 ^= curByte << (crc1 & 0x17); - curByte = romBytes[2]; - crc1 += curByte; - crc2 ^= curByte << (crc1 & 0x17); - curByte = romBytes[3]; - crc1 += curByte; - crc2 ^= curByte << (crc1 & 0x17); - D_80372800 = crc1; - D_80372804 = crc2; - D_803727FC = D_803727FC + 4; - D_80372808 = D_80372808 - 4; - } else { - D_803727FC = 0; - osPiReadIo((u32)crc_ROM_START + 0, &crc1); - if (crc1 != D_80372800) - return 0; - osPiReadIo((u32)crc_ROM_START + 4, &crc2); - if (crc2 != D_80372804) - return 0; - } - } - return 1; -} - -void func_80356714(void) { - func_80356580(); -} - -void func_80356734(void) { - func_803565BC(); - if (func_803565BC() == 0) { - func_80295864(0x10); - } -} diff --git a/src/core2/code_CF5F0.c b/src/core2/code_CF5F0.c new file mode 100644 index 00000000..4435f71c --- /dev/null +++ b/src/core2/code_CF5F0.c @@ -0,0 +1,87 @@ +#include +#include "functions.h" +#include "variables.h" + +//THIS VALUE +#ifndef CORE2_CODE_CRC2 + #define CORE2_CODE_CRC2 0x9E44C2DC +#endif + +// bk_boot segment start (skipping entry function) +extern u8 boot_bk_boot_ROM_START[]; +// bk_boot segment end +extern u8 boot_bk_boot_ROM_END[]; +extern u8 crc_ROM_START[]; + +// bk_boot segment crc next word +s32 D_803727F0 = 0; +s32 core2_D_803727F4 = CORE2_CODE_CRC2; +s32 D_803727F8 = 0; +s32 D_803727FC = 0; + +// bk_boot segment crc values +s32 D_80372800 = 0; +s32 D_80372804 = 0; + +// bk_boot segment crc remaining words +s32 D_80372808 = 0; + +// init bk_boot crc +void func_80356580(void) { + D_803727FC = (s32) boot_bk_boot_ROM_START; + D_80372800 = 0; + D_80372804 = -1; + D_80372808 = (s32) (boot_bk_boot_ROM_END - boot_bk_boot_ROM_START); +} + +// advance bk_boot crc by one word +s32 func_803565BC(void) { + u32 crc1; + u32 crc2; + u8 romBytes[4]; + u8 curByte; + + if (D_803727FC != 0) { + if (D_80372808 != 0) { + crc1 = D_80372800; + crc2 = D_80372804; + osPiReadIo(D_803727FC, (u32*)romBytes); + curByte = romBytes[0]; + crc1 += curByte; + crc2 ^= curByte << (crc1 & 0x17); + curByte = romBytes[1]; + crc1 += curByte; + crc2 ^= curByte << (crc1 & 0x17); + curByte = romBytes[2]; + crc1 += curByte; + crc2 ^= curByte << (crc1 & 0x17); + curByte = romBytes[3]; + crc1 += curByte; + crc2 ^= curByte << (crc1 & 0x17); + D_80372800 = crc1; + D_80372804 = crc2; + D_803727FC = D_803727FC + 4; + D_80372808 = D_80372808 - 4; + } else { + D_803727FC = 0; + osPiReadIo((u32)crc_ROM_START + 0, &crc1); + if (crc1 != D_80372800) + return 0; + osPiReadIo((u32)crc_ROM_START + 4, &crc2); + if (crc2 != D_80372804) + return 0; + } + } + return 1; +} + +void func_80356714(void) { + func_80356580(); +} + +void func_80356734(void) { + func_803565BC(); + if (func_803565BC() == 0) { + func_80295864(0x10); + } +} diff --git a/src/core2/code_D0CA0.c b/src/core2/code_D0CA0.c index dfa9646b..1bd2938e 100644 --- a/src/core2/code_D0CA0.c +++ b/src/core2/code_D0CA0.c @@ -28,15 +28,13 @@ typedef struct { }ActorLocal_core2_D0CA0; /* .data */ -extern ActorInfo D_803728A0 = { +ActorInfo D_803728A0 = { MARKER_253_SCARAB_BEETLE, ACTOR_380_SCARAB_BEETLE, ASSET_51B_MODEL_SCARAB_BEETLE, 0, NULL, func_80358684, NULL, func_80358344, 0, 0, 1.0f, 0 }; -extern struct31s D_803728C4; -extern struct43s D_803728EC; /* .code */ bool func_80357C30(Actor *this) { @@ -241,6 +239,12 @@ void func_803584BC(Actor *this) { void func_80358524(f32 position[3], s32 count, enum asset_e model_id) { + static struct31s D_803728C4 = { {1.0f, 1.0f}, {1.0f, 1.0f}, {0.0f, 0.01f}, {1.2f, 1.2f}, 0.0f, 0.1f}; + static struct43s D_803728EC = { + {{-250.0f, 500.0f, -250.0f}, { 350.0f, 760.0f, 350.0f}}, + {{ 0.0f, -1200.0f, 0.0f}, { 0.0f, -1200.0f, 0.0f}}, + {{ -50.0f, 0.0f, -50.0f}, { 50.0f, 50.0f, 50.0f}} + }; ParticleEmitter *p_ctrl; ParticleEmitter *temp_v0; diff --git a/src/core2/code_D5D10.c b/src/core2/code_D5D10.c index 76e695f1..af2b6752 100644 --- a/src/core2/code_D5D10.c +++ b/src/core2/code_D5D10.c @@ -33,8 +33,21 @@ typedef struct { void chskeleton_update(Actor *this); /* .data */ -extern ActorAnimationInfo D_80372D20[]; -extern ActorInfo D_80372D78 = { +ActorAnimationInfo D_80372D20[] = { + {0, 0.0f}, + {0x1E4, 4.0f}, + {0x1E4, 0.7f}, + {0x1E6, 0.7f}, + {0x1E5, 0.9f}, + {0x1E7, 0.7f}, + {0x1E4, 1.5f}, + {0x1E6, 0.5f}, + {0x1E4, 1.5f}, + {0x1E7, 1.5f}, + {0x1E8, 2.2f} +}; + +ActorInfo D_80372D78 = { MARKER_218_LIMBO, ACTOR_34E_LIMBO, ASSET_4CC_MODEL_LIMBO, 0x1, D_80372D20, chskeleton_update, func_80326224, func_80325888, @@ -51,7 +64,7 @@ void func_8035CCA0(ParticleEmitter *pCtrl, Actor *this, enum asset_e model_id) { } -void func_8035CD80(ActorMarker *marker, s32 arg1) { +void chskeleton_despawn(ActorMarker *marker, s32 arg1) { Actor *this; this = marker_getActor(marker); @@ -64,7 +77,7 @@ void func_8035CD80(ActorMarker *marker, s32 arg1) { marker_despawn(marker); } -void func_8035CE50(Actor *this) { +static void _chskeleton_init(Actor *this) { ActorLocal_Skeleton *local; local = (ActorLocal_Skeleton *)&this->local; @@ -89,13 +102,13 @@ void func_8035CE50(Actor *this) { local->unk2C = 1.0f; local->unkC_28 = TRUE; local->unk30 = func_802DB4E0; - local->unk34 = func_8035CD80; + local->unk34 = chskeleton_despawn; } void chskeleton_update(Actor *this){ if(!this->unk16C_4){ - func_8035CE50(this); + _chskeleton_init(this); } func_802DB5A0(this); } diff --git a/src/core2/code_D5FD0.c b/src/core2/code_D5FD0.c index b0e92efc..397e2a92 100644 --- a/src/core2/code_D5FD0.c +++ b/src/core2/code_D5FD0.c @@ -34,8 +34,21 @@ typedef struct { void func_8035D058(Actor *this); /* .data */ -extern ActorAnimationInfo D_80372DA0[]; -extern ActorInfo D_80372DF8 = { +ActorAnimationInfo D_80372DA0[] = { + {0, 0.0f}, + {0x1D6, 4.0f}, + {0x1D6, 0.7f}, + {0x1D8, 0.7f}, + {0x1D7, 0.9f}, + {0x1D9, 0.7f}, + {0x1D6, 1.5f}, + {0x1D8, 0.5f}, + {0x1D6, 1.5f}, + {0x1D6, 100000.0f}, + {0x1D6, 100000.0f} +}; + +ActorInfo D_80372DF8 = { MARKER_21A_SEAMAN_GRUBLIN, ACTOR_350_SEAMAN_GRUBLIN, ASSET_49D_MODEL_SEAMAN_GRUBLIN, 0x1, D_80372DA0, func_8035D058, func_80326224, func_80325888, diff --git a/src/core2/code_D6180.c b/src/core2/code_D6180.c index b63b2714..9b0f162d 100644 --- a/src/core2/code_D6180.c +++ b/src/core2/code_D6180.c @@ -31,19 +31,27 @@ typedef struct { }ActorLocal_core2_D6180; /* .data */ -extern ActorAnimationInfo D_80372E20[]; -extern ActorInfo D_80372E78 = { +ActorAnimationInfo D_80372E20[] = { + {0x000, 0}, + {0x1E9, 4.0f}, + {0x1E9, 1.4f}, + {0x1E9, 0.8f}, + {0x1E9, 0.9f}, + {0x1EA, 0.7f}, + {0x1E9, 1.5f}, + {0x1E9, 0.8f}, + {0x1E9, 1.5f}, + {0x1EA, 0.4f}, + {0x1EB, 0.3f} +}; + +ActorInfo D_80372E78 = { MARKER_219_MUMMUM, ACTOR_34F_MUMMUM, ASSET_4C7_MODEL_MUMMUM, 0x1, D_80372E20, func_8035D3D8, func_80326224, func_80325888, 2500, 0, 1.0f, 0 }; -/* .rodata */ -extern f32 D_80379860; -extern f32 D_80379864; -extern f32 D_80379868; - /* .code */ void func_8035D110(ParticleEmitter *p_emitter, Actor *this, enum asset_e model_id) { func_802DABA0(p_emitter, this->position, this->scale, model_id); diff --git a/src/core2/code_D6600.c b/src/core2/code_D6600.c index 0e555aa8..9b6272d7 100644 --- a/src/core2/code_D6600.c +++ b/src/core2/code_D6600.c @@ -16,8 +16,18 @@ typedef struct { void func_8035DA1C(Actor *this); /* .data */ -extern ActorAnimationInfo D_80372EA0[]; -extern ActorInfo D_80372EE0 = { +ActorAnimationInfo D_80372EA0[] = { + {0, 0.0f}, + {0x0B3, 1.8f}, + {0x0B3, 0.9f}, + {0x0B3, 0.6f}, + {0x0B3, 0.4f}, + {0x0B3, 0.5f}, + {0x0B4, 0.4f}, + {0x2C0, 1.5f} +}; + +ActorInfo D_80372EE0 = { MARKER_69_CHUMP_FISH, ACTOR_A_CHUMP_FISH, ASSET_36B_CHUMP_FISH, 0x2, D_80372EA0, func_8035DA1C, func_80326224, func_80325888, diff --git a/src/core2/code_D7D10.c b/src/core2/code_D7D10.c index a045eb43..c7b1b141 100644 --- a/src/core2/code_D7D10.c +++ b/src/core2/code_D7D10.c @@ -12,32 +12,34 @@ typedef struct { }ActorLocal_core2_D7D10; /* .data */ -extern ActorAnimationInfo D_80372F80[]; +ActorAnimationInfo D_80372F80[] = { + {0, 0.0f}, + {0x9A, 8000000.0f}, + {0x9A, 1.3f}, + {0x9B, 0.6f}, + {0x9B, 0.75f}, + {0x9A, 1.5f}, + {0x1ED, 1.0f}, + {0x1EE, 2.4f} +}; -extern ActorInfo D_80372FC0 = { +ActorInfo D_80372FC0 = { MARKER_96_RIPPER, ACTOR_C7_RIPPER, ASSET_3C9_MODEL_RIPPER, 0x1, D_80372F80, func_8035F138, func_80326224, func_8035ECA0, 3500, 0, 1.2f, 0 }; -extern ActorInfo D_80372FE4 = { +ActorInfo D_80372FE4 = { MARKER_297_GIANT_RIPPER, ACTOR_3C2_GIANT_RIPPER, ASSET_3C9_MODEL_RIPPER, 0x1, D_80372F80, func_8035F138, func_80326224, func_8035ECA0, 14000, 0, 3.2f, 0 }; -extern f32 D_80373008[3]; -extern s32 D_80373014[3]; -extern struct31s D_80373020; -extern struct43s D_80373048; - -/* .rodata */ -extern f32 D_80379920; - /* .code */ Actor *func_8035ECA0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) { + static f32 D_80373008[3] = {0.0f, 0.0f, 0.0f}; f32 rotation[3]; Actor *this; ActorLocal_core2_D7D10 *local; @@ -65,6 +67,13 @@ bool func_8035ED60(Actor *this) { } void func_8035EDB0(f32 position[3], s32 count, enum asset_e sprite) { + static s32 D_80373014[3] = {0xAA, 0xAA, 0xAA}; + static struct31s D_80373020 = {{0.4f, 0.8f}, {1.4f, 2.0f}, {0.0f, 0.01f}, {1.2f, 1.8f}, 0.0f, 0.01}; + static struct43s D_80373048 = { + {{-200.0f, -200.0f, -200.0f}, { 200.0f, 200.0f, 200.0f}}, + {{ 0.0f, -10.0f, 0.0f}, { 0.0f, -10.0f, 0.0f}}, + {{ -50.0f, 0.0f, -50.0f}, { 50.0f, 200.0f, 50.0f}} + }; ParticleEmitter *p_ctrl; p_ctrl = partEmitList_pushNew(count); diff --git a/src/core2/code_D89E0.c b/src/core2/code_D89E0.c index 67a8b90d..bc0b34ca 100644 --- a/src/core2/code_D89E0.c +++ b/src/core2/code_D89E0.c @@ -14,8 +14,19 @@ typedef struct { void func_80360828(Actor *this); /* .data */ -extern ActorAnimationInfo D_80373090[]; -extern ActorInfo D_803730D8 = { +ActorAnimationInfo D_80373090[] = { + {0, 0.0f}, + { 0xAE, 12.0f}, + { 0xAD, 0.3f}, + { 0x9D, 2.0f}, + { 0x9D, 0.4f}, + { 0x9D, 0.35f}, + { 0xAD, 0.2f}, + {0x2A9, 0.4f}, + {0x2AA, 0.85f}, +}; + +ActorInfo D_803730D8 = { MARKER_127_BAT, ACTOR_163_BAT, ASSET_3CA_MODEL_BAT, 0x1, D_80373090, func_80360828, func_80326224, func_80325888, diff --git a/src/core2/code_DAAA0.c b/src/core2/code_DAAA0.c index 89dc7e42..5e3240bb 100644 --- a/src/core2/code_DAAA0.c +++ b/src/core2/code_DAAA0.c @@ -6,7 +6,77 @@ extern void func_80288C7C(VLA**); extern void func_80288D84(s32, f32, void (*)(s32,s32), s32, s32); extern void func_80288DCC(s32 , f32, void (*)(s32, s32,s32), s32, s32, s32); -extern Struct62s D_803731E0[0x20]; +//TODO import from cutscenes/code_0.h +extern Struct63s D_8038D904[]; +extern Struct63s D_8038D94C[]; +extern Struct63s D_8038D964[]; +extern Struct63s D_8038D994[]; +extern Struct63s D_8038D9AC[]; +extern Struct63s D_8038D9E4[]; +extern Struct63s D_8038D9F4[]; +extern Struct63s D_8038DA14[]; +extern Struct63s D_8038DA2C[]; +extern Struct63s D_8038DA44[]; +extern Struct63s D_8038DA74[]; +extern Struct63s D_8038DA84[]; +extern Struct63s D_8038DAAC[]; +extern Struct63s D_8038DABC[]; +extern Struct63s D_8038DACC[]; +extern Struct63s D_8038DB04[]; +extern Struct63s D_8038DB1C[]; +extern Struct63s D_8038DB34[]; +extern Struct63s D_8038DB44[]; +extern Struct63s D_8038DB54[]; +extern Struct63s D_8038DB8C[]; +extern Struct63s D_8038DBDC[]; +extern Struct63s D_8038DBF4[]; +extern Struct63s D_8038DC0C[]; +extern Struct63s D_8038DC2C[]; +extern Struct63s D_8038DC4C[]; +extern Struct63s D_8038DC3C[]; +extern Struct63s D_8038DC64[]; +extern Struct63s D_8038DC74[]; + +// TODO import from SM/code_0.h +extern Struct63s D_8038AAC0[]; +extern Struct63s D_8038AAD0[]; + + +/* .data */ +Struct62s D_803731E0[0x20] = { + { 0xAC, D_8038D904}, + { 0x9E, D_8038D904}, + { 0xB8, D_8038D94C}, + { 0xB4, D_8038D964}, + { 0xB2, D_8038D994}, + { 0xB0, D_8038D9AC}, + { 0xB1, D_8038D9E4}, + { 0xBB, D_8038D9F4}, + { 0x8F, D_8038DA14}, + { 0xA5, D_8038DA2C}, + {0x2ED, D_8038DA44}, + {0x2EF, D_8038DA74}, + {0x2EE, D_8038DA84}, + {0x2FA, D_8038DAAC}, + {0x2F1, D_8038DABC}, + {0x2F2, D_8038DACC}, + { 0xC2, D_8038DB04}, + { 0xC3, D_8038DB1C}, + {0x2F0, D_8038DB34}, + { 0xA8, D_8038DB44}, + {0x2FB, D_8038DB54}, + { 0xA7, D_8038DB8C}, + {0x2FC, D_8038DBDC}, + {0x2F5, D_8038AAC0}, + {0x2F4, D_8038AAD0}, + {0x301, D_8038DBF4}, + {0x2FE, D_8038DC0C}, + {0x302, D_8038DC2C}, + { 0x93, D_8038DC4C}, + { 0x94, D_8038DC3C}, + { 0x8E, D_8038DC64}, + { 0xBC, D_8038DC74} +}; /* .code */ void func_80361A30(f32 arg0[3], s32 arg1){ diff --git a/src/core2/code_DB010.c b/src/core2/code_DB010.c index bc85aa84..f6493166 100644 --- a/src/core2/code_DB010.c +++ b/src/core2/code_DB010.c @@ -20,318 +20,24 @@ typedef struct{ }struct_core2_DB010; /* .data */ -extern ActorInfo D_803732E0= { +ActorInfo D_803732E0 = { 0x1F7, 0x1E7, 0, 0, NULL, func_80363310, func_80363330, func_80325340, 0, 0, 0.0f, 0 }; -extern struct40s D_80373304; -// 000E C370: 3E CC CC CD 3F B3 33 33 00 00 00 00 -// 000E C380: 00 00 00 00 00 00 00 00 3C 23 D7 0A 40 80 00 00 -// 000E C390: 40 80 00 00 3F 00 00 00 3F 33 33 33 40 80 00 00 -// 000E C3A0: 41 70 00 00 - -extern struct43s D_80373334; -// C3 7A 00 00 44 16 00 00 C3 7A 00 00 -// 000E C3B0: 43 AF 00 00 44 70 00 00 43 AF 00 00 00 00 00 00 -// 000E C3C0: C4 96 00 00 00 00 00 00 00 00 00 00 C4 96 00 00 -// 000E C3D0: 00 00 00 00 C2 70 00 00 C1 F0 00 00 C2 70 00 00 -// 000E C3E0: 42 70 00 00 41 F0 00 00 42 70 00 00 - -extern s32 D_8037337C[3] = {50, 255, 50}; - -extern struct40s D_80373388; -// 3E 99 99 9A 3C F5 C2 8F -// 000E C400: 3F 00 00 00 3F 00 00 00 00 00 00 00 3C 23 D7 0A -// 000E C410: 3F C0 00 00 40 00 00 00 3D 75 C2 8F 3F 33 33 33 -// 000E C420: 40 80 00 00 3F 80 00 00 - -extern struct42s D_803733B8; -// C0 A0 00 00 42 C8 00 00 -// 000E C430: C0 A0 00 00 40 A0 00 00 42 C8 00 00 40 A0 00 00 -// 000E C440: C2 70 00 00 00 00 00 00 C2 70 00 00 42 70 00 00 -// 000E C450: 40 A0 00 00 42 70 00 00 - -extern s32 D_803733E8[3] = {0xb4, 0xe6, 0xff}; - - -extern struct40s D_803733F4; -// 3F 80 00 00 3F E6 66 66 40 0C CC CD -// 000E C470: 40 2C CC CD 00 00 00 00 3C 23 D7 0A 3F 4C CC CD -// 000E C480: 3F 99 99 9A 3E D1 EB 85 3F 3A E1 48 40 80 00 00 -// 000E C490: 41 70 00 00 - -extern struct43s D_80373424; -// C3 96 00 00 44 16 00 00 C3 96 00 00 -// 000E C4A0: 43 96 00 00 44 7A 00 00 43 96 00 00 00 00 00 00 -// 000E C4B0: C4 96 00 00 00 00 00 00 00 00 00 00 C4 C8 00 00 -// 000E C4C0: 00 00 00 00 C1 20 00 00 00 00 00 00 C1 20 00 00 -// 000E C4D0: 41 20 00 00 00 00 00 00 41 20 00 00 - -extern struct40s D_8037346C; -// 3E 99 99 9A -// 000E C4E0: 3E CC CC CD 3F 00 00 00 3F 00 00 00 00 00 00 00 -// 000E C4F0: 3C 23 D7 0A 3F 4C CC CD 3F 99 99 9A 3F 68 F5 C3 -// 000E C500: 3F 7D 70 A4 40 80 00 00 41 90 00 00 - -extern struct43s D_8037349C; -// C3 48 00 00 -// 000E C510: 44 61 00 00 C3 48 00 00 43 48 00 00 44 AF 00 00 -// 000E C520: 43 48 00 00 00 00 00 00 C4 E1 00 00 00 00 00 00 -// 000E C530: 00 00 00 00 C5 16 00 00 00 00 00 00 C1 20 00 00 -// 000E C540: C1 A0 00 00 C1 20 00 00 41 20 00 00 C1 A0 00 00 -// 000E C550: 41 20 00 00 - -extern struct40s D_803734E4; -// 40 4C CC CD 40 59 99 9A 00 00 00 00 -// 000E C560: 00 00 00 00 00 00 00 00 3C 23 D7 0A 40 00 00 00 -// 000E C570: 40 00 00 00 00 00 00 00 3E 99 99 9A 40 80 00 00 -// 000E C580: 41 70 00 00 C4 6D 80 00 44 48 00 00 C3 7A 00 00 -// 000E C590: C4 09 80 00 44 AA 00 00 42 48 00 00 C4 2F 00 00 -// 000E C5A0: C4 D4 80 00 00 00 00 00 C4 61 00 00 C4 D4 80 00 -// 000E C5B0: 00 00 00 00 C2 70 00 00 00 00 00 00 C2 70 00 00 -// 000E C5C0: 42 70 00 00 41 F0 00 00 42 70 00 00 40 40 00 00 -// 000E C5D0: 40 59 99 9A 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E C5E0: 3C 23 D7 0A 40 80 00 00 40 80 00 00 00 00 00 00 -// 000E C5F0: 3E 99 99 9A 40 80 00 00 41 70 00 00 C3 E1 00 00 -// 000E C600: 44 16 00 00 C2 48 00 00 C3 16 00 00 44 89 80 00 -// 000E C610: 42 48 00 00 C4 2F 00 00 C4 D4 80 00 00 00 00 00 -// 000E C620: C4 48 00 00 C4 D4 80 00 00 00 00 00 C2 70 00 00 -// 000E C630: 00 00 00 00 C2 70 00 00 42 70 00 00 41 F0 00 00 -// 000E C640: 42 70 00 00 3F 8C CC CD 3F 8C CC CD 40 89 99 9A -// 000E C650: 40 89 99 9A 00 00 00 00 3D 4C CC CD 3E 99 99 9A -// 000E C660: 3F 00 00 00 3D 75 C2 8F 3E 99 99 9A 40 80 00 00 -// 000E C670: 3F 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E C680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E C690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E C6A0: 00 00 00 00 00 00 00 0A 00 00 00 FF 00 00 00 0A -// 000E C6B0: 40 00 00 00 40 00 00 00 40 40 00 00 40 60 00 00 -// 000E C6C0: 00 00 00 00 3C 23 D7 0A 40 00 00 00 40 20 00 00 -// 000E C6D0: 3D CC CC CD 3E CC CC CD 40 80 00 00 3F 80 00 00 -// 000E C6E0: 00 00 00 00 42 20 00 00 00 00 00 00 00 00 00 00 -// 000E C6F0: 42 B4 00 00 00 00 00 00 C3 C8 00 00 00 00 00 00 -// 000E C700: C3 C8 00 00 43 C8 00 00 00 00 00 00 43 C8 00 00 -// 000E C710: 00 00 00 FF 00 00 00 FF 00 00 00 FF 3C 23 D7 0A -// 000E C720: 3C 23 D7 0A 3F C0 00 00 3F CC CC CD 3D 4C CC CD -// 000E C730: 3F 33 33 33 3F 33 33 33 3F A6 66 66 3D CC CC CD -// 000E C740: 3F 4C CC CD 40 80 00 00 41 C8 00 00 3F 33 33 33 -// 000E C750: 3F 66 66 66 3E CC CC CD 3F 00 00 00 00 00 00 00 -// 000E C760: 3C 23 D7 0A 3F 4C CC CD 3F 80 00 00 3E 19 99 9A -// 000E C770: 3E 99 99 9A 00 00 00 00 3F 80 00 00 C1 20 00 00 -// 000E C780: C1 20 00 00 C1 20 00 00 41 20 00 00 41 20 00 00 -// 000E C790: 41 20 00 00 00 00 00 00 41 F0 00 00 00 00 00 00 -// 000E C7A0: 00 00 00 00 41 F0 00 00 00 00 00 00 3D 4C CC CD -// 000E C7B0: 3D CC CC CD 3D CC CC CD 3E 4C CC CD 00 00 00 00 -// 000E C7C0: 3C 23 D7 0A 3F B3 33 33 3F C0 00 00 3C 23 D7 0A -// 000E C7D0: 3F 33 33 33 00 00 00 00 3F 80 00 00 C0 A0 00 00 -// 000E C7E0: C0 A0 00 00 C0 A0 00 00 40 A0 00 00 40 A0 00 00 -// 000E C7F0: 40 A0 00 00 00 00 00 00 C2 48 00 00 00 00 00 00 -// 000E C800: 00 00 00 00 C2 B4 00 00 00 00 00 00 C1 F0 00 00 -// 000E C810: 41 F0 00 00 C1 F0 00 00 41 F0 00 00 42 70 00 00 -// 000E C820: 41 F0 00 00 00 00 00 FF 00 00 00 FF 00 00 00 00 -// 000E C830: 3D CC CC CD 3E 99 99 9A 3F 19 99 9A 3F 33 33 33 -// 000E C840: 00 00 00 00 3C 23 D7 0A 3E 99 99 9A 3E CC CC CD -// 000E C850: 3C 23 D7 0A 3E 99 99 9A 40 80 00 00 41 80 00 00 -// 000E C860: C4 16 00 00 C4 16 00 00 C4 16 00 00 44 16 00 00 -// 000E C870: 44 16 00 00 44 16 00 00 00 00 00 00 41 F0 00 00 -// 000E C880: 00 00 00 00 00 00 00 00 41 F0 00 00 00 00 00 00 - - - -extern s32 D_80373514; - -extern s32 D_8037355C; - -extern s32 D_8037358C; - -extern s32 D_803735D4; - -extern struct42s D_80373604; - -extern s32 D_80373634; - -extern s32 D_80373640; - -extern struct42s D_80373670; - -extern s32 D_803736A0[3]; - -extern struct40s D_803736AC; - -extern s32 D_803736DC; - -extern struct42s D_8037370C; - -extern s32 D_8037373C; - -extern s32 D_8037376C; - -extern s32 D_803737B4; - -extern s32 D_803737C0; - -extern struct42s D_803737F0; - - -extern s32 D_80373820[3] = {130, 155, 40}; -extern struct40s D_8037382C; -// 40 53 33 33 -// 000E C8A0: 40 53 33 33 40 90 00 00 40 96 66 66 00 00 00 00 -// 000E C8B0: 3C 23 D7 0A 3F E6 66 66 40 4C CC CD 3E 9E B8 52 -// 000E C8C0: 3F 3A E1 48 40 80 00 00 41 30 00 00 - -extern struct43s D_8037385C; -// C3 48 00 00 -// 000E C8D0: 42 F0 00 00 C3 48 00 00 43 48 00 00 43 02 00 00 -// 000E C8E0: 43 48 00 00 00 00 00 00 C2 C8 00 00 00 00 00 00 -// 000E C8F0: 00 00 00 00 C2 C8 00 00 00 00 00 00 C1 F0 00 00 -// 000E C900: 00 00 00 00 C1 F0 00 00 41 F0 00 00 00 00 00 00 -// 000E C910: 41 F0 00 00 - -extern s32 D_803738A4[3] = {91, 142, 0}; -extern struct40s D_803738B0; -// 000E C920: 3E 4C CC CD 3F 66 66 66 3E CC CC CD 3F 66 66 66 -// 000E C930: 00 00 00 00 3C 23 D7 0A 3F E6 66 66 40 86 66 66 -// 000E C940: 3E 9E B8 52 3F 3A E1 48 40 80 00 00 41 50 00 00 - -extern struct43s D_803738E0; -// 000E C950: C3 C8 00 00 44 02 00 00 C3 C8 00 00 43 C8 00 00 -// 000E C960: 44 3B 80 00 43 C8 00 00 00 00 00 00 C4 96 00 00 -// 000E C970: 00 00 00 00 00 00 00 00 C4 C8 00 00 00 00 00 00 -// 000E C980: C1 F0 00 00 00 00 00 00 C1 F0 00 00 41 F0 00 00 -// 000E C990: 00 00 00 00 41 F0 00 00 - -extern s32 D_80373928[3] = {0, 255, 0}; -extern struct40s D_80373934; - // 3F B3 33 33 3F F3 33 33 40 19 99 9A -// 000E C9B0: 40 39 99 9A 00 00 00 00 40 4C CC CD 41 0C CC CD -// 000E C9C0: 41 13 33 33 3E 9E B8 52 3F 3A E1 48 40 80 00 00 -// 000E C9D0: 41 50 00 00 - -extern struct43s D_80373964; -// C2 70 00 00 42 C8 00 00 C2 70 00 00 -// 000E C9E0: 42 70 00 00 43 2A 00 00 42 70 00 00 00 00 00 00 -// 000E C9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CA00: 00 00 00 00 C1 F0 00 00 00 00 00 00 C1 F0 00 00 -// 000E CA10: 41 F0 00 00 00 00 00 00 41 F0 00 00 - -extern s32 D_803739AC[3] = {255, 255, 255}; -extern struct40s D_803739B8; -// 3E 4C CC CD 3F 66 66 66 -// 000E CA30: 3E 99 99 9A 3E CC CC CD 00 00 00 00 3E 4C CC CD -// 000E CA40: 3F 80 00 00 3F 99 99 9A 3E 9E B8 52 3F 3A E1 48 -// 000E CA50: 40 80 00 00 41 50 00 00 - -extern struct43s D_803739E8; -// C4 16 00 00 00 00 00 00 -// 000E CA60: C4 16 00 00 44 16 00 00 00 00 00 00 44 16 00 00 -// 000E CA70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CA80: 00 00 00 00 00 00 00 00 00 00 00 00 42 20 00 00 -// 000E CA90: 00 00 00 00 00 00 00 00 42 20 00 00 00 00 00 00 - -extern s32 D_80373A30[3] = {255, 255, 255}; -extern struct40s D_80373A3C; -// 3F C0 00 00 -// 000E CAB0: 3F CC CC CD 40 20 00 00 40 39 99 9A 00 00 00 00 -// 000E CAC0: 3C 23 D7 0A 40 00 00 00 40 20 00 00 3D CC CC CD -// 000E CAD0: 3E CC CC CD 40 80 00 00 3F 80 00 00 - -extern struct43s D_80373A6C; -// 00 00 00 00 -// 000E CAE0: 42 20 00 00 00 00 00 00 00 00 00 00 42 B4 00 00 -// 000E CAF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CB00: 00 00 00 00 00 00 00 00 00 00 00 00 C0 A0 00 00 -// 000E CB10: 00 00 00 00 C0 A0 00 00 40 A0 00 00 00 00 00 00 -// 000E CB20: 40 A0 00 00 - - -extern s32 D_80373AB4[3] = {30, 30, 30}; -extern struct40s D_80373AC0; -// 000E CB30: 40 40 00 00 40 59 99 9A 40 79 99 9A 40 83 33 33 -// 000E CB40: 00 00 00 00 3C 23 D7 0A 40 00 00 00 40 20 00 00 -// 000E CB50: 3E 99 99 9A 3F 00 00 00 40 80 00 00 3F 80 00 00 - -extern struct43s D_80373AF0; -// 000E CB60: 42 C8 00 00 42 20 00 00 42 C8 00 00 42 C8 00 00 -// 000E CB70: 42 B4 00 00 42 C8 00 00 00 00 00 00 00 00 00 00 -// 000E CB80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CB90: C0 A0 00 00 00 00 00 00 C0 A0 00 00 40 A0 00 00 -// 000E CBA0: 00 00 00 00 40 A0 00 00 - -extern s32 D_80373B38[3] = {130, 130, 130}; -extern struct40s D_80373B44; -// 40 00 00 00 40 19 99 9A 40 79 99 9A -// 000E CBC0: 40 83 33 33 00 00 00 00 3C 23 D7 0A 40 00 00 00 -// 000E CBD0: 40 20 00 00 3E 4C CC CD 3F 33 33 33 40 80 00 00 -// 000E CBE0: 3F 80 00 00 - -extern struct43s D_80373B74; -// 42 C8 00 00 42 20 00 00 42 C8 00 00 -// 000E CBF0: 42 C8 00 00 42 B4 00 00 42 C8 00 00 00 00 00 00 -// 000E CC00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CC10: 00 00 00 00 C0 A0 00 00 00 00 00 00 C0 A0 00 00 -// 000E CC20: 40 A0 00 00 00 00 00 00 40 A0 00 00 - -extern s32 D_80373BBC[3] = {0xff, 0xff, 0xff}; -extern struct40s D_80373BC8; -// 3F 00 00 00 3F 19 99 9A -// 000E CC40: 3F C0 00 00 3F F3 33 33 00 00 00 00 3C 23 D7 0A -// 000E CC50: 40 80 00 00 40 90 00 00 3D CC CC CD 3F 4C CC CD -// 000E CC60: 00 00 00 00 3F 80 00 00 - -extern struct43s D_80373BF8; -// 00 00 00 00 42 20 00 00 -// 000E CC70: 00 00 00 00 00 00 00 00 42 B4 00 00 00 00 00 00 -// 000E CC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CC90: 00 00 00 00 00 00 00 00 C0 A0 00 00 00 00 00 00 -// 000E CCA0: C0 A0 00 00 40 A0 00 00 00 00 00 00 40 A0 00 00 - -extern s32 D_80373C40[3] = {160, 170, 170}; -extern struct40s D_80373C4C; -// 40 20 00 00 -// 000E CCC0: 40 26 66 66 40 60 00 00 40 79 99 9A 00 00 00 00 -// 000E CCD0: 3C 23 D7 0A 3E 99 99 9A 3F 00 00 00 3D CC CC CD -// 000E CCE0: 3F 4C CC CD 40 80 00 00 3F 80 00 00 - -extern struct43s D_80373C7C; -// C2 70 00 00 -// 000E CCF0: C2 70 00 00 C2 70 00 00 42 70 00 00 42 70 00 00 -// 000E CD00: 42 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -// 000E CD10: 00 00 00 00 00 00 00 00 00 00 00 00 C2 48 00 00 -// 000E CD20: C2 48 00 00 C2 48 00 00 42 48 00 00 42 48 00 00 -// 000E CD30: 42 48 00 00 - -extern s32 D_80373CC4[] = {90, 90, 90}; -extern struct40s D_80373CD0; -// 3FC00000 3FCCCCCD 40200000 4039999A -// 00000000 3C23D70A 3E99999A 3F000000 -// 3DCCCCCD 3F4CCCCD 40800000 3F800000 - -extern struct43s D_80373D00 = { - {{-60.0f, -60.0f, -60.0f}, {60.0f, 60.0f, 60.0f}}, - {{0.0f, -0.0f, -0.0f}, {-0.0f, -0.0f, -0.0f}}, - {{-50.0f, -50.0f, -50.0f}, {50.0f, 50.0f, 50.0f}} -}; - -extern struct40s D_80373D48 = { - { {1.8f, 3.5f}, {1.8f, 3.5f}, {0.0f, 0.01f}, {5.0f, 5.0f}, 0.0f, 0.9f}, - 4.0f, - 15.0f -}; - -extern struct43s D_80373D78 = { - {{-450.0f, 700.0f, -450.0f}, {450.0f, 1100.0f, 450.0f}}, - {{ 0.0f, -900.0f, 0.0f}, { 0.0f, -900.0f, 0.0f}}, - {{-150.0f, -100.0f, -150.0f}, {150.0f, 5.0f, 150.0f}} -}; - - - /* .code */ void func_80361FA0(f32 arg0[3]) { + static struct40s D_80373304 = {{{0.4f, 1.4f}, {0.0f, 0.0f}, {0.0f, 0.01f}, {4.0f, 4.0f}, 0.5f, 0.7f}, 4.0f, 15.0f}; + static struct43s D_80373334 = { + {{-250.0f, 600.0f, -250.0f}, { 350.0f, 960.0f, 350.0f}}, + {{ 0.0f, -1200.0f, 0.0f}, { 0.0f, -1200.0f, 0.0f}}, + {{ -60.0f, -30.0f, -60.0f}, { 60.0f, 30.0f, 60.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xFU); + particleEmitter_setModel(pCtrl, 0x441); particleEmitter_setPosition(pCtrl, arg0); func_802EFE24(pCtrl, -200.0f, 200.0f, -200.0f, 200.0f, 200.0f, 200.0f); @@ -345,6 +51,13 @@ void func_80361FA0(f32 arg0[3]) { } void func_80362084(f32 position[3]) { + static s32 D_8037337C[3] = {50, 255, 50}; + static struct40s D_80373388 = {{{0.3f, 0.03f}, {0.5f, 0.5f}, {0.0f, 0.01f}, {1.5f, 2.0f}, 0.06f, 0.7f}, 4.0f, 1.0f}; + static struct42s D_803733B8 = { + {{ -5.0f, 100.0f, -5.0f}, { 5.0f, 100.0f, 5.0f}}, + {{-60.0f, 0.0f, -60.0f}, { 60.0f, 5.0f, 60.0f}} + }; + ParticleEmitter *pCtrl; pCtrl = partEmitList_pushNew(1U); @@ -362,7 +75,16 @@ void func_80362084(f32 position[3]) { void func_8036215C(f32 arg0[3]) { + static s32 D_803733E8[3] = {0xb4, 0xe6, 0xff}; + static struct40s D_803733F4 = {{{1.0f, 1.8f}, {2.2f, 2.7f}, {0.0f, 0.01f}, {0.8f, 1.2f}, 0.41f, 0.73f}, 4.0f, 15.0f}; + static struct43s D_80373424 = { + {{-300.0f, 600.0f, -300.0f}, { 300.0f, 1000.0f, 300.0f}}, + {{ 0.0f, -1200.0f, 0.0f}, { 0.0f, -1600.0f, 0.0f}}, + {{ -10.0f, 0.0f, -10.0f}, { 10.0f, 0.0f, 10.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xFU); + particleEmitter_setSprite(pCtrl, 0x700); particleEmitter_setStartingFrameRange(pCtrl, 3, 4); func_802EFFA8(pCtrl, D_803733E8); @@ -373,7 +95,15 @@ void func_8036215C(f32 arg0[3]) { } void func_803621F0(f32 arg0[3]) { + static struct40s D_8037346C = {{{0.3f, 0.4f}, {0.5f, 0.5f}, {0.0f, 0.01f}, {0.8f, 1.2f}, 0.91f, 0.99f}, 4.0f, 18.0f}; + static struct43s D_8037349C = { + {{-200.0f, 900.0f, -200.0f}, { 200.0f, 1400.0f, 200.0f}}, + {{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -2400.0f, 0.0f}}, + {{ -10.0f, -20.0f, -10.0f}, { 10.0f, -20.0f, 10.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0x12U); + particleEmitter_setSprite(pCtrl, 0x702); particleEmitter_setStartingFrameRange(pCtrl, 3, 5); func_802EF9E4(pCtrl, 0xD2); @@ -383,7 +113,15 @@ void func_803621F0(f32 arg0[3]) { } void func_80362274(f32 arg0[3]) { + static struct40s D_803734E4 = {{{3.2f, 3.4f}, {0.0f, 0.0f}, {0.0f, 0.01f}, {2.0f, 2.0f}, 0.0f, 0.3f}, 4.0f, 15.0f}; + static struct43s D_80373514 = { + {{-950.0f, 800.0f, -250.0f}, {-550.0f, 1360.0f, 50.0f}}, + {{-700.0f, -1700.0f, 0.0f}, {-900.0f, -1700.0f, 0.0f}}, + {{ -60.0f, 0.0f, -60.0f}, { 60.0f, 30.0f, 60.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xFU); + particleEmitter_setModel(pCtrl, 0x89B); particleEmitter_setPosition(pCtrl, arg0); func_802EFE24(pCtrl, -400.0f, -200.0f, -400.0f, 400.0f, -400.0f, 400.0f); @@ -395,7 +133,15 @@ void func_80362274(f32 arg0[3]) { } void func_8036233C(f32 arg0[3]) { + static struct40s D_8037355C = {{{3.0f, 3.4f}, {0.0f, 0.0f}, {0.0f, 0.01f}, {4.0f, 4.0f}, 0.0f, 0.3f}, 4.0f, 15.0f}; + static struct43s D_8037358C = { + {{-450.0f, 600.0f, -50.0f}, {-150.0f, 1100.0f, 50.0f}}, + {{-700.0f, -1700.0f, 0.0f}, {-800.0f, -1700.0f, 0.0f}}, + {{ -60.0f, 0.0f, -60.0f}, { 60.0f, 30.0f, 60.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xFU); + particleEmitter_setModel(pCtrl, 0x89A); particleEmitter_setPosition(pCtrl, arg0); func_802EFE24(pCtrl, -200.0f, 200.0f, -200.0f, 200.0f, 200.0f, 200.0f); @@ -407,7 +153,14 @@ void func_8036233C(f32 arg0[3]) { } void func_80362404(f32 arg0[3]) { + static struct40s D_803735D4 = {{{1.1f, 1.1f}, {4.3f, 4.3f}, {0.0f, 0.05f}, {0.3f, 0.5f}, 0.06f, 0.3f}, 4.0f, 1.0f}; + static struct42s D_80373604 = { + {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}, + {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1U); + particleEmitter_setSprite(pCtrl, 0x6DD); particleEmitter_setStartingFrameRange(pCtrl, 2, 2); particleEmitter_setPosition(pCtrl, arg0); @@ -416,7 +169,15 @@ void func_80362404(f32 arg0[3]) { } void func_8036247C(f32 arg0[3]) { + static s32 D_80373634[3] = {0xA, 0xFF, 0xA}; + static struct40s D_80373640 = {{{2.0f, 2.0f}, {3.0f, 3.5f}, {0.0f, 0.01f}, {2.0f, 2.5f}, 0.1f, 0.4}, 4.0f, 1.0f}; + static struct42s D_80373670 = { + {{ 0.0f, 40.0f, 0.0f}, { 0.0f, 90.0f, 0.0f}}, + {{-400.0f, 0.0f, -400.0f}, { 400.0f, 0.0f, 400.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1U); + particleEmitter_setSprite(pCtrl, 0x70D); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, &D_80373634); @@ -427,6 +188,9 @@ void func_8036247C(f32 arg0[3]) { } void func_80362510(Actor *actor) { + static s32 D_803736A0[3] = {0xFF, 0xFF, 0xFF}; + static struct40s D_803736AC = {{{0.01f, 0.01f}, {1.5f, 1.6f}, {0.05f, 0.7f}, {0.7f, 1.3f}, 0.1f, 0.8f}, 4.0f, 25.0f}; + ParticleEmitter *pCtrl; f32 sp30[3]; @@ -451,7 +215,14 @@ void func_80362510(Actor *actor) { void func_80362680(f32 arg0[3]) { + static struct40s D_803736DC = {{{0.7f, 0.9f}, {0.4f, 0.5}, {0.0f, 0.01f}, {0.8f, 1.0f}, 0.15f, 0.3f}, 0.0f, 1.0f}; + static struct42s D_8037370C = { + {{-10.0f, -10.0f, -10.0f}, { 10.0f, 10.0f, 10.0f}}, + {{ 0.0f, 30.0f, 0.0f}, { 0.0f, 30.0f, 0.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1U); + particleEmitter_setSprite(pCtrl, 0x45A); particleEmitter_setStartingFrameRange(pCtrl, 2, 2); particleEmitter_setPosition(pCtrl, arg0); @@ -460,6 +231,13 @@ void func_80362680(f32 arg0[3]) { } void func_803626F8(f32 arg0[3]) { + static struct40s D_8037373C = {{{0.05f, 0.1f}, {0.1f, 0.2f}, {0.0f, 0.01f}, {1.4f, 1.5f}, 0.01f, 0.7f}, 0.0f, 1.0f}; + static struct43s D_8037376C = { + {{ -5.0f, -5.0f, -5.0f}, { 5.0f, 5.0f, 5.0f}}, + {{ 0.0f, -50.0f, 0.0f}, { 0.0f, -90.0f, 0.0f}}, + {{-30.0f, 30.0f, -30.0f}, { 30.0f, 60.0f, 30.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1U); particleEmitter_setSprite(pCtrl, 0x713); @@ -471,6 +249,13 @@ void func_803626F8(f32 arg0[3]) { void func_80362770(f32 arg0[3]) { + static s32 D_803737B4[3] = {0xFF, 0xFF, 00}; + static struct40s D_803737C0 = {{{0.1f, 0.3f}, {0.6f, 0.7f}, {0.0f, 0.01f}, {0.3f, 0.4f}, 0.01f, 0.3f}, 4.0f, 16.0f}; + static struct42s D_803737F0 = { + {{-600.0f, -600.0f, -600.0f}, { 600.0f, 600.0f, 600.0f}}, + {{ 0.0f, 30.0f, 0.0f}, { 0.0f, 30.0f, 0.0f}}, + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0x10U); particleEmitter_setSprite(pCtrl, 0x714); @@ -482,7 +267,16 @@ void func_80362770(f32 arg0[3]) { } void func_803627F8(f32 arg0[3]){ + static s32 D_80373820[3] = {130, 155, 40}; + static struct40s D_8037382C = {{{3.3f, 3.3f}, {4.5f, 4.7f}, {0.0f, 0.01f}, {1.8f, 3.2f}, 0.31f, 0.73f}, 4.0f, 11.0f}; + static struct43s D_8037385C = { + {{-200.0f, 120.0f, -200.0f}, { 200.0f, 130.0f, 200.0f}}, + {{ 0.0f, -100.0f, 0.0f}, { 0.0f, -100.0f, 0.0f}}, + {{ -30.0f, 0.0f, -30.0f}, { 30.0f, 0.0f, 30.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(11); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_80373820); @@ -493,7 +287,16 @@ void func_803627F8(f32 arg0[3]){ } void func_8036288C(f32 arg0[3]){ + static s32 D_803738A4[3] = {91, 142, 0}; + static struct40s D_803738B0 = {{{0.2f, 0.9f}, {0.4f, 0.9f}, {0.0f, 0.01f}, {1.8f, 4.2f}, 0.31f, 0.73f}, 4.0f, 13.0f}; + static struct43s D_803738E0 = { + {{-400.0f, 520.0f, -400.0f}, { 400.0f, 750.0f, 400.0f}}, + {{ 0.0f, -1200.0f, 0.0f}, { 0.0f, -1600.0f, 0.0f}}, + {{ -30.0f, 0.0f, -30.0f}, { 30.0f, 0.0f, 30.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xd); + particleEmitter_setSprite(pCtrl, ASSET_702_SPRITE_UNKNOWN); particleEmitter_setStartingFrameRange(pCtrl, 3, 4); func_802EFFA8(pCtrl, D_803738A4); @@ -504,6 +307,13 @@ void func_8036288C(f32 arg0[3]){ } void func_80362920(f32 arg0[3]){ + static s32 D_80373928[3] = {0, 255, 0}; + static struct40s D_80373934 = {{{1.4f, 1.9f}, {2.4f, 2.9f}, {0.0f, 3.2f}, {8.8f, 9.2f}, 0.31f, 0.73f}, 4.0f, 13.0f}; + static struct43s D_80373964 = { + {{-60.0f, 100.0f, -60.0f}, { 60.0f, 170.0f, 60.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{-30.0f, 0.0f, -30.0f}, { 30.0f, 0.0f, 30.0f}} + }; ParticleEmitter *pCtrl = partEmitList_pushNew(0xd); particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); @@ -515,7 +325,16 @@ void func_80362920(f32 arg0[3]){ } void func_803629B4(f32 arg0[3]){ + static s32 D_803739AC[3] = {255, 255, 255}; + static struct40s D_803739B8 = {{{0.2f, 0.9f}, {0.3f, 0.4f}, {0.0f, 0.2f}, {1.0f, 1.2f}, 0.31f, 0.73f}, 4.0f, 13.0f}; + static struct43s D_803739E8 = { + {{-600.0f, 0.0f, -600.0f}, { 600.0f, 0.0f, 600.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{ 0.0f, 40.0f, 0.0f}, { 0.0f, 40.0f, 0.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xd); + particleEmitter_setSprite(pCtrl, ASSET_713_SPRITE_SPARKLE_YELLOW); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_803739AC); @@ -526,7 +345,16 @@ void func_803629B4(f32 arg0[3]){ } void func_80362A48(f32 arg0[3]){ + static s32 D_80373A30[3] = {255, 255, 255}; + static struct40s D_80373A3C = {{{1.5f, 1.6f}, {2.5f, 2.9f}, {0.0f, 0.01f}, {2.0f, 2.5f}, 0.1f, 0.4f}, 4.0f, 1.0f}; + static struct43s D_80373A6C = { + {{ 0.0f, 40.0f, 0.0f}, { 0.0f, 90.0f, 0.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{-5.0f, 0.0f, -5.0f}, { 5.0f, 0.0f, 5.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_80373A30); @@ -537,7 +365,16 @@ void func_80362A48(f32 arg0[3]){ } void func_80362ADC(f32 arg0[3]){ + static s32 D_80373AB4[3] = {30, 30, 30}; + static struct40s D_80373AC0 = {{{3.0f, 3.4f}, {3.9f, 4.1f}, {0.0f, 0.01f}, {2.0f, 2.5f}, 0.3f, 0.5f}, 4.0f, 1.0f}; + static struct43s D_80373AF0 = { + {{100.0f, 40.0f, 100.0f}, {100.0f, 90.0f, 100.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{ -5.0f, 0.0f, -5.0f}, { 5.0f, 0.0f, 5.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_80373AB4); @@ -548,6 +385,13 @@ void func_80362ADC(f32 arg0[3]){ } void func_80362B70(f32 arg0[3]){ + static s32 D_80373B38[3] = {130, 130, 130}; + static struct40s D_80373B44 = {{{2.0f, 2.4f}, {3.9f, 4.1f}, {0.0f, 0.01f}, {2.0f, 2.5f}, 0.2f, 0.7f}, 4.0f, 1.0f}; + static struct43s D_80373B74 = { + {{100.0f, 40.0f, 100.0f}, {100.0f, 90.0f, 100.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{ -5.0f, 0.0f, -5.0f}, { 5.0f, 0.0f, 5.0f}} + }; ParticleEmitter *pCtrl = partEmitList_pushNew(1); particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); @@ -559,7 +403,16 @@ void func_80362B70(f32 arg0[3]){ } void func_80362C04(f32 arg0[3]){ + static s32 D_80373BBC[3] = {0xff, 0xff, 0xff}; + static struct40s D_80373BC8 = {{{0.5f, 0.6f}, {1.5f, 1.9f}, {0.0f, 0.01f}, {4.0f, 4.5f}, 0.1f, 0.8f,}, 0.0f, 1.0f}; + static struct43s D_80373BF8 = { + {{ 0.0f, 40.0f, 0.0f}, { 0.0f, 90.0f, 0.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{-5.0f, 0.0f, -5.0f}, { 5.0f, 0.0f, 5.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_80373BBC); @@ -570,7 +423,16 @@ void func_80362C04(f32 arg0[3]){ } void func_80362C98(f32 arg0[3]){ + static s32 D_80373C40[3] = {160, 170, 170}; + static struct40s D_80373C4C = {{{2.5f, 2.6f}, {3.5f, 3.9f}, {0.0f, 0.01f}, {0.3f, 0.5f}, 0.1f, 0.8f}, 4.0f, 1.0f}; + static struct43s D_80373C7C = { + {{-60.0f, -60.0f, -60.0f}, { 60.0f, 60.0f, 60.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{-50.0f, -50.0f, -50.0f}, { 50.0f, 50.0f, 50.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 1, 6); func_802EFFA8(pCtrl, D_80373C40); @@ -581,7 +443,16 @@ void func_80362C98(f32 arg0[3]){ } void func_80362D2C(f32 arg0[3]){ + static s32 D_80373CC4[] = {90, 90, 90}; + static struct40s D_80373CD0 = {{{1.5f, 1.6f}, {2.5f, 2.9f}, {0.0f, 0.01f}, {0.3f, 0.5f}, 0.1f, 0.8f}, 4.0f, 1.0f}; + static struct43s D_80373D00 = { + {{-60.0f, -60.0f, -60.0f}, {60.0f, 60.0f, 60.0f}}, + {{ 0.0f, 0.0f, 0.0f}, { 0.0f, 0.0f, 0.0f}}, + {{-50.0f, -50.0f, -50.0f}, {50.0f, 50.0f, 50.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(1); + particleEmitter_setSprite(pCtrl, ASSET_70D_SPRITE_SMOKE_1); particleEmitter_setStartingFrameRange(pCtrl, 4, 6); func_802EFFA8(pCtrl, D_80373CC4); @@ -592,6 +463,13 @@ void func_80362D2C(f32 arg0[3]){ } void func_80362DC0(f32 arg0[3]){ + static struct40s D_80373D48 = {{ {1.8f, 3.5f}, {1.8f, 3.5f}, {0.0f, 0.01f}, {5.0f, 5.0f}, 0.0f, 0.9f}, 4.0f, 15.0f }; + static struct43s D_80373D78 = { + {{-450.0f, 700.0f, -450.0f}, {450.0f, 1100.0f, 450.0f}}, + {{ 0.0f, -900.0f, 0.0f}, { 0.0f, -900.0f, 0.0f}}, + {{-150.0f, -100.0f, -150.0f}, {150.0f, 5.0f, 150.0f}} + }; + ParticleEmitter *pCtrl = partEmitList_pushNew(0xF); particleEmitter_setModel(pCtrl, ASSET_47B_MODEL_ROCK); particleEmitter_setPosition(pCtrl, arg0); @@ -731,5 +609,4 @@ void func_80363388(struct_core2_DB010 *arg0, s32 arg1){ // could be any unused value(s) between (0x29 and 0x36) break; } - -} \ No newline at end of file +} diff --git a/src/cutscenes/code_0.c b/src/cutscenes/code_0.c index be62fd2c..cacbe5dc 100644 --- a/src/cutscenes/code_0.c +++ b/src/cutscenes/code_0.c @@ -1501,10 +1501,9 @@ void cutscenes_func_8038C454(s32 arg0, s32 arg1) { func_80288D40(arg0, 0.35f, func_803881CC, arg1); } -struct { - s16 unk0; - void (*unk4)(s32, s32); -}D_8038D904[] = { +/* .h */ + +Struct63s D_8038D904[] = { {0x1BE, func_803882D4}, {0x1BF, func_8038837C}, {0x1BD, cutscenes_func_803883AC}, @@ -1513,79 +1512,139 @@ struct { {0x20B, cutscenes_func_80388660}, {0x207, func_80388734}, {0x1C5, func_803887A0}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D94C[] = { {0x1C7, func_80388C40}, {0x1C8, func_80388CE4}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D964[] = { {0x2B8, func_80388A6C}, {0x085, func_80388B58}, {0x1D0, func_80388814}, {0x093, func_80388920}, {0x1D5, func_803889CC}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D994[] = { {0x1B8, func_80388D30}, {0x1C2, func_80388DE4}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D9AC[] = { {0x1F8, func_80388E30}, {0x13A, func_80388EE0}, {0x13B, func_80388F9C}, {0x296, func_803890CC}, {0x2B2, cutscenes_func_80389204}, {0x299, func_8038933C}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D9E4[] = { {0x13D, func_80389498}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038D9F4[] = { {0x1D3, func_803894E8}, {0x1D4, func_803895CC}, {0x1CB, func_80389698}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DA14[] = { {0x079, func_803896C8}, {0x084, cutscenes_func_80389850}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DA2C[] = { {0x163, func_80389B84}, {0x0F9, func_80389C30}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DA44[] = { {0x200, func_80389D34}, {0x1FF, func_80389D78}, {0x1FE, func_80389DFC}, {0x20C, cutscenes_func_80389EA8}, {0x1C1, func_8038A018}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DA74[] = { {0x1D5, func_80388BCC}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DA84[] = { {0x202, cutscenes_func_8038A54C}, {0x201, func_8038A5C8}, {0x2B6, func_8038A734}, {0x2B7, func_8038A6D0}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DAAC[] = { {0x202, func_8038A7E8}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DABC[] = { {0x202, cutscenes_func_8038A864}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DACC[] = { {0x200, func_8038A05C}, {0x1FF, cutscenes_func_8038A0A0}, {0x1FE, func_8038A15C}, {0x20C, func_8038A254}, {0x1C1, cutscenes_func_8038A2F0}, {0x210, func_8038A334}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB04[] = { {0x1FA, func_8038A954}, {0x1FB, func_8038A9A0}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB1C[] = { {0x1FC, func_8038A9D0}, {0x1FD, func_8038AA64}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB34[] = { {0x20E, func_8038AAFC}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB44[] = { {0x292, cutscenes_func_8038AB60}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB54[] = { {0x293, func_8038AC54}, {0x29A, func_8038B098}, {0x295, func_8038B214}, {0x29B, func_8038B404}, {0x00C, func_8038AF5C}, {0x2BA, func_8038B5FC}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DB8C[] = { {0x291, func_8038B744}, {0x294, func_8038B7B4}, {0x2AE, func_8038B8B8}, @@ -1595,28 +1654,52 @@ struct { {0x2B5, func_8038BE30}, {0x2BB, func_8038BD2C}, {0x2BC, func_8038BD9C}, - {0x000, NULL}, + 0 +}; + +Struct63s D_8038DBDC[] = { {0x297, cutscenes_func_803898C8}, {0x298, func_80389AD0}, - {0x000, NULL}, + 0 +}; + + +Struct63s D_8038DBF4[] = { {0x29E, func_8038BF5C}, {0x29F, cutscenes_func_8038C0DC}, - {0x000, NULL}, + 0 +}; + + +Struct63s D_8038DC0C[] = { {0x29C, cutscenes_func_8038C16C}, {0x200, func_8038C19C}, {0x295, func_8038C200}, - {0x000, NULL}, - {0x2B9, func_8038C264}, - {0x000, NULL}, - {0x08C, func_8038C3BC}, - {0x000, NULL}, - {0x08F, func_8038C314}, - {0x090, func_8038C35C}, - {0x000, NULL}, - {0x07A, func_8038C404}, - {0x000, NULL}, - {0x2A0, cutscenes_func_8038C454}, - {0x000, NULL}, - {0x000, NULL}, + 0 }; +Struct63s D_8038DC2C[] = { + {0x2B9, func_8038C264}, + 0 +}; + +Struct63s D_8038DC3C[] = { + {0x08C, func_8038C3BC}, + 0 +}; + +Struct63s D_8038DC4C[] = { + {0x08F, func_8038C314}, + {0x090, func_8038C35C}, + 0 +}; + +Struct63s D_8038DC64[] = { + {0x07A, func_8038C404}, + 0 +}; + +Struct63s D_8038DC74[] = { + {0x2A0, cutscenes_func_8038C454}, + 0 +}; diff --git a/src/lair/code_AD70.c b/src/lair/code_AD70.c index 5e998ad6..d3e1f814 100644 --- a/src/lair/code_AD70.c +++ b/src/lair/code_AD70.c @@ -50,13 +50,6 @@ f32 D_80394BC0[2] = {1000.0f, 2000.0f}; s32 D_80394BC8[3] = {0xC0, 0xC0, 0xC0}; s32 D_80394BD4[3] = {0xff, 0x80, 0x80}; -/* .rodata */ -extern f32 D_803952D0; // .rodata : 0.2f -extern f64 D_803952D8; // 4.0 -extern f64 D_803952E0; -extern f64 D_803952E8; - - /* .code */ void func_80391160(f32 pos[3], u32 count) {