Give a name to the list of actors (#200)

Add a define for the size of the actor list, and add a comment
 cautioning people about how to appropriately interact with
 the specialized types.

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
Tyler McGavran
2022-05-14 22:03:42 -04:00
committed by GitHub
parent 418d7d95c6
commit 55a30f5c8c
45 changed files with 440 additions and 472 deletions
+28 -28
View File
@@ -5790,10 +5790,10 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000ED14.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
s32 func_8000ED80(s32 arg0) {
if (*(&D_8015F9B8 + (arg0 * 0x70)) != 8) {
if (*(&gActorList + (arg0 * 0x70)) != 8) {
return -1;
}
return func_8000ED14(0);
@@ -5805,10 +5805,10 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000ED80.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
s32 func_8000EDC8(s32 arg0) {
if (*(&D_8015F9B8 + (arg0 * 0x70)) != 7) {
if (*(&gActorList + (arg0 * 0x70)) != 7) {
return -1;
}
return func_8000ED14(1);
@@ -5820,10 +5820,10 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EDC8.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
s32 func_8000EE10(s32 arg0) {
if (*(&D_8015F9B8 + (arg0 * 0x70)) != 0x2A) {
if (*(&gActorList + (arg0 * 0x70)) != 0x2A) {
return -1;
}
return func_8000ED14(2);
@@ -5907,7 +5907,7 @@ extern f32 D_800ED040;
extern f32 D_800ED044;
extern f32 D_800ED048;
extern f32 D_800ED04C;
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_801641F8;
extern ? D_801642D8;
@@ -5931,7 +5931,7 @@ void func_8000EF20(void) {
temp_v0 = phi_s0->unk10;
temp_t0 = phi_s0->unk14 + 1;
phi_s0->unk14 = temp_t0;
temp_s1 = &D_8015F9B8 + (phi_s0->unkE * 0x70);
temp_s1 = &gActorList + (phi_s0->unkE * 0x70);
if (temp_v0 != 0) {
if (temp_v0 != 1) {
if (temp_v0 != 2) {
@@ -8561,12 +8561,12 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800127E0.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_8015F9B8;
extern ? gActorList;
void func_80012A48(void *arg0, s16 arg1) {
void *temp_v0;
temp_v0 = (arg0->unk1E * 0x70) + &D_8015F9B8;
temp_v0 = (arg0->unk1E * 0x70) + &gActorList;
temp_v0->unk18 = arg0->unk4;
temp_v0->unk1C = arg0->unk8;
temp_v0->unk20 = arg0->unkC;
@@ -8946,7 +8946,7 @@ extern f64 D_800ED138;
extern f64 D_800ED140;
extern f64 D_800ED148;
extern f64 D_800ED150;
extern ? D_8015F9B8;
extern ? gActorList;
extern s16 D_80162EB0;
extern s16 D_801630FC;
extern s32 D_80163598;
@@ -9066,7 +9066,7 @@ void func_800133C4(void) {
phi_s0->unk10 = temp_f0_3 - temp_f26;
phi_s0->unk14 = phi_s0->unk8 - temp_f28;
phi_s0->unk18 = phi_s0->unkC - temp_f30;
temp_v0_3 = (phi_s0->unk1E * 0x70) + &D_8015F9B8;
temp_v0_3 = (phi_s0->unk1E * 0x70) + &gActorList;
temp_v0_3->unk18 = temp_f0_3;
temp_v0_3->unk1C = phi_s0->unk8;
temp_v0_3->unk20 = phi_s0->unkC;
@@ -9267,7 +9267,7 @@ f32 func_80013C74(s16, s16); // extern
s32 func_802B5224(f32 *, f32 *); // extern
extern f64 D_800ED178;
extern f64 D_800ED180;
extern ? D_8015F9B8;
extern ? gActorList;
extern s16 D_8016347A;
void func_80013D20(void *arg0) {
@@ -9330,7 +9330,7 @@ void func_80013D20(void *arg0) {
func_800224F0(arg0 + 0x28, func_802B5224(&sp40, &sp34) * -1, 0x64);
temp_f0_4 = arg0->unk4;
arg0->unk10 = temp_f0_4 - sp5C;
temp_v1 = (arg0->unk1E * 0x70) + &D_8015F9B8;
temp_v1 = (arg0->unk1E * 0x70) + &gActorList;
arg0->unk14 = arg0->unk8 - sp58;
arg0->unk18 = arg0->unkC - sp54;
temp_v1->unk18 = temp_f0_4;
@@ -13319,7 +13319,7 @@ s32 func_8007AF78(s16, s16, ? *); /* extern */
s16 func_802B2D70(u16 *, s16, ? *); /* extern */
? func_802B2EBC(u16 *, s16); /* extern */
s32 random_int(?, s16); /* extern */
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_801631E0;
extern ? D_801642D8;
extern ? gPlayerPositions;
@@ -13412,7 +13412,7 @@ block_194:
}
goto block_194;
case 2: /* switch 1 */
temp_a3 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3->unk2 & 0x8000) == 0) || (temp_a3->unk0 != 6) || (temp_a3->unk6 != 0) || (playerId != temp_a3->unk10)) {
temp_s0->unk0 = 0;
temp_s0->unk4 = 0;
@@ -13425,7 +13425,7 @@ block_194:
}
break;
case 3: /* switch 1 */
temp_a3_2 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_2 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_2->unk2 & 0x8000) == 0) || (temp_a3_2->unk0 != 6) || (temp_a3_2->unk6 != 0) || (playerId != temp_a3_2->unk10)) {
if (playerId != temp_a3_2->unk10) {
@@ -13448,7 +13448,7 @@ block_194:
temp_s0->unk2 = func_802B2D70(sp2C, temp_a1);
temp_v1_4 = temp_s0->unk2;
if ((temp_v1_4 >= 0) && (temp_v1_4 < 0x64)) {
temp_a3_3 = (temp_v1_4 * 0x70) + &D_8015F9B8;
temp_a3_3 = (temp_v1_4 * 0x70) + &gActorList;
temp_a3_3->unk6 = 4;
sp2C->unkC = sp2C->unkC | 0x40000;
temp_s0->unk0 = 0x23;
@@ -13469,7 +13469,7 @@ block_194:
}
goto block_194;
case 35: /* switch 1 */
temp_a3_4 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_4 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_4->unk2 & 0x8000) == 0) || (temp_a3_4->unk0 != 6) || (temp_a3_4->unk6 != 4) || (playerId != temp_a3_4->unk10)) {
temp_s0->unk4 = 0;
temp_s0->unk0 = 0;
@@ -13486,7 +13486,7 @@ block_194:
}
break;
case 36: /* switch 1 */
temp_a3_5 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_5 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_5->unk2 & 0x8000) == 0) || (temp_a3_5->unk0 != 6) || (temp_a3_5->unk6 != 4) || (playerId != temp_a3_5->unk10)) {
if (playerId != temp_a3_5->unk10) {
@@ -13521,7 +13521,7 @@ block_71:
}
goto block_194;
case 5: /* switch 1 */
temp_a3_6 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_6 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_6->unk2 & 0x8000) == 0) || (temp_a3_6->unk0 != 7) || (temp_a3_6->unk6 != 0) || (playerId != temp_a3_6->unk14)) {
temp_s0->unk4 = 0;
temp_s0->unk0 = 0;
@@ -13534,7 +13534,7 @@ block_71:
}
break;
case 6: /* switch 1 */
temp_a3_7 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_7 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_7->unk2 & 0x8000) == 0) || (temp_a3_7->unk0 != 7) || (temp_a3_7->unk6 != 0) || (playerId != temp_a3_7->unk14)) {
temp_s0->unk0 = 0;
temp_s0->unk4 = 0;
@@ -13562,7 +13562,7 @@ block_92:
}
goto block_194;
case 8: /* switch 1 */
temp_a3_8 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_8 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_8->unk2 & 0x8000) == 0) || (temp_a3_8->unk0 != 8) || (temp_a3_8->unk6 != 0) || (playerId != temp_a3_8->unk14)) {
temp_s0->unk4 = 0;
temp_s0->unk0 = 0;
@@ -13575,7 +13575,7 @@ block_92:
break;
case 9: /* switch 1 */
func_8001ABEC(temp_s0, temp_a1);
temp_a3_9 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_9 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_9->unk2 & 0x8000) == 0) || (temp_a3_9->unk0 != 8) || (temp_a3_9->unk6 != 0) || (playerId != temp_a3_9->unk14)) {
temp_s0->unk0 = 0;
temp_s0->unk4 = 0;
@@ -13603,7 +13603,7 @@ block_113:
}
goto block_194;
case 11: /* switch 1 */
temp_a3_10 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_10 = (temp_s0->unk2 * 0x70) + &gActorList;
if (temp_a3_10->unk6 == 6) {
phi_v1 = 0;
if (temp_a3_10->unk1A != -1) {
@@ -13637,7 +13637,7 @@ block_131:
if ((temp_s0->unk4 % 10) == 0) {
temp_v1_8 = temp_s0->unk8;
if (temp_v1_8 < 5) {
temp_a3_11 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_11 = (temp_s0->unk2 * 0x70) + &gActorList;
phi_v0 = 0;
switch (temp_v1_8) { /* switch 2 */
case 0: /* switch 2 */
@@ -13691,7 +13691,7 @@ block_146:
}
goto block_194;
case 14: /* switch 1 */
temp_a3_12 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_12 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_12->unk2 & 0x8000) == 0) || (temp_a3_12->unk0 != 0xD) || (temp_a3_12->unk6 != 0) || (playerId != temp_a3_12->unk24)) {
temp_s0->unk4 = 0;
temp_s0->unk0 = 0;
@@ -13703,7 +13703,7 @@ block_146:
}
break;
case 15: /* switch 1 */
temp_a3_13 = (temp_s0->unk2 * 0x70) + &D_8015F9B8;
temp_a3_13 = (temp_s0->unk2 * 0x70) + &gActorList;
if (((temp_a3_13->unk2 & 0x8000) == 0) || (temp_a3_13->unk0 != 0xD) || (temp_a3_13->unk6 != 0) || (playerId != temp_a3_13->unk24)) {
if (playerId != temp_a3_13->unk10) {
+109 -120
View File
@@ -29,7 +29,7 @@ extern struct Controller gControllers[];
extern s32 gActiveScreenMode;
extern Camera *camera1;
extern struct Actor D_8015F9B8[];
extern struct Actor gActorList[];
extern Gfx *gDisplayListHead;
extern s32 gModeSelection;
extern s16 gCurrentCourseId;
@@ -57,7 +57,7 @@ u16 D_802BA260;
? func_8029E854(void *, void *); /* extern */
extern u16 D_8015F6FE;
extern u16 D_8015F900;
extern ? D_8015F9B8;
extern ? gActorList;
void func_80296A50(s32 arg0, s32 arg3) {
void *sp1C;
@@ -85,7 +85,7 @@ void func_80296A50(s32 arg0, s32 arg3) {
phi_a2 = temp_t1;
phi_a3 = arg3;
if (temp_t1 < 0x64) {
phi_a1 = (temp_t1 * 0x70) + &D_8015F9B8;
phi_a1 = (temp_t1 * 0x70) + &gActorList;
loop_2:
if ((arg0 != phi_a1) && ((phi_a1->unk2 & 0xF) == 0) && (phi_a1->unk0 == 7)) {
if (phi_a1->unk6 == 2) {
@@ -108,7 +108,7 @@ block_10:
phi_a2_2 = D_8015F900;
phi_a2_3 = D_8015F900;
if (D_8015F900 < 0x64) {
phi_a1_2 = (D_8015F900 * 0x70) + &D_8015F9B8;
phi_a1_2 = (D_8015F900 * 0x70) + &gActorList;
loop_12:
if ((arg0 != phi_a1_2) && ((phi_a1_2->unk2 & 0xF) == 0) && (phi_a1_2->unk0 == 8)) {
temp_t3 = phi_a1_2->unk6;
@@ -143,7 +143,7 @@ block_21:
phi_a2_4 = phi_a2_3;
phi_a2_5 = phi_a2_3;
if (phi_a2_3 < 0x64) {
phi_a1_3 = (phi_a2_3 * 0x70) + &D_8015F9B8;
phi_a1_3 = (phi_a2_3 * 0x70) + &gActorList;
phi_a3 = 2;
loop_23:
if ((arg0 != phi_a1_3) && (phi_a1_3->unk0 == 7)) {
@@ -174,7 +174,7 @@ block_30:
block_32:
phi_a2_6 = phi_a2_5;
if (phi_a2_5 < 0x64) {
phi_a1_4 = (phi_a2_5 * 0x70) + &D_8015F9B8;
phi_a1_4 = (phi_a2_5 * 0x70) + &gActorList;
loop_34:
if ((arg0 != phi_a1_4) && (phi_a1_4->unk0 == 8)) {
temp_t7 = phi_a1_4->unk6;
@@ -223,14 +223,14 @@ extern u16 D_802BA260;
static f32 D_802B95F0 = 1.925f;
static f32 D_802B95F4 = 0.35f;
void func_80296D10(struct Actor *actor, s32 arg1, Vec3s arg2, Vec3f arg3, s16 actorType) {
void func_80296D10(struct Actor *actor, Vec3f arg1, Vec3s arg2, Vec3f arg3, s16 actorType) {
UnkActorInner *sp2C;
UnkActorInner *temp_a0;
f32 temp_f0;
u16 temp_v0;
s16 phi_v0;
vec3f_copy(actor->pos);
vec3f_copy(actor->pos, arg1);
vec3s_copy(actor->rot, arg2);
vec3f_copy(actor->velocity, arg3);
actor->flags = -0x8000;
@@ -406,16 +406,16 @@ GLOBAL_ASM("asm/non_matchings/code_actors/func_80296D10.s")
void func_80297230(Camera *arg0, struct Actor *arg1) {
switch(arg0 - camera1) {
case 0:
arg1->flags &= 0xFFFE;
arg1->flags &= ~1;
break;
case 1:
arg1->flags &= 0xFFFD;
arg1->flags &= ~2;
break;
case 2:
arg1->flags &= 0xFFFB;
arg1->flags &= ~4;
break;
case 3:
arg1->flags &= 0xFFF7;
arg1->flags &= ~8;
break;
}
}
@@ -666,7 +666,7 @@ void update_obj_yoshi_valley_egg(struct YoshiValleyEgg *egg) {
if (egg->pos[1] < 0.0f) {
egg->pos[1] = 0.0f;
egg->pathCenter[1] = 0.0f;
egg->flags &= 0xFBFF;
egg->flags &= ~(1 << 10);
}
egg->eggRot -= 0x4FA;
}
@@ -1987,8 +1987,19 @@ void update_obj_mario_raceway_sign(struct Actor *arg0) {
}
}
// UNUSED
#ifdef MIPS_TO_C
//generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd
extern s16 D_80150110;
extern ? D_8015F9BE;
void func_8029ABD4(s16 arg1, s32 arg1) {
arg1 = M2C_ERROR(Read from unset register $a1);
D_80150110 = 0;
*(&D_8015F9BE + (func_8029ED38((f32 *) arg1, (s16 *)0x00000014) * 0x70)) = (s16) arg1;
}
#else
GLOBAL_ASM("asm/non_matchings/code_actors/func_8029ABD4.s")
#endif
#ifdef NON_MATCHING // needs jmpt table rodata aligned to match.
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
@@ -2672,7 +2683,7 @@ void place_piranha_plants(Gfx *displaylist) {
sp60[1] = temp_s0->unk.data[1];
sp60[2] = temp_s0->unk.data[2];
temp = func_8029EC88(sp60, sp4C, sp54, ACTOR_PIRANHA_PLANT);
temp_v1 = (struct PiranhaPlant *) &D_8015F9B8[temp];
temp_v1 = (struct PiranhaPlant *) &gActorList[temp];
temp_v1->visibilityStates[0] = 0;
temp_v1->visibilityStates[1] = 0;
temp_v1->visibilityStates[2] = 0;
@@ -2703,7 +2714,7 @@ void place_palm_trees(Gfx *displaylist) {
sp60[1] = temp_s0->unk.data[1];
sp60[2] = temp_s0->unk.data[2];
temp = func_8029EC88(sp60, sp4C, sp54, ACTOR_PALM_TREE);
temp_v1 = (struct PalmTree *) &D_8015F9B8[temp];
temp_v1 = (struct PalmTree *) &gActorList[temp];
temp_v1->visibilityStates[0] = temp_s0->unk.unk2;
func_802ADDC8((UnkActorInner *) &temp_v1->unk30, 5.0f, temp_v1->pos[0], temp_v1->pos[1], temp_v1->pos[2]);
@@ -2746,7 +2757,7 @@ void place_falling_rocks(Gfx *displaylist) {
vec3f_set(sp54, 0, 0, 0);
vec3s_set(sp4C, 0, 0, 0);
temp = func_8029EC88(sp60, sp4C, sp54, ACTOR_FALLING_ROCK);
temp_v1 = (struct FallingRock *) &D_8015F9B8[temp];
temp_v1 = (struct FallingRock *) &gActorList[temp];
temp_v1->unk_06 = temp_s0->unk.unk2;
func_802AAAAC((UnkActorInner *) &temp_v1->unk30);
@@ -2760,7 +2771,7 @@ s32 func_8029EC88(f32 *, ? *, ? *, ?); // extern
? func_802AAAAC(void *); // extern
? vec3s_set(? *, ?, ?, ?); // extern
? vec3f_set(? *, ?, ?, ?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern f32 gCourseDirection;
extern ? gSegmentTable;
@@ -2791,7 +2802,7 @@ void place_falling_rocks(u32 arg0) {
sp6C = phi_s0->unk_04;
vec3f_set(&sp58, 0, 0, 0);
vec3s_set(&sp50, 0, 0, 0);
temp_v1 = &D_8015F9B8 + (func_8029EC88(temp_s4, &sp50, &sp58, 5) * 0x70);
temp_v1 = &gActorList + (func_8029EC88(temp_s4, &sp50, &sp58, 5) * 0x70);
temp_a0 = temp_v1 + 0x30;
temp_v1->unk6 = phi_s0->unk6;
func_802AAAAC(temp_a0);
@@ -2937,7 +2948,7 @@ f32 func_802ABE30(?32, f32, ?32, u16); /* extern */
? func_802ADDC8(void *, ?, ?32, f32, ?32); /* extern */
? vec3f_set(? *, f32, f32, f32); /* extern */
extern s32 D_800DC50C;
extern ? D_8015F9B8;
extern ? gActorList;
extern f32 gCourseDirection;
extern ? gSegmentTable;
static u16 gCurrentCourseId; /* type too large by 2; unable to generate initializer */
@@ -3026,7 +3037,7 @@ void place_segment_06(u32 arg0) {
}
break;
}
temp_s0 = &D_8015F9B8 + (func_8029EC88(&sp8C, &sp78, &sp80, phi_s2) * 0x70);
temp_s0 = &gActorList + (func_8029EC88(&sp8C, &sp78, &sp80, phi_s2) * 0x70);
if (D_800DC50C == CREDITS_SEQUENCE) {
func_802976D8(temp_s0 + 0x10);
} else {
@@ -3098,7 +3109,7 @@ void place_all_item_boxes(u32 arg0) {
temp_f0 = func_802AE1C0(sp6C, sp70 + 10.0f, sp74);
temp_f16 = temp_f0 - 20.0f;
temp_s0_2 = phi_s0 + 8;
temp_v0 = &D_8015F9B8[temp_s1];
temp_v0 = &gActorList[temp_s1];
temp_v0->resetDistance = temp_f0;
temp_v0->pos[1] = temp_f16;
temp_v0->origY = sp70;
@@ -3116,7 +3127,7 @@ GLOBAL_ASM("asm/non_matchings/code_actors/place_all_item_boxes.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8029EC88(? *, ? *, ? *, ?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern u16 gPlayers;
void func_8029D9F8(void) {
@@ -3133,7 +3144,7 @@ void func_8029D9F8(void) {
do {
temp_v0 = *phi_s1;
if (((temp_v0 & 0x4000) != 0) && ((temp_v0 & 0x100) == 0)) {
(&D_8015F9B8 + (func_8029EC88(&sp64, &sp50, &sp58, 0x2D) * 0x70))->unk_04 = phi_s0;
(&gActorList + (func_8029EC88(&sp64, &sp50, &sp58, 0x2D) * 0x70))->unk_04 = phi_s0;
}
temp_s0 = phi_s0 + 1;
phi_s1 += 0xDD8;
@@ -3147,15 +3158,15 @@ GLOBAL_ASM("asm/non_matchings/code_actors/func_8029D9F8.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern s16 D_80150110;
//extern ? D_8015F9B8;
//extern ? gActorList;
extern s32 D_80162578;
extern struct Actor D_8015F9B8[112];
extern struct Actor gActorList[112];
void func_8029DAB8(void) {
struct Actor *temp_v1;
s32 i;
D_80150110 = 0;
for (i = 0; i < 100; i++) {
temp_v1 = &D_8015F9B8[i];
for (i = 0; i < ACTOR_LIST_SIZE; i++) {
temp_v1 = &gActorList[i];
temp_v1->unk2 = 0;
temp_v1->unk0 = 0;
temp_v1->unk_04 = 0;
@@ -3215,7 +3226,7 @@ extern ? D_06022F08;
extern ? D_06023AE0;
extern u16 D_80150110;
extern u16 D_8015F900;
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_8015F9BE;
extern f32 gCourseDirection;
extern s32 gPlayerCountSelection1;
@@ -3260,7 +3271,7 @@ void func_8029DB44(void) {
vec3f_set(&sp40, 0x451D8000, 0, 0x449B0000);
temp_a0_2 = &sp40;
sp40 *= gCourseDirection;
temp_v1 = (func_8029EC88(temp_a0_2, &sp2C, &sp34, 0x17) * 0x70) + &D_8015F9B8;
temp_v1 = (func_8029EC88(temp_a0_2, &sp2C, &sp34, 0x17) * 0x70) + &gActorList;
temp_v1->unk2 = temp_v1->unk2 | 0x4000;
break;
case COURSE_CHOCO_MOUNTAIN:
@@ -3317,7 +3328,7 @@ void func_8029DB44(void) {
sp40 *= gCourseDirection;
/*
D_8015F9BE is a fake variable.
func_8029EC88 returns an index in D_8015F9B8 and D_8015F9BE represents accessing
func_8029EC88 returns an index in gActorList and D_8015F9BE represents accessing
the member 6 bytes into the actor at that index.
In this function, that's the `crossingId` member of a RailroadCrossing actor
*/
@@ -3630,7 +3641,7 @@ s16 func_8029E890(s32 arg0, s16 *arg1, f32 *arg2, s16 actorType) {
temp_t3 = D_8015F900;
phi_s1 = (s16) temp_t3;
if ((s32) temp_t3 < 0x64) {
phi_s0 = &D_8015F9B8[temp_t3];
phi_s0 = &gActorList[temp_t3];
loop_2:
if ((phi_s0->flags & 0xF) == 0) {
temp_v0 = phi_s0->type;
@@ -3696,7 +3707,7 @@ block_24:
block_26:
phi_s1_2 = (s16) D_8015F900;
if ((s16) D_8015F900 < 0x64) {
phi_s0_2 = &D_8015F9B8[(s16) D_8015F900];
phi_s0_2 = &gActorList[(s16) D_8015F900];
loop_28:
temp_v0_5 = phi_s0_2->type;
switch (temp_v0_5) { /* switch 3; irregular */
@@ -3766,44 +3777,25 @@ block_50:
GLOBAL_ASM("asm/non_matchings/code_actors/func_8029E890.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80296D10(? *, s32, s32, s32, s32); // extern
s16 func_8029E890(s16); // extern
void func_80296D10(struct Actor *, f32 *, s16 *, f32 *, s32); /* extern */
s16 func_8029E890(f32 *, s16 *, f32 *, s16); /* extern */
extern u16 D_80150110;
extern ? D_8015F9B8;
s16 func_8029EC88(s32 arg0, s32 arg1, s32 arg2, s16 arg3) {
s32 sp24;
s32 temp_v1;
u16 temp_t0;
? *phi_a0;
s32 phi_v1;
s16 func_8029EC88(Vec3f pos, Vec3s rot, Vec3f velocity, s16 actorType) {
s32 index;
temp_t0 = D_80150110;
if (temp_t0 >= 0x64) {
return func_8029E890(arg3);
if (D_80150110 >= ACTOR_LIST_SIZE) {
return func_8029E890(pos, rot, velocity, actorType);
}
phi_a0 = &D_8015F9B8;
phi_v1 = 0;
loop_3:
if (phi_a0->unk2 == 0) {
D_80150110 = temp_t0 + 1;
sp24 = phi_v1;
func_80296D10(phi_a0, arg0, arg1, arg2, arg3);
return phi_v1;
for(index = 0; index < ACTOR_LIST_SIZE; index++){
if (gActorList[index].flags == 0) {
D_80150110++;
func_80296D10(&gActorList[index], pos, rot, velocity, actorType);
return index;
}
}
temp_v1 = phi_v1 + 1;
phi_a0 += 0x70;
phi_v1 = temp_v1;
if (temp_v1 == 0x64) {
return -1;
}
goto loop_3;
return -1;
}
#else
GLOBAL_ASM("asm/non_matchings/code_actors/func_8029EC88.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
@@ -4011,15 +4003,13 @@ GLOBAL_ASM("asm/non_matchings/code_actors/func_8029F2FC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 792017ad9d422c2467bd42686f383a5c41f41c75
? func_8008DABC(Player *, s8); /* extern */
//generated by m2c commit 685418adfeb3794409e47b45ac5cab60b17d23fd
? func_800C90F4(s32, s32); /* extern */
? func_800C98B8(f32 *, f32 *, ?, Player *); /* extern */
? func_802977B0(Player *); /* extern */
f32 sqrtf(f32, f32); /* extern */
extern s32 D_80162DF8;
s32 func_8029F408(Player *arg0, Player *arg1) {
s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
f32 sp1C;
Player *temp_a0;
Player *temp_a3;
@@ -4028,48 +4018,48 @@ s32 func_8029F408(Player *arg0, Player *arg1) {
f32 temp_f2;
f32 temp_f2_2;
temp_f2 = arg1->posY - arg0->pos[0];
temp_f2 = egg->pos[0] - player->pos[0];
if ((temp_f2 < 0.0f) && (temp_f2 < -60.0f)) {
return 0;
}
if (temp_f2 > 60.0f) {
return 0;
}
temp_f0 = arg1->rotX - arg0->pos[2];
temp_f0 = egg->pos[2] - player->pos[2];
if ((temp_f0 < 0.0f) && (temp_f0 < -60.0f)) {
return 0;
}
if (temp_f0 > 60.0f) {
return 0;
}
arg0 = arg0;
temp_f0_2 = sqrtf((temp_f2 * temp_f2) + (temp_f0 * temp_f0), 60.0f);
player = player;
temp_f0_2 = sqrtf((temp_f2 * temp_f2) + (temp_f0 * temp_f0));
temp_f2_2 = temp_f0_2;
temp_a0 = arg0;
temp_a0 = player;
if (temp_f0_2 > 60.0f) {
return 0;
}
arg0 = arg0;
player = player;
sp1C = temp_f2_2;
func_802977B0(temp_a0);
temp_a3 = arg0;
if ((temp_a3->posY - arg1->posZ) < 0.0f) {
temp_a3 = player;
if ((temp_a3->pos[1] - egg->pos[1]) < 0.0f) {
return 0;
}
if ((temp_a3->boundingBoxSize + (bitwise f32) arg1->unk_00C) < temp_f2_2) {
if ((temp_a3->boundingBoxSize + egg->boundingBoxSize) < temp_f2_2) {
return 0;
}
if ((temp_a3->unk_000 & 0x4000) != 0) {
if ((temp_a3->unk_0BC & 0x200) != 0) {
arg1->unk_002 = (s16) arg1->unk_002 | 0x400;
arg1->rotZ = 8.0f;
arg0 = temp_a3;
func_800C98B8(&temp_a3->posX, &temp_a3->unk_034, 0x19018010, temp_a3);
func_800C90F4(((s32) (arg0 - gPlayerOne) / 3544) & 0xFF, (arg0->characterId * 0x10) + 0x2900800D);
egg->flags |= 0x400;
egg->pathCenter[1] = 8.0f;
player = temp_a3;
func_800C98B8(temp_a3->pos, &temp_a3->unk_034, 0x19018010, temp_a3);
func_800C90F4(((s32) (player - gPlayerOne) / 3544) & 0xFF, (player->characterId * 0x10) + 0x2900800D);
} else {
arg0 = temp_a3;
player = temp_a3;
func_8008DABC(temp_a3, (s8) ((s32) (temp_a3 - gPlayerOne) / 3544));
if ((gModeSelection == 1) && ((arg0->unk_000 & 0x1000) == 0)) {
if ((gModeSelection == 1) && ((player->unk_000 & 0x1000) == 0)) {
D_80162DF8 = 1;
}
}
@@ -4402,19 +4392,19 @@ void func_8029FDC8(struct Actor *actor) {
switch (temp_v1) { /* switch 5; irregular */
case 2: /* switch 5 */
actor = temp_a2;
func_8000EE58((s32) (temp_a2 - D_8015F9B8) / 112);
func_8000EE58((s32) (temp_a2 - gActorList) / 112);
phi_a2_3 = actor;
/* fallthrough */
case 0: /* switch 5 */
case 1: /* switch 5 */
phi_a2_3->flags = -0x8000;
phi_a2_3->rot[1] = 0;
phi_a2_3->unk_04 = 0x003C;
phi_a2_3->someTimer = 0x003C;
phi_a2_3->state = 5;
phi_a2_3->velocity[1] = 3.0f;
return;
case 4: /* switch 5 */
func_802B02B4(temp_a2, 7, temp_a2, 7);
func_802B02B4(temp_a2, ACTOR_GREEN_SHELL, temp_a2, ACTOR_GREEN_SHELL);
return;
}
break;
@@ -4431,7 +4421,7 @@ void func_8029FDC8(struct Actor *actor) {
temp_a0 = temp_a2->pos;
actor = temp_a2;
func_800C9EF4(temp_a0, 0x51018008, temp_a2, 7);
func_8000EE58((s32) (actor - D_8015F9B8) / 112);
func_8000EE58((s32) (actor - gActorList) / 112);
phi_a2 = actor;
/* fallthrough */
case 0: /* switch 2 */
@@ -4456,19 +4446,19 @@ void func_8029FDC8(struct Actor *actor) {
case 8: /* switch 3 */
case 9: /* switch 3 */
actor = temp_a2;
func_8000EE58((s32) (temp_a2 - D_8015F9B8) / 112);
func_8000EE58((s32) (temp_a2 - gActorList) / 112);
phi_a2_2 = actor;
/* fallthrough */
case 0: /* switch 3 */
case 1: /* switch 3 */
phi_a2_2->flags = -0x8000;
phi_a2_2->rot[1] = 0;
phi_a2_2->unk_04 = 0x003C;
phi_a2_2->someTimer = 0x003C;
phi_a2_2->state = 7;
phi_a2_2->velocity[1] = 3.0f;
return;
case 6: /* switch 3 */
func_802B02B4(temp_a2, 8, temp_a2, 7);
func_802B02B4(temp_a2, ACTOR_RED_SHELL, temp_a2, ACTOR_GREEN_SHELL);
return;
}
}
@@ -4866,8 +4856,8 @@ void func_802A0D54(void) {
if (((phi_s1->unk_000 & 0x8000) != 0) && ((phi_s1->unk_0BC & 0x4000000) == 0)) {
func_802977E4(phi_s1);
for (j = 0; j < 100; j++) {
temp_a1 = &D_8015F9B8[j];
for (j = 0; j < ACTOR_LIST_SIZE; j++) {
temp_a1 = &gActorList[j];
if ((phi_s1->unk_0BC & 0x4000000) == 0) {
// temp_v0 = temp_a1->unk2;
@@ -4889,21 +4879,21 @@ void func_802A0E44(void) {
s32 i, j;
s32 pad;
for (i = D_8015F900; i < 99; i++) {
phi_s0 = &D_8015F9B8[i];
for (i = D_8015F900; i < (ACTOR_LIST_SIZE - 1); i++) {
phi_s0 = &gActorList[i];
if ((phi_s0->flags & 0x8000) == 0) { continue; }
if ((phi_s0->flags & 0x4000) == 0) { continue; }
switch(phi_s0->type) {
case 6:
case 7:
case 8:
case 42:
case 13:
case ACTOR_BANANA:
case ACTOR_GREEN_SHELL:
case ACTOR_RED_SHELL:
case ACTOR_BLUE_SPINY_SHELL:
case ACTOR_FAKE_ITEM_BOX:
for (j = i + 1; j < 100; j++) {
temp_a1 = &D_8015F9B8[j];
for (j = i + 1; j < ACTOR_LIST_SIZE; j++) {
temp_a1 = &gActorList[j];
if ((phi_s0->flags & 0x8000) == 0) {continue;}
if ((phi_s0->flags & 0x4000) == 0) {continue;}
@@ -4913,18 +4903,18 @@ void func_802A0E44(void) {
switch(temp_a1->type) {
case ACTOR_BANANA:
if (phi_s0->type == 6) { continue; }
if (phi_s0->type == ACTOR_BANANA) { continue; }
func_802A0350(phi_s0, temp_a1);
break;
case ACTOR_GREEN_SHELL:
if (phi_s0->type == 7) {
if (phi_s0->type == ACTOR_GREEN_SHELL) {
if (phi_s0->rot[2] == temp_a1->rot[2]) { continue; }
}
func_802A0350(phi_s0, temp_a1);
break;
case ACTOR_RED_SHELL:
if (phi_s0->type == 8) {
if (phi_s0->type == ACTOR_RED_SHELL) {
if (phi_s0->rot[2] == temp_a1->rot[2]) { continue; }
}
func_802A0350(phi_s0, temp_a1);
@@ -4945,13 +4935,12 @@ f32 func_802ABEAC(UnkActorInner*, Vec3f);
extern f32 D_802B99CC;
void func_802A1064(struct FakeItemBox *fake_item_box) {
if (fake_item_box - (struct FakeItemBox*)D_8015F9B8 > 100u) { return; }
if ((fake_item_box->flags & 0x8000) == 0) { return; }
if (fake_item_box->type == ACTOR_FAKE_ITEM_BOX) {
fake_item_box->state = 1;
fake_item_box->targetY = func_802ABEAC(&fake_item_box->unk30, fake_item_box->pos) + D_802B99CC;
fake_item_box->someTimer = 100;
if (fake_item_box - (struct FakeItemBox*)gActorList <= (u32)ACTOR_LIST_SIZE) {
if (((fake_item_box->flags & 0x8000) != 0) && (fake_item_box->type == ACTOR_FAKE_ITEM_BOX)) {
fake_item_box->state = 1;
fake_item_box->targetY = func_802ABEAC(&fake_item_box->unk30, fake_item_box->pos) + D_802B99CC;
fake_item_box->someTimer = 100;
}
}
}
@@ -5058,7 +5047,7 @@ void func_802A14BC(f32 arg0, f32 arg1, f32 arg2) {
sp34[1] = arg1;
sp34[2] = arg2;
temp_a0 = func_8029EC88(sp34, sp20, sp28, 43);
D_802BA05C = &D_8015F9B8[temp_a0];
D_802BA05C = &gActorList[temp_a0];
}
}
@@ -5915,8 +5904,8 @@ void func_802A2F34(struct UnkStruct_800DC5EC *arg0) {
s32 i;
D_8015F8DC = 0;
for (i = 0; i < 100; i++) {
phi_s0 = &D_8015F9B8[i];
for (i = 0; i < ACTOR_LIST_SIZE; i++) {
phi_s0 = &gActorList[i];
if (phi_s0->flags == 0) {
continue;
@@ -6003,8 +5992,8 @@ void func_802A3008(struct UnkStruct_800DC5EC *arg0) {
}
D_8015F8E0 = 0;
for (i = 0; i < 100; i++) {
phi_s0 = &D_8015F9B8[i];
for (i = 0; i < ACTOR_LIST_SIZE; i++) {
phi_s0 = &gActorList[i];
if (phi_s0->flags == 0) {
continue;
@@ -6124,9 +6113,9 @@ void func_802A3008(struct UnkStruct_800DC5EC *arg0) {
void update_simple_objects(void) {
struct Actor *phi_s0;
s32 i;
for (i = 0; i < 100; i++) {
for (i = 0; i < ACTOR_LIST_SIZE; i++) {
phi_s0 = &D_8015F9B8[i];
phi_s0 = &gActorList[i];
if (phi_s0->flags == 0) {
continue;
}
+82 -84
View File
@@ -21,38 +21,36 @@ void func_802B0210(UnkActorInner *arg0, UnkActorInner *arg1) {
vec3f_copy(arg1->unk60, arg0->unk60);
}
extern struct Actor D_8015F9B8[];
extern struct Actor gActorList[];
void func_802B02B4(struct Actor *arg0, s32 arg1) {
s32 temp_f6;
struct Actor *temp_v0 = &D_8015F9B8[arg0->unk_04];
void func_802B02B4(struct ShellActor *shell, s32 shellType) {
struct TripleShellParent *parent = &gActorList[shell->parentIndex];
temp_v0->unk_04--;
parent->shellsAvailable--;
switch((s16)arg0->unk_08) {
switch((s16)shell->shellId) {
case 0:
temp_v0->velocity[0] = -1.0f;
parent->shellIndices[0] = -1.0f;
break;
case 1:
temp_v0->velocity[1] = -1.0f;
parent->shellIndices[1] = -1.0f;
break;
case 2:
temp_v0->velocity[2] = -1.0f;
parent->shellIndices[2] = -1.0f;
break;
}
arg0->flags = 0x8000; // bitflag
arg0->rot[1] = 0;
arg0->velocity[1] = 3.0f;
arg0->unk_04 = 60;
switch(arg1) {
case 7:
arg0->state = 5;
shell->flags = 0x8000; // bitflag
shell->rotAngle = 0;
shell->velocity[1] = 3.0f;
shell->someTimer = 60;
switch(shellType) {
case ACTOR_GREEN_SHELL:
shell->state = 5;
break;
case 8:
arg0->state = 7;
case ACTOR_RED_SHELL:
shell->state = 7;
break;
}
}
@@ -87,7 +85,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B039C.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_802B039C(void *); // extern
extern ? D_8015F9B8;
extern ? gActorList;
void func_802B0464(s16 arg0) {
s16 temp_s0;
@@ -97,7 +95,7 @@ void func_802B0464(s16 arg0) {
phi_s0 = arg0;
if (arg0 != -1) {
do {
temp_a0 = &D_8015F9B8 + (phi_s0 * 0x70);
temp_a0 = &gActorList + (phi_s0 * 0x70);
func_802B039C(temp_a0);
temp_s0 = temp_a0->unk14;
phi_s0 = temp_s0;
@@ -111,7 +109,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B0464.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_802B039C(void *); // extern
extern ? D_8015F9B8;
extern ? gActorList;
void func_802B04E8(s32 arg0, s16 arg1) {
s16 temp_s0;
@@ -121,7 +119,7 @@ void func_802B04E8(s32 arg0, s16 arg1) {
phi_s0 = arg1;
if (arg1 != -1) {
do {
temp_a0 = &D_8015F9B8 + (phi_s0 * 0x70);
temp_a0 = &gActorList + (phi_s0 * 0x70);
func_802B039C(temp_a0);
temp_s0 = temp_a0->unk12;
phi_s0 = temp_s0;
@@ -137,7 +135,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B04E8.s")
? func_800C9060(s32, ?); // extern
? func_802B0464(s16); // extern
? func_802B04E8(void *, s16); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern ? gPlayers;
void func_802B0570(void *arg0) {
@@ -153,7 +151,7 @@ void func_802B0570(void *arg0) {
arg0->unk2 = -0x8000;
arg0->unk_04 = 0x3C;
arg0->unk6 = 5;
temp_v0_2 = (arg0->unk_08 * 0x70) + &D_8015F9B8;
temp_v0_2 = (arg0->unk_08 * 0x70) + &gActorList;
arg0->unk28 = 3.0f;
temp_v0_2->unk12 = -1;
temp_v0_2->unk14 = -1;
@@ -186,35 +184,35 @@ void func_802B0648(struct BananaBunchParent *banana_bunch) {
if (temp_v0 != -1) {
temp_lo = temp_v0 * 0x70;
banana_bunch->bananaIndices[4] = -1;
phi_v1 = D_8015F9B8 + temp_lo;
phi_v1 = gActorList + temp_lo;
goto block_10;
}
temp_v0_2 = banana_bunch->bananaIndices[3];
if (temp_v0_2 != -1) {
temp_lo_2 = temp_v0_2 * 0x70;
banana_bunch->bananaIndices[3] = -1;
phi_v1 = D_8015F9B8 + temp_lo_2;
phi_v1 = gActorList + temp_lo_2;
goto block_10;
}
temp_v0_3 = banana_bunch->bananaIndices[2];
if (temp_v0_3 != -1) {
temp_lo_3 = temp_v0_3 * 0x70;
banana_bunch->bananaIndices[2] = -1;
phi_v1 = D_8015F9B8 + temp_lo_3;
phi_v1 = gActorList + temp_lo_3;
goto block_10;
}
temp_v0_4 = banana_bunch->bananaIndices[1];
if (temp_v0_4 != -1) {
temp_lo_4 = temp_v0_4 * 0x70;
banana_bunch->bananaIndices[1] = -1;
phi_v1 = D_8015F9B8 + temp_lo_4;
phi_v1 = gActorList + temp_lo_4;
goto block_10;
}
temp_v0_5 = banana_bunch->bananaIndices[0];
if (temp_v0_5 != -1) {
temp_lo_5 = temp_v0_5 * 0x70;
banana_bunch->bananaIndices[0] = -1;
phi_v1 = D_8015F9B8 + temp_lo_5;
phi_v1 = gActorList + temp_lo_5;
block_10:
temp_v0_6 = phi_v1->unk12;
phi_v1->unk6 = 1;
@@ -223,7 +221,7 @@ block_10:
phi_v1->unk2C = 0.0f;
phi_v1->unk28 = 1.5f;
if (temp_v0_6 != -1) {
(D_8015F9B8 + (temp_v0_6 * 0x70))->unk14 = -1;
(gActorList + (temp_v0_6 * 0x70))->unk14 = -1;
}
}
}
@@ -261,41 +259,41 @@ void func_802B0788(s16 arg0, struct BananaBunchParent *banana_bunch, Player *pla
if (temp_a3 != -1) {
temp_lo = temp_a3 * 0x70;
banana_bunch->bananaIndices[4] = -1;
phi_v0 = D_8015F9B8 + temp_lo;
phi_v0 = gActorList + temp_lo;
goto block_10;
}
temp_a0 = banana_bunch->bananaIndices[3];
if (temp_a0 != -1) {
temp_lo_2 = temp_a0 * 0x70;
banana_bunch->bananaIndices[3] = -1;
phi_v0 = D_8015F9B8 + temp_lo_2;
phi_v0 = gActorList + temp_lo_2;
goto block_10;
}
temp_a0_2 = banana_bunch->bananaIndices[2];
if (temp_a0_2 != -1) {
temp_lo_3 = temp_a0_2 * 0x70;
banana_bunch->bananaIndices[2] = -1;
phi_v0 = D_8015F9B8 + temp_lo_3;
phi_v0 = gActorList + temp_lo_3;
goto block_10;
}
temp_a0_3 = banana_bunch->bananaIndices[1];
if (temp_a0_3 != -1) {
temp_lo_4 = temp_a0_3 * 0x70;
banana_bunch->bananaIndices[1] = -1;
phi_v0 = D_8015F9B8 + temp_lo_4;
phi_v0 = gActorList + temp_lo_4;
goto block_10;
}
temp_a0_4 = banana_bunch->bananaIndices[0];
if (temp_a0_4 != -1) {
temp_lo_5 = temp_a0_4 * 0x70;
banana_bunch->bananaIndices[0] = -1;
phi_v0 = D_8015F9B8 + temp_lo_5;
phi_v0 = gActorList + temp_lo_5;
block_10:
temp_a1 = phi_v0->unk12;
phi_v0->unk6 = 1;
phi_v0->unk_04 = 0x001E;
if (temp_a1 != -1) {
(D_8015F9B8 + (temp_a1 * 0x70))->unk14 = -1;
(gActorList + (temp_a1 * 0x70))->unk14 = -1;
}
temp_f2 = player->unk_094;
if (temp_f2 < 2.0f) {
@@ -323,7 +321,7 @@ s32 func_802B09C0(s16 bananaId) {
if (bananaId == -1) {
return 0;
}
banana = (struct BananaActor*) &D_8015F9B8[bananaId];
banana = (struct BananaActor*) &gActorList[bananaId];
if (banana->state == 2) {
return 1;
}
@@ -415,15 +413,15 @@ void update_obj_banana_bunch(struct BananaBunchParent *banana_bunch) {
break;
case 5:
banana_bunch->state = 6;
temp_a0 = &D_8015F9B8[banana_bunch->bananaIndices[0]];
temp_a0 = &gActorList[banana_bunch->bananaIndices[0]];
temp_a0->flags |= 0x5000;
temp_a1 = &D_8015F9B8[banana_bunch->bananaIndices[1]];
temp_a1 = &gActorList[banana_bunch->bananaIndices[1]];
temp_a1->flags |= 0x5000;
temp_a2 = &D_8015F9B8[banana_bunch->bananaIndices[2]];
temp_a2 = &gActorList[banana_bunch->bananaIndices[2]];
temp_a2->flags |= 0x5000;
temp_a3_2 = &D_8015F9B8[banana_bunch->bananaIndices[3]];
temp_a3_2 = &gActorList[banana_bunch->bananaIndices[3]];
temp_a3_2->flags |= 0x5000;
temp_t0 = &D_8015F9B8[banana_bunch->bananaIndices[4]];
temp_t0 = &gActorList[banana_bunch->bananaIndices[4]];
temp_t0->flags |= 0x5000;
return;
case 6:
@@ -490,7 +488,7 @@ s32 func_802B0E14(s16 arg0) {
if (arg0 < 0) {
return 0;
}
temp = (struct ShellActor*) &D_8015F9B8[arg0];
temp = (struct ShellActor*) &gActorList[arg0];
if (temp->type == 7) {
if (temp->state == 4) {
return 1;
@@ -612,11 +610,11 @@ void update_obj_triple_shell(struct TripleShellParent *actor, s16 arg1) {
break;
case 3:
actor->state = 4;
temp_v0_2 = &D_8015F9B8[(s16) (s32) actor->shellIndices[0]];
temp_v0_2 = &gActorList[(s16) (s32) actor->shellIndices[0]];
temp_v0_2->flags |= 0x4000;
temp_v0_3 = &D_8015F9B8[(s16) (s32) actor->shellIndices[1]];
temp_v0_3 = &gActorList[(s16) (s32) actor->shellIndices[1]];
temp_v0_3->flags |= 0x4000;
temp_v0_4 = &D_8015F9B8[(s16) (s32) actor->shellIndices[2]];
temp_v0_4 = &gActorList[(s16) (s32) actor->shellIndices[2]];
temp_v0_4->flags |= 0x4000;
return;
case 4:
@@ -655,7 +653,7 @@ void update_obj_triple_shell(struct TripleShellParent *actor, s16 arg1) {
}
if (actor->unk_08 > 0.0f) {
temp_f0 = actor->shellIndices[0];
if ((temp_f0 > 0.0f) && ((temp_v0_6 = &D_8015F9B8[(s16) (s32) temp_f0], temp_v1_2 = temp_v0_6->rotAngle, temp_a0 = &sp38, ((temp_v1_2 < 0x38E) != 0)) || (temp_v1_2 >= -0x38D))) {
if ((temp_f0 > 0.0f) && ((temp_v0_6 = &gActorList[(s16) (s32) temp_f0], temp_v1_2 = temp_v0_6->rotAngle, temp_a0 = &sp38, ((temp_v1_2 < 0x38E) != 0)) || (temp_v1_2 >= -0x38D))) {
temp_v1_3 = &gPlayers[temp_t0];
sp38 = 0.0f;
sp3C = 0.0f;
@@ -681,7 +679,7 @@ void update_obj_triple_shell(struct TripleShellParent *actor, s16 arg1) {
return;
}
temp_f0_2 = actor->shellIndices[1];
if ((temp_f0_2 > 0.0f) && ((temp_v0_7 = &D_8015F9B8[(s16) (s32) temp_f0_2], temp_v1_4 = temp_v0_7->rotAngle, ((temp_v1_4 < 0xAA1) != 0)) || (temp_v1_4 >= 0x38F))) {
if ((temp_f0_2 > 0.0f) && ((temp_v0_7 = &gActorList[(s16) (s32) temp_f0_2], temp_v1_4 = temp_v0_7->rotAngle, ((temp_v1_4 < 0xAA1) != 0)) || (temp_v1_4 >= 0x38F))) {
temp_v1_5 = &gPlayers[temp_t0];
sp38 = 0.0f;
sp3C = 0.0f;
@@ -707,7 +705,7 @@ void update_obj_triple_shell(struct TripleShellParent *actor, s16 arg1) {
return;
}
temp_f0_3 = actor->shellIndices[2];
if ((temp_f0_3 > 0.0f) && ((temp_v0_8 = &D_8015F9B8[(s16) (s32) temp_f0_3], temp_v1_6 = temp_v0_8->rotAngle, temp_a0_2 = &sp38, ((temp_v1_6 < -0x38E) != 0)) || (temp_v1_6 >= -0x71B))) {
if ((temp_f0_3 > 0.0f) && ((temp_v0_8 = &gActorList[(s16) (s32) temp_f0_3], temp_v1_6 = temp_v0_8->rotAngle, temp_a0_2 = &sp38, ((temp_v1_6 < -0x38E) != 0)) || (temp_v1_6 >= -0x71B))) {
temp_v1_7 = &gPlayers[temp_t0];
sp38 = 0.0f;
sp3C = 0.0f;
@@ -742,7 +740,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/update_obj_triple_shell.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_8029EC88(? *, ? *, ? *, ?); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_802B9140;
extern ? D_802B914C;
extern ? D_802B9154;
@@ -766,7 +764,7 @@ s16 func_802B17F4(void *arg0) {
if (temp_v0 < 0) {
return temp_v0;
}
temp_v1 = (temp_v0 * 0x70) + &D_8015F9B8;
temp_v1 = (temp_v0 * 0x70) + &gActorList;
temp_v1->unk6 = 0;
temp_v1->rot = (arg0 - gPlayerOne) / 0xDD8;
arg0->unkC = arg0->unkC | 0x40000;
@@ -779,7 +777,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B17F4.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_8029EC88(? *, ? *, ? *, s16); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_802B9160;
extern ? D_802B916C;
extern ? D_802B9174;
@@ -803,7 +801,7 @@ s16 func_802B18E4(s32 arg0, s16 arg1) {
if (temp_v0 < 0) {
return temp_v0;
}
temp_v1 = (temp_v0 * 0x70) + &D_8015F9B8;
temp_v1 = (temp_v0 * 0x70) + &gActorList;
temp_v1->unk6 = 0;
temp_v1->rot = 0x5B0;
temp_v1->unk12 = -0x8000;
@@ -860,7 +858,7 @@ s32 func_802B19EC(struct TripleShellParent *arg0, Player *player, s16 arg2, u16
}
temp_t3 = temp_v0 * 7;
sp40 = player->pos[0];
temp_s0 = (temp_t3 * 0x10) + D_8015F9B8;
temp_s0 = (temp_t3 * 0x10) + gActorList;
sp44 = player->pos[1];
sp48 = player->pos[2];
func_802AD950(temp_s0 + 0x30, temp_s0->unkC + 1.0f, temp_s0->pos, temp_s0->unk1C, temp_s0->unk20, sp40, sp44, sp48);
@@ -877,9 +875,9 @@ s32 func_802B19EC(struct TripleShellParent *arg0, Player *player, s16 arg2, u16
temp_s0->rot = 0;
temp_s0->unk12 = -0x8000;
temp_s0->unk14 = (s16) ((s32) (player - gPlayerOne) / 3544);
temp_s0->unk_04 = (s16) ((s32) (arg0 - D_8015F9B8) / 112);
temp_s0->unk_04 = (s16) ((s32) (arg0 - gActorList) / 112);
temp_s0->unk_08 = (f32) arg3;
arg0->shellIndices[arg3] = (f32) ((s32) (temp_s0 - D_8015F9B8) / 112);
arg0->shellIndices[arg3] = (f32) ((s32) (temp_s0 - gActorList) / 112);
return 1;
}
#else
@@ -892,7 +890,7 @@ s16 func_8029EC88(f32 *, ? *, ? *, ?); // extern
? func_802AD950(void *, f32, s32, s32, f32, f32, f32, f32); // extern
? func_802B4E30(void *); // extern
? func_802B63B8(f32 *, s32); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_802B9194;
extern ? D_802B91A0;
@@ -929,7 +927,7 @@ s16 func_802B1C9C(void *arg0) {
}
temp_t8 = temp_v1 * 7;
sp40 = arg0->unk14;
temp_s0 = (temp_t8 * 0x10) + &D_8015F9B8;
temp_s0 = (temp_t8 * 0x10) + &gActorList;
sp44 = arg0->pos;
sp48 = arg0->unk1C;
sp3E = temp_v1;
@@ -951,7 +949,7 @@ s16 func_8029EC88(f32 *, ? *, ? *, ?); // extern
? func_802AD950(void *, f32, s32, s32, f32, f32, f32, f32); // extern
? func_802B4E30(void *); // extern
? func_802B63B8(f32 *, s32); // extern
extern ? D_8015F9B8;
extern ? gActorList;
extern ? D_802B91A8;
extern ? D_802B91B4;
@@ -988,7 +986,7 @@ s16 func_802B1E48(void *arg0) {
}
temp_t8 = temp_v1 * 7;
sp40 = arg0->unk14;
temp_s0 = (temp_t8 * 0x10) + &D_8015F9B8;
temp_s0 = (temp_t8 * 0x10) + &gActorList;
sp44 = arg0->pos;
sp48 = arg0->unk1C;
sp3E = temp_v1;
@@ -1007,10 +1005,10 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B1E48.s")
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_802B1E48(); // extern
extern ? D_8015F9B8;
extern ? gActorList;
void func_802B1FFC(void) {
*(&D_8015F9B8 + (func_802B1E48() * 0x70)) = 0x2A;
*(&gActorList + (func_802B1E48() * 0x70)) = 0x2A;
}
#else
GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B1FFC.s")
@@ -1236,7 +1234,7 @@ void update_obj_banana(struct BananaActor *banana) {
func_802B4E30(banana);
return;
case 3:
temp_v0_3 = &D_8015F9B8[banana->elderIndex];
temp_v0_3 = &gActorList[banana->elderIndex];
temp_f2_5 = temp_v0_3->pos[0] - banana->pos[0];
temp_f14_4 = temp_v0_3->pos[1] - banana->pos[1];
sp48 = temp_f2_5;
@@ -1337,14 +1335,14 @@ void func_802B2914(struct BananaBunchParent *banana_bunch, Player *player, s16 b
temp_lo = temp_t6 * 0x70;
sp4C = player->pos[0];
sp50 = player->pos[1];
temp_s0 = D_8015F9B8 + temp_lo;
temp_s0 = gActorList + temp_lo;
sp54 = player->pos[2];
sp6E = temp_t6;
func_802AD950(temp_s0 + 0x30, temp_s0->unkC + 1.0f, temp_s0->pos, temp_s0->unk1C, temp_s0->unk20, sp4C, sp50, sp54);
func_802B4E30(temp_s0);
temp_s0->unk2 = -0x7000;
temp_s0->rot = (s16) ((s32) (player - gPlayerOne) / 3544);
temp_s0->unk_08 = (s16) ((s32) (banana_bunch - D_8015F9B8) / 112);
temp_s0->unk_08 = (s16) ((s32) (banana_bunch - gActorList) / 112);
temp_s0->unk14 = -1;
temp_s0->unk_04 = 0x0014;
temp_s0->unkA = bananaId;
@@ -1358,7 +1356,7 @@ void func_802B2914(struct BananaBunchParent *banana_bunch, Player *player, s16 b
temp_s0->unk6 = 3;
banana_bunch->bananaIndices[1] = sp6E;
temp_s0->unk12 = (s16) banana_bunch->bananaIndices[0];
phi_v0 = &D_8015F9B8[banana_bunch->bananaIndices[0]];
phi_v0 = &gActorList[banana_bunch->bananaIndices[0]];
block_8:
phi_v0->youngerIndex = sp6E;
break;
@@ -1366,19 +1364,19 @@ block_8:
temp_s0->unk6 = 3;
banana_bunch->bananaIndices[2] = sp6E;
temp_s0->unk12 = (s16) banana_bunch->bananaIndices[1];
phi_v0 = &D_8015F9B8[banana_bunch->bananaIndices[1]];
phi_v0 = &gActorList[banana_bunch->bananaIndices[1]];
goto block_8;
case 3:
temp_s0->unk6 = 3;
banana_bunch->bananaIndices[3] = sp6E;
temp_s0->unk12 = (s16) banana_bunch->bananaIndices[2];
phi_v0 = &D_8015F9B8[banana_bunch->bananaIndices[2]];
phi_v0 = &gActorList[banana_bunch->bananaIndices[2]];
goto block_8;
case 4:
temp_s0->unk6 = 3;
banana_bunch->bananaIndices[4] = sp6E;
temp_s0->unk12 = (s16) banana_bunch->bananaIndices[3];
phi_v0 = &D_8015F9B8[banana_bunch->bananaIndices[3]];
phi_v0 = &gActorList[banana_bunch->bananaIndices[3]];
goto block_8;
}
if ((player->unk_000 & 0x4000) != 0) {
@@ -1394,7 +1392,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B2914.s")
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_8029EC88(f32 *, s16 *, f32 *, ?); // extern
? func_802B63B8(f32 *, void *); // extern
extern ? D_8015F9B8;
extern ? gActorList;
s16 func_802B2C40(void *arg0) {
f32 sp40;
@@ -1432,7 +1430,7 @@ s16 func_802B2C40(void *arg0) {
if (temp_v0 < 0) {
return temp_v0;
}
temp_v1 = (temp_v0 * 0x70) + &D_8015F9B8;
temp_v1 = (temp_v0 * 0x70) + &gActorList;
temp_v1->unk6 = 0;
temp_v1->velocity = (arg0 - gPlayerOne) / 0xDD8;
arg0->unkC = arg0->unkC | 0x40000;
@@ -1446,7 +1444,7 @@ GLOBAL_ASM("asm/non_matchings/code_802B0210/func_802B2C40.s")
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s16 func_8029EC88(f32 *, s16 *, f32 *, ?); // extern
? func_802B63B8(f32 *, void *); // extern
extern ? D_8015F9B8;
extern ? gActorList;
s16 func_802B2D70(void *arg0) {
f32 sp44;
@@ -1491,7 +1489,7 @@ s16 func_802B2D70(void *arg0) {
if (temp_v0 < 0) {
return temp_v0;
}
temp_v1 = (temp_v0 * 0x70) + &D_8015F9B8;
temp_v1 = (temp_v0 * 0x70) + &gActorList;
temp_v1->rot = temp_t0;
temp_v1->unk6 = 0;
temp_v1->unk_04 = 0x14;
@@ -1779,7 +1777,7 @@ void update_obj_green_shell(struct ShellActor *shell) {
shell->velocity[2] = sp74;
func_800C9060(shell->unk15, 0x19008004);
func_800C90F4(shell->unk15, (temp_s1->characterId * 0x10) + 0x29008000);
func_8000EDC8((s32) (shell - D_8015F9B8) / 112);
func_8000EDC8((s32) (shell - gActorList) / 112);
return;
}
shell->state = 1;
@@ -1803,7 +1801,7 @@ void update_obj_green_shell(struct ShellActor *shell) {
shell->parentIndex = 0x001E;
func_800C9060(shell->unk15, 0x19008004);
func_800C90F4(shell->unk15, (temp_s1_2->characterId * 0x10) + 0x29008000);
func_8000EDC8((s32) (shell - D_8015F9B8) / 112);
func_8000EDC8((s32) (shell - gActorList) / 112);
}
} else {
shell->rotAngle = temp_v0_2 + 0xE38;
@@ -1812,7 +1810,7 @@ void update_obj_green_shell(struct ShellActor *shell) {
shell->parentIndex = 0x001E;
func_800C9060(shell->unk15, 0x19008004);
func_800C90F4(shell->unk15, (temp_s1_2->characterId * 0x10) + 0x29008000);
func_8000EDC8((s32) (shell - D_8015F9B8) / 112);
func_8000EDC8((s32) (shell - gActorList) / 112);
}
}
if (shell->state == 2) {
@@ -1869,7 +1867,7 @@ void update_obj_green_shell(struct ShellActor *shell) {
}
break;
case 4:
temp_v0_4 = &D_8015F9B8[shell->parentIndex];
temp_v0_4 = &gActorList[shell->parentIndex];
temp_s1_4 = &gPlayers[shell->playerId];
if (temp_v0_4->type != 0x0015) {
func_8029FDC8((bitwise f32) shell);
@@ -2300,9 +2298,9 @@ block_16:
func_800C9060(shell->unk15, 0x19008004);
func_800C90F4(shell->unk15, (temp_s1_2->characterId * 0x10) + 0x29008000);
if (sp56 == 8) {
func_8000ED80((s32) (shell - D_8015F9B8) / 112);
func_8000ED80((s32) (shell - gActorList) / 112);
} else {
func_8000EE10((s32) (shell - D_8015F9B8) / 112);
func_8000EE10((s32) (shell - gActorList) / 112);
func_800C9D80(shell->pos, shell->velocity, 0x51018008);
}
}
@@ -2313,9 +2311,9 @@ block_16:
func_800C9060(shell->unk15, 0x19008004);
func_800C90F4(shell->unk15, (temp_s1_2->characterId * 0x10) + 0x29008000);
if (sp56 == 8) {
func_8000ED80((s32) (shell - D_8015F9B8) / 112);
func_8000ED80((s32) (shell - gActorList) / 112);
} else {
func_8000EE10((s32) (shell - D_8015F9B8) / 112);
func_8000EE10((s32) (shell - gActorList) / 112);
func_800C9D80(shell->pos, shell->velocity, 0x51018008);
}
}
@@ -2443,7 +2441,7 @@ block_16:
}
break;
case 6:
temp_v0_7 = &D_8015F9B8[shell->parentIndex];
temp_v0_7 = &gActorList[shell->parentIndex];
temp_s1_5 = &gPlayers[shell->playerId];
if (temp_v0_7->type != 0x0016) {
func_8029FDC8((bitwise f32) shell);