func_802401A0_DDC9D0 & save/load tattle flags (#915)

* func_802401A0_DDC9D0

* func_802428C8_A2CB08

* cleanup

* wip

* warning

* save/load_tattle_flags

* PR comments

* idnex
This commit is contained in:
Ethan Roseman 2023-01-19 10:33:52 +09:00 committed by GitHub
parent 0e2d3b96d4
commit 0cee144b18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 856 additions and 622 deletions

View File

@ -933,7 +933,7 @@ typedef struct BattleStatus {
/* 0x194 */ u8 statusChance;
/* 0x195 */ s8 statusDuration;
/* 0x196 */ char unk_196;
/* 0x197 */ u8 targetHomeIndex; /* some sort of home idnex used for target list construction */
/* 0x197 */ s8 targetHomeIndex; /* some sort of home index used for target list construction */
/* 0x198 */ s8 powerBounceCounter;
/* 0x199 */ s8 wasStatusInflicted; /* during last attack */
/* 0x19A */ u8 unk_19A;

View File

@ -1397,6 +1397,7 @@ enum SoundIDs {
SOUND_80000010 = 0x80000010,
SOUND_80000011 = 0x80000011,
SOUND_80000015 = 0x80000015,
SOUND_80000016 = 0x80000016,
SOUND_80000017 = 0x80000017,
SOUND_80000018 = 0x80000018,
SOUND_80000019 = 0x80000019,
@ -4337,7 +4338,7 @@ enum BattleSubStates {
BTL_SUBSTATE_CHANGE_PARTNER_EXEC_PHASE = 5,
BTL_SUBSTATE_CHANGE_PARTNER_AWAIT_PHASE = 6,
BTL_SUBSTATE_CHANGE_PARTNER_DONE = 7,
// BATTLE_STATE_END_TRAINING_BATTLE
BTL_SUBSTATE_END_TRAINING_INIT = 0,
BTL_SUBSTATE_END_TRAINING_AWAIT_RECOVERING = 10,

View File

@ -13,21 +13,101 @@ BSS ActorPart* gSpeakingActorPart;
u8* gBattleDmaDest = NULL;
u8 D_80284004[] = { 59, 60, 61, 62, 63, 64, 65, 66, 67, 255 };
u8 D_80284010[] = { 126, 127, 128, 129, 130, 131, 132, 133, 134, 255 };
u8 D_8028401C[] = { 189, 190, 255 };
u8 D_80284020[] = { 170, 171, 255 };
u8 D_80284024[] = { 195, 197, 255 };
u8 D_80284028[] = { 77, 79, 78, 80, 255 };
u8 D_80284030[] = { 81, 82, 255};
u8 D_80284034[] = { 83, 84, 255 };
u8 D_80284038[] = { 87, 88, 255 };
u8 D_8028403C[] = { 85, 86, 255 };
u8 D_80284040[] = { 89, 90, 255 };
u8 ActorTypesGhost[] = {
ACTOR_TYPE_DUPLIGHOST,
ACTOR_TYPE_GHOST_GOOMBARIO,
ACTOR_TYPE_GHOST_KOOPER,
ACTOR_TYPE_GHOST_BOMBETTE,
ACTOR_TYPE_GHOST_PARAKARRY,
ACTOR_TYPE_GHOST_BOW,
ACTOR_TYPE_GHOST_WATT,
ACTOR_TYPE_GHOST_SUSHIE,
ACTOR_TYPE_GHOST_LAKILESTER,
0xFF
};
u8* D_80284044[] = {
D_80284004, D_80284010, D_8028401C, D_80284020, D_80284024, D_80284028, D_80284030, D_80284034, D_80284038,
D_8028403C, D_80284040, NULL,
u8 ActorTypesLee[] = {
ACTOR_TYPE_LEE,
ACTOR_TYPE_LEE_GOOMBARIO,
ACTOR_TYPE_LEE_KOOPER,
ACTOR_TYPE_LEE_BOMBETTE,
ACTOR_TYPE_LEE_PARAKARRY,
ACTOR_TYPE_LEE_BOW,
ACTOR_TYPE_LEE_WATT,
ACTOR_TYPE_LEE_SUSHIE,
ACTOR_TYPE_LEE_LAKILESTER,
0xFF
};
u8 ActorTypesCrystalKing[] = {
ACTOR_TYPE_CRYSTAL_KING,
ACTOR_TYPE_CRYSTAL_CLONE,
0xFF
};
u8 ActorTypesShyGuyBoss[] = {
ACTOR_TYPE_TOY_TANK,
ACTOR_TYPE_LIGHT_BULB,
0xFF
};
u8 ActorTypesBowser[] = {
ACTOR_TYPE_BOWSER_PHASE_2,
ACTOR_TYPE_BOWSER_PHASE_3,
0xFF
};
u8 ActorTypesMagikoopa[] = {
ACTOR_TYPE_MAGIKOOPA,
ACTOR_TYPE_MAGICLONE,
ACTOR_TYPE_FLYING_MAGIKOOPA,
ACTOR_TYPE_FLYING_MAGICLONE,
0xFF
};
u8 ActorTypesRedMagikoopa[] = {
ACTOR_TYPE_RED_MAGIKOOPA,
ACTOR_TYPE_FLYING_RED_MAGIKOOPA,
0xFF
};
u8 ActorTypesGreenMagikoopa[] = {
ACTOR_TYPE_GREEN_MAGIKOOPA,
ACTOR_TYPE_FLYING_GREEN_MAGIKOOPA,
0xFF
};
u8 ActorTypesGrayMagikoopa[] = {
ACTOR_TYPE_GRAY_MAGIKOOPA,
ACTOR_TYPE_FLYING_GRAY_MAGIKOOPA,
0xFF
};
u8 ActorTypesYellowMagikoopa[] = {
ACTOR_TYPE_YELLOW_MAGIKOOPA,
ACTOR_TYPE_FLYING_YELLOW_MAGIKOOPA,
0xFF
};
u8 ActorTypesWhiteMagikoopa[] = {
ACTOR_TYPE_WHITE_MAGIKOOPA,
ACTOR_TYPE_FLYING_WHITE_MAGIKOOPA,
0xFF
};
u8* ActorTypesLists[] = {
ActorTypesGhost,
ActorTypesLee,
ActorTypesCrystalKing,
ActorTypesShyGuyBoss,
ActorTypesBowser,
ActorTypesMagikoopa,
ActorTypesRedMagikoopa,
ActorTypesGreenMagikoopa,
ActorTypesGrayMagikoopa,
ActorTypesYellowMagikoopa,
ActorTypesWhiteMagikoopa,
NULL,
};
ApiStatus ActorSpeak(Evt* script, s32 isInitialCall) {
@ -246,8 +326,9 @@ ApiStatus LoadBattleDmaData(Evt* script, s32 isInitialCall) {
ApiStatus func_802536A8(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
Bytecode* args = script->ptrReadPos;
if (evt_get_variable(script, *script->ptrReadPos) != 0) {
if (evt_get_variable(script, *args++) != 0) {
battleStatus->unk_92 |= 1;
gOverrideFlags |= GLOBAL_OVERRIDES_80;
} else {
@ -261,7 +342,8 @@ ApiStatus func_802536A8(Evt* script, s32 isInitialCall) {
ApiStatus func_80253734(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
s32 val = evt_get_variable(script, *script->ptrReadPos);
Bytecode* args = script->ptrReadPos;
s32 val = evt_get_variable(script, *args++);
switch (val) {
case BTL_DARKNESS_MODE_0:
@ -442,9 +524,75 @@ s32 is_actortype_hpbar_visible(s32 actorType) {
return ((get_global_byte(idx + 365) | battleStatus->tattleFlags[idx]) >> (actorType - (idx * 8))) & 1;
}
INCLUDE_ASM(s32, "181810", save_tattle_flags);
void save_tattle_flags(s32 actorType) {
BattleStatus* battleStatus = &gBattleStatus;
u8* list;
s32 gb;
s32 i = 0;
s32 j;
s32 k;
INCLUDE_ASM(s32, "181810", load_tattle_flags);
while (TRUE) {
list = ActorTypesLists[i];
if (list == NULL) {
break;
}
for (j = 0; list[j] != 0xFF; j++) {
if (actorType == list[j]) {
for (k = 0; list[k] != 0xFF; k++) {
actorType = list[k];
gb = get_global_byte((actorType / 8) + 0x16D); // GameByte(0x16D) is GB_Tattles_00 (first tattle)
gb |= 1 << (actorType % 8);
set_global_byte((actorType / 8) + 0x16D, gb);
battleStatus->tattleFlags[actorType / 8] |= gb;
}
return;
}
}
i++;
}
gb = get_global_byte((actorType / 8) + 0x16D);
gb |= 1 << (actorType % 8);
set_global_byte((actorType / 8) + 0x16D, gb);
battleStatus->tattleFlags[actorType / 8] |= gb;
}
void load_tattle_flags(s32 actorType) {
BattleStatus* battleStatus = &gBattleStatus;
u8* list;
s32 gb;
s32 i = 0;
s32 j;
s32 k;
while (TRUE) {
list = ActorTypesLists[i];
if (list == NULL) {
break;
}
for (j = 0; list[j] != 0xFF; j++) {
if (actorType == list[j]) {
for (k = 0; list[k] != 0xFF; k++) {
actorType = list[k];
gb = get_global_byte((actorType / 8) + 0x16D); // GameByte(0x16D) is GB_Tattles_00 (first tattle)
gb |= 1 << (actorType % 8);
battleStatus->tattleFlags[actorType / 8] |= gb;
}
return;
}
}
i++;
}
gb = get_global_byte((actorType / 8) + 0x16D);
gb |= 1 << (actorType % 8);
battleStatus->tattleFlags[actorType / 8] |= gb;
}
ApiStatus func_80253FB0(Evt* script, s32 isInitialCall) {
gCurrentEncounter.battleOutcome = OUTCOME_ENEMY_FLED;

View File

@ -57,8 +57,380 @@ extern PartnerDMAData bPartnerDmaTable[];
s32 func_80265CE8(AnimID*, s32);
// WIP work from Unnunu + a permuter do-while I added
#ifdef NON_MATCHING
// TOOD remove gotos
void create_target_list(Actor* actor, s32 arg1) {
BattleStatus* battleStatus = &gBattleStatus;
Actor* playerActor = battleStatus->playerActor;
Actor* partnerActor = battleStatus->partnerActor;
s32 s5 = 0;
SelectableTarget* targetData = actor->targetData;
SelectableTarget* s0;
SelectableTarget* target;
Actor* targetActor;
ActorPart* targetPart;
s8* targetIndexList;
s32 numParts;
s32 i, j;
f32 f6, f8, f10;
f32 f2, f12, f14;
f32 f61;
u8 sp10;
f32 sp14;
s32 sp18 = FALSE;
s32 sp1C;
s32 fp;
s32 a02;
if (battleStatus->currentTargetListFlags & 0x80000000) {
actor->targetListLength = -1;
return;
}
if (battleStatus->currentTargetListFlags & 0x8) {
targetData->actorID = ACTOR_PLAYER;
targetData->partID = 1;
if (!arg1) {
targetData->pos.x = playerActor->currentPos.x + playerActor->size.x * 0.3 * playerActor->scalingFactor;
targetData->pos.y = playerActor->currentPos.y + playerActor->size.y * 0.9 * playerActor->scalingFactor;
targetData->pos.z = playerActor->currentPos.z;
} else {
targetData->pos.x = playerActor->homePos.x + playerActor->size.x * 0.3 * playerActor->scalingFactor;
targetData->pos.y = playerActor->homePos.y + playerActor->size.y * 0.9 * playerActor->scalingFactor;
targetData->pos.z = playerActor->homePos.z;
}
targetData->unk_10 = -100;
s5 += 1;
targetData++;
}
if ((battleStatus->currentTargetListFlags & 0x100) && partnerActor != NULL) {
targetData->actorID = ACTOR_PARTNER;
targetData->partID = 1;
if (!arg1) {
targetData->pos.x = partnerActor->currentPos.x + partnerActor->size.x * 0.1 * partnerActor->scalingFactor;
targetData->pos.y = partnerActor->currentPos.y + partnerActor->size.y * 0.8 * partnerActor->scalingFactor;
targetData->pos.z = partnerActor->currentPos.z;
} else {
targetData->pos.x = partnerActor->homePos.x + partnerActor->size.x * 0.1 * partnerActor->scalingFactor;
targetData->pos.y = partnerActor->homePos.y + partnerActor->size.y * 0.8 * partnerActor->scalingFactor;
targetData->pos.z = partnerActor->homePos.z;
}
targetData->unk_10 = -50;
s5 += 1;
targetData++;
}
for (i = 0; i < ARRAY_COUNT(battleStatus->enemyActors); i++) {
targetActor = battleStatus->enemyActors[i];
if (targetActor == NULL) {
continue;
}
if ((battleStatus->currentTargetListFlags & 0x100) || (battleStatus->currentTargetListFlags & 0x8)) {
break;
}
targetPart = targetActor->partsTable;
numParts = targetActor->numParts;
for (j = 0; j < numParts; targetPart = targetPart->nextPart, j++) {
if (!(targetPart->flags & 0x20000)) {
ActorPartBlueprint* partBlueprint = targetPart->staticData;
s8 partIndex;
if (!(targetPart->flags & 0x100000)) {
fp = !arg1; // TODO ??????
if (fp) {
f6 = targetActor->currentPos.x;
f8 = targetActor->currentPos.y;
f10 = targetActor->currentPos.z;
} else {
f6 = targetActor->homePos.x;
f8 = targetActor->homePos.y;
f10 = targetActor->homePos.z;
}
f6 += targetPart->partOffset.x * targetActor->scalingFactor;
if (!(targetActor->flags & 0x800)) {
f8 += targetPart->partOffset.y * targetActor->scalingFactor;
}
f10 += targetPart->partOffset.z * targetActor->scalingFactor;
f12 = f6;
f6 = targetActor->scalingFactor;
f6 = f12 + targetPart->targetOffset.x * f6;
f2 = f8;
f14 = f10 + 5.0f;
if (!(targetActor->flags & 0x800)) {
f8 = f2 + targetPart->targetOffset.y * targetActor->scalingFactor;
}
} else {
f8 = targetPart->absolutePosition.y;
f10 = targetPart->absolutePosition.z;
f12 = targetPart->absolutePosition.x;
f2 = f8;
f14 = f10 + 5.0f;
f6 = f12 + targetPart->targetOffset.x;
if (!(targetActor->flags & 0x800)) {
f8 = f2 + targetPart->targetOffset.y;
}
}
targetData->actorID = ACTOR_CLASS_ENEMY | i;
partIndex = partBlueprint->index;
targetData->pos.x = f6;
targetData->pos.y = f8;
targetData->pos.z = f10;
targetData->unk_10 = 0;
targetData->partID = partIndex;
if ((targetActor->flags & 0x4000) && !(targetActor->flags & 0x10)) {
targetData->unk_10 = 100;
}
targetData->unk_10 += targetPart->unk_70;
targetData->unk_0A = f12 + targetData->unk_10 * 100;
targetData->unk_0C = f2;
targetData->unk_0E = f14;
if (targetData->unk_0C < 40) {
targetData->homeRow = 0;
} else if (targetData->unk_0C < 85) {
targetData->homeRow = 1;
} else if (targetData->unk_0C < 100) {
targetData->homeRow = 2;
} else {
targetData->homeRow = 3;
}
if (targetData->unk_0A < 25) {
targetData->homeCol = 0;
} else if (targetData->unk_0A < 65) {
targetData->homeCol = 1;
} else if (targetData->unk_0A < 105) {
targetData->homeCol = 2;
} else {
targetData->homeCol = 3;
}
if (targetData->unk_0E < -30) {
targetData->layer = 0;
} else {
targetData->layer = 1;
}
s5++;
targetData++;
}
}
}
actor->selectedTargetIndex = 0;
actor->targetListLength = s5;
do {
// @bug this should be % 4
sp1C = battleStatus->targetHomeIndex & 4;
fp = battleStatus->targetHomeIndex / 4;
targetData = actor->targetData;
s5 = actor->targetListLength;
for (i = 0; i < s5; i++) {
s0 = &targetData[i];
targetActor = get_actor(s0->actorID);
targetPart = get_actor_part(targetActor, s0->partID);
if (s0->actorID == ACTOR_PLAYER || s0->actorID == ACTOR_PARTNER) {
continue;
}
if (battleStatus->currentTargetListFlags & 0x80000000) {
a02 = 1;
goto END2;
}
if (!(gBattleStatus.flags2 & 0x4000) && battleStatus->darknessMode > 0) {
get_screen_overlay_params(1, &sp10, &sp14);
if (sp14 >= 215.0f) {
a02 = 1;
sp18 = 1;
goto END2;
}
}
if (battleStatus->currentTargetListFlags & 0x8000) {
if (!(targetPart->flags & 0x800000) || (targetActor->flags & 0x40) || (targetPart->flags & 0x40)) {
a02 = 1;
goto END2;
}
}
a02 = 0;
END2:
if (a02) {
for (j = i; j < s5 - 1; j++) {
actor->targetData[j] = actor->targetData[j + 1];
}
s5--;
i--;
}
}
for (i = 0; i < s5; i++) {
s0 = &targetData[i];
targetActor = get_actor(s0->actorID);
targetPart = get_actor_part(targetActor, s0->partID);
if (s0->actorID == ACTOR_PLAYER || s0->actorID == ACTOR_PARTNER) {
continue;
}
if ((battleStatus->currentTargetListFlags & 0x800) && (targetPart->targetFlags & 0x1)) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x1000) && (targetPart->targetFlags & 0x2)) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x20000) && ((targetActor->flags & 0x80) || (targetPart->flags & 0x80))) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x400) && (targetActor->flags & 0x800)) {
a02 = 1;
goto END;
}
if (!(battleStatus->currentTargetListFlags & 0x10000) && (targetActor->flags & 0x4000)) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x40000) && (targetActor->flags & 0x800)) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x4) && s0->homeRow != 0) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x10) && s0->homeRow >= 2) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x40) && s0->homeRow <= 0) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x4000) && !(targetPart->flags & 0x20)) {
s32 a22 = 0;
for (j = 0; j < s5; j++) {
target = &targetData[j];
if (s0 != target) {
if (s0->layer == target->layer &&
s0->homeCol == target->homeCol &&
s0->homeRow < target->homeRow) {
a22 = 1;
break;
}
}
}
if (a22) {
a02 = 1;
goto END;
}
}
if (battleStatus->currentTargetListFlags & 0x2000) {
s32 a22 = 0;
for (j = 0; j < s5; j++) {
target = &targetData[j];
if (s0 != target) {
if (s0->layer == target->layer &&
s0->homeRow == target->homeRow &&
s0->homeCol > target->homeCol) {
a22 = 1;
break;
}
}
}
if (a22) {
a02 = 1;
goto END;
}
}
if ((battleStatus->currentTargetListFlags & 0x20) && (targetActor->flags & 0x200)) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x100000) && s0->homeRow == fp + 1) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x200000) && s0->homeRow == fp - 1) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x400000) && s0->homeCol == sp1C - 1) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x800000) && s0->homeCol == sp1C + 1) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x100000) && s0->homeRow < fp) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x200000) && s0->homeRow > fp) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x400000) && s0->homeCol > sp1C) {
a02 = 1;
goto END;
}
if ((battleStatus->currentTargetListFlags & 0x800000) && s0->homeCol < sp1C) {
a02 = 1;
goto END;
}
a02 = 0;
END:
if (a02) {
for (j = i; j < s5 - 1; j++) {
actor->targetData[j] = actor->targetData[j + 1];
}
s5--;
i--;
}
}
actor->targetListLength = s5;
if (s5 == 0 && sp18) {
gBattleStatus.flags2 |= 0x1000;
} else {
gBattleStatus.flags2 &= ~0x1000;
}
targetData = actor->targetData;
s5 = actor->targetListLength;
targetIndexList = actor->targetIndexList;
for (i = 0; i < s5; i++) {
targetIndexList[i] = i;
}
for (i = 0; i < s5 - 1; i++) {
for (j = i + 1; j < s5; j++) {
s32 index1 = targetIndexList[i];
s32 index2 = targetIndexList[j];
s0 = &targetData[index1];
target = &targetData[index2];
if (s0->pos.x + s0->unk_10 * 10 > target->pos.x + target->unk_10 * 10) {
targetIndexList[i] = targetIndexList[j];
targetIndexList[j] = index1;
}
}
}
} while (0); // TODO required to match
}
#else
void create_target_list(Actor* actor, s32 arg1);
INCLUDE_ASM(s32, "190B20", create_target_list);
#endif
void func_80266DAC(Actor* actor, s32 arg1);

View File

@ -551,7 +551,7 @@ ApiStatus func_802189DC_447E1C(Evt* script, s32 isInitialCall) {
hud_element_set_scale(icon, 1.5f);
hud_element_clear_flags(icon, HUD_ELEMENT_FLAG_200000 | HUD_ELEMENT_FLAG_DISABLED);
evt_set_variable(script, *args++, icon);
load_tattle_flags(0x8B);
load_tattle_flags(ACTOR_TYPE_JR_TROOPA4);
return ApiStatus_DONE2;
}

View File

@ -125,10 +125,12 @@ BSS f32 D_8024F378;
BSS char D_8024F37C[0x4];
BSS s32 D_8024F380;
BSS char D_8024F384[0x74];
BSS char D_8024F3F8[0x50];
BSS s32 D_8024F3F8[10];
BSS s32 hos_05_8024F420[10];
BSS s32 D_8024F448[10];
BSS s32 D_8024F470_hos_bss[10];
BSS s32 D_8024F498[4 * 5];
BSS s32 D_8024F498[10];
BSS s32 hos_05_D_8024F4C0[10];
BSS s32 D_8024F4E8[34];
ApiStatus func_80240880_A2AAC0(Evt* script, s32 isInitialCall) {
@ -342,7 +344,7 @@ ApiStatus func_8024146C_A2B6AC(Evt* script, s32 isInitialCall) {
}
D_802498D4_A33B14 = nuGfxCfb_ptr;
func_80241044_A2B284(250.0f, 0.0f, D_802498D0_A33B10, 0.5f, &D_802498D0_A33B10);
func_802410E4_A2B324(2, 130.4f, D_8024963C_A3387C[1], (f32) D_802498FC_A33B3C, 470.0f, &D_802498E8_A33B28);
func_802410E4_A2B324(2, 130.4f, D_8024963C_A3387C[1], D_802498FC_A33B3C, 470.0f, &D_802498E8_A33B28);
func_80241044_A2B284(12.4f, D_8024963C_A3387C[2], D_802498EC_A33B2C, 0.05f, &D_802498EC_A33B2C);
func_80241044_A2B284(-16.8f, D_8024963C_A3387C[9], D_802498F0_A33B30, 0.05f, &D_802498F0_A33B30);
func_80241044_A2B284(62.0f, 49.0f, D_802498F4_A33B34, 0.1f, &D_802498F4_A33B34);
@ -670,7 +672,187 @@ ApiStatus func_80242704_A2C944(void) {
return ApiStatus_DONE1;
}
// lotta work to do
#ifdef WIP
ApiStatus func_802428C8_A2CB08(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 temp_s6 = evt_get_variable(script, *args++);
f32 sp10 = evt_get_float_variable(script, *args++);
f32 temp_f28 = evt_get_float_variable(script, *args++);
EffectInstance* effect = evt_get_variable(script, ArrayVar(0));
f32 temp_f20;
f32 temp_f20_2;
f32 temp_f20_3;
f32 temp_f20_4;
f32 temp_f24;
f32 temp_f24_2;
f32 var_f0_2;
f32 var_f0_3;
f32 var_f20_2;
f32 var_f26;
f32 var_f2_2;
f64 var_f20;
f64 var_f2;
f64 var_f2_3;
f64 var_f2_4;
f64 var_f2_5;
f64 var_f2_6;
f64 var_f2_7;
f64 var_f2_8;
s32 temp_v0;
s32 temp_v0_2;
s32 temp_v0_3;
s32 temp_v0_4;
s32 temp_v0_5;
s32 temp_v0_6;
s32 temp_v0_7;
f32* temp_s1_2;
f32* temp_s2;
f32* var_s0;
f32* var_s2;
switch (temp_s6) {
case 1:
var_s0 = D_8024F3F8;
var_s2 = D_8024F3F8;
temp_v0 = effect->data.somethingRotating->unk_14 + 30;
var_f2 = temp_v0;
if (temp_v0 < 0) {
var_f2 += 4294967296.0;
}
var_f20 = var_f2 * 4.0f;
temp_f20 = var_f20 + 51.43;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
case 2:
var_s0 = hos_05_8024F420;
var_s2 = hos_05_8024F420;
temp_v0_2 = effect->data.somethingRotating->unk_14 + 30;
var_f2_3 = temp_v0_2;
if (temp_v0_2 < 0) {
var_f2_3 += 4294967296.0;
}
var_f20 = (var_f2_3 * 4.0f);
temp_f20 = var_f20 + 360.01;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
case 3:
var_s0 = D_8024F448;
var_s2 = D_8024F448;
temp_v0_3 = effect->data.somethingRotating->unk_14 + 30;
var_f2_4 = temp_v0_3;
if (temp_v0_3 < 0) {
var_f2_4 += 4294967296.0;
}
var_f20 = var_f2_4 * 4.0f;
temp_f20 = var_f20 + 154.29;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
case 4:
var_s0 = D_8024F470_hos_bss;
temp_v0_4 = effect->data.somethingRotating->unk_14 + 30;
var_f2_5 = temp_v0_4;
var_s2 = D_8024F470_hos_bss;
if (temp_v0_4 < 0) {
var_f2_5 += 4294967296.0;
}
temp_f20_2 = (var_f2_5 * 4.0f) + 205.72;
temp_f24_2 = sin_deg(temp_f20_2);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24_2);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20_2) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24_2;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
case 5:
var_s0 = D_8024F498;
var_s2 = D_8024F498;
temp_v0_5 = effect->data.somethingRotating->unk_14 + 30;
var_f2_6 = temp_v0_5;
if (temp_v0_5 < 0) {
var_f2_6 += 4294967296.0;
}
var_f20 = var_f2_6 * 4.0f;
temp_f20 = var_f20 + 308.58;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
case 6:
var_s0 = hos_05_D_8024F4C0;
var_s2 = hos_05_D_8024F4C0;
temp_v0_6 = effect->data.somethingRotating->unk_14 + 30;
var_f2_7 = temp_v0_6;
if (temp_v0_6 < 0) {
var_f2_7 += 4294967296.0;
}
var_f20 = var_f2_7 * 4.0f;
temp_f20 = var_f20 + 102.86;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
default:
var_s0 = D_8024F4E8;
var_s2 = D_8024F4E8;
temp_v0_7 = effect->data.somethingRotating->unk_14 + 30;
var_f2_8 = temp_v0_7;
if (temp_v0_7 < 0) {
var_f2_8 += 4294967296.0;
}
var_f20 = (var_f2_8 * 4.0f);
temp_f20 = var_f20 + 257.15;
temp_f24 = sin_deg(temp_f20);
var_f26 = effect->data.somethingRotating->unk_04 + (sin_deg(90.0f) * 50.0f * temp_f24);
var_f20_2 = effect->data.somethingRotating->unk_08 + (cos_deg(temp_f20) * 50.0f);
var_f0_2 = sin_deg(90.0f) * 50.0f * temp_f24;
var_f2_2 = effect->data.somethingRotating->unk_0C;
break;
}
var_s0[6] = var_f26;
var_s0[7] = var_f20_2;
var_s0[8] = var_f2_2 + var_f0_2;
var_s2[0] = evt_get_float_variable(script, LocalVar(0));
var_s2[1] = evt_get_float_variable(script, LocalVar(1));
temp_s1_2 = var_s2 + 0x18;
var_s2[4] = evt_get_float_variable(script, LocalVar(2));
temp_s2 = var_s2 + 0xC;
if (temp_s6 != 2) {
temp_f20_3 = 1.0f - temp_f28;
temp_s2[0] = (evt_get_float_variable(script, LocalVar(0)) * temp_f28) + (temp_s1_2[0] * temp_f20_3);
temp_s2[1] = (evt_get_float_variable(script, LocalVar(1)) * temp_f28) + (temp_s1_2[1] * temp_f20_3) + sp10;
var_f0_3 = (evt_get_float_variable(script, LocalVar(2)) * temp_f28) + (temp_s1_2[2] * temp_f20_3);
} else {
temp_f20_4 = 1.0f - temp_f28;
temp_s2[0] = ((evt_get_float_variable(script, LocalVar(0)) * temp_f28) + (temp_s1_2[0] * temp_f20_4)) - 50.0f;
temp_s2[1] = (evt_get_float_variable(script, LocalVar(1)) * temp_f28) + (temp_s1_2[1] * temp_f20_4) + sp10;
var_f0_3 = ((evt_get_float_variable(script, LocalVar(2)) * temp_f28) + (temp_s1_2[2] * temp_f20_4)) - 50.0f;
}
temp_s2[2] = var_f0_3;
script->varTable[0] = 30;
script->varTable[1] = var_s0;
script->varTable[2] = 3;
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(s32, "world/area_hos/hos_05/A2AAC0", func_802428C8_A2CB08);
#endif
ApiStatus func_80242F74_A2D1B4(Evt* script, s32 isInitialCall) {
Camera* camera = &gCameras[gCurrentCameraID];

View File

@ -1,5 +1,6 @@
#include "omo_11.h"
#include "model.h"
#include "mapfs/omo_11_shape.h"
static char* N(exit_str_0) = "omo_12";
static char* N(exit_str_1) = "omo_10";
@ -51,5 +52,130 @@ ApiStatus func_80240000_DDC830(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK;
}
typedef struct UnkOmo11 {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ Matrix4f transformMatrix;
} UnkOmo11_2; // size = 0x58
INCLUDE_ASM(s32, "world/area_omo/omo_11/DDC830", func_802401A0_DDC9D0);
extern s32 D_80241760_DDDF90[6]; // TODO remove hard-coded size once data is migrated
extern s32 D_80241778_DDDFA8[6]; // TODO remove hard-coded size once data is migrated
NOP_FIX
ApiStatus func_802401A0_DDC9D0(Evt* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
Matrix4f sp20, sp60, spA0, spE0;
Npc* partner = get_npc_unsafe(NPC_PARTNER);
Model* model1 = get_model_from_list_index(get_model_list_index_from_tree_index(MODEL_fl));
Model* model2 = get_model_from_list_index(get_model_list_index_from_tree_index(MODEL_1_0));
f32 ox, oy, oz;
Model* loopModel;
f32 x, y, z;
UnkOmo11_2* it;
u32 cond;
u32 i;
s32 j, k;
if (isInitialCall) {
sfx_play_sound_at_position(SOUND_80000016, 0, 315.0f, 125.0f, -100.0f);
script->functionTempPtr[0] = it = heap_malloc(sizeof(*it) * ARRAY_COUNT(D_80241760_DDDF90));
script->functionTemp[1] = 0;
for (i = 0; i < ARRAY_COUNT(D_80241760_DDDF90); it++, i += 2) {
loopModel = get_model_from_list_index(get_model_list_index_from_tree_index(D_80241760_DDDF90[i]));
it->unk_00.x = x = loopModel->center.x - model1->center.x;
it->unk_00.y = y = loopModel->center.y - model1->center.y;
it->unk_00.z = z = loopModel->center.z - model1->center.z;
ox = x;
oy = y;
oz = z;
for (j = 0; j < 4; j++) {
for (k = 0; k < 4; k++) {
it->transformMatrix[j][k] = loopModel->transformMatrix[j][k];
}
}
loopModel = get_model_from_list_index(get_model_list_index_from_tree_index(D_80241760_DDDF90[i + 1]));
it = it + 1;
it->unk_00.x = ox;
it->unk_00.y = oy;
it->unk_00.z = oz;
for (j = 0; j < 4; j++) {
for (k = 0; k < 4; k++) {
it->transformMatrix[j][k] = loopModel->transformMatrix[j][k];
}
}
}
}
it = script->functionTempPtr[0];
for (i = 0; i < 6; i++, it++) {
loopModel = get_model_from_list_index(get_model_list_index_from_tree_index(D_80241760_DDDF90[i]));
for (j = 0; j < 4; j++) {
for (k = 0; k < 4; k++) {
loopModel->transformMatrix[j][k] = it->transformMatrix[j][k];
}
}
loopModel->flags |= MODEL_FLAG_USES_TRANSFORM_MATRIX | MODEL_FLAG_HAS_TRANSFORM_APPLIED;
guTranslateF(sp20, it->unk_00.x, it->unk_00.y, it->unk_00.z);
guRotateF(spA0, script->functionTemp[1], 0.0f, 0.0f, 1.0f);
guTranslateF(sp60, -it->unk_00.x, -it->unk_00.y, -it->unk_00.z);
guRotateF(spE0, -script->functionTemp[1], 0.0f, 0.0f, 1.0f);
guMtxCatF(sp20, spA0, spA0);
guMtxCatF(spA0, sp60, sp60);
guMtxCatF(spE0, sp60, sp60);
guMtxCatF(loopModel->transformMatrix, sp60, loopModel->transformMatrix);
update_collider_transform(D_80241778_DDDFA8[i]);
guMtxXFMF(loopModel->transformMatrix, 0.0f, 0.0f, 0.0f, &ox, &oy, &oz);
if (gCollisionStatus.currentFloor == D_80241778_DDDFA8[i] ||
gCollisionStatus.lastTouchedFloor == D_80241778_DDDFA8[i])
{
playerStatus->pushVelocity.x = ox - it->unk_0C.x;
playerStatus->pushVelocity.y = oy - it->unk_0C.y;
playerStatus->pushVelocity.z = oz - it->unk_0C.z;
}
if (partner->currentFloor == D_80241778_DDDFA8[i]) {
partner->pos.x += ox - it->unk_0C.x;
partner->pos.y += oy - it->unk_0C.y;
partner->pos.z += oz - it->unk_0C.z;
}
it->unk_0C.x = ox;
it->unk_0C.y = oy;
it->unk_0C.z = oz;
}
guRotateF(model1->transformMatrix, script->functionTemp[1], 0.0f, 0.0f, 1.0f);
model1->flags |= MODEL_FLAG_USES_TRANSFORM_MATRIX | MODEL_FLAG_HAS_TRANSFORM_APPLIED;
update_collider_transform(0x32);
guRotateF(model2->transformMatrix, script->functionTemp[1], 0.0f, 0.0f, 1.0f);
model2->flags |= MODEL_FLAG_USES_TRANSFORM_MATRIX | MODEL_FLAG_HAS_TRANSFORM_APPLIED;
update_collider_transform(0x27);
cond = FALSE;
for (i = 0; i < ARRAY_COUNT(D_80241778_DDDFA8); i++) {
if (gCollisionStatus.currentFloor == D_80241778_DDDFA8[i]) {
if (playerStatus->flags & PS_FLAG_NO_STATIC_COLLISION) {
gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x;
gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y;
gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z;
}
if (playerStatus->actionState == ACTION_COMMAND_AIR_RAID ||
playerStatus->actionState == ACTION_COMMAND_POWER_SHOCK)
{
cond = TRUE;
}
}
}
if (!cond) {
script->functionTemp[1]--;
}
return ApiStatus_BLOCK;
}

View File

@ -1,91 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel load_tattle_flags
/* 182758 80253E78 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 18275C 80253E7C AFB20018 */ sw $s2, 0x18($sp)
/* 182760 80253E80 0080902D */ daddu $s2, $a0, $zero
/* 182764 80253E84 AFB50024 */ sw $s5, 0x24($sp)
/* 182768 80253E88 3C15800E */ lui $s5, %hi(gBattleStatus)
/* 18276C 80253E8C 26B5C070 */ addiu $s5, $s5, %lo(gBattleStatus)
/* 182770 80253E90 240600FF */ addiu $a2, $zero, 0xff
/* 182774 80253E94 AFB40020 */ sw $s4, 0x20($sp)
/* 182778 80253E98 24140001 */ addiu $s4, $zero, 1
/* 18277C 80253E9C 3C058028 */ lui $a1, %hi(D_80284044)
/* 182780 80253EA0 24A54044 */ addiu $a1, $a1, %lo(D_80284044)
/* 182784 80253EA4 AFBF0028 */ sw $ra, 0x28($sp)
/* 182788 80253EA8 AFB3001C */ sw $s3, 0x1c($sp)
/* 18278C 80253EAC AFB10014 */ sw $s1, 0x14($sp)
/* 182790 80253EB0 AFB00010 */ sw $s0, 0x10($sp)
.L80253EB4:
/* 182794 80253EB4 8CA40000 */ lw $a0, ($a1)
/* 182798 80253EB8 10800025 */ beqz $a0, .L80253F50
/* 18279C 80253EBC 00000000 */ nop
/* 1827A0 80253EC0 90820000 */ lbu $v0, ($a0)
/* 1827A4 80253EC4 10460020 */ beq $v0, $a2, .L80253F48
/* 1827A8 80253EC8 0080182D */ daddu $v1, $a0, $zero
.L80253ECC:
/* 1827AC 80253ECC 90620000 */ lbu $v0, ($v1)
/* 1827B0 80253ED0 5642001A */ bnel $s2, $v0, .L80253F3C
/* 1827B4 80253ED4 24630001 */ addiu $v1, $v1, 1
/* 1827B8 80253ED8 90820000 */ lbu $v0, ($a0)
/* 1827BC 80253EDC 1046002B */ beq $v0, $a2, .L80253F8C
/* 1827C0 80253EE0 241300FF */ addiu $s3, $zero, 0xff
/* 1827C4 80253EE4 0080882D */ daddu $s1, $a0, $zero
.L80253EE8:
/* 1827C8 80253EE8 92320000 */ lbu $s2, ($s1)
/* 1827CC 80253EEC 06410002 */ bgez $s2, .L80253EF8
/* 1827D0 80253EF0 0240802D */ daddu $s0, $s2, $zero
/* 1827D4 80253EF4 26500007 */ addiu $s0, $s2, 7
.L80253EF8:
/* 1827D8 80253EF8 001080C3 */ sra $s0, $s0, 3
/* 1827DC 80253EFC 0C05154E */ jal get_global_byte
/* 1827E0 80253F00 2604016D */ addiu $a0, $s0, 0x16d
/* 1827E4 80253F04 001018C0 */ sll $v1, $s0, 3
/* 1827E8 80253F08 02431823 */ subu $v1, $s2, $v1
/* 1827EC 80253F0C 00741804 */ sllv $v1, $s4, $v1
/* 1827F0 80253F10 00432025 */ or $a0, $v0, $v1
/* 1827F4 80253F14 02B08021 */ addu $s0, $s5, $s0
/* 1827F8 80253F18 92020440 */ lbu $v0, 0x440($s0)
/* 1827FC 80253F1C 26310001 */ addiu $s1, $s1, 1
/* 182800 80253F20 00441025 */ or $v0, $v0, $a0
/* 182804 80253F24 A2020440 */ sb $v0, 0x440($s0)
/* 182808 80253F28 92220000 */ lbu $v0, ($s1)
/* 18280C 80253F2C 10530017 */ beq $v0, $s3, .L80253F8C
/* 182810 80253F30 00000000 */ nop
/* 182814 80253F34 08094FBA */ j .L80253EE8
/* 182818 80253F38 00000000 */ nop
.L80253F3C:
/* 18281C 80253F3C 90620000 */ lbu $v0, ($v1)
/* 182820 80253F40 1446FFE2 */ bne $v0, $a2, .L80253ECC
/* 182824 80253F44 00000000 */ nop
.L80253F48:
/* 182828 80253F48 08094FAD */ j .L80253EB4
/* 18282C 80253F4C 24A50004 */ addiu $a1, $a1, 4
.L80253F50:
/* 182830 80253F50 06410002 */ bgez $s2, .L80253F5C
/* 182834 80253F54 0240202D */ daddu $a0, $s2, $zero
/* 182838 80253F58 26440007 */ addiu $a0, $s2, 7
.L80253F5C:
/* 18283C 80253F5C 000480C3 */ sra $s0, $a0, 3
/* 182840 80253F60 0C05154E */ jal get_global_byte
/* 182844 80253F64 2604016D */ addiu $a0, $s0, 0x16d
/* 182848 80253F68 001020C0 */ sll $a0, $s0, 3
/* 18284C 80253F6C 02442023 */ subu $a0, $s2, $a0
/* 182850 80253F70 24030001 */ addiu $v1, $zero, 1
/* 182854 80253F74 00831804 */ sllv $v1, $v1, $a0
/* 182858 80253F78 00432025 */ or $a0, $v0, $v1
/* 18285C 80253F7C 02B01821 */ addu $v1, $s5, $s0
/* 182860 80253F80 90620440 */ lbu $v0, 0x440($v1)
/* 182864 80253F84 00441025 */ or $v0, $v0, $a0
/* 182868 80253F88 A0620440 */ sb $v0, 0x440($v1)
.L80253F8C:
/* 18286C 80253F8C 8FBF0028 */ lw $ra, 0x28($sp)
/* 182870 80253F90 8FB50024 */ lw $s5, 0x24($sp)
/* 182874 80253F94 8FB40020 */ lw $s4, 0x20($sp)
/* 182878 80253F98 8FB3001C */ lw $s3, 0x1c($sp)
/* 18287C 80253F9C 8FB20018 */ lw $s2, 0x18($sp)
/* 182880 80253FA0 8FB10014 */ lw $s1, 0x14($sp)
/* 182884 80253FA4 8FB00010 */ lw $s0, 0x10($sp)
/* 182888 80253FA8 03E00008 */ jr $ra
/* 18288C 80253FAC 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,103 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel save_tattle_flags
/* 1825F0 80253D10 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 1825F4 80253D14 AFB40020 */ sw $s4, 0x20($sp)
/* 1825F8 80253D18 0080A02D */ daddu $s4, $a0, $zero
/* 1825FC 80253D1C AFB7002C */ sw $s7, 0x2c($sp)
/* 182600 80253D20 3C17800E */ lui $s7, %hi(gBattleStatus)
/* 182604 80253D24 26F7C070 */ addiu $s7, $s7, %lo(gBattleStatus)
/* 182608 80253D28 240600FF */ addiu $a2, $zero, 0xff
/* 18260C 80253D2C AFB60028 */ sw $s6, 0x28($sp)
/* 182610 80253D30 24160001 */ addiu $s6, $zero, 1
/* 182614 80253D34 3C058028 */ lui $a1, %hi(D_80284044)
/* 182618 80253D38 24A54044 */ addiu $a1, $a1, %lo(D_80284044)
/* 18261C 80253D3C AFBF0030 */ sw $ra, 0x30($sp)
/* 182620 80253D40 AFB50024 */ sw $s5, 0x24($sp)
/* 182624 80253D44 AFB3001C */ sw $s3, 0x1c($sp)
/* 182628 80253D48 AFB20018 */ sw $s2, 0x18($sp)
/* 18262C 80253D4C AFB10014 */ sw $s1, 0x14($sp)
/* 182630 80253D50 AFB00010 */ sw $s0, 0x10($sp)
.L80253D54:
/* 182634 80253D54 8CA40000 */ lw $a0, ($a1)
/* 182638 80253D58 10800029 */ beqz $a0, .L80253E00
/* 18263C 80253D5C 00000000 */ nop
/* 182640 80253D60 90820000 */ lbu $v0, ($a0)
/* 182644 80253D64 10460024 */ beq $v0, $a2, .L80253DF8
/* 182648 80253D68 0080182D */ daddu $v1, $a0, $zero
.L80253D6C:
/* 18264C 80253D6C 90620000 */ lbu $v0, ($v1)
/* 182650 80253D70 5682001E */ bnel $s4, $v0, .L80253DEC
/* 182654 80253D74 24630001 */ addiu $v1, $v1, 1
/* 182658 80253D78 90820000 */ lbu $v0, ($a0)
/* 18265C 80253D7C 10460033 */ beq $v0, $a2, .L80253E4C
/* 182660 80253D80 241500FF */ addiu $s5, $zero, 0xff
/* 182664 80253D84 0080982D */ daddu $s3, $a0, $zero
.L80253D88:
/* 182668 80253D88 92740000 */ lbu $s4, ($s3)
/* 18266C 80253D8C 06810002 */ bgez $s4, .L80253D98
/* 182670 80253D90 0280802D */ daddu $s0, $s4, $zero
/* 182674 80253D94 26900007 */ addiu $s0, $s4, 7
.L80253D98:
/* 182678 80253D98 001080C3 */ sra $s0, $s0, 3
/* 18267C 80253D9C 2611016D */ addiu $s1, $s0, 0x16d
/* 182680 80253DA0 0C05154E */ jal get_global_byte
/* 182684 80253DA4 0220202D */ daddu $a0, $s1, $zero
/* 182688 80253DA8 001018C0 */ sll $v1, $s0, 3
/* 18268C 80253DAC 02831823 */ subu $v1, $s4, $v1
/* 182690 80253DB0 00761804 */ sllv $v1, $s6, $v1
/* 182694 80253DB4 00439025 */ or $s2, $v0, $v1
/* 182698 80253DB8 0220202D */ daddu $a0, $s1, $zero
/* 18269C 80253DBC 0C051548 */ jal set_global_byte
/* 1826A0 80253DC0 0240282D */ daddu $a1, $s2, $zero
/* 1826A4 80253DC4 02F08021 */ addu $s0, $s7, $s0
/* 1826A8 80253DC8 92020440 */ lbu $v0, 0x440($s0)
/* 1826AC 80253DCC 26730001 */ addiu $s3, $s3, 1
/* 1826B0 80253DD0 00521025 */ or $v0, $v0, $s2
/* 1826B4 80253DD4 A2020440 */ sb $v0, 0x440($s0)
/* 1826B8 80253DD8 92620000 */ lbu $v0, ($s3)
/* 1826BC 80253DDC 1055001B */ beq $v0, $s5, .L80253E4C
/* 1826C0 80253DE0 00000000 */ nop
/* 1826C4 80253DE4 08094F62 */ j .L80253D88
/* 1826C8 80253DE8 00000000 */ nop
.L80253DEC:
/* 1826CC 80253DEC 90620000 */ lbu $v0, ($v1)
/* 1826D0 80253DF0 1446FFDE */ bne $v0, $a2, .L80253D6C
/* 1826D4 80253DF4 00000000 */ nop
.L80253DF8:
/* 1826D8 80253DF8 08094F55 */ j .L80253D54
/* 1826DC 80253DFC 24A50004 */ addiu $a1, $a1, 4
.L80253E00:
/* 1826E0 80253E00 06810002 */ bgez $s4, .L80253E0C
/* 1826E4 80253E04 0280202D */ daddu $a0, $s4, $zero
/* 1826E8 80253E08 26840007 */ addiu $a0, $s4, 7
.L80253E0C:
/* 1826EC 80253E0C 000488C3 */ sra $s1, $a0, 3
/* 1826F0 80253E10 2630016D */ addiu $s0, $s1, 0x16d
/* 1826F4 80253E14 0C05154E */ jal get_global_byte
/* 1826F8 80253E18 0200202D */ daddu $a0, $s0, $zero
/* 1826FC 80253E1C 001120C0 */ sll $a0, $s1, 3
/* 182700 80253E20 02842023 */ subu $a0, $s4, $a0
/* 182704 80253E24 24030001 */ addiu $v1, $zero, 1
/* 182708 80253E28 00831804 */ sllv $v1, $v1, $a0
/* 18270C 80253E2C 00439025 */ or $s2, $v0, $v1
/* 182710 80253E30 0200202D */ daddu $a0, $s0, $zero
/* 182714 80253E34 0C051548 */ jal set_global_byte
/* 182718 80253E38 0240282D */ daddu $a1, $s2, $zero
/* 18271C 80253E3C 02F11821 */ addu $v1, $s7, $s1
/* 182720 80253E40 90620440 */ lbu $v0, 0x440($v1)
/* 182724 80253E44 00521025 */ or $v0, $v0, $s2
/* 182728 80253E48 A0620440 */ sb $v0, 0x440($v1)
.L80253E4C:
/* 18272C 80253E4C 8FBF0030 */ lw $ra, 0x30($sp)
/* 182730 80253E50 8FB7002C */ lw $s7, 0x2c($sp)
/* 182734 80253E54 8FB60028 */ lw $s6, 0x28($sp)
/* 182738 80253E58 8FB50024 */ lw $s5, 0x24($sp)
/* 18273C 80253E5C 8FB40020 */ lw $s4, 0x20($sp)
/* 182740 80253E60 8FB3001C */ lw $s3, 0x1c($sp)
/* 182744 80253E64 8FB20018 */ lw $s2, 0x18($sp)
/* 182748 80253E68 8FB10014 */ lw $s1, 0x14($sp)
/* 18274C 80253E6C 8FB00010 */ lw $s0, 0x10($sp)
/* 182750 80253E70 03E00008 */ jr $ra
/* 182754 80253E74 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -106,8 +106,8 @@ glabel func_802428C8_A2CB08
/* A2CC24 802429E4 08090B41 */ j .L80242D04
/* A2CC28 802429E8 4600A521 */ cvt.d.s $f20, $f20
.L802429EC_A2CC2C:
/* A2CC2C 802429EC 3C108025 */ lui $s0, %hi(dgb_01_D_8024F420_C0CCA0)
/* A2CC30 802429F0 2610F420 */ addiu $s0, $s0, %lo(dgb_01_D_8024F420_C0CCA0)
/* A2CC2C 802429EC 3C108025 */ lui $s0, %hi(hos_05_8024F420)
/* A2CC30 802429F0 2610F420 */ addiu $s0, $s0, %lo(hos_05_8024F420)
/* A2CC34 802429F4 0200902D */ daddu $s2, $s0, $zero
/* A2CC38 802429F8 2415001E */ addiu $s5, $zero, 0x1e
/* A2CC3C 802429FC 8E22000C */ lw $v0, 0xc($s1)

View File

@ -1,401 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802401A0_DDC9D0
/* DDC9D0 802401A0 27BDFE90 */ addiu $sp, $sp, -0x170
/* DDC9D4 802401A4 AFB00138 */ sw $s0, 0x138($sp)
/* DDC9D8 802401A8 00A0802D */ daddu $s0, $a1, $zero
/* DDC9DC 802401AC AFA40170 */ sw $a0, 0x170($sp)
/* DDC9E0 802401B0 AFBF015C */ sw $ra, 0x15c($sp)
/* DDC9E4 802401B4 AFBE0158 */ sw $fp, 0x158($sp)
/* DDC9E8 802401B8 AFB70154 */ sw $s7, 0x154($sp)
/* DDC9EC 802401BC AFB60150 */ sw $s6, 0x150($sp)
/* DDC9F0 802401C0 AFB5014C */ sw $s5, 0x14c($sp)
/* DDC9F4 802401C4 AFB40148 */ sw $s4, 0x148($sp)
/* DDC9F8 802401C8 AFB30144 */ sw $s3, 0x144($sp)
/* DDC9FC 802401CC AFB20140 */ sw $s2, 0x140($sp)
/* DDCA00 802401D0 AFB1013C */ sw $s1, 0x13c($sp)
/* DDCA04 802401D4 F7B60168 */ sdc1 $f22, 0x168($sp)
/* DDCA08 802401D8 F7B40160 */ sdc1 $f20, 0x160($sp)
/* DDCA0C 802401DC 0C00EABB */ jal get_npc_unsafe
/* DDCA10 802401E0 2404FFFC */ addiu $a0, $zero, -4
/* DDCA14 802401E4 2404004A */ addiu $a0, $zero, 0x4a
/* DDCA18 802401E8 0C046C04 */ jal get_model_list_index_from_tree_index
/* DDCA1C 802401EC 0040B02D */ daddu $s6, $v0, $zero
/* DDCA20 802401F0 0C046B4C */ jal get_model_from_list_index
/* DDCA24 802401F4 0040202D */ daddu $a0, $v0, $zero
/* DDCA28 802401F8 2404003F */ addiu $a0, $zero, 0x3f
/* DDCA2C 802401FC 0C046C04 */ jal get_model_list_index_from_tree_index
/* DDCA30 80240200 0040B82D */ daddu $s7, $v0, $zero
/* DDCA34 80240204 0C046B4C */ jal get_model_from_list_index
/* DDCA38 80240208 0040202D */ daddu $a0, $v0, $zero
/* DDCA3C 8024020C 3C1E8011 */ lui $fp, %hi(gPlayerStatus)
/* DDCA40 80240210 27DEEFC8 */ addiu $fp, $fp, %lo(gPlayerStatus)
/* DDCA44 80240214 1200005F */ beqz $s0, .L80240394
/* DDCA48 80240218 AFA2012C */ sw $v0, 0x12c($sp)
/* DDCA4C 8024021C 3C048000 */ lui $a0, 0x8000
/* DDCA50 80240220 34840016 */ ori $a0, $a0, 0x16
/* DDCA54 80240224 0000282D */ daddu $a1, $zero, $zero
/* DDCA58 80240228 00A0982D */ daddu $s3, $a1, $zero
/* DDCA5C 8024022C 24150004 */ addiu $s5, $zero, 4
/* DDCA60 80240230 3C06439D */ lui $a2, 0x439d
/* DDCA64 80240234 34C68000 */ ori $a2, $a2, 0x8000
/* DDCA68 80240238 3C0742FA */ lui $a3, 0x42fa
/* DDCA6C 8024023C 3C01C2C8 */ lui $at, 0xc2c8
/* DDCA70 80240240 44810000 */ mtc1 $at, $f0
/* DDCA74 80240244 3C148024 */ lui $s4, %hi(D_80241760_DDDF90)
/* DDCA78 80240248 26941760 */ addiu $s4, $s4, %lo(D_80241760_DDDF90)
/* DDCA7C 8024024C 0C052757 */ jal sfx_play_sound_at_position
/* DDCA80 80240250 E7A00010 */ swc1 $f0, 0x10($sp)
/* DDCA84 80240254 0C00AB39 */ jal heap_malloc
/* DDCA88 80240258 24040210 */ addiu $a0, $zero, 0x210
/* DDCA8C 8024025C 0040902D */ daddu $s2, $v0, $zero
/* DDCA90 80240260 8FA90170 */ lw $t1, 0x170($sp)
/* DDCA94 80240264 26510008 */ addiu $s1, $s2, 8
/* DDCA98 80240268 AD320070 */ sw $s2, 0x70($t1)
/* DDCA9C 8024026C AD200074 */ sw $zero, 0x74($t1)
.L80240270:
/* DDCAA0 80240270 0C046C04 */ jal get_model_list_index_from_tree_index
/* DDCAA4 80240274 8E840000 */ lw $a0, ($s4)
/* DDCAA8 80240278 0C046B4C */ jal get_model_from_list_index
/* DDCAAC 8024027C 0040202D */ daddu $a0, $v0, $zero
/* DDCAB0 80240280 0040802D */ daddu $s0, $v0, $zero
/* DDCAB4 80240284 C6060098 */ lwc1 $f6, 0x98($s0)
/* DDCAB8 80240288 C6E00098 */ lwc1 $f0, 0x98($s7)
/* DDCABC 8024028C 46003181 */ sub.s $f6, $f6, $f0
/* DDCAC0 80240290 E6460000 */ swc1 $f6, ($s2)
/* DDCAC4 80240294 C604009C */ lwc1 $f4, 0x9c($s0)
/* DDCAC8 80240298 C6E0009C */ lwc1 $f0, 0x9c($s7)
/* DDCACC 8024029C 46002101 */ sub.s $f4, $f4, $f0
/* DDCAD0 802402A0 E624FFFC */ swc1 $f4, -4($s1)
/* DDCAD4 802402A4 C60000A0 */ lwc1 $f0, 0xa0($s0)
/* DDCAD8 802402A8 C6E200A0 */ lwc1 $f2, 0xa0($s7)
/* DDCADC 802402AC 0000302D */ daddu $a2, $zero, $zero
/* DDCAE0 802402B0 46020001 */ sub.s $f0, $f0, $f2
/* DDCAE4 802402B4 E7A60120 */ swc1 $f6, 0x120($sp)
/* DDCAE8 802402B8 E7A40124 */ swc1 $f4, 0x124($sp)
/* DDCAEC 802402BC E6200000 */ swc1 $f0, ($s1)
/* DDCAF0 802402C0 E7A00128 */ swc1 $f0, 0x128($sp)
/* DDCAF4 802402C4 0000282D */ daddu $a1, $zero, $zero
.L802402C8:
/* DDCAF8 802402C8 00062100 */ sll $a0, $a2, 4
.L802402CC:
/* DDCAFC 802402CC 02441821 */ addu $v1, $s2, $a0
/* DDCB00 802402D0 02041021 */ addu $v0, $s0, $a0
/* DDCB04 802402D4 24840004 */ addiu $a0, $a0, 4
/* DDCB08 802402D8 24A50001 */ addiu $a1, $a1, 1
/* DDCB0C 802402DC C4400058 */ lwc1 $f0, 0x58($v0)
/* DDCB10 802402E0 28A20004 */ slti $v0, $a1, 4
/* DDCB14 802402E4 1440FFF9 */ bnez $v0, .L802402CC
/* DDCB18 802402E8 E4600018 */ swc1 $f0, 0x18($v1)
/* DDCB1C 802402EC 24C60001 */ addiu $a2, $a2, 1
/* DDCB20 802402F0 28C20004 */ slti $v0, $a2, 4
/* DDCB24 802402F4 1440FFF4 */ bnez $v0, .L802402C8
/* DDCB28 802402F8 0000282D */ daddu $a1, $zero, $zero
/* DDCB2C 802402FC 26310058 */ addiu $s1, $s1, 0x58
/* DDCB30 80240300 3C098024 */ lui $t1, %hi(D_80241760_DDDF90)
/* DDCB34 80240304 25291760 */ addiu $t1, $t1, %lo(D_80241760_DDDF90)
/* DDCB38 80240308 02A91021 */ addu $v0, $s5, $t1
/* DDCB3C 8024030C 8C440000 */ lw $a0, ($v0)
/* DDCB40 80240310 0C046C04 */ jal get_model_list_index_from_tree_index
/* DDCB44 80240314 26520058 */ addiu $s2, $s2, 0x58
/* DDCB48 80240318 0C046B4C */ jal get_model_from_list_index
/* DDCB4C 8024031C 0040202D */ daddu $a0, $v0, $zero
/* DDCB50 80240320 0040802D */ daddu $s0, $v0, $zero
/* DDCB54 80240324 C7A00120 */ lwc1 $f0, 0x120($sp)
/* DDCB58 80240328 C7A20124 */ lwc1 $f2, 0x124($sp)
/* DDCB5C 8024032C C7A40128 */ lwc1 $f4, 0x128($sp)
/* DDCB60 80240330 0000302D */ daddu $a2, $zero, $zero
/* DDCB64 80240334 E6400000 */ swc1 $f0, ($s2)
/* DDCB68 80240338 E622FFFC */ swc1 $f2, -4($s1)
/* DDCB6C 8024033C E6240000 */ swc1 $f4, ($s1)
/* DDCB70 80240340 0000282D */ daddu $a1, $zero, $zero
.L80240344:
/* DDCB74 80240344 00062100 */ sll $a0, $a2, 4
.L80240348:
/* DDCB78 80240348 02441821 */ addu $v1, $s2, $a0
/* DDCB7C 8024034C 02041021 */ addu $v0, $s0, $a0
/* DDCB80 80240350 24840004 */ addiu $a0, $a0, 4
/* DDCB84 80240354 24A50001 */ addiu $a1, $a1, 1
/* DDCB88 80240358 C4400058 */ lwc1 $f0, 0x58($v0)
/* DDCB8C 8024035C 28A20004 */ slti $v0, $a1, 4
/* DDCB90 80240360 1440FFF9 */ bnez $v0, .L80240348
/* DDCB94 80240364 E4600018 */ swc1 $f0, 0x18($v1)
/* DDCB98 80240368 24C60001 */ addiu $a2, $a2, 1
/* DDCB9C 8024036C 28C20004 */ slti $v0, $a2, 4
/* DDCBA0 80240370 1440FFF4 */ bnez $v0, .L80240344
/* DDCBA4 80240374 0000282D */ daddu $a1, $zero, $zero
/* DDCBA8 80240378 26310058 */ addiu $s1, $s1, 0x58
/* DDCBAC 8024037C 26520058 */ addiu $s2, $s2, 0x58
/* DDCBB0 80240380 26B50008 */ addiu $s5, $s5, 8
/* DDCBB4 80240384 26730002 */ addiu $s3, $s3, 2
/* DDCBB8 80240388 2E620006 */ sltiu $v0, $s3, 6
/* DDCBBC 8024038C 1440FFB8 */ bnez $v0, .L80240270
/* DDCBC0 80240390 26940008 */ addiu $s4, $s4, 8
.L80240394:
/* DDCBC4 80240394 27B500A0 */ addiu $s5, $sp, 0xa0
/* DDCBC8 80240398 27B40060 */ addiu $s4, $sp, 0x60
/* DDCBCC 8024039C 27A900E0 */ addiu $t1, $sp, 0xe0
/* DDCBD0 802403A0 AFA90130 */ sw $t1, 0x130($sp)
/* DDCBD4 802403A4 8FA90170 */ lw $t1, 0x170($sp)
/* DDCBD8 802403A8 4480A000 */ mtc1 $zero, $f20
/* DDCBDC 802403AC 3C138024 */ lui $s3, %hi(D_80241778_DDDFA8)
/* DDCBE0 802403B0 26731778 */ addiu $s3, $s3, %lo(D_80241778_DDDFA8)
/* DDCBE4 802403B4 AFA00134 */ sw $zero, 0x134($sp)
/* DDCBE8 802403B8 8D320070 */ lw $s2, 0x70($t1)
/* DDCBEC 802403BC 3C013F80 */ lui $at, 0x3f80
/* DDCBF0 802403C0 4481B000 */ mtc1 $at, $f22
/* DDCBF4 802403C4 26510014 */ addiu $s1, $s2, 0x14
.L802403C8:
/* DDCBF8 802403C8 8FA90134 */ lw $t1, 0x134($sp)
/* DDCBFC 802403CC 3C048024 */ lui $a0, %hi(D_80241760_DDDF90)
/* DDCC00 802403D0 00892021 */ addu $a0, $a0, $t1
/* DDCC04 802403D4 0C046C04 */ jal get_model_list_index_from_tree_index
/* DDCC08 802403D8 8C841760 */ lw $a0, %lo(D_80241760_DDDF90)($a0)
/* DDCC0C 802403DC 0C046B4C */ jal get_model_from_list_index
/* DDCC10 802403E0 0040202D */ daddu $a0, $v0, $zero
/* DDCC14 802403E4 0040802D */ daddu $s0, $v0, $zero
/* DDCC18 802403E8 0000302D */ daddu $a2, $zero, $zero
/* DDCC1C 802403EC 0000282D */ daddu $a1, $zero, $zero
.L802403F0:
/* DDCC20 802403F0 00062100 */ sll $a0, $a2, 4
.L802403F4:
/* DDCC24 802403F4 02041821 */ addu $v1, $s0, $a0
/* DDCC28 802403F8 02441021 */ addu $v0, $s2, $a0
/* DDCC2C 802403FC 24840004 */ addiu $a0, $a0, 4
/* DDCC30 80240400 24A50001 */ addiu $a1, $a1, 1
/* DDCC34 80240404 C4400018 */ lwc1 $f0, 0x18($v0)
/* DDCC38 80240408 28A20004 */ slti $v0, $a1, 4
/* DDCC3C 8024040C 1440FFF9 */ bnez $v0, .L802403F4
/* DDCC40 80240410 E4600058 */ swc1 $f0, 0x58($v1)
/* DDCC44 80240414 24C60001 */ addiu $a2, $a2, 1
/* DDCC48 80240418 28C20004 */ slti $v0, $a2, 4
/* DDCC4C 8024041C 1440FFF4 */ bnez $v0, .L802403F0
/* DDCC50 80240420 0000282D */ daddu $a1, $zero, $zero
/* DDCC54 80240424 96020000 */ lhu $v0, ($s0)
/* DDCC58 80240428 34421400 */ ori $v0, $v0, 0x1400
/* DDCC5C 8024042C A6020000 */ sh $v0, ($s0)
/* DDCC60 80240430 8E450000 */ lw $a1, ($s2)
/* DDCC64 80240434 8E26FFF0 */ lw $a2, -0x10($s1)
/* DDCC68 80240438 8E27FFF4 */ lw $a3, -0xc($s1)
/* DDCC6C 8024043C 0C019E40 */ jal guTranslateF
/* DDCC70 80240440 27A40020 */ addiu $a0, $sp, 0x20
/* DDCC74 80240444 8FA90170 */ lw $t1, 0x170($sp)
/* DDCC78 80240448 4406A000 */ mfc1 $a2, $f20
/* DDCC7C 8024044C 4407A000 */ mfc1 $a3, $f20
/* DDCC80 80240450 C5200074 */ lwc1 $f0, 0x74($t1)
/* DDCC84 80240454 46800020 */ cvt.s.w $f0, $f0
/* DDCC88 80240458 44050000 */ mfc1 $a1, $f0
/* DDCC8C 8024045C 02A0202D */ daddu $a0, $s5, $zero
/* DDCC90 80240460 0C019EC8 */ jal guRotateF
/* DDCC94 80240464 E7B60010 */ swc1 $f22, 0x10($sp)
/* DDCC98 80240468 C6400000 */ lwc1 $f0, ($s2)
/* DDCC9C 8024046C C622FFF4 */ lwc1 $f2, -0xc($s1)
/* DDCCA0 80240470 46000007 */ neg.s $f0, $f0
/* DDCCA4 80240474 46001087 */ neg.s $f2, $f2
/* DDCCA8 80240478 44050000 */ mfc1 $a1, $f0
/* DDCCAC 8024047C C620FFF0 */ lwc1 $f0, -0x10($s1)
/* DDCCB0 80240480 44071000 */ mfc1 $a3, $f2
/* DDCCB4 80240484 46000007 */ neg.s $f0, $f0
/* DDCCB8 80240488 44060000 */ mfc1 $a2, $f0
/* DDCCBC 8024048C 0C019E40 */ jal guTranslateF
/* DDCCC0 80240490 0280202D */ daddu $a0, $s4, $zero
/* DDCCC4 80240494 4406A000 */ mfc1 $a2, $f20
/* DDCCC8 80240498 8FA90170 */ lw $t1, 0x170($sp)
/* DDCCCC 8024049C 4407A000 */ mfc1 $a3, $f20
/* DDCCD0 802404A0 8D220074 */ lw $v0, 0x74($t1)
/* DDCCD4 802404A4 8FA40130 */ lw $a0, 0x130($sp)
/* DDCCD8 802404A8 00021023 */ negu $v0, $v0
/* DDCCDC 802404AC 44824000 */ mtc1 $v0, $f8
/* DDCCE0 802404B0 00000000 */ nop
/* DDCCE4 802404B4 46804220 */ cvt.s.w $f8, $f8
/* DDCCE8 802404B8 44054000 */ mfc1 $a1, $f8
/* DDCCEC 802404BC 0C019EC8 */ jal guRotateF
/* DDCCF0 802404C0 E7B60010 */ swc1 $f22, 0x10($sp)
/* DDCCF4 802404C4 27A40020 */ addiu $a0, $sp, 0x20
/* DDCCF8 802404C8 02A0282D */ daddu $a1, $s5, $zero
/* DDCCFC 802404CC 0C019D80 */ jal guMtxCatF
/* DDCD00 802404D0 02A0302D */ daddu $a2, $s5, $zero
/* DDCD04 802404D4 02A0202D */ daddu $a0, $s5, $zero
/* DDCD08 802404D8 0280282D */ daddu $a1, $s4, $zero
/* DDCD0C 802404DC 0C019D80 */ jal guMtxCatF
/* DDCD10 802404E0 0280302D */ daddu $a2, $s4, $zero
/* DDCD14 802404E4 0280282D */ daddu $a1, $s4, $zero
/* DDCD18 802404E8 8FA40130 */ lw $a0, 0x130($sp)
/* DDCD1C 802404EC 0C019D80 */ jal guMtxCatF
/* DDCD20 802404F0 0280302D */ daddu $a2, $s4, $zero
/* DDCD24 802404F4 26100058 */ addiu $s0, $s0, 0x58
/* DDCD28 802404F8 0200202D */ daddu $a0, $s0, $zero
/* DDCD2C 802404FC 0280282D */ daddu $a1, $s4, $zero
/* DDCD30 80240500 0C019D80 */ jal guMtxCatF
/* DDCD34 80240504 0200302D */ daddu $a2, $s0, $zero
/* DDCD38 80240508 86640002 */ lh $a0, 2($s3)
/* DDCD3C 8024050C 0C016E89 */ jal update_collider_transform
/* DDCD40 80240510 00000000 */ nop
/* DDCD44 80240514 0200202D */ daddu $a0, $s0, $zero
/* DDCD48 80240518 4405A000 */ mfc1 $a1, $f20
/* DDCD4C 8024051C 4406A000 */ mfc1 $a2, $f20
/* DDCD50 80240520 4407A000 */ mfc1 $a3, $f20
/* DDCD54 80240524 27A20120 */ addiu $v0, $sp, 0x120
/* DDCD58 80240528 AFA20010 */ sw $v0, 0x10($sp)
/* DDCD5C 8024052C 27A20124 */ addiu $v0, $sp, 0x124
/* DDCD60 80240530 AFA20014 */ sw $v0, 0x14($sp)
/* DDCD64 80240534 27A20128 */ addiu $v0, $sp, 0x128
/* DDCD68 80240538 0C019E9C */ jal guMtxXFMF
/* DDCD6C 8024053C AFA20018 */ sw $v0, 0x18($sp)
/* DDCD70 80240540 3C028016 */ lui $v0, %hi(gCollisionStatus+0x2)
/* DDCD74 80240544 8442A552 */ lh $v0, %lo(gCollisionStatus+0x2)($v0)
/* DDCD78 80240548 8E630000 */ lw $v1, ($s3)
/* DDCD7C 8024054C 10430005 */ beq $v0, $v1, .L80240564
/* DDCD80 80240550 00000000 */ nop
/* DDCD84 80240554 3C028016 */ lui $v0, %hi(gCollisionStatus+0x4)
/* DDCD88 80240558 8442A554 */ lh $v0, %lo(gCollisionStatus+0x4)($v0)
/* DDCD8C 8024055C 1443000D */ bne $v0, $v1, .L80240594
/* DDCD90 80240560 00000000 */ nop
.L80240564:
/* DDCD94 80240564 C7A00120 */ lwc1 $f0, 0x120($sp)
/* DDCD98 80240568 C622FFF8 */ lwc1 $f2, -8($s1)
/* DDCD9C 8024056C 46020001 */ sub.s $f0, $f0, $f2
/* DDCDA0 80240570 E7C0001C */ swc1 $f0, 0x1c($fp)
/* DDCDA4 80240574 C7A00124 */ lwc1 $f0, 0x124($sp)
/* DDCDA8 80240578 C622FFFC */ lwc1 $f2, -4($s1)
/* DDCDAC 8024057C 46020001 */ sub.s $f0, $f0, $f2
/* DDCDB0 80240580 E7C00020 */ swc1 $f0, 0x20($fp)
/* DDCDB4 80240584 C7A00128 */ lwc1 $f0, 0x128($sp)
/* DDCDB8 80240588 C6220000 */ lwc1 $f2, ($s1)
/* DDCDBC 8024058C 46020001 */ sub.s $f0, $f0, $f2
/* DDCDC0 80240590 E7C00024 */ swc1 $f0, 0x24($fp)
.L80240594:
/* DDCDC4 80240594 86C30084 */ lh $v1, 0x84($s6)
/* DDCDC8 80240598 8E620000 */ lw $v0, ($s3)
/* DDCDCC 8024059C 14620013 */ bne $v1, $v0, .L802405EC
/* DDCDD0 802405A0 26730004 */ addiu $s3, $s3, 4
/* DDCDD4 802405A4 C7A20120 */ lwc1 $f2, 0x120($sp)
/* DDCDD8 802405A8 C620FFF8 */ lwc1 $f0, -8($s1)
/* DDCDDC 802405AC 46001081 */ sub.s $f2, $f2, $f0
/* DDCDE0 802405B0 C6C00038 */ lwc1 $f0, 0x38($s6)
/* DDCDE4 802405B4 46020000 */ add.s $f0, $f0, $f2
/* DDCDE8 802405B8 E6C00038 */ swc1 $f0, 0x38($s6)
/* DDCDEC 802405BC C7A20124 */ lwc1 $f2, 0x124($sp)
/* DDCDF0 802405C0 C620FFFC */ lwc1 $f0, -4($s1)
/* DDCDF4 802405C4 46001081 */ sub.s $f2, $f2, $f0
/* DDCDF8 802405C8 C6C0003C */ lwc1 $f0, 0x3c($s6)
/* DDCDFC 802405CC 46020000 */ add.s $f0, $f0, $f2
/* DDCE00 802405D0 E6C0003C */ swc1 $f0, 0x3c($s6)
/* DDCE04 802405D4 C7A20128 */ lwc1 $f2, 0x128($sp)
/* DDCE08 802405D8 C6200000 */ lwc1 $f0, ($s1)
/* DDCE0C 802405DC 46001081 */ sub.s $f2, $f2, $f0
/* DDCE10 802405E0 C6C00040 */ lwc1 $f0, 0x40($s6)
/* DDCE14 802405E4 46020000 */ add.s $f0, $f0, $f2
/* DDCE18 802405E8 E6C00040 */ swc1 $f0, 0x40($s6)
.L802405EC:
/* DDCE1C 802405EC 26520058 */ addiu $s2, $s2, 0x58
/* DDCE20 802405F0 8FA90134 */ lw $t1, 0x134($sp)
/* DDCE24 802405F4 C7A00120 */ lwc1 $f0, 0x120($sp)
/* DDCE28 802405F8 C7A20124 */ lwc1 $f2, 0x124($sp)
/* DDCE2C 802405FC C7A40128 */ lwc1 $f4, 0x128($sp)
/* DDCE30 80240600 25290004 */ addiu $t1, $t1, 4
/* DDCE34 80240604 AFA90134 */ sw $t1, 0x134($sp)
/* DDCE38 80240608 E620FFF8 */ swc1 $f0, -8($s1)
/* DDCE3C 8024060C E622FFFC */ swc1 $f2, -4($s1)
/* DDCE40 80240610 E6240000 */ swc1 $f4, ($s1)
/* DDCE44 80240614 3C098024 */ lui $t1, %hi(D_80241778_DDDFA8)
/* DDCE48 80240618 25291778 */ addiu $t1, $t1, %lo(D_80241778_DDDFA8)
/* DDCE4C 8024061C 25220018 */ addiu $v0, $t1, 0x18
/* DDCE50 80240620 0262102B */ sltu $v0, $s3, $v0
/* DDCE54 80240624 1440FF68 */ bnez $v0, .L802403C8
/* DDCE58 80240628 26310058 */ addiu $s1, $s1, 0x58
/* DDCE5C 8024062C 8FA90170 */ lw $t1, 0x170($sp)
/* DDCE60 80240630 4480A000 */ mtc1 $zero, $f20
/* DDCE64 80240634 3C013F80 */ lui $at, 0x3f80
/* DDCE68 80240638 4481B000 */ mtc1 $at, $f22
/* DDCE6C 8024063C C5200074 */ lwc1 $f0, 0x74($t1)
/* DDCE70 80240640 46800020 */ cvt.s.w $f0, $f0
/* DDCE74 80240644 44050000 */ mfc1 $a1, $f0
/* DDCE78 80240648 4406A000 */ mfc1 $a2, $f20
/* DDCE7C 8024064C 4407A000 */ mfc1 $a3, $f20
/* DDCE80 80240650 26E40058 */ addiu $a0, $s7, 0x58
/* DDCE84 80240654 0C019EC8 */ jal guRotateF
/* DDCE88 80240658 E7B60010 */ swc1 $f22, 0x10($sp)
/* DDCE8C 8024065C 96E20000 */ lhu $v0, ($s7)
/* DDCE90 80240660 24040032 */ addiu $a0, $zero, 0x32
/* DDCE94 80240664 34421400 */ ori $v0, $v0, 0x1400
/* DDCE98 80240668 0C016E89 */ jal update_collider_transform
/* DDCE9C 8024066C A6E20000 */ sh $v0, ($s7)
/* DDCEA0 80240670 8FA90170 */ lw $t1, 0x170($sp)
/* DDCEA4 80240674 4406A000 */ mfc1 $a2, $f20
/* DDCEA8 80240678 C5200074 */ lwc1 $f0, 0x74($t1)
/* DDCEAC 8024067C 46800020 */ cvt.s.w $f0, $f0
/* DDCEB0 80240680 44050000 */ mfc1 $a1, $f0
/* DDCEB4 80240684 8FA9012C */ lw $t1, 0x12c($sp)
/* DDCEB8 80240688 00C0382D */ daddu $a3, $a2, $zero
/* DDCEBC 8024068C E7B60010 */ swc1 $f22, 0x10($sp)
/* DDCEC0 80240690 0C019EC8 */ jal guRotateF
/* DDCEC4 80240694 25240058 */ addiu $a0, $t1, 0x58
/* DDCEC8 80240698 8FA9012C */ lw $t1, 0x12c($sp)
/* DDCECC 8024069C 0000982D */ daddu $s3, $zero, $zero
/* DDCED0 802406A0 95220000 */ lhu $v0, ($t1)
/* DDCED4 802406A4 24040027 */ addiu $a0, $zero, 0x27
/* DDCED8 802406A8 34421400 */ ori $v0, $v0, 0x1400
/* DDCEDC 802406AC 0C016E89 */ jal update_collider_transform
/* DDCEE0 802406B0 A5220000 */ sh $v0, ($t1)
/* DDCEE4 802406B4 0260202D */ daddu $a0, $s3, $zero
/* DDCEE8 802406B8 3C05800B */ lui $a1, %hi(gCameras)
/* DDCEEC 802406BC 24A51D80 */ addiu $a1, $a1, %lo(gCameras)
/* DDCEF0 802406C0 2408000E */ addiu $t0, $zero, 0xe
/* DDCEF4 802406C4 24070010 */ addiu $a3, $zero, 0x10
/* DDCEF8 802406C8 3C038024 */ lui $v1, %hi(D_80241778_DDDFA8)
/* DDCEFC 802406CC 24631778 */ addiu $v1, $v1, %lo(D_80241778_DDDFA8)
/* DDCF00 802406D0 3C068016 */ lui $a2, %hi(gCollisionStatus+0x2)
/* DDCF04 802406D4 84C6A552 */ lh $a2, %lo(gCollisionStatus+0x2)($a2)
.L802406D8:
/* DDCF08 802406D8 8C620000 */ lw $v0, ($v1)
/* DDCF0C 802406DC 54C20012 */ bnel $a2, $v0, .L80240728
/* DDCF10 802406E0 26730001 */ addiu $s3, $s3, 1
/* DDCF14 802406E4 8FC20000 */ lw $v0, ($fp)
/* DDCF18 802406E8 30421000 */ andi $v0, $v0, 0x1000
/* DDCF1C 802406EC 10400007 */ beqz $v0, .L8024070C
/* DDCF20 802406F0 00000000 */ nop
/* DDCF24 802406F4 C7C00028 */ lwc1 $f0, 0x28($fp)
/* DDCF28 802406F8 C7C2002C */ lwc1 $f2, 0x2c($fp)
/* DDCF2C 802406FC C7C40030 */ lwc1 $f4, 0x30($fp)
/* DDCF30 80240700 E4A00060 */ swc1 $f0, 0x60($a1)
/* DDCF34 80240704 E4A20064 */ swc1 $f2, 0x64($a1)
/* DDCF38 80240708 E4A40068 */ swc1 $f4, 0x68($a1)
.L8024070C:
/* DDCF3C 8024070C 83C200B4 */ lb $v0, 0xb4($fp)
/* DDCF40 80240710 50480004 */ beql $v0, $t0, .L80240724
/* DDCF44 80240714 24040001 */ addiu $a0, $zero, 1
/* DDCF48 80240718 54470003 */ bnel $v0, $a3, .L80240728
/* DDCF4C 8024071C 26730001 */ addiu $s3, $s3, 1
/* DDCF50 80240720 24040001 */ addiu $a0, $zero, 1
.L80240724:
/* DDCF54 80240724 26730001 */ addiu $s3, $s3, 1
.L80240728:
/* DDCF58 80240728 2E620006 */ sltiu $v0, $s3, 6
/* DDCF5C 8024072C 1440FFEA */ bnez $v0, .L802406D8
/* DDCF60 80240730 24630004 */ addiu $v1, $v1, 4
/* DDCF64 80240734 14800005 */ bnez $a0, .L8024074C
/* DDCF68 80240738 00000000 */ nop
/* DDCF6C 8024073C 8FA90170 */ lw $t1, 0x170($sp)
/* DDCF70 80240740 8D220074 */ lw $v0, 0x74($t1)
/* DDCF74 80240744 2442FFFF */ addiu $v0, $v0, -1
/* DDCF78 80240748 AD220074 */ sw $v0, 0x74($t1)
.L8024074C:
/* DDCF7C 8024074C 8FBF015C */ lw $ra, 0x15c($sp)
/* DDCF80 80240750 8FBE0158 */ lw $fp, 0x158($sp)
/* DDCF84 80240754 8FB70154 */ lw $s7, 0x154($sp)
/* DDCF88 80240758 8FB60150 */ lw $s6, 0x150($sp)
/* DDCF8C 8024075C 8FB5014C */ lw $s5, 0x14c($sp)
/* DDCF90 80240760 8FB40148 */ lw $s4, 0x148($sp)
/* DDCF94 80240764 8FB30144 */ lw $s3, 0x144($sp)
/* DDCF98 80240768 8FB20140 */ lw $s2, 0x140($sp)
/* DDCF9C 8024076C 8FB1013C */ lw $s1, 0x13c($sp)
/* DDCFA0 80240770 8FB00138 */ lw $s0, 0x138($sp)
/* DDCFA4 80240774 D7B60168 */ ldc1 $f22, 0x168($sp)
/* DDCFA8 80240778 D7B40160 */ ldc1 $f20, 0x160($sp)
/* DDCFAC 8024077C 0000102D */ daddu $v0, $zero, $zero
/* DDCFB0 80240780 03E00008 */ jr $ra
/* DDCFB4 80240784 27BD0170 */ addiu $sp, $sp, 0x170
/* DDCFB8 80240788 00000000 */ nop
/* DDCFBC 8024078C 00000000 */ nop