From 0cee144b188b2b887b8e01c9cf25da9648c3480a Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Thu, 19 Jan 2023 10:33:52 +0900 Subject: [PATCH] func_802401A0_DDC9D0 & save/load tattle flags (#915) * func_802401A0_DDC9D0 * func_802428C8_A2CB08 * cleanup * wip * warning * save/load_tattle_flags * PR comments * idnex --- include/common_structs.h | 2 +- include/enums.h | 3 +- src/181810.c | 184 +++++++- src/190B20.c | 372 ++++++++++++++++ .../actor/spiked_para_jr_troopa.c | 2 +- src/world/area_hos/hos_05/A2AAC0.c | 188 +++++++- src/world/area_omo/omo_11/DDC830.c | 128 +++++- .../nonmatchings/181810/load_tattle_flags.s | 91 ---- .../nonmatchings/181810/save_tattle_flags.s | 103 ----- .../hos_05/A2AAC0/func_802428C8_A2CB08.s | 4 +- .../omo_11/DDC830/func_802401A0_DDC9D0.s | 401 ------------------ 11 files changed, 856 insertions(+), 622 deletions(-) delete mode 100644 ver/us/asm/nonmatchings/181810/load_tattle_flags.s delete mode 100644 ver/us/asm/nonmatchings/181810/save_tattle_flags.s delete mode 100644 ver/us/asm/nonmatchings/world/area_omo/omo_11/DDC830/func_802401A0_DDC9D0.s diff --git a/include/common_structs.h b/include/common_structs.h index f4eb7fa7c8..75674e61da 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -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; diff --git a/include/enums.h b/include/enums.h index cf011c3e9c..6e47a644d7 100644 --- a/include/enums.h +++ b/include/enums.h @@ -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, diff --git a/src/181810.c b/src/181810.c index a7a4966d47..10f1e90e53 100644 --- a/src/181810.c +++ b/src/181810.c @@ -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; diff --git a/src/190B20.c b/src/190B20.c index d69b4b2a9a..b29da412ce 100644 --- a/src/190B20.c +++ b/src/190B20.c @@ -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); diff --git a/src/battle/area_kmr_part_3/actor/spiked_para_jr_troopa.c b/src/battle/area_kmr_part_3/actor/spiked_para_jr_troopa.c index 34c5b43a30..8906b99eba 100644 --- a/src/battle/area_kmr_part_3/actor/spiked_para_jr_troopa.c +++ b/src/battle/area_kmr_part_3/actor/spiked_para_jr_troopa.c @@ -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; } diff --git a/src/world/area_hos/hos_05/A2AAC0.c b/src/world/area_hos/hos_05/A2AAC0.c index 5bb3cb3d83..03f4b1cf9d 100644 --- a/src/world/area_hos/hos_05/A2AAC0.c +++ b/src/world/area_hos/hos_05/A2AAC0.c @@ -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]; diff --git a/src/world/area_omo/omo_11/DDC830.c b/src/world/area_omo/omo_11/DDC830.c index 71fe1a6ce1..da12041d8c 100644 --- a/src/world/area_omo/omo_11/DDC830.c +++ b/src/world/area_omo/omo_11/DDC830.c @@ -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; +} diff --git a/ver/us/asm/nonmatchings/181810/load_tattle_flags.s b/ver/us/asm/nonmatchings/181810/load_tattle_flags.s deleted file mode 100644 index c4b7ba2f38..0000000000 --- a/ver/us/asm/nonmatchings/181810/load_tattle_flags.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/181810/save_tattle_flags.s b/ver/us/asm/nonmatchings/181810/save_tattle_flags.s deleted file mode 100644 index 7d97c5b98a..0000000000 --- a/ver/us/asm/nonmatchings/181810/save_tattle_flags.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_802428C8_A2CB08.s b/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_802428C8_A2CB08.s index 90d16662f6..adcaad0b2e 100644 --- a/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_802428C8_A2CB08.s +++ b/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_802428C8_A2CB08.s @@ -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) diff --git a/ver/us/asm/nonmatchings/world/area_omo/omo_11/DDC830/func_802401A0_DDC9D0.s b/ver/us/asm/nonmatchings/world/area_omo/omo_11/DDC830/func_802401A0_DDC9D0.s deleted file mode 100644 index 83cf6a9ccd..0000000000 --- a/ver/us/asm/nonmatchings/world/area_omo/omo_11/DDC830/func_802401A0_DDC9D0.s +++ /dev/null @@ -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