Trigger funcs (#405)

* remove old tools, fix warnings

* almost match si_handle_print_debug_var

* si_goto_end_loop and warnings

* is_trigger_bound and create_trigger

* Cleanup + matching 2 non-matchings

* update_triggers (trigger.c complete)

* fix warnings

* PR comments, m2ctx.py fix
This commit is contained in:
Ethan Roseman 2021-08-29 22:44:17 +09:00 committed by GitHub
parent 09459d19b4
commit a865cbdf17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 592 additions and 1301 deletions

View File

@ -275,12 +275,12 @@ typedef struct Trigger {
/* 0x00 */ TriggerFlags flags;
/* 0x04 */ s32 params1;
/* 0x08 */ s32 params2;
/* 0x0C */ UNK_FUN_PTR(functionHandler);
/* 0x0C */ s32 (*functionHandler)(struct Trigger*);
/* 0x10 */ EvtSource* scriptSource;
/* 0x14 */ struct Evt* runningScript;
/* 0x18 */ s32 priority;
/* 0x1C */ s32 scriptVars[3];
/* 0x28 */ char unk_28[4];
/* 0x28 */ s32 unk_28;
/* 0x2C */ s32 unk_2C;
/* 0x30 */ u8 unk_30;
/* 0x31 */ char unk_31[3];
@ -1483,7 +1483,7 @@ typedef struct FontRasterSet {
/* 0x02 */ char unk_02[10];
} FontRasterSet; // size = 0x0C
typedef s32(*TriggerHandlerFunc)(struct Trigger*);
typedef s32 (*TriggerHandlerFunc)(Trigger*);
typedef struct TriggerDefinition {
/* 0x00 */ s32 flags;
@ -1512,7 +1512,7 @@ typedef struct CollisionStatus {
/* 0x16 */ s16 touchingWallTrigger; /* 0/1 */
/* 0x18 */ s16 bombetteExploded; /* 0 = yes, FFFF = no */
/* 0x1A */ char unk_1A[2];
/* 0x1C */ f32 bombetteExplositionPos[3];
/* 0x1C */ Vec3f bombetteExplosionPos;
} CollisionStatus; // size = 0x28
typedef struct DecorationTable {

View File

@ -155,7 +155,7 @@ s32 npc_test_move_simple_without_slipping(s32, f32*, f32*, f32*, f32, f32, f32,
void update_collider_transform(s16 colliderID);
void get_collider_center(s32 colliderID, f32* x, f32* y, f32* z);
s32 is_trigger_bound(Trigger*, Bytecode* script);
s32 is_trigger_bound(Trigger*, EvtSource* script);
Trigger* create_trigger(TriggerDefinition* def);
s32 _bound_script_trigger_handler(Trigger* trigger);
Trigger* get_trigger_by_id(s32 triggerID);
@ -164,6 +164,8 @@ Actor* get_actor(ActorID actorID);
ActorPart* get_actor_part(Actor* actor, s32 partIndex);
s32 add_coins(s32 amt);
s32 phys_can_player_interact(void);
void ai_enemy_play_sound(Npc* npc, s32 arg1, s32 arg2);
s32 player_test_move_without_slipping(PlayerStatus*, f32*, f32*, f32*, s32, f32, s32*);
@ -205,7 +207,25 @@ void set_game_mode(s16 idx);
f32 get_xz_dist_to_player(f32, f32);
void func_800E06C0(s32);
void close_status_menu(void);
Evt* func_802C39F8(Evt* parentScript, Bytecode* nextLine, s32 newState);
Evt* start_child_script(Evt* parentScript, EvtSource* source, s32 initialState);
Evt* restart_script(Evt* script);
void clear_virtual_entity_list(void);
void reset_model_animators(void);
void init_virtual_entity_list(void);
void init_model_animators(void);
s32 heap_free(void* ptr);
void btl_state_update_switch_to_partner(void);
void switch_to_partner(s32 arg0);
void delete_trigger(Trigger* toDelete);
void kill_script_by_ID(s32 id);
void set_script_priority(Evt* script, s32 priority);
void set_script_group(Evt* script, s32 groupFlags);
void suspend_group_others(Evt* script, s32 groupFlags);
void resume_group_others(Evt* script, s32 groupFlags);
s32 suspend_all_script(s32 id);
s32 resume_all_script(s32 id);
Shadow* create_shadow_type(s32 type, f32 x, f32 y, f32 z);
s32 is_point_within_region(s32 shape, f32 pointX, f32 pointY, f32 centerX, f32 centerY, f32 sizeX, f32 sizeZ);
@ -260,6 +280,11 @@ s32 is_ability_active(s32 arg0);
f32 update_lerp(Easing easing, f32 start, f32 end, s32 elapsed, s32 duration);
void sin_cos_deg(f32 rad, f32* outSinTheta, f32* outCosTheta);
void set_main_pan_u(s32 texPannerID, s32 value);
void set_main_pan_v(s32 texPannerID, s32 value);
void set_aux_pan_u(s32 texPannerID, s32 value);
void set_aux_pan_v(s32 texPannerID, s32 value);
void enable_world_fog(void);
void set_world_fog_dist(s32 start, s32 end);
void set_world_fog_color(s32 r, s32 g, s32 b, s32 a);

View File

@ -138,8 +138,8 @@ extern AnimatedModelList* gCurrentMeshAnimationListPtr;
// Triggers
extern s16 gTriggerCount;
extern TriggerList gTriggerList1;
extern TriggerList gTriggerList2;
extern TriggerList wTriggerList;
extern TriggerList bTriggerList;
extern TriggerList* gCurrentTriggerListPtr;
// Map transition data. Should probably be a struct
@ -298,7 +298,7 @@ extern Temp8010F250 D_8010F250; // sfx_play_sound state struct?
extern SaveData gCurrentSaveFile;
extern u32* gMapFlags;
extern u32* gMapVars;
extern s32* gMapVars;
extern f32 D_80286540;

View File

@ -1493,10 +1493,9 @@ INCLUDE_ASM(s32, "190B20", func_80266F60);
INCLUDE_ASM(s32, "190B20", func_80266F8C);
void func_80266FD8(ActorPart* part, s32 arg1) {
DecorationTable* decorationTable;
if (part->idleAnimations != NULL && !(part->flags & 2)) {
decorationTable = part->decorationTable;
DecorationTable* decorationTable = part->decorationTable;
if (decorationTable->unk_764 != arg1) {
decorationTable->unk_764 = arg1;
decorationTable->unk_766 = 0;
@ -1508,12 +1507,13 @@ void func_80266FD8(ActorPart* part, s32 arg1) {
void func_80267018(Actor* actor, s32 arg1) {
ActorPart* actorPart = &actor->partsTable[0];
while (actorPart != NULL) {
if (!(actorPart->flags & 0x100001) && actorPart->decorationTable != NULL && !(actorPart->flags & 2) && actorPart->idleAnimations != NULL) {
func_80266FD8(actorPart, arg1);
}
actorPart = actorPart->nextPart;
while (actorPart != NULL) {
if (!(actorPart->flags & 0x100001) && actorPart->decorationTable != NULL && !(actorPart->flags & 2) &&
actorPart->idleAnimations != NULL) {
func_80266FD8(actorPart, arg1);
}
actorPart = actorPart->nextPart;
}
}
INCLUDE_ASM(s32, "190B20", func_8026709C);

View File

@ -29,10 +29,10 @@ extern EvtSource N(idle_80239350);
extern EvtSource N(nextTurn_80239A3C);
extern EvtSource N(takeTurn_802396D8);
void func_802380E4_6F11C4();
void func_8023817C_6F125C();
void func_80238BCC_6F1CAC();
void func_80238EDC_6F1FBC();
ApiStatus func_802380E4_6F11C4(Evt* script, s32 isInitialCall);
ApiStatus func_8023817C_6F125C(Evt* script, s32 isInitialCall);
ApiStatus func_80238BCC_6F1CAC(Evt* script, s32 isInitialCall);
ApiStatus func_80238EDC_6F1FBC(Evt* script, s32 isInitialCall);
ApiStatus N(func_80238000_6F10E0)(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
@ -61,21 +61,18 @@ ApiStatus N(func_80238000_6F10E0)(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
#ifdef NON_MATCHING
ApiStatus func_802380E4_6F11C4(Evt* script, s32 isInitialCall) {
Actor* targetActor = get_actor(get_actor(script->owner1.actorID)->targetActorID);
script->varTable[0] = 99;
D_8023BB98_6ECC78 = ((D_8023BB98_6ECC78 * targetActor->staticActorData->powerBounceChance) * 0x51EB851F) >> 5 - (D_8023BB98_6ECC78 * targetActor->staticActorData->powerBounceChance >> 31);
D_8023BB98_6ECC78 *= targetActor->staticActorData->powerBounceChance;
D_8023BB98_6ECC78 /= 100;
if (D_8023BB98_6ECC78 < rand_int(100)) {
script->varTable[0] = 0;
}
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(s32, "battle/partner/goombario", func_802380E4_6F11C4);
#endif
INCLUDE_ASM(s32, "battle/partner/goombario", func_8023817C_6F125C);

View File

@ -1,6 +1,6 @@
#include "common.h"
extern s32* D_802382F8_714FE8[];
extern s32 D_802382F8_714FE8;
ApiStatus func_80238000_714CF0(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
@ -14,22 +14,11 @@ ApiStatus func_80238000_714CF0(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
#ifdef NON_MATCHING
ApiStatus func_80238028_714D18(Evt* script, s32 isInitialCall) {
Actor* actor = get_actor(script->owner1.actorID);
s32* var0 = &D_802382F8_714FE8[0];
s32 var4 = *D_802382F8_714FE8[1];
//s32* var4 = (*&var0);
s32 var1 = *var0 + 18;
f32 var2;
var1 = clamp_angle(var4 + 18);
var2 = var1 * 6.28318f;
actor->unk_19A = 2.0f * sin_rad(var2 / 360.0f);
D_802382F8_714FE8 += 18;
D_802382F8_714FE8 = clamp_angle(D_802382F8_714FE8);
actor->unk_19A = 2.0f * sin_rad(D_802382F8_714FE8 * TAU / 360.0f);
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(s32, "battle/partner/twink", func_80238028_714D18);
#endif

View File

@ -1,94 +0,0 @@
#include "common.h"
void default_trigger_delegate(s32* arg0) {
arg0[0] |= 2;
}
void clear_trigger_data(void) {
CollisionStatus* collisionStatus = &gCollisionStatus;
s32 i;
if (!gGameStatusPtr->isBattle) {
gCurrentTriggerListPtr = &gTriggerList1;
} else {
gCurrentTriggerListPtr = &gTriggerList2;
}
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
(*gCurrentTriggerListPtr)[i] = NULL;
}
gTriggerCount = 0;
collisionStatus->pushingAgainstWall = -1;
collisionStatus->currentFloor = -1;
collisionStatus->lastTouchedFloor = -1;
collisionStatus->currentCeiling = -1;
collisionStatus->unk_0A = -1;
collisionStatus->unk_0C = -1;
collisionStatus->unk_0E = -1;
collisionStatus->unk_10 = -1;
collisionStatus->currentWall = -1;
collisionStatus->lastWallHammered = -1;
collisionStatus->touchingWallTrigger = 0;
collisionStatus->bombetteExploded = -1;
collisionStatus->bombetteExplositionPos[0] = 0.0f;
collisionStatus->bombetteExplositionPos[1] = 0.0f;
collisionStatus->bombetteExplositionPos[2] = 0.0f;
}
void init_trigger_list(void) {
if (!gGameStatusPtr->isBattle) {
gCurrentTriggerListPtr = &gTriggerList1;
} else {
gCurrentTriggerListPtr = &gTriggerList2;
}
gTriggerCount = 0;
}
INCLUDE_ASM(Trigger*, "dbd70_len_700", create_trigger, TriggerDefinition* def);
INCLUDE_ASM(s32, "dbd70_len_700", update_triggers);
void delete_trigger(Trigger* toDelete) {
s32 i;
TriggerList** currentTriggerListPtr = &gCurrentTriggerListPtr;
for (i = 0; i < MAX_TRIGGERS; i++) {
if ((**currentTriggerListPtr)[i] == toDelete) {
break;
}
}
if (i < MAX_TRIGGERS) {
heap_free((**currentTriggerListPtr)[i]);
(**currentTriggerListPtr)[i] = NULL;
}
}
INCLUDE_ASM(s32, "dbd70_len_700", is_trigger_bound, Trigger* trigger, Bytecode* script);
Trigger* get_trigger_by_id(s32 triggerID) {
return (*gCurrentTriggerListPtr)[triggerID];
}
/// @returns TRUE if colliderID is bound to an interaction trigger (press A) and the player can use it.
s32 should_collider_allow_interact(s32 colliderID) {
s32 i;
if (phys_can_player_interact() == 0) {
return 0;
}
for (i = 0; i < MAX_TRIGGERS; i++) {
Trigger* trigger = (*gCurrentTriggerListPtr)[i];
if ((trigger != NULL) &&
(trigger->unk_30 != 0) &&
(trigger->params2 == colliderID) &&
(trigger->flags.flags & 0x100)) {
return 1;
}
}
return 0;
}

View File

@ -172,9 +172,9 @@ Evt* start_script(EvtSource* source, s32 priority, s32 initialState) {
newScript->state = initialState | 1;
newScript->currentOpcode = 0;
newScript->priority = priority;
newScript->ptrNextLine = source;
newScript->ptrFirstLine = source;
newScript->ptrCurrentLine = source;
newScript->ptrNextLine = (Bytecode*)source;
newScript->ptrFirstLine = (Bytecode*)source;
newScript->ptrCurrentLine = (Bytecode*)source;
newScript->userData = NULL;
newScript->blockingParent = NULL;
newScript->childScript = NULL;
@ -245,9 +245,9 @@ Evt* start_script_in_group(EvtSource* source, u8 priority, u8 initialState, u8 g
newScript->currentOpcode = 0;
newScript->priority = priority;
newScript->id = gStaticScriptCounter++;
newScript->ptrNextLine = source;
newScript->ptrFirstLine = source;
newScript->ptrCurrentLine = source;
newScript->ptrNextLine = (Bytecode*)source;
newScript->ptrFirstLine = (Bytecode*)source;
newScript->ptrCurrentLine = (Bytecode*)source;
newScript->userData = 0;
newScript->blockingParent = 0;
newScript->childScript = 0;
@ -311,7 +311,7 @@ Evt* start_child_script(Evt* parentScript, EvtSource* source, s32 initialState)
parentScript->childScript = child;
parentScript->state |= 0x10;
child->state = initialState | 1;
child->ptrCurrentLine = child->ptrFirstLine = child->ptrNextLine = source;
child->ptrCurrentLine = child->ptrFirstLine = child->ptrNextLine = (Bytecode*)source;
child->currentOpcode = 0;
@ -630,7 +630,7 @@ s32 does_script_exist_by_ref(Evt* script) {
return FALSE;
}
void set_script_priority(Evt* script, s8 priority) {
void set_script_priority(Evt* script, s32 priority) {
script->priority = priority;
}
@ -646,11 +646,11 @@ f32 get_global_timespace(void) {
return gGlobalTimeSpace;
}
void set_script_group(Evt* script, s8 groupFlags) {
void set_script_group(Evt* script, s32 groupFlags) {
script->groupFlags = groupFlags;
}
Trigger* bind_trigger(Bytecode* script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1,
Trigger* bind_trigger(EvtSource* script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1,
s32 priority, s32 arg6) {
Trigger* trigger;
TriggerDefinition def;
@ -670,7 +670,7 @@ Trigger* bind_trigger(Bytecode* script, s32 flags, s32 triggerFlagIndex, s32 tri
return trigger;
}
Trigger* bind_trigger_1(Bytecode* script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1,
Trigger* bind_trigger_1(EvtSource* script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1,
s32 priority) {
return bind_trigger(script, flags, triggerFlagIndex, triggerVar0, triggerVar1, priority, 1);
}

View File

@ -13,6 +13,9 @@ u8 D_802D9D71 = 0xFE;
u8 D_802D9D72 = 0x00;
u8 D_802D9D73 = 0xFF;
// BSS
extern s8 evtDebugPrintBuffer[];
f32 fixed_var_to_float(Bytecode scriptVar) {
if (scriptVar <= -220000000) {
return (scriptVar + 230000000) / 1024.0f;
@ -46,7 +49,7 @@ ApiStatus si_handle_loop(Evt* script) {
ASSERT(loopDepth < 8);
script->loopStartTable[loopDepth] = args;
script->loopStartTable[loopDepth] = (s32)args;
script->loopCounterTable[loopDepth] = var;
return ApiStatus_DONE2;
@ -61,7 +64,7 @@ ApiStatus si_handle_end_loop(Evt* script) {
loopCounter = script->loopCounterTable[loopDepth];
if (loopCounter == 0) {
script->ptrNextLine = script->loopStartTable[loopDepth];
script->ptrNextLine = (Bytecode*)script->loopStartTable[loopDepth];
return ApiStatus_DONE2;
}
@ -74,7 +77,7 @@ ApiStatus si_handle_end_loop(Evt* script) {
}
if (loopCounter != 0) {
script->ptrNextLine = script->loopStartTable[loopDepth];
script->ptrNextLine = (Bytecode*)script->loopStartTable[loopDepth];
return ApiStatus_DONE2;
} else {
script->loopDepth--;
@ -225,12 +228,13 @@ ApiStatus si_handle_switch(Evt* script) {
}
ApiStatus si_handle_switch_const(Evt* script) {
Bytecode* args = *script->ptrReadPos;
Bytecode* args = script->ptrReadPos;
s32 a0 = *args++;
s32 switchDepth = ++script->switchDepth;
ASSERT(switchDepth < 8);
script->switchBlockValue[switchDepth] = args;
script->switchBlockValue[switchDepth] = a0;
script->switchBlockState[switchDepth] = 1;
return ApiStatus_DONE2;
@ -657,12 +661,16 @@ ApiStatus si_handle_divideF(Evt* script) {
}
ApiStatus si_handle_set_int_buffer_ptr(Evt* script) {
script->buffer = get_variable(script, *script->ptrReadPos);
Bytecode* args = script->ptrReadPos;
script->buffer = (s32*)get_variable(script, *args++);
return ApiStatus_DONE2;
}
ApiStatus si_handle_set_float_buffer_ptr(Evt* script) {
script->buffer = get_variable(script, *script->ptrReadPos);
Bytecode* args = script->ptrReadPos;
script->buffer = (s32*)get_variable(script, *args++);
return ApiStatus_DONE2;
}
@ -829,7 +837,7 @@ ApiStatus si_handle_allocate_array(Evt* script) {
s32 size = get_variable(script, *args++);
Bytecode var = *args++;
script->array = (s32)heap_malloc(size * 4);
script->array = (s32*)heap_malloc(size * 4);
set_variable(script, var, (s32)script->array);
return ApiStatus_DONE2;
}
@ -903,7 +911,7 @@ ApiStatus si_handle_exec1(Evt* script) {
Evt* newScript;
s32 i;
newScript = start_script_in_group((Evt*)get_variable(script, *script->ptrReadPos), script->priority, 0,
newScript = start_script_in_group((EvtSource*)get_variable(script, *script->ptrReadPos), script->priority, 0,
script->groupFlags);
newScript->owner1 = script->owner1;
@ -927,12 +935,12 @@ ApiStatus si_handle_exec1(Evt* script) {
ApiStatus si_handle_exec1_get_id(Evt* script) {
Bytecode* args = script->ptrReadPos;
Evt* var = (Evt*)get_variable(script, *args++);
EvtSource* evtSource = (EvtSource*)get_variable(script, *args++);
Bytecode arg2 = *args++;
Evt* newScript;
s32 i;
newScript = start_script_in_group(var, script->priority, 0, script->groupFlags);
newScript = start_script_in_group(evtSource, script->priority, 0, script->groupFlags);
newScript->owner1 = script->owner1;
newScript->owner2 = script->owner2;
@ -954,19 +962,23 @@ ApiStatus si_handle_exec1_get_id(Evt* script) {
}
ApiStatus si_handle_exec_wait(Evt* script) {
start_child_script(script, get_variable(script, *script->ptrReadPos), 0);
Bytecode* args = script->ptrReadPos;
start_child_script(script, (EvtSource*)get_variable(script, *args++), 0);
script->currentOpcode = 0;
return ApiStatus_FINISH;
}
ApiStatus si_handle_jump(Evt* script) {
script->ptrFirstLine = (Bytecode*)get_variable(script, *script->ptrReadPos);
Bytecode* args = script->ptrReadPos;
script->ptrFirstLine = (Bytecode*)get_variable(script, *args++);
restart_script(script);
return ApiStatus_DONE2;
}
s32 _bound_script_trigger_handler(Trigger* trigger) {
Bytecode* scriptStart;
EvtSource* scriptStart;
Evt* script;
if (trigger->runningScript == NULL) {
@ -975,7 +987,7 @@ s32 _bound_script_trigger_handler(Trigger* trigger) {
return 0;
}
script = start_script(scriptStart, trigger->priority, 0x20);
script = start_script((EvtSource*)scriptStart, trigger->priority, 0x20);
trigger->runningScript = script;
trigger->runningScriptID = script->id;
script->varTable[0] = trigger->scriptVars[0];
@ -995,7 +1007,7 @@ s32 _bound_script_trigger_handler(Trigger* trigger) {
ApiStatus si_handle_bind(Evt* script) {
Bytecode* args = script->ptrReadPos;
Trigger* trigger;
Bytecode* triggerScript = get_variable(script, *args++);
Bytecode* triggerScript = (Bytecode*)get_variable(script, *args++);
Bytecode eventType = *args++;
Bytecode colliderIDVar = *args++;
Bytecode a3 = *args++;
@ -1010,7 +1022,7 @@ ApiStatus si_handle_bind(Evt* script) {
def.function = _bound_script_trigger_handler;
trigger = create_trigger(&def);
trigger->scriptSource = triggerScript;
trigger->scriptSource = (EvtSource*)triggerScript;
trigger->runningScript = NULL;
trigger->priority = script->priority;
trigger->scriptVars[0] = get_variable(script, script->varTable[0]);
@ -1018,14 +1030,14 @@ ApiStatus si_handle_bind(Evt* script) {
trigger->scriptVars[2] = get_variable(script, script->varTable[2]);
if (triggerOut != 0) {
set_variable(script, triggerOut, trigger);
set_variable(script, triggerOut, (s32)trigger);
}
return ApiStatus_DONE2;
}
ApiStatus DeleteTrigger(Evt* script, s32 isInitialCall) {
delete_trigger(get_variable(script, *script->ptrReadPos));
delete_trigger((Trigger*)get_variable(script, *script->ptrReadPos));
return ApiStatus_DONE2;
}
@ -1113,10 +1125,10 @@ void si_standard_trigger_executor(Trigger* trigger) {
ApiStatus si_handle_bind_lock(Evt* script) {
Bytecode* args = script->ptrReadPos;
Trigger* trigger;
Bytecode* triggerScript = get_variable(script, *args++);
Bytecode* triggerScript = (Bytecode*)get_variable(script, *args++);
Bytecode eventType = *args++;
Bytecode colliderIDVar = *args++;
s32* itemList = get_variable(script, *args++);
s32* itemList = (s32*)get_variable(script, *args++);
Bytecode triggerOut = *args++;
s32 a5 = *args++;
TriggerDefinition def;
@ -1130,7 +1142,7 @@ ApiStatus si_handle_bind_lock(Evt* script) {
def.inputArg3 = a5;
trigger = create_trigger(&def);
trigger->scriptSource = triggerScript;
trigger->scriptSource = (EvtSource*)triggerScript;
trigger->runningScript = NULL;
trigger->priority = script->priority;
trigger->scriptVars[0] = get_variable(script, script->varTable[0]);
@ -1161,7 +1173,108 @@ ApiStatus func_802C6E14(Evt* script) {
}
ApiStatus si_handle_print_debug_var(Evt* script);
// Almost, some ordering stuff and such
#ifdef NON_MATCHING
s32 si_handle_print_debug_var(Evt* script) {
Bytecode* args = script->ptrReadPos;
s32 var = *args++;
s32 phi_t0;
if (var <= -270000000) {
sprintf(&evtDebugPrintBuffer, "ADDR [%08X]", var);
} else if (var <= -220000000) {
sprintf(&evtDebugPrintBuffer, "FLOAT [%4.2f]", fixed_var_to_float(var));
} else if (var <= -200000000) {
var += 210000000;
phi_t0 = var % 32;
sprintf(&evtDebugPrintBuffer, "UF(%3d) [%d]", var, script->flagArray[var / 32] & (1 << phi_t0));
} else if (var <= -180000000) {
s32 arrayVal;
var += 190000000;
arrayVal = script->array[var];
if (script->array[var] <= -270000000) {
sprintf(&evtDebugPrintBuffer, "UW(%3d) [%08X]", var, arrayVal);
} else if (arrayVal <= -220000000) {
sprintf(&evtDebugPrintBuffer, "UW(%3d) [%4.2f]", var, fixed_var_to_float(arrayVal));
} else {
sprintf(&evtDebugPrintBuffer, "UW(%3d) [%d]", var, arrayVal);
}
} else if (var <= -160000000) {
s32 globalByte;
var += 170000000;
globalByte = get_global_byte(var);
if (globalByte <= -270000000) {
sprintf(&evtDebugPrintBuffer, "GSW(%3d) [%08X]", var, globalByte);
} else if (globalByte <= -220000000) {
sprintf(&evtDebugPrintBuffer, "GSW(%3d) [%4.2f]", var, fixed_var_to_float(globalByte));
} else {
sprintf(&evtDebugPrintBuffer, "GSW(%3d) [%d]", var, globalByte);
}
} else if (var <= -140000000) {
s32 areaByte;
var += 150000000;
areaByte = get_area_byte(var);
if (areaByte <= -270000000) {
sprintf(&evtDebugPrintBuffer, "LSW(%3d) [%08X]", var, areaByte);
} else if (areaByte <= -220000000) {
sprintf(&evtDebugPrintBuffer, "LSW(%3d) [%4.2f]", var, fixed_var_to_float(areaByte));
} else {
sprintf(&evtDebugPrintBuffer, "LSW(%3d) [%d]", var, areaByte);
}
} else if (var <= -120000000) {
var += 130000000;
sprintf(&evtDebugPrintBuffer, "GSWF(%3d)[%d]", var, get_global_flag(var));
} else if (var <= -100000000) {
var += 110000000;
sprintf(&evtDebugPrintBuffer, "LSWF(%3d)[%d]", var, get_area_flag(var));
} else if (var <= -80000000) {
var += 90000000;
phi_t0 = var % 32;
sprintf(&evtDebugPrintBuffer, "GF(%3d) [%d]", var, gMapFlags[var / 32] & (1 << phi_t0));
} else if (var <= -60000000) {
var += 70000000;
phi_t0 = var % 32;
sprintf(&evtDebugPrintBuffer, "LF(%3d) [%d]", var, script->varFlags[var / 32] & (1 << phi_t0));
} else if (var <= -40000000) {
s32 mapVar;
var += 50000000;
mapVar = gMapVars[var];
if (mapVar <= -270000000) {
sprintf(&evtDebugPrintBuffer, "GW(%3d) [%08X]", var, mapVar);
} else if (mapVar <= -220000000) {
sprintf(&evtDebugPrintBuffer, "GW(%3d) [%4.2f]", var, fixed_var_to_float(mapVar));
} else {
sprintf(&evtDebugPrintBuffer, "GW(%3d) [%d]", var, mapVar);
}
} else if (var <= -20000000) {
s32 tableVar;
var += 30000000;
tableVar = script->varTable[var];
if (tableVar <= -270000000) {
sprintf(&evtDebugPrintBuffer, "LW(%3d) [%08X]", var, tableVar);
} else if (tableVar <= -220000000) {
sprintf(&evtDebugPrintBuffer, "LW(%3d) [%4.2f]", var, fixed_var_to_float(tableVar));
} else {
sprintf(&evtDebugPrintBuffer, "LW(%3d) [%d]", var, tableVar);
}
} else {
sprintf(&evtDebugPrintBuffer, " [%d]", var);
}
return ApiStatus_DONE2;
}
#else
INCLUDE_ASM(ApiStatus, "evt/si", si_handle_print_debug_var, Evt* script);
#endif
ApiStatus func_802C739C(Evt* script) {
script->ptrSavedPosition = (Bytecode*)*script->ptrReadPos;
@ -1840,6 +1953,7 @@ Bytecode* si_goto_next_case(Evt* script) {
switch (*opcode) {
case EVT_OP_END:
PANIC();
break;
case EVT_OP_MATCH:
switchDepth++;
break;
@ -1863,9 +1977,35 @@ Bytecode* si_goto_next_case(Evt* script) {
if (switchDepth == 1) {
return opcode;
}
break;
break;
}
} while(1);
}
INCLUDE_ASM(Bytecode*, "evt/si", si_goto_end_loop, Evt* script);
Bytecode* si_goto_end_loop(Evt* script) {
s32 loopDepth = 0;
Bytecode* pos = script->ptrNextLine;
s32 opcode;
s32 nargs;
do {
opcode = *pos++;
nargs = *pos++;
pos += nargs;
switch (opcode) {
case EVT_OP_END:
PANIC();
break;
case EVT_OP_END_LOOP:
loopDepth--;
if (loopDepth < 0) {
return pos;
}
break;
case EVT_OP_LOOP:
loopDepth++;
break;
}
} while(1);
}

View File

@ -39,9 +39,9 @@ extern void* D_80157F70;
extern void* D_80158574;
extern void* D_80158580;
extern void* D_80158B80;
extern void* D_80157964;
extern void* D_80158570;
extern void* D_80151314;
extern s32 D_80157964;
extern s32 D_80158570;
extern s32 D_80151314;
INCLUDE_ASM(void, "hud_element", load_hud_element, HudElement* hudElement, const HudElementAnim* anim);
@ -190,7 +190,7 @@ void set_hud_element_anim(s32 id, const HudElementAnim* anim) {
HudElement* hudElement = hudElements[id & ~0x800];
if (anim == NULL) {
anim = hud_element_defaultAnim;
anim = &hud_element_defaultAnim;
}
hudElement->updateTimer = 1;
@ -198,7 +198,7 @@ void set_hud_element_anim(s32 id, const HudElementAnim* anim) {
hudElement->heightScale = 1024;
hudElement->readPos = anim;
hudElement->anim = anim;
hudElement->ptrPropertyList = anim;
hudElement->ptrPropertyList = (s32*)anim;
hudElement->screenPosOffset.x = 0;
hudElement->screenPosOffset.y = 0;
hudElement->worldPosOffset.x = 0;
@ -328,4 +328,4 @@ INCLUDE_ASM(void, "hud_element", set_hud_element_transform_rotation_pivot, s32 i
INCLUDE_ASM(void, "hud_element", copy_world_hud_element_ref_to_battle, s32 worldID, s32 battleID);
INCLUDE_ASM(void, "hud_element", set_hud_element_nonworld_cache, void* base, size_t size);
INCLUDE_ASM(void, "hud_element", set_hud_element_nonworld_cache, void* base, s32 size);

View File

@ -232,6 +232,6 @@ void set_hud_element_transform_rotation_pivot(s32 id, s32 dx, s32 dy);
void copy_world_hud_element_ref_to_battle(s32 worldID, s32 battleID);
void set_hud_element_nonworld_cache(void* base, size_t size);
void set_hud_element_nonworld_cache(void* base, s32 size);
#endif

293
src/trigger.c Normal file
View File

@ -0,0 +1,293 @@
#include "common.h"
void default_trigger_delegate(Trigger* self) {
self->flags.flags |= 2;
}
void clear_trigger_data(void) {
CollisionStatus* collisionStatus = &gCollisionStatus;
s32 i;
if (!gGameStatusPtr->isBattle) {
gCurrentTriggerListPtr = &wTriggerList;
} else {
gCurrentTriggerListPtr = &bTriggerList;
}
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
(*gCurrentTriggerListPtr)[i] = NULL;
}
gTriggerCount = 0;
collisionStatus->pushingAgainstWall = -1;
collisionStatus->currentFloor = -1;
collisionStatus->lastTouchedFloor = -1;
collisionStatus->currentCeiling = -1;
collisionStatus->unk_0A = -1;
collisionStatus->unk_0C = -1;
collisionStatus->unk_0E = -1;
collisionStatus->unk_10 = -1;
collisionStatus->currentWall = -1;
collisionStatus->lastWallHammered = -1;
collisionStatus->touchingWallTrigger = 0;
collisionStatus->bombetteExploded = -1;
collisionStatus->bombetteExplosionPos.x = 0.0f;
collisionStatus->bombetteExplosionPos.y = 0.0f;
collisionStatus->bombetteExplosionPos.z = 0.0f;
}
void init_trigger_list(void) {
if (!gGameStatusPtr->isBattle) {
gCurrentTriggerListPtr = &wTriggerList;
} else {
gCurrentTriggerListPtr = &bTriggerList;
}
gTriggerCount = 0;
}
Trigger* create_trigger(TriggerDefinition* def) {
Trigger* ret;
s32 i;
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
Trigger* listTrigger = (*gCurrentTriggerListPtr)[i];
if (listTrigger == NULL) {
break;
}
}
ASSERT(i < ARRAY_COUNT(*gCurrentTriggerListPtr));
(*gCurrentTriggerListPtr)[i] = ret = heap_malloc(sizeof(*ret));
gTriggerCount++;
ASSERT(ret != NULL);
ret->flags.flags = def->flags | 1;
ret->params1 = def->colliderIndex;
ret->params2 = def->flagIndex;
ret->unk_28 = def->unk_1C;
ret->unk_2C = def->unk_14;
ret->unk_30 = def->inputArg3;
ret->functionHandler = def->function;
if (ret->functionHandler == NULL) {
ret->functionHandler = default_trigger_delegate;
}
return ret;
}
void update_triggers(void) {
CollisionStatus* collisionStatus = &gCollisionStatus;
Trigger* listTrigger;
s32 i;
collisionStatus->touchingWallTrigger = 0;
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
listTrigger = (*gCurrentTriggerListPtr)[i];
if (listTrigger == NULL) {
continue;
}
if (!(listTrigger->flags.flags & 1)) {
continue;
}
if (listTrigger->flags.flags & 0x10) {
listTrigger->flags.flags |= 2;
continue;
}
if (listTrigger->flags.flags & 0x40) {
if (listTrigger->params2 == collisionStatus->currentWall) {
func_800E06C0(1);
}
if (listTrigger->params2 == collisionStatus->pushingAgainstWall) {
func_800E06C0(0);
} else {
continue;
}
}
if (listTrigger->flags.flags & 0x80) {
if (listTrigger->params2 != collisionStatus->currentFloor) {
continue;
}
}
if (listTrigger->flags.flags & 0x80000) {
if (listTrigger->params2 != collisionStatus->floorBelow) {
continue;
}
}
if (listTrigger->flags.flags & 0x100) {
if (listTrigger->params2 == collisionStatus->currentWall) {
collisionStatus->touchingWallTrigger = 1;
}
if ((listTrigger->params2 != collisionStatus->unk_0A) || !phys_can_player_interact()) {
continue;
}
}
if (listTrigger->flags.flags & 0x400) {
if (listTrigger->params2 != collisionStatus->currentWall) {
continue;
}
}
if (listTrigger->flags.flags & 0x200) {
if (listTrigger->params2 != collisionStatus->lastTouchedFloor) {
continue;
}
}
if (listTrigger->flags.flags & 0x800) {
if ((listTrigger->params2 != collisionStatus->currentFloor) ||
!(gGameStatusPtr->pressedButtons & 0x8000) || (gPlayerStatus.flags & 0x2000)) {
continue;
}
}
if (listTrigger->flags.flags & 0x1000) {
if (listTrigger->params2 != collisionStatus->lastWallHammered) {
continue;
}
}
if (listTrigger->flags.flags & 0x40000) {
if (listTrigger->params2 != collisionStatus->currentCeiling) {
continue;
}
}
if (listTrigger->flags.flags & 0x2000) {
if (listTrigger->params2 != collisionStatus->unk_0C) {
continue;
}
}
if (listTrigger->flags.flags & 0x4000) {
if (listTrigger->params2 != collisionStatus->unk_0E) {
continue;
}
}
if (listTrigger->flags.flags & 0x8000) {
if (listTrigger->params2 != collisionStatus->unk_10) {
continue;
}
}
if (listTrigger->flags.flags & 0x100000) {
f32* floats;
f32 dist;
if (collisionStatus->bombetteExploded < 0) {
continue;
}
floats = (f32*)listTrigger->params2;
dist = dist3D(floats[0], floats[1], floats[2],
collisionStatus->bombetteExplosionPos.x, collisionStatus->bombetteExplosionPos.y,
collisionStatus->bombetteExplosionPos.z);
if ((floats[3] * 0.5f) + 50.0f < dist) {
continue;
}
}
if (listTrigger->flags.flags & 0x10000 && get_global_flag(listTrigger->params1) == 0) {
continue;
}
if (listTrigger->flags.flags & 0x20000 && get_area_flag(listTrigger->params1) == 0) {
continue;
}
listTrigger->flags.flags |= 2;
}
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
listTrigger = (*gCurrentTriggerListPtr)[i];
if (listTrigger == NULL) {
continue;
}
if (listTrigger->flags.flags & 1) {
if (listTrigger->flags.flags & 2) {
if (listTrigger->functionHandler(listTrigger) == 0) {
listTrigger->flags.flags &= ~2;
}
}
}
}
}
void delete_trigger(Trigger* toDelete) {
s32 i;
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
if ((*gCurrentTriggerListPtr)[i] == toDelete) {
break;
}
}
if (i < ARRAY_COUNT(*gCurrentTriggerListPtr)) {
heap_free((*gCurrentTriggerListPtr)[i]);
(*gCurrentTriggerListPtr)[i] = NULL;
}
}
s32 is_trigger_bound(Trigger* trigger, EvtSource* script) {
s32 i;
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
Trigger* listTrigger = (*gCurrentTriggerListPtr)[i];
if (listTrigger == NULL || listTrigger == trigger) {
continue;
}
if (listTrigger->flags.flags & 1) {
if (listTrigger->flags.flags & 2) {
if (listTrigger->scriptSource == script) {
return TRUE;
}
}
}
}
return FALSE;
}
Trigger* get_trigger_by_id(s32 triggerID) {
return (*gCurrentTriggerListPtr)[triggerID];
}
/// @returns TRUE if colliderID is bound to an interaction trigger (press A) and the player can use it.
s32 should_collider_allow_interact(s32 colliderID) {
s32 i;
if (!phys_can_player_interact()) {
return FALSE;
}
for (i = 0; i < ARRAY_COUNT(*gCurrentTriggerListPtr); i++) {
Trigger* trigger = (*gCurrentTriggerListPtr)[i];
if (trigger != NULL &&
trigger->unk_30 != 0 &&
trigger->params2 == colliderID &&
trigger->flags.flags & 0x100) {
return TRUE;
}
}
return FALSE;
}

View File

@ -3,7 +3,7 @@
extern s32 gSpinHistoryBufferPos;
extern s32 gSpinHistoryPosY[5];
extern s16 gSpinHistoryPosAngle[5];
extern s32 D_8015A578;
extern struct struct8015A578 D_8015A578;
typedef struct struct8015A578 {
/* 0x00 */ u8 unk_00;
@ -11,18 +11,17 @@ typedef struct struct8015A578 {
/* 0x08 */ f32 unk_08;
} struct8015A578;
s32 func_802B65F8_E26D08(void);
void func_802B6000_E26710(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
CollisionStatus* collisionStatus = &gCollisionStatus;
struct8015A578* tempStruct;
struct8015A578* tempStruct2;
Entity* currentFloorEntity;
f32 temp_f0;
f32 temp_f20;
s32 temp_v0_2;
u8 temp_v1_2;
u8 colliderType;
f32 phi_f4;
s32 sp12;
s32 sp10;
u32 entityType;
@ -77,8 +76,7 @@ void func_802B6000_E26710(void) {
if (sp10 >= 0 && collisionStatus->currentFloor & 0x4000 ) {
entityType = get_entity_type(collisionStatus->currentFloor);
if(entityType == 7 || entityType == 8) {
currentFloorEntity = get_entity_by_index(collisionStatus->currentFloor);
currentFloorEntity->collisionFlags |= 1;
get_entity_by_index(collisionStatus->currentFloor)->collisionFlags |= 1;
disable_player_input();
playerStatus->fallState = 0xB;
break;
@ -132,19 +130,18 @@ void func_802B6000_E26710(void) {
}
}
temp_v1_2 = get_collider_type_by_id(sp10);
if (temp_v1_2 == 3) {
colliderType = get_collider_type_by_id(sp10);
if (colliderType == 3) {
playerStatus->unk_BF = 1;
playerStatus->flags &= ~0x00020008;
set_action_state(ACTION_STATE_HIT_LAVA);
playerStatus->flags |= 0x800;
return;
} else if (temp_v1_2 == 2) {
} else if (colliderType == 2) {
set_action_state(ACTION_STATE_HIT_LAVA);
playerStatus->flags &= ~0x00020008;
return;
}
playerStatus->framesOnGround = 8;
playerStatus->decorationList = 0;
playerStatus->actionState = 0x10;
@ -176,16 +173,15 @@ void func_802B6000_E26710(void) {
}
if (playerStatus->gravityIntegrator[0] < 0.0f) {
temp_v0_2 = func_802B65F8_E26D08();
sp10 = temp_v0_2;
if (temp_v0_2 >= 0) {
sp10 = func_802B65F8_E26D08();
if (sp10 >= 0) {
collisionStatus->lastTouchedFloor = -1;
collisionStatus->currentFloor = sp10;
}
}
}
void func_802B65F8_E26D08(void) {
s32 func_802B65F8_E26D08(void) {
f32 sp28;
f32 sp2C;
f32 sp30;
@ -199,5 +195,5 @@ void func_802B65F8_E26D08(void) {
sp34 = gPlayerStatus.colliderHeight;
sp30 = gPlayerStatus.position.z;
sp2C = gPlayerStatus.position.y + (sp34 * 0.5f);
player_raycast_below_cam_relative(&gPlayerStatus, &sp28, &sp2C, &sp30, &sp34, &sp38, &sp3C, &sp40, &sp44);
return player_raycast_below_cam_relative(&gPlayerStatus, &sp28, &sp2C, &sp30, &sp34, &sp38, &sp3C, &sp40, &sp44);
}

View File

@ -1,283 +0,0 @@
import sys
from pathlib import Path
import re
RUN_ME = False
if not RUN_ME:
print(f"Are you sure yo uwant to run this? Edit RUN_ME in the script if so")
exit()
WRITE_FILE = True
DO_OVERWRITE = True
DO_OVERWRITE_DECOMP = False
def get_file_name(name):
out = ""
decomp = False
if name:
if "matches total" in name:
name = name.split(" - ",1)[0]
decomp = True
if name[3] == "_":
name = name[7:]
else:
name = name.split(" - ",1)[1]
if "(decompiled)" in name:
decomp = True
name = name.split(" ",1)[0]
if name[3] == "_":
name = name[7:]
name = name.strip()
out = name
return out, decomp
def find_file_path(looking_for):
global map_
file_name, decomp = get_file_name(looking_for)
file_path = ""
if file_name:
for i,line in enumerate(map_):
if file_name in line:
x = i
while not map_[x].startswith(" .text"):
x -= 1
x -= 1
file_path = map_[x].split(".o",1)[0].split("build/",1)[1].strip()
break
if not "src/world/area_" in file_path:
file_path = ""
return file_name, file_path, decomp
map_file = (Path(__file__).parent.parent / "ver" / "current" / "build" / "papermario.map").read_text().splitlines()
# cut out half the map
map_ = []
found_header = False
for line in map_file:
if line.startswith(".header"):
found_header = True
if found_header:
map_.append(line)
del map_file
files = sys.stdin.read().splitlines()
if not files or "found no matches" in files[0]:
print(f"Could not find any matching functions")
exit()
#first get the decomped code
function_text = ""
function, file_path, decomp = find_file_path(files[0])
if decomp and file_path != "":
file_path = (Path(__file__).parent.parent / file_path).resolve()
func_file = file_path.read_text().splitlines()
for i,line in enumerate(func_file):
if line:
line = line.strip()
split_line = line.split(" ")
if len(split_line) > 2 and function in split_line[1] and (split_line[0] == "void" or split_line[0] == "s32" or split_line[0] == "ApiStatus"):
out = ["/*"]
while not func_file[i].startswith("}"):
out.append(func_file[i])
i += 1
out.append("}")
out.append("*/")
func_name_start = out[1].find("N(")
func_name_end = out[1].find(")")
out[1] = out[1][:func_name_start+2] + out[1][func_name_end:]
function_text = "\n".join(out)
if function_text == "":
print(f"Unable to find a decompiled function to copy code from")
exit()
for file in files[1:]:
if not file:
continue
function, file_path, decomp = find_file_path(file)
if file_path == "":
continue
if not function:
print(f"Failed to find {file}")
continue
if function[3] == "_" and function[6] == "_" and function.startswith(Path(file_path).parts[3]):
function = function[len("xxx_yy_"):]
print(f"Func:\"{function}\" path:\"{file_path}\" Decomped: {decomp}")
asm_path = Path(__file__).parent.parent / "ver" / "us" / "asm" / "nonmatchings"
fixed = list(Path(file_path).parts[1:])
fixed[-1] = fixed[-1][:-2]
asm_path = asm_path / "/".join(fixed) / function
asm_path = asm_path.with_suffix(".s")
file_path = (Path(__file__).parent.parent / file_path).resolve()
# don't want to try and replace already-decompiled functions
if decomp and not DO_OVERWRITE:
print(f"{file_path} already has this function decompiled and not overwriting")
continue
func_file = file_path.read_text().splitlines()
new_func_file = []
i = 0
while i < len(func_file):
line = func_file[i]
if line:
stripped_line = line.strip()
split_line = stripped_line.split(" ")
if DO_OVERWRITE_DECOMP and decomp and len(split_line) > 2 and decomp and function in split_line[1]:
if DO_OVERWRITE:
x = i
while not (func_file[x] == "}"):
x += 1
x += 1
old_data_name = ""
new_data_name = ""
#if "ptr" in func_file[i+1]:
# new_func_data = function_text.splitlines()[1:-1]
# old_data_name = new_func_data[3].split("if (",1)[1].split(" == ",1)[0]
# new_data_name = func_file[i+1].split(" = ",1)[1][1:-1]
func_data = function_text.replace(old_data_name, new_data_name)
func_data = func_data.splitlines()[1:-1]
func_data[0] = func_data[0].replace("N()", f"N({function})")
new_func_file.append("\n".join(func_data))
i = x-1
#print("\n".join(temp))
#print()
else:
new_func_file.append(line)
elif len(split_line) > 2 and "INCLUDE_ASM" in split_line[0] and function in split_line[2] and ((i+1 < len(func_file) and "/*" not in func_file[i+1] and not func_file[i+1].startswith("#endif")) or (i+1 == len(func_file))):
func_data = function_text.splitlines()
'''
if asm_path.is_file():
asm_data = asm_path.read_text().splitlines()
for asm_line in asm_data:
if "lui" in asm_line and "ldc1" in asm_data[x+1] and asm_line.count("_") == 2:
new_data_name = asm_line.split(" ")[-1]
break
else:
print(f"Failed to find new data name")
exit()
old_data_name = "N(" + func_data[8].split("N(",1)[1].split(")",1)[0] + ")"
func_data = function_text.replace(old_data_name, "N(" + new_data_name + ")").splitlines()
'''
'''
if asm_path.is_file():
asm_data = asm_path.read_text().splitlines()
for x,asm_line in enumerate(asm_data):
if "lui" in asm_line and "addiu" in asm_data[x+1] and "D_" in asm_line and asm_line.count("_") == 1:
new_data_name1 = asm_line.split("(",1)[1].split(")",1)[0]
elif "lui" in asm_line and "sw" in asm_data[x+1] and "D_" in asm_line and asm_line.count("_") == 1:
new_data_name2 = asm_line.split("(",1)[1].split(")",1)[0]
break
else:
print(f"Failed to find new data name")
exit()
old_data_name1 = func_data[5].split("N(",1)[1].split(")",1)[0]
old_data_name2 = func_data[8].split("N(",1)[1].split(")",1)[0]
ft2 = function_text
ft2 = ft2.replace("N(" + old_data_name1 + ")", old_data_name1)
ft2 = ft2.replace("N(" + old_data_name2 + ")", old_data_name2)
ft2 = ft2.replace(old_data_name1, "N(" + new_data_name1 + ")")
func_data = ft2.replace(old_data_name2, "N(" + new_data_name2 + ")").splitlines()
'''
new_func_file.append(stripped_line)
func_data[1] = func_data[1].replace("N()", f"N({function})")
new_func_file.append("\n".join(func_data))
#print("\n".join(func_data))
#print()
elif len(split_line) > 2 and "INCLUDE_ASM" in split_line[0] and function in split_line[2] and func_file[i+1].startswith("#endif"):
if DO_OVERWRITE:
#a NON_MATCHING func
x = i
while not func_file[x].startswith("#ifdef NON_MATCHING"):
x -= 1
# strip away lines already added
new_func_file = new_func_file[:x]
new_func_file.append(stripped_line)
func_data = function_text.splitlines()
func_data[1] = func_data[1].replace("N()", f"N({function})")
new_func_file.append("\n".join(func_data))
i += 1
else:
new_func_file.append(line)
elif len(split_line) > 2 and "INCLUDE_ASM" in split_line[0] and function in split_line[2] and i+1 < len(func_file) and "/*" in func_file[i+1]:
if DO_OVERWRITE:
while not (func_file[i] == "}" and func_file[i+1] == "*/"):
i += 1
i += 1
func_data = function_text.splitlines()
'''
if asm_path.is_file():
#print(f"Reading asm file {asm_path}")
asm_data = asm_path.read_text().splitlines()
for x,asm_line in enumerate(asm_data):
if "lui" in asm_line and "addu" in asm_data[x+1] and "D_" in asm_line and asm_line.count("_") == 2:
new_data_name1 = asm_line.split("(",1)[1].split(")",1)[0]
break
else:
print(f"Failed to find new data name")
exit()
#print(func_data[5])
old_data_name1 = func_data[5].split("N(",1)[1].split(")",1)[0]
ft2 = function_text
ft2 = ft2.replace("N(" + old_data_name1 + ")", old_data_name1)
func_data = ft2.replace(old_data_name1, "N(" + new_data_name1 + ")").splitlines()
'''
new_func_file.append(stripped_line)
func_data[1] = func_data[1].replace("N()", f"N({function})")
new_func_file.append("\n".join(func_data))
#print("\n".join(func_data))
#print()
else:
print(f"{file_path} already has this function commented out")
new_func_file.append(line)
else:
new_func_file.append(line)
else:
new_func_file.append(line)
i += 1
if new_func_file[-1] != "":
new_func_file.append("")
#print("===========")
#print(f"Altering {file_path}")
#print("\n".join(new_func_file))
#print("===========")
if WRITE_FILE:
file_path.write_text("\n".join(new_func_file))
#if "dro_02" in str(file_path):
# exit()

View File

@ -1,18 +0,0 @@
#!/usr/bin/python3
def qc(words_string):
words = words_string.split(",")
byte_array = b""
for word in words:
data = word.strip()[2:]
byte_array += bytearray.fromhex(data)
strings = byte_array.split(b"\0")
idx = 0
for string in strings:
if len(string) > 0:
dec = string.decode("ascii")
print(f"static char* N(exit_str_{idx}) = \"{dec}\";")
idx += 1
qc("0x6D61635F, 0x30310000, 0x00000000, 0x00000000")

View File

@ -1,54 +0,0 @@
#!/usr/bin/python3
import argparse
from collections import OrderedDict
import os
import re
import pickle
import sys
from pathlib import Path
script_dir = os.path.dirname(os.path.realpath(__file__))
root_dir = script_dir + "/../"
src_dir = root_dir + "src/world/"
asm_dir = root_dir + "ver/current/asm/nonmatchings/world/"
def sub_func(match):
m_str = match.group()
m_str_split = m_str.split(", ")
func_name = m_str_split[-1][:-2]
path_elems = m_str_split[-2].split("/")[1:]
asmd = os.path.join(asm_dir, path_elems[0], path_elems[1], path_elems[2][:-1])
for root, dirs, files in os.walk(asmd):
for f_name in files:
f_name = f_name[:-2]
if f_name.startswith(func_name) and len(f_name) > len(func_name):
return m_str.replace(func_name, f_name)
return m_str
for root, dirs, files in os.walk(src_dir):
for f_name in files:
if f_name.endswith(".c"):
f_path = os.path.join(root, f_name)
area_name = Path(f_path).parent.name
with open(f_path) as f:
f_text_orig = f.readlines()
f_text = []
if f_name == "DF6A20.c":
dog = 5
for line in f_text_orig:
new_line = re.sub(r"INCLUDE_ASM.*\);", sub_func, line)
f_text.append(new_line)
if f_text != f_text_orig:
with open(f_path, "w", newline="\n") as f:
f.writelines(f_text)

View File

@ -27,7 +27,7 @@ def get_c_file(directory):
def import_c_file(in_file):
in_file = os.path.relpath(in_file, root_dir)
cpp_command = ["gcc", "-E", "-P", "-Iinclude", "-Isrc", "-Iver/current/build/include" ,"-D_LANGUAGE_C",
"-ffreestanding", "-DF3DEX_GBI_2", "-DSCRIPT(...)={}", in_file]
"-ffreestanding", "-DF3DEX_GBI_2", "-D_MIPS_SZLONG=32", "-DSCRIPT(...)={}", in_file]
try:
return subprocess.check_output(cpp_command, cwd=root_dir, encoding="utf-8")
except subprocess.CalledProcessError:

View File

@ -1,76 +0,0 @@
#!/usr/bin/python3
import argparse
from collections import OrderedDict
import os
import re
import pickle
import sys
from pathlib import Path
script_dir = os.path.dirname(os.path.realpath(__file__))
root_dir = script_dir + "/../"
src_dir = root_dir + "src/world/"
asm_dir = root_dir + "ver/current/asm/nonmatchings/world/"
if len(sys.argv) <= 1 or not (sys.argv[1] == "y" or sys.argv[1] == "-y"):
print(f"Warning! This script is destructive, pass -y if you really want to run it")
exit()
for root, dirs, files in os.walk(src_dir):
for dir_name in dirs:
dir_path = os.path.join(root, dir_name)
map_name = Path(dir_path).parent.name
if map_name.startswith("area_"):
common_funcs = []
for c_file in os.scandir(dir_path):
if c_file.name.endswith(".c"):
with open(c_file) as f:
c_lines = f.readlines()
for line in c_lines:
if "world/common" in line:
common_funcs.append(line.split("/")[-1].split(".")[0])
header_name = dir_name + ".h"
guard_name = f"_{dir_name.upper()}_"
out_lines = []
# out_lines.append(f"#ifndef {guard_name}")
# out_lines.append(f"#define {guard_name}")
# out_lines.append("")
out_lines.append("#include \"common.h\"")
out_lines.append("#include \"map.h\"")
out_lines.append("")
out_lines.append(f"#define NAMESPACE {dir_name}")
out_lines.append("")
# if len(common_funcs) > 0:
# for func_name in common_funcs:
# out_lines.append(f"#include \"world/common/{func_name}.h\"")
# out_lines.append("#endif")
# out_lines.append("")
with open(os.path.join(dir_path, header_name), "w", newline="\n") as f:
f.write("\n".join(out_lines))
# for root, dirs, files in os.walk(src_dir):
# for f_name in files:
# if f_name.endswith(".c"):
# f_path = os.path.join(root, f_name)
# area_name = Path(f_path).parent.name
# with open(f_path) as f:
# f_text_orig = f.readlines()
# f_text = []
# f_text.append(f"#include \"{area_name}.h\"\n")
# for line in f_text_orig:
# if not line.startswith("#include") or line.startswith("#include \"world"):
# f_text.append(line)
# #new_line = re.sub(r"INCLUDE_ASM.*\);", sub_func, line)
# if f_text != f_text_orig:
# with open(f_path, "w", newline="\n") as f:
# f.writelines(f_text)

View File

@ -1,136 +0,0 @@
from pathlib import Path
RUN_ME = False
if not RUN_ME:
print(f"Are you sure yo uwant to run this? Edit RUN_ME in the script if so")
exit()
FUNC=""" Enemy* enemy = script->owner1.enemy;
Npc* npc = get_npc_unsafe(enemy->npcID);
npc->duration--;
if (npc->duration <= 0) {
enemy->varTable[2] = 0;
npc->duration = 0;
script->functionTemp[0] = 0;
}
}""".splitlines()
NEW_FUNC_NAME = f"UnkFunc45"
NEW_INCLUDE = f"#include \"world/common/{NEW_FUNC_NAME}.inc.c\""
RENAMED = []
def parse_folder(path):
for entry in path.iterdir():
if entry.is_dir():
parse_folder(entry)
continue
if not "area" in str(entry):
continue
area_name = entry.parts[3]
fd = entry.read_text().splitlines()
i = 0
while i < len(fd):
if (#i+2 < len(fd) and
fd[i].startswith("INCLUDE_ASM") or
fd[i].startswith("ApiStatus N(") or
fd[i].startswith("void N(")):
#and fd[i+1] == "/*"):
if fd[i].startswith("INCLUDE_ASM"):
base_fd = i+3
base_name = i+2
elif fd[i].startswith("ApiStatus N(") or fd[i].startswith("void N("):
base_fd = i+1
base_name = i
if len(fd[base_fd:]) < len(FUNC):
i += 1
continue
#print(f"Starting from {fd[base_fd]}")
for func, test in zip(fd[base_fd:], FUNC):
if func != test:
break
else:
print(f"Found a match in {entry}: {fd[i]}")
#print("\n".join(fd[i:i+3+len(FUNC)+1]))
#print("\n".join(fd))
include_path = Path("src/world/common/") / (NEW_FUNC_NAME + ".inc.c")
if not include_path.is_file():
name_start = fd[base_name].find("N(")
name_end = fd[base_name].find("(",name_start+2)
new_file_name = fd[base_name][:name_start] + "N(" + NEW_FUNC_NAME + ")" + fd[base_name][name_end:]
new_fd = ["#include \"common.h\"",
"#include \"map.h\"",
"",
new_file_name,
]
new_fd.extend(FUNC)
include_path.write_text("\n".join(new_fd))
if fd[i].startswith("INCLUDE_ASM"):
old_func_name = fd[i].split(",")[2].strip().replace(");", "")
else:
old_func_name = fd[i].split("N(",1)[1].split(")",1)[0]
RENAMED.append({"name":old_func_name, "area":area_name})
fd = fd[:i] + [NEW_INCLUDE] + fd[base_fd+len(FUNC)+1:]
if i+1 < len(fd) and fd[i+1] != "":
fd = fd[:i+1] + [""] + fd[i+1:]
if fd[-1] != "":
fd.append("")
#print("\n".join(fd))
entry.write_text("\n".join(fd))
break
i += 1
parse_folder(Path("src/world"))
def do_renames_asm(path):
for entry in path.iterdir():
if entry.is_dir():
do_renames_asm(entry)
continue
fd = entry.read_text()
for rename in RENAMED:
if rename["name"] in fd:
fd = fd.replace(rename["name"], f"{rename['area']}_{NEW_FUNC_NAME}")
entry.write_text(fd)
do_renames_asm(Path("ver/us/asm"))
def do_renames_src(path):
for entry in path.iterdir():
if entry.is_dir():
do_renames_src(entry)
continue
fd = entry.read_text().splitlines()
i = 0
renamed = False
while i < len(fd):
for rename in RENAMED:
start = fd[i].find(rename["name"])
if start > -1:
renamed = True
if fd[i][start-1] == "(":
fd[i] = fd[i].replace(rename["name"], f"{NEW_FUNC_NAME}")
else:
fd[i] = fd[i].replace(rename["name"], f"N({NEW_FUNC_NAME})")
i += 1
if renamed:
entry.write_text("\n".join(fd))
do_renames_src(Path("src/world"))

View File

@ -1,43 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802380E4_6F11C4
/* 6F11C4 802380E4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 6F11C8 802380E8 AFB10014 */ sw $s1, 0x14($sp)
/* 6F11CC 802380EC 0080882D */ daddu $s1, $a0, $zero
/* 6F11D0 802380F0 AFBF0018 */ sw $ra, 0x18($sp)
/* 6F11D4 802380F4 AFB00010 */ sw $s0, 0x10($sp)
/* 6F11D8 802380F8 0C09A75B */ jal get_actor
/* 6F11DC 802380FC 8E240148 */ lw $a0, 0x148($s1)
/* 6F11E0 80238100 0C09A75B */ jal get_actor
/* 6F11E4 80238104 84440428 */ lh $a0, 0x428($v0)
/* 6F11E8 80238108 24030063 */ addiu $v1, $zero, 0x63
/* 6F11EC 8023810C 3C108024 */ lui $s0, %hi(D_8023BB98_6ECC78)
/* 6F11F0 80238110 2610BB98 */ addiu $s0, $s0, %lo(D_8023BB98_6ECC78)
/* 6F11F4 80238114 AE230084 */ sw $v1, 0x84($s1)
/* 6F11F8 80238118 8C420008 */ lw $v0, 8($v0)
/* 6F11FC 8023811C 8E030000 */ lw $v1, ($s0)
/* 6F1200 80238120 9042001E */ lbu $v0, 0x1e($v0)
/* 6F1204 80238124 00620018 */ mult $v1, $v0
/* 6F1208 80238128 00001812 */ mflo $v1
/* 6F120C 8023812C 3C0251EB */ lui $v0, 0x51eb
/* 6F1210 80238130 3442851F */ ori $v0, $v0, 0x851f
/* 6F1214 80238134 00620018 */ mult $v1, $v0
/* 6F1218 80238138 24040064 */ addiu $a0, $zero, 0x64
/* 6F121C 8023813C 00031FC3 */ sra $v1, $v1, 0x1f
/* 6F1220 80238140 00003010 */ mfhi $a2
/* 6F1224 80238144 00061143 */ sra $v0, $a2, 5
/* 6F1228 80238148 00431023 */ subu $v0, $v0, $v1
/* 6F122C 8023814C 0C00A67F */ jal rand_int
/* 6F1230 80238150 AE020000 */ sw $v0, ($s0)
/* 6F1234 80238154 8E030000 */ lw $v1, ($s0)
/* 6F1238 80238158 0062182A */ slt $v1, $v1, $v0
/* 6F123C 8023815C 54600001 */ bnel $v1, $zero, .L80238164
/* 6F1240 80238160 AE200084 */ sw $zero, 0x84($s1)
.L80238164:
/* 6F1244 80238164 8FBF0018 */ lw $ra, 0x18($sp)
/* 6F1248 80238168 8FB10014 */ lw $s1, 0x14($sp)
/* 6F124C 8023816C 8FB00010 */ lw $s0, 0x10($sp)
/* 6F1250 80238170 24020002 */ addiu $v0, $zero, 2
/* 6F1254 80238174 03E00008 */ jr $ra
/* 6F1258 80238178 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,46 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80238028_714D18
/* 714D18 80238028 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 714D1C 8023802C AFBF0018 */ sw $ra, 0x18($sp)
/* 714D20 80238030 AFB10014 */ sw $s1, 0x14($sp)
/* 714D24 80238034 AFB00010 */ sw $s0, 0x10($sp)
/* 714D28 80238038 0C09A75B */ jal get_actor
/* 714D2C 8023803C 8C840148 */ lw $a0, 0x148($a0)
/* 714D30 80238040 3C108024 */ lui $s0, %hi(D_802382F8_714FE8)
/* 714D34 80238044 261082F8 */ addiu $s0, $s0, %lo(D_802382F8_714FE8)
/* 714D38 80238048 8E030000 */ lw $v1, ($s0)
/* 714D3C 8023804C 0040882D */ daddu $s1, $v0, $zero
/* 714D40 80238050 24630012 */ addiu $v1, $v1, 0x12
/* 714D44 80238054 44836000 */ mtc1 $v1, $f12
/* 714D48 80238058 00000000 */ nop
/* 714D4C 8023805C 46806320 */ cvt.s.w $f12, $f12
/* 714D50 80238060 0C00A6C9 */ jal clamp_angle
/* 714D54 80238064 AE030000 */ sw $v1, ($s0)
/* 714D58 80238068 4600008D */ trunc.w.s $f2, $f0
/* 714D5C 8023806C 44021000 */ mfc1 $v0, $f2
/* 714D60 80238070 3C0140C9 */ lui $at, 0x40c9
/* 714D64 80238074 34210FD0 */ ori $at, $at, 0xfd0
/* 714D68 80238078 44810000 */ mtc1 $at, $f0
/* 714D6C 8023807C 44826000 */ mtc1 $v0, $f12
/* 714D70 80238080 00000000 */ nop
/* 714D74 80238084 46806320 */ cvt.s.w $f12, $f12
/* 714D78 80238088 46006302 */ mul.s $f12, $f12, $f0
/* 714D7C 8023808C 00000000 */ nop
/* 714D80 80238090 3C0143B4 */ lui $at, 0x43b4
/* 714D84 80238094 44810000 */ mtc1 $at, $f0
/* 714D88 80238098 AE020000 */ sw $v0, ($s0)
/* 714D8C 8023809C 0C00A85B */ jal sin_rad
/* 714D90 802380A0 46006303 */ div.s $f12, $f12, $f0
/* 714D94 802380A4 46000000 */ add.s $f0, $f0, $f0
/* 714D98 802380A8 4600008D */ trunc.w.s $f2, $f0
/* 714D9C 802380AC 44031000 */ mfc1 $v1, $f2
/* 714DA0 802380B0 00000000 */ nop
/* 714DA4 802380B4 A223019A */ sb $v1, 0x19a($s1)
/* 714DA8 802380B8 8FBF0018 */ lw $ra, 0x18($sp)
/* 714DAC 802380BC 8FB10014 */ lw $s1, 0x14($sp)
/* 714DB0 802380C0 8FB00010 */ lw $s0, 0x10($sp)
/* 714DB4 802380C4 24020002 */ addiu $v0, $zero, 2
/* 714DB8 802380C8 03E00008 */ jr $ra
/* 714DBC 802380CC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,72 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel create_trigger
/* DBE6C 8014576C 3C038016 */ lui $v1, %hi(gCurrentTriggerListPtr)
/* DBE70 80145770 8C639390 */ lw $v1, %lo(gCurrentTriggerListPtr)($v1)
/* DBE74 80145774 27BDFFE0 */ addiu $sp, $sp, -0x20
/* DBE78 80145778 AFB10014 */ sw $s1, 0x14($sp)
/* DBE7C 8014577C 0080882D */ daddu $s1, $a0, $zero
/* DBE80 80145780 AFB00010 */ sw $s0, 0x10($sp)
/* DBE84 80145784 0000802D */ daddu $s0, $zero, $zero
/* DBE88 80145788 AFBF0018 */ sw $ra, 0x18($sp)
.L8014578C:
/* DBE8C 8014578C 8C620000 */ lw $v0, ($v1)
/* DBE90 80145790 10400006 */ beqz $v0, .L801457AC
/* DBE94 80145794 2A020040 */ slti $v0, $s0, 0x40
/* DBE98 80145798 26100001 */ addiu $s0, $s0, 1
/* DBE9C 8014579C 2A020040 */ slti $v0, $s0, 0x40
/* DBEA0 801457A0 1440FFFA */ bnez $v0, .L8014578C
/* DBEA4 801457A4 24630004 */ addiu $v1, $v1, 4
/* DBEA8 801457A8 2A020040 */ slti $v0, $s0, 0x40
.L801457AC:
/* DBEAC 801457AC 14400003 */ bnez $v0, .L801457BC
/* DBEB0 801457B0 00000000 */ nop
.L801457B4:
/* DBEB4 801457B4 080515ED */ j .L801457B4
/* DBEB8 801457B8 00000000 */ nop
.L801457BC:
/* DBEBC 801457BC 0C00AB39 */ jal heap_malloc
/* DBEC0 801457C0 24040038 */ addiu $a0, $zero, 0x38
/* DBEC4 801457C4 00102080 */ sll $a0, $s0, 2
/* DBEC8 801457C8 3C038016 */ lui $v1, %hi(gCurrentTriggerListPtr)
/* DBECC 801457CC 8C639390 */ lw $v1, %lo(gCurrentTriggerListPtr)($v1)
/* DBED0 801457D0 3C058015 */ lui $a1, %hi(gTriggerCount)
/* DBED4 801457D4 24A51334 */ addiu $a1, $a1, %lo(gTriggerCount)
/* DBED8 801457D8 00832021 */ addu $a0, $a0, $v1
/* DBEDC 801457DC 94A30000 */ lhu $v1, ($a1)
/* DBEE0 801457E0 0040302D */ daddu $a2, $v0, $zero
/* DBEE4 801457E4 AC860000 */ sw $a2, ($a0)
/* DBEE8 801457E8 24630001 */ addiu $v1, $v1, 1
/* DBEEC 801457EC 14C00003 */ bnez $a2, .L801457FC
/* DBEF0 801457F0 A4A30000 */ sh $v1, ($a1)
.L801457F4:
/* DBEF4 801457F4 080515FD */ j .L801457F4
/* DBEF8 801457F8 00000000 */ nop
.L801457FC:
/* DBEFC 801457FC 8E220000 */ lw $v0, ($s1)
/* DBF00 80145800 34420001 */ ori $v0, $v0, 1
/* DBF04 80145804 ACC20000 */ sw $v0, ($a2)
/* DBF08 80145808 86220004 */ lh $v0, 4($s1)
/* DBF0C 8014580C ACC20004 */ sw $v0, 4($a2)
/* DBF10 80145810 8E220008 */ lw $v0, 8($s1)
/* DBF14 80145814 ACC20008 */ sw $v0, 8($a2)
/* DBF18 80145818 8E22001C */ lw $v0, 0x1c($s1)
/* DBF1C 8014581C ACC20028 */ sw $v0, 0x28($a2)
/* DBF20 80145820 8E220014 */ lw $v0, 0x14($s1)
/* DBF24 80145824 ACC2002C */ sw $v0, 0x2c($a2)
/* DBF28 80145828 9222001B */ lbu $v0, 0x1b($s1)
/* DBF2C 8014582C A0C20030 */ sb $v0, 0x30($a2)
/* DBF30 80145830 8E22000C */ lw $v0, 0xc($s1)
/* DBF34 80145834 14400004 */ bnez $v0, .L80145848
/* DBF38 80145838 ACC2000C */ sw $v0, 0xc($a2)
/* DBF3C 8014583C 3C028014 */ lui $v0, %hi(default_trigger_delegate)
/* DBF40 80145840 24425670 */ addiu $v0, $v0, %lo(default_trigger_delegate)
/* DBF44 80145844 ACC2000C */ sw $v0, 0xc($a2)
.L80145848:
/* DBF48 80145848 8FBF0018 */ lw $ra, 0x18($sp)
/* DBF4C 8014584C 8FB10014 */ lw $s1, 0x14($sp)
/* DBF50 80145850 8FB00010 */ lw $s0, 0x10($sp)
/* DBF54 80145854 00C0102D */ daddu $v0, $a2, $zero
/* DBF58 80145858 03E00008 */ jr $ra
/* DBF5C 8014585C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,32 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel is_trigger_bound
/* DC36C 80145C6C 0000402D */ daddu $t0, $zero, $zero
/* DC370 80145C70 3C078016 */ lui $a3, %hi(gCurrentTriggerListPtr)
/* DC374 80145C74 8CE79390 */ lw $a3, %lo(gCurrentTriggerListPtr)($a3)
.L80145C78:
/* DC378 80145C78 8CE30000 */ lw $v1, ($a3)
/* DC37C 80145C7C 5060000F */ beql $v1, $zero, .L80145CBC
/* DC380 80145C80 25080001 */ addiu $t0, $t0, 1
/* DC384 80145C84 5064000D */ beql $v1, $a0, .L80145CBC
/* DC388 80145C88 25080001 */ addiu $t0, $t0, 1
/* DC38C 80145C8C 8C660000 */ lw $a2, ($v1)
/* DC390 80145C90 30C20001 */ andi $v0, $a2, 1
/* DC394 80145C94 10400009 */ beqz $v0, .L80145CBC
/* DC398 80145C98 25080001 */ addiu $t0, $t0, 1
/* DC39C 80145C9C 30C20002 */ andi $v0, $a2, 2
/* DC3A0 80145CA0 10400006 */ beqz $v0, .L80145CBC
/* DC3A4 80145CA4 00000000 */ nop
/* DC3A8 80145CA8 8C620010 */ lw $v0, 0x10($v1)
/* DC3AC 80145CAC 14450004 */ bne $v0, $a1, .L80145CC0
/* DC3B0 80145CB0 29020040 */ slti $v0, $t0, 0x40
/* DC3B4 80145CB4 03E00008 */ jr $ra
/* DC3B8 80145CB8 24020001 */ addiu $v0, $zero, 1
.L80145CBC:
/* DC3BC 80145CBC 29020040 */ slti $v0, $t0, 0x40
.L80145CC0:
/* DC3C0 80145CC0 1440FFED */ bnez $v0, .L80145C78
/* DC3C4 80145CC4 24E70004 */ addiu $a3, $a3, 4
/* DC3C8 80145CC8 03E00008 */ jr $ra
/* DC3CC 80145CCC 0000102D */ daddu $v0, $zero, $zero

View File

@ -1,255 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel update_triggers
/* DBF60 80145860 27BDFFD0 */ addiu $sp, $sp, -0x30
/* DBF64 80145864 AFB20020 */ sw $s2, 0x20($sp)
/* DBF68 80145868 3C128016 */ lui $s2, %hi(gCollisionStatus)
/* DBF6C 8014586C 2652A550 */ addiu $s2, $s2, %lo(gCollisionStatus)
/* DBF70 80145870 AFB30024 */ sw $s3, 0x24($sp)
/* DBF74 80145874 0000982D */ daddu $s3, $zero, $zero
/* DBF78 80145878 AFBF0028 */ sw $ra, 0x28($sp)
/* DBF7C 8014587C AFB1001C */ sw $s1, 0x1c($sp)
/* DBF80 80145880 AFB00018 */ sw $s0, 0x18($sp)
/* DBF84 80145884 A6400016 */ sh $zero, 0x16($s2)
.L80145888:
/* DBF88 80145888 3C038016 */ lui $v1, %hi(gCurrentTriggerListPtr)
/* DBF8C 8014588C 8C639390 */ lw $v1, %lo(gCurrentTriggerListPtr)($v1)
/* DBF90 80145890 00131080 */ sll $v0, $s3, 2
/* DBF94 80145894 00431021 */ addu $v0, $v0, $v1
/* DBF98 80145898 8C510000 */ lw $s1, ($v0)
/* DBF9C 8014589C 522000B1 */ beql $s1, $zero, .L80145B64
/* DBFA0 801458A0 26730001 */ addiu $s3, $s3, 1
/* DBFA4 801458A4 8E230000 */ lw $v1, ($s1)
/* DBFA8 801458A8 30620001 */ andi $v0, $v1, 1
/* DBFAC 801458AC 504000AD */ beql $v0, $zero, .L80145B64
/* DBFB0 801458B0 26730001 */ addiu $s3, $s3, 1
/* DBFB4 801458B4 30620010 */ andi $v0, $v1, 0x10
/* DBFB8 801458B8 144000A8 */ bnez $v0, .L80145B5C
/* DBFBC 801458BC 34620002 */ ori $v0, $v1, 2
/* DBFC0 801458C0 30620040 */ andi $v0, $v1, 0x40
/* DBFC4 801458C4 1040000D */ beqz $v0, .L801458FC
/* DBFC8 801458C8 00000000 */ nop
/* DBFCC 801458CC 86430012 */ lh $v1, 0x12($s2)
/* DBFD0 801458D0 8E220008 */ lw $v0, 8($s1)
/* DBFD4 801458D4 14430003 */ bne $v0, $v1, .L801458E4
/* DBFD8 801458D8 00000000 */ nop
/* DBFDC 801458DC 0C0381B0 */ jal func_800E06C0
/* DBFE0 801458E0 24040001 */ addiu $a0, $zero, 1
.L801458E4:
/* DBFE4 801458E4 86430000 */ lh $v1, ($s2)
/* DBFE8 801458E8 8E220008 */ lw $v0, 8($s1)
/* DBFEC 801458EC 5443009D */ bnel $v0, $v1, .L80145B64
/* DBFF0 801458F0 26730001 */ addiu $s3, $s3, 1
/* DBFF4 801458F4 0C0381B0 */ jal func_800E06C0
/* DBFF8 801458F8 0000202D */ daddu $a0, $zero, $zero
.L801458FC:
/* DBFFC 801458FC 8E240000 */ lw $a0, ($s1)
/* DC000 80145900 30820080 */ andi $v0, $a0, 0x80
/* DC004 80145904 10400006 */ beqz $v0, .L80145920
/* DC008 80145908 3C020008 */ lui $v0, 8
/* DC00C 8014590C 86430002 */ lh $v1, 2($s2)
/* DC010 80145910 8E220008 */ lw $v0, 8($s1)
/* DC014 80145914 54430093 */ bnel $v0, $v1, .L80145B64
/* DC018 80145918 26730001 */ addiu $s3, $s3, 1
/* DC01C 8014591C 3C020008 */ lui $v0, 8
.L80145920:
/* DC020 80145920 00821024 */ and $v0, $a0, $v0
/* DC024 80145924 10400006 */ beqz $v0, .L80145940
/* DC028 80145928 30820100 */ andi $v0, $a0, 0x100
/* DC02C 8014592C 86430006 */ lh $v1, 6($s2)
/* DC030 80145930 8E220008 */ lw $v0, 8($s1)
/* DC034 80145934 5443008B */ bnel $v0, $v1, .L80145B64
/* DC038 80145938 26730001 */ addiu $s3, $s3, 1
/* DC03C 8014593C 30820100 */ andi $v0, $a0, 0x100
.L80145940:
/* DC040 80145940 1040000E */ beqz $v0, .L8014597C
/* DC044 80145944 00000000 */ nop
/* DC048 80145948 86430012 */ lh $v1, 0x12($s2)
/* DC04C 8014594C 8E220008 */ lw $v0, 8($s1)
/* DC050 80145950 14430002 */ bne $v0, $v1, .L8014595C
/* DC054 80145954 24020001 */ addiu $v0, $zero, 1
/* DC058 80145958 A6420016 */ sh $v0, 0x16($s2)
.L8014595C:
/* DC05C 8014595C 8643000A */ lh $v1, 0xa($s2)
/* DC060 80145960 8E220008 */ lw $v0, 8($s1)
/* DC064 80145964 5443007F */ bnel $v0, $v1, .L80145B64
/* DC068 80145968 26730001 */ addiu $s3, $s3, 1
/* DC06C 8014596C 0C0394BE */ jal phys_can_player_interact
/* DC070 80145970 00000000 */ nop
/* DC074 80145974 5040007B */ beql $v0, $zero, .L80145B64
/* DC078 80145978 26730001 */ addiu $s3, $s3, 1
.L8014597C:
/* DC07C 8014597C 8E240000 */ lw $a0, ($s1)
/* DC080 80145980 30820400 */ andi $v0, $a0, 0x400
/* DC084 80145984 10400006 */ beqz $v0, .L801459A0
/* DC088 80145988 30820200 */ andi $v0, $a0, 0x200
/* DC08C 8014598C 86430012 */ lh $v1, 0x12($s2)
/* DC090 80145990 8E220008 */ lw $v0, 8($s1)
/* DC094 80145994 54430073 */ bnel $v0, $v1, .L80145B64
/* DC098 80145998 26730001 */ addiu $s3, $s3, 1
/* DC09C 8014599C 30820200 */ andi $v0, $a0, 0x200
.L801459A0:
/* DC0A0 801459A0 10400006 */ beqz $v0, .L801459BC
/* DC0A4 801459A4 30820800 */ andi $v0, $a0, 0x800
/* DC0A8 801459A8 86430004 */ lh $v1, 4($s2)
/* DC0AC 801459AC 8E220008 */ lw $v0, 8($s1)
/* DC0B0 801459B0 5443006C */ bnel $v0, $v1, .L80145B64
/* DC0B4 801459B4 26730001 */ addiu $s3, $s3, 1
/* DC0B8 801459B8 30820800 */ andi $v0, $a0, 0x800
.L801459BC:
/* DC0BC 801459BC 10400011 */ beqz $v0, .L80145A04
/* DC0C0 801459C0 30821000 */ andi $v0, $a0, 0x1000
/* DC0C4 801459C4 86430002 */ lh $v1, 2($s2)
/* DC0C8 801459C8 8E220008 */ lw $v0, 8($s1)
/* DC0CC 801459CC 54430065 */ bnel $v0, $v1, .L80145B64
/* DC0D0 801459D0 26730001 */ addiu $s3, $s3, 1
/* DC0D4 801459D4 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* DC0D8 801459D8 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* DC0DC 801459DC 8C420010 */ lw $v0, 0x10($v0)
/* DC0E0 801459E0 30428000 */ andi $v0, $v0, 0x8000
/* DC0E4 801459E4 5040005F */ beql $v0, $zero, .L80145B64
/* DC0E8 801459E8 26730001 */ addiu $s3, $s3, 1
/* DC0EC 801459EC 3C028011 */ lui $v0, %hi(gPlayerStatus)
/* DC0F0 801459F0 8C42EFC8 */ lw $v0, %lo(gPlayerStatus)($v0)
/* DC0F4 801459F4 30422000 */ andi $v0, $v0, 0x2000
/* DC0F8 801459F8 5440005A */ bnel $v0, $zero, .L80145B64
/* DC0FC 801459FC 26730001 */ addiu $s3, $s3, 1
/* DC100 80145A00 30821000 */ andi $v0, $a0, 0x1000
.L80145A04:
/* DC104 80145A04 10400006 */ beqz $v0, .L80145A20
/* DC108 80145A08 3C020004 */ lui $v0, 4
/* DC10C 80145A0C 86430014 */ lh $v1, 0x14($s2)
/* DC110 80145A10 8E220008 */ lw $v0, 8($s1)
/* DC114 80145A14 54430053 */ bnel $v0, $v1, .L80145B64
/* DC118 80145A18 26730001 */ addiu $s3, $s3, 1
/* DC11C 80145A1C 3C020004 */ lui $v0, 4
.L80145A20:
/* DC120 80145A20 00821024 */ and $v0, $a0, $v0
/* DC124 80145A24 10400006 */ beqz $v0, .L80145A40
/* DC128 80145A28 30822000 */ andi $v0, $a0, 0x2000
/* DC12C 80145A2C 86430008 */ lh $v1, 8($s2)
/* DC130 80145A30 8E220008 */ lw $v0, 8($s1)
/* DC134 80145A34 5443004B */ bnel $v0, $v1, .L80145B64
/* DC138 80145A38 26730001 */ addiu $s3, $s3, 1
/* DC13C 80145A3C 30822000 */ andi $v0, $a0, 0x2000
.L80145A40:
/* DC140 80145A40 10400006 */ beqz $v0, .L80145A5C
/* DC144 80145A44 30824000 */ andi $v0, $a0, 0x4000
/* DC148 80145A48 8643000C */ lh $v1, 0xc($s2)
/* DC14C 80145A4C 8E220008 */ lw $v0, 8($s1)
/* DC150 80145A50 54430044 */ bnel $v0, $v1, .L80145B64
/* DC154 80145A54 26730001 */ addiu $s3, $s3, 1
/* DC158 80145A58 30824000 */ andi $v0, $a0, 0x4000
.L80145A5C:
/* DC15C 80145A5C 10400006 */ beqz $v0, .L80145A78
/* DC160 80145A60 30828000 */ andi $v0, $a0, 0x8000
/* DC164 80145A64 8643000E */ lh $v1, 0xe($s2)
/* DC168 80145A68 8E220008 */ lw $v0, 8($s1)
/* DC16C 80145A6C 5443003D */ bnel $v0, $v1, .L80145B64
/* DC170 80145A70 26730001 */ addiu $s3, $s3, 1
/* DC174 80145A74 30828000 */ andi $v0, $a0, 0x8000
.L80145A78:
/* DC178 80145A78 10400006 */ beqz $v0, .L80145A94
/* DC17C 80145A7C 3C020010 */ lui $v0, 0x10
/* DC180 80145A80 86430010 */ lh $v1, 0x10($s2)
/* DC184 80145A84 8E220008 */ lw $v0, 8($s1)
/* DC188 80145A88 54430036 */ bnel $v0, $v1, .L80145B64
/* DC18C 80145A8C 26730001 */ addiu $s3, $s3, 1
/* DC190 80145A90 3C020010 */ lui $v0, 0x10
.L80145A94:
/* DC194 80145A94 00821024 */ and $v0, $a0, $v0
/* DC198 80145A98 1040001C */ beqz $v0, .L80145B0C
/* DC19C 80145A9C 00000000 */ nop
/* DC1A0 80145AA0 86420018 */ lh $v0, 0x18($s2)
/* DC1A4 80145AA4 0442002F */ bltzl $v0, .L80145B64
/* DC1A8 80145AA8 26730001 */ addiu $s3, $s3, 1
/* DC1AC 80145AAC C6420020 */ lwc1 $f2, 0x20($s2)
/* DC1B0 80145AB0 8E300008 */ lw $s0, 8($s1)
/* DC1B4 80145AB4 C6400024 */ lwc1 $f0, 0x24($s2)
/* DC1B8 80145AB8 E7A20010 */ swc1 $f2, 0x10($sp)
/* DC1BC 80145ABC E7A00014 */ swc1 $f0, 0x14($sp)
/* DC1C0 80145AC0 C60C0000 */ lwc1 $f12, ($s0)
/* DC1C4 80145AC4 C60E0004 */ lwc1 $f14, 4($s0)
/* DC1C8 80145AC8 8E060008 */ lw $a2, 8($s0)
/* DC1CC 80145ACC 0C00A7CB */ jal dist3D
/* DC1D0 80145AD0 8E47001C */ lw $a3, 0x1c($s2)
/* DC1D4 80145AD4 C604000C */ lwc1 $f4, 0xc($s0)
/* DC1D8 80145AD8 3C013F00 */ lui $at, 0x3f00
/* DC1DC 80145ADC 44811000 */ mtc1 $at, $f2
/* DC1E0 80145AE0 00000000 */ nop
/* DC1E4 80145AE4 46022102 */ mul.s $f4, $f4, $f2
/* DC1E8 80145AE8 00000000 */ nop
/* DC1EC 80145AEC 3C014248 */ lui $at, 0x4248
/* DC1F0 80145AF0 44811000 */ mtc1 $at, $f2
/* DC1F4 80145AF4 00000000 */ nop
/* DC1F8 80145AF8 46022100 */ add.s $f4, $f4, $f2
/* DC1FC 80145AFC 4600203C */ c.lt.s $f4, $f0
/* DC200 80145B00 00000000 */ nop
/* DC204 80145B04 45030017 */ bc1tl .L80145B64
/* DC208 80145B08 26730001 */ addiu $s3, $s3, 1
.L80145B0C:
/* DC20C 80145B0C 8E220000 */ lw $v0, ($s1)
/* DC210 80145B10 3C030001 */ lui $v1, 1
/* DC214 80145B14 00431024 */ and $v0, $v0, $v1
/* DC218 80145B18 10400005 */ beqz $v0, .L80145B30
/* DC21C 80145B1C 00000000 */ nop
/* DC220 80145B20 0C05152F */ jal get_global_flag
/* DC224 80145B24 8E240004 */ lw $a0, 4($s1)
/* DC228 80145B28 5040000E */ beql $v0, $zero, .L80145B64
/* DC22C 80145B2C 26730001 */ addiu $s3, $s3, 1
.L80145B30:
/* DC230 80145B30 8E220000 */ lw $v0, ($s1)
/* DC234 80145B34 3C030002 */ lui $v1, 2
/* DC238 80145B38 00431024 */ and $v0, $v0, $v1
/* DC23C 80145B3C 10400005 */ beqz $v0, .L80145B54
/* DC240 80145B40 00000000 */ nop
/* DC244 80145B44 0C05157C */ jal get_area_flag
/* DC248 80145B48 8E240004 */ lw $a0, 4($s1)
/* DC24C 80145B4C 50400005 */ beql $v0, $zero, .L80145B64
/* DC250 80145B50 26730001 */ addiu $s3, $s3, 1
.L80145B54:
/* DC254 80145B54 8E220000 */ lw $v0, ($s1)
/* DC258 80145B58 34420002 */ ori $v0, $v0, 2
.L80145B5C:
/* DC25C 80145B5C AE220000 */ sw $v0, ($s1)
/* DC260 80145B60 26730001 */ addiu $s3, $s3, 1
.L80145B64:
/* DC264 80145B64 2A620040 */ slti $v0, $s3, 0x40
/* DC268 80145B68 1440FF47 */ bnez $v0, .L80145888
/* DC26C 80145B6C 2410FFFD */ addiu $s0, $zero, -3
/* DC270 80145B70 0000982D */ daddu $s3, $zero, $zero
.L80145B74:
/* DC274 80145B74 3C038016 */ lui $v1, %hi(gCurrentTriggerListPtr)
/* DC278 80145B78 8C639390 */ lw $v1, %lo(gCurrentTriggerListPtr)($v1)
/* DC27C 80145B7C 00131080 */ sll $v0, $s3, 2
/* DC280 80145B80 00431021 */ addu $v0, $v0, $v1
/* DC284 80145B84 8C510000 */ lw $s1, ($v0)
/* DC288 80145B88 52200010 */ beql $s1, $zero, .L80145BCC
/* DC28C 80145B8C 26730001 */ addiu $s3, $s3, 1
/* DC290 80145B90 8E230000 */ lw $v1, ($s1)
/* DC294 80145B94 30620001 */ andi $v0, $v1, 1
/* DC298 80145B98 5040000C */ beql $v0, $zero, .L80145BCC
/* DC29C 80145B9C 26730001 */ addiu $s3, $s3, 1
/* DC2A0 80145BA0 30620002 */ andi $v0, $v1, 2
/* DC2A4 80145BA4 50400009 */ beql $v0, $zero, .L80145BCC
/* DC2A8 80145BA8 26730001 */ addiu $s3, $s3, 1
/* DC2AC 80145BAC 8E22000C */ lw $v0, 0xc($s1)
/* DC2B0 80145BB0 0040F809 */ jalr $v0
/* DC2B4 80145BB4 0220202D */ daddu $a0, $s1, $zero
/* DC2B8 80145BB8 14400004 */ bnez $v0, .L80145BCC
/* DC2BC 80145BBC 26730001 */ addiu $s3, $s3, 1
/* DC2C0 80145BC0 8E220000 */ lw $v0, ($s1)
/* DC2C4 80145BC4 00501024 */ and $v0, $v0, $s0
/* DC2C8 80145BC8 AE220000 */ sw $v0, ($s1)
.L80145BCC:
/* DC2CC 80145BCC 2A620040 */ slti $v0, $s3, 0x40
/* DC2D0 80145BD0 1440FFE8 */ bnez $v0, .L80145B74
/* DC2D4 80145BD4 00000000 */ nop
/* DC2D8 80145BD8 8FBF0028 */ lw $ra, 0x28($sp)
/* DC2DC 80145BDC 8FB30024 */ lw $s3, 0x24($sp)
/* DC2E0 80145BE0 8FB20020 */ lw $s2, 0x20($sp)
/* DC2E4 80145BE4 8FB1001C */ lw $s1, 0x1c($sp)
/* DC2E8 80145BE8 8FB00018 */ lw $s0, 0x18($sp)
/* DC2EC 80145BEC 03E00008 */ jr $ra
/* DC2F0 80145BF0 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,40 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel si_goto_end_loop
/* ED494 802C8AE4 0000282D */ daddu $a1, $zero, $zero
/* ED498 802C8AE8 8C830008 */ lw $v1, 8($a0)
/* ED49C 802C8AEC 24080005 */ addiu $t0, $zero, 5
/* ED4A0 802C8AF0 24070001 */ addiu $a3, $zero, 1
/* ED4A4 802C8AF4 24060006 */ addiu $a2, $zero, 6
.L802C8AF8:
/* ED4A8 802C8AF8 8C640000 */ lw $a0, ($v1)
/* ED4AC 802C8AFC 24630004 */ addiu $v1, $v1, 4
/* ED4B0 802C8B00 8C620000 */ lw $v0, ($v1)
/* ED4B4 802C8B04 24630004 */ addiu $v1, $v1, 4
/* ED4B8 802C8B08 00021080 */ sll $v0, $v0, 2
/* ED4BC 802C8B0C 10880012 */ beq $a0, $t0, .L802C8B58
/* ED4C0 802C8B10 00621821 */ addu $v1, $v1, $v0
/* ED4C4 802C8B14 28820006 */ slti $v0, $a0, 6
/* ED4C8 802C8B18 10400005 */ beqz $v0, .L802C8B30
/* ED4CC 802C8B1C 00000000 */ nop
/* ED4D0 802C8B20 10870007 */ beq $a0, $a3, .L802C8B40
/* ED4D4 802C8B24 00000000 */ nop
/* ED4D8 802C8B28 080B22BE */ j .L802C8AF8
/* ED4DC 802C8B2C 00000000 */ nop
.L802C8B30:
/* ED4E0 802C8B30 50860005 */ beql $a0, $a2, .L802C8B48
/* ED4E4 802C8B34 24A5FFFF */ addiu $a1, $a1, -1
/* ED4E8 802C8B38 080B22BE */ j .L802C8AF8
/* ED4EC 802C8B3C 00000000 */ nop
.L802C8B40:
/* ED4F0 802C8B40 080B22D0 */ j .L802C8B40
/* ED4F4 802C8B44 00000000 */ nop
.L802C8B48:
/* ED4F8 802C8B48 04A1FFEB */ bgez $a1, .L802C8AF8
/* ED4FC 802C8B4C 0060102D */ daddu $v0, $v1, $zero
/* ED500 802C8B50 03E00008 */ jr $ra
/* ED504 802C8B54 00000000 */ nop
.L802C8B58:
/* ED508 802C8B58 080B22BE */ j .L802C8AF8
/* ED50C 802C8B5C 24A50001 */ addiu $a1, $a1, 1

View File

@ -88,8 +88,8 @@ glabel si_handle_print_debug_var
/* EB7F4 802C6E44 0230102A */ slt $v0, $s1, $s0
/* EB7F8 802C6E48 14400007 */ bnez $v0, .L802C6E68
/* EB7FC 802C6E4C 3C12F2E3 */ lui $s2, 0xf2e3
/* EB800 802C6E50 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB804 802C6E54 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB800 802C6E50 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB804 802C6E54 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB808 802C6E58 3C05802E */ lui $a1, %hi(D_802D9D98)
/* EB80C 802C6E5C 24A59D98 */ addiu $a1, $a1, %lo(D_802D9D98)
/* EB810 802C6E60 080B1CDE */ j .L802C7378
@ -101,8 +101,8 @@ glabel si_handle_print_debug_var
/* EB824 802C6E74 3C02F414 */ lui $v0, 0xf414
/* EB828 802C6E78 0C0B1248 */ jal fixed_var_to_float
/* EB82C 802C6E7C 0200202D */ daddu $a0, $s0, $zero
/* EB830 802C6E80 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB834 802C6E84 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB830 802C6E80 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB834 802C6E84 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB838 802C6E88 460000A1 */ cvt.d.s $f2, $f0
/* EB83C 802C6E8C 44071000 */ mfc1 $a3, $f2
/* EB840 802C6E90 44061800 */ mfc1 $a2, $f3
@ -127,8 +127,8 @@ glabel si_handle_print_debug_var
/* EB884 802C6ED4 0100182D */ daddu $v1, $t0, $zero
/* EB888 802C6ED8 00031140 */ sll $v0, $v1, 5
/* EB88C 802C6EDC 02024023 */ subu $t0, $s0, $v0
/* EB890 802C6EE0 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB894 802C6EE4 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB890 802C6EE0 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB894 802C6EE4 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB898 802C6EE8 3C05802E */ lui $a1, %hi(D_802D9DBC)
/* EB89C 802C6EEC 24A59DBC */ addiu $a1, $a1, %lo(D_802D9DBC)
/* EB8A0 802C6EF0 0200302D */ daddu $a2, $s0, $zero
@ -153,8 +153,8 @@ glabel si_handle_print_debug_var
/* EB8E8 802C6F38 0227102A */ slt $v0, $s1, $a3
/* EB8EC 802C6F3C 14400007 */ bnez $v0, .L802C6F5C
/* EB8F0 802C6F40 0247102A */ slt $v0, $s2, $a3
/* EB8F4 802C6F44 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB8F8 802C6F48 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB8F4 802C6F44 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB8F8 802C6F48 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB8FC 802C6F4C 3C05802E */ lui $a1, %hi(D_802D9DCC)
/* EB900 802C6F50 24A59DCC */ addiu $a1, $a1, %lo(D_802D9DCC)
/* EB904 802C6F54 080B1CDE */ j .L802C7378
@ -166,14 +166,14 @@ glabel si_handle_print_debug_var
/* EB918 802C6F68 00E0202D */ daddu $a0, $a3, $zero
/* EB91C 802C6F6C 46000021 */ cvt.d.s $f0, $f0
/* EB920 802C6F70 F7A00010 */ sdc1 $f0, 0x10($sp)
/* EB924 802C6F74 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB928 802C6F78 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB924 802C6F74 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB928 802C6F78 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB92C 802C6F7C 3C05802E */ lui $a1, %hi(D_802D9DDC)
/* EB930 802C6F80 080B1CCE */ j .L802C7338
/* EB934 802C6F84 24A59DDC */ addiu $a1, $a1, %lo(D_802D9DDC)
.L802C6F88:
/* EB938 802C6F88 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB93C 802C6F8C 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB938 802C6F88 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB93C 802C6F8C 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB940 802C6F90 3C05802E */ lui $a1, %hi(D_802D9DF0)
/* EB944 802C6F94 080B1CD6 */ j .L802C7358
/* EB948 802C6F98 24A59DF0 */ addiu $a1, $a1, %lo(D_802D9DF0)
@ -191,8 +191,8 @@ glabel si_handle_print_debug_var
/* EB974 802C6FC4 0227102A */ slt $v0, $s1, $a3
/* EB978 802C6FC8 14400007 */ bnez $v0, .L802C6FE8
/* EB97C 802C6FCC 0247102A */ slt $v0, $s2, $a3
/* EB980 802C6FD0 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB984 802C6FD4 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB980 802C6FD0 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB984 802C6FD4 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB988 802C6FD8 3C05802E */ lui $a1, %hi(D_802D9E00)
/* EB98C 802C6FDC 24A59E00 */ addiu $a1, $a1, %lo(D_802D9E00)
/* EB990 802C6FE0 080B1CDE */ j .L802C7378
@ -204,14 +204,14 @@ glabel si_handle_print_debug_var
/* EB9A4 802C6FF4 00E0202D */ daddu $a0, $a3, $zero
/* EB9A8 802C6FF8 46000021 */ cvt.d.s $f0, $f0
/* EB9AC 802C6FFC F7A00010 */ sdc1 $f0, 0x10($sp)
/* EB9B0 802C7000 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB9B4 802C7004 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB9B0 802C7000 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB9B4 802C7004 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB9B8 802C7008 3C05802E */ lui $a1, %hi(D_802D9E10)
/* EB9BC 802C700C 080B1CCE */ j .L802C7338
/* EB9C0 802C7010 24A59E10 */ addiu $a1, $a1, %lo(D_802D9E10)
.L802C7014:
/* EB9C4 802C7014 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EB9C8 802C7018 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EB9C4 802C7014 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EB9C8 802C7018 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EB9CC 802C701C 3C05802E */ lui $a1, %hi(D_802D9E24)
/* EB9D0 802C7020 080B1CD6 */ j .L802C7358
/* EB9D4 802C7024 24A59E24 */ addiu $a1, $a1, %lo(D_802D9E24)
@ -229,8 +229,8 @@ glabel si_handle_print_debug_var
/* EBA00 802C7050 0227102A */ slt $v0, $s1, $a3
/* EBA04 802C7054 14400007 */ bnez $v0, .L802C7074
/* EBA08 802C7058 0247102A */ slt $v0, $s2, $a3
/* EBA0C 802C705C 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBA10 802C7060 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBA0C 802C705C 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBA10 802C7060 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBA14 802C7064 3C05802E */ lui $a1, %hi(D_802D9E34)
/* EBA18 802C7068 24A59E34 */ addiu $a1, $a1, %lo(D_802D9E34)
/* EBA1C 802C706C 080B1CDE */ j .L802C7378
@ -242,14 +242,14 @@ glabel si_handle_print_debug_var
/* EBA30 802C7080 00E0202D */ daddu $a0, $a3, $zero
/* EBA34 802C7084 46000021 */ cvt.d.s $f0, $f0
/* EBA38 802C7088 F7A00010 */ sdc1 $f0, 0x10($sp)
/* EBA3C 802C708C 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBA40 802C7090 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBA3C 802C708C 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBA40 802C7090 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBA44 802C7094 3C05802E */ lui $a1, %hi(D_802D9E44)
/* EBA48 802C7098 080B1CCE */ j .L802C7338
/* EBA4C 802C709C 24A59E44 */ addiu $a1, $a1, %lo(D_802D9E44)
.L802C70A0:
/* EBA50 802C70A0 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBA54 802C70A4 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBA50 802C70A0 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBA54 802C70A4 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBA58 802C70A8 3C05802E */ lui $a1, %hi(D_802D9E58)
/* EBA5C 802C70AC 080B1CD6 */ j .L802C7358
/* EBA60 802C70B0 24A59E58 */ addiu $a1, $a1, %lo(D_802D9E58)
@ -263,8 +263,8 @@ glabel si_handle_print_debug_var
/* EBA7C 802C70CC 02028021 */ addu $s0, $s0, $v0
/* EBA80 802C70D0 0C05152F */ jal get_global_flag
/* EBA84 802C70D4 0200202D */ daddu $a0, $s0, $zero
/* EBA88 802C70D8 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBA8C 802C70DC 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBA88 802C70D8 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBA8C 802C70DC 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBA90 802C70E0 3C05802E */ lui $a1, %hi(D_802D9E68)
/* EBA94 802C70E4 24A59E68 */ addiu $a1, $a1, %lo(D_802D9E68)
/* EBA98 802C70E8 080B1C4A */ j .L802C7128
@ -279,8 +279,8 @@ glabel si_handle_print_debug_var
/* EBAB8 802C7108 02028021 */ addu $s0, $s0, $v0
/* EBABC 802C710C 0C05157C */ jal get_area_flag
/* EBAC0 802C7110 0200202D */ daddu $a0, $s0, $zero
/* EBAC4 802C7114 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBAC8 802C7118 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBAC4 802C7114 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBAC8 802C7118 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBACC 802C711C 3C05802E */ lui $a1, %hi(D_802D9E78)
/* EBAD0 802C7120 24A59E78 */ addiu $a1, $a1, %lo(D_802D9E78)
/* EBAD4 802C7124 0200302D */ daddu $a2, $s0, $zero
@ -305,8 +305,8 @@ glabel si_handle_print_debug_var
/* EBB14 802C7164 0100182D */ daddu $v1, $t0, $zero
/* EBB18 802C7168 00031140 */ sll $v0, $v1, 5
/* EBB1C 802C716C 02024023 */ subu $t0, $s0, $v0
/* EBB20 802C7170 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBB24 802C7174 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBB20 802C7170 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBB24 802C7174 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBB28 802C7178 3C05802E */ lui $a1, %hi(D_802D9E88)
/* EBB2C 802C717C 24A59E88 */ addiu $a1, $a1, %lo(D_802D9E88)
/* EBB30 802C7180 0200302D */ daddu $a2, $s0, $zero
@ -333,8 +333,8 @@ glabel si_handle_print_debug_var
/* EBB7C 802C71CC 0100182D */ daddu $v1, $t0, $zero
/* EBB80 802C71D0 00031140 */ sll $v0, $v1, 5
/* EBB84 802C71D4 02024023 */ subu $t0, $s0, $v0
/* EBB88 802C71D8 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBB8C 802C71DC 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBB88 802C71D8 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBB8C 802C71DC 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBB90 802C71E0 3C05802E */ lui $a1, %hi(D_802D9E98)
/* EBB94 802C71E4 24A59E98 */ addiu $a1, $a1, %lo(D_802D9E98)
/* EBB98 802C71E8 0200302D */ daddu $a2, $s0, $zero
@ -366,8 +366,8 @@ glabel si_handle_print_debug_var
/* EBBF8 802C7248 0087202A */ slt $a0, $a0, $a3
/* EBBFC 802C724C 14800007 */ bnez $a0, .L802C726C
/* EBC00 802C7250 3C02F2E3 */ lui $v0, 0xf2e3
/* EBC04 802C7254 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBC08 802C7258 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBC04 802C7254 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBC08 802C7258 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBC0C 802C725C 3C05802E */ lui $a1, %hi(D_802D9EA8)
/* EBC10 802C7260 24A59EA8 */ addiu $a1, $a1, %lo(D_802D9EA8)
/* EBC14 802C7264 080B1CDE */ j .L802C7378
@ -381,14 +381,14 @@ glabel si_handle_print_debug_var
/* EBC30 802C7280 00E0202D */ daddu $a0, $a3, $zero
/* EBC34 802C7284 46000021 */ cvt.d.s $f0, $f0
/* EBC38 802C7288 F7A00010 */ sdc1 $f0, 0x10($sp)
/* EBC3C 802C728C 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBC40 802C7290 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBC3C 802C728C 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBC40 802C7290 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBC44 802C7294 3C05802E */ lui $a1, %hi(D_802D9EB8)
/* EBC48 802C7298 080B1CCE */ j .L802C7338
/* EBC4C 802C729C 24A59EB8 */ addiu $a1, $a1, %lo(D_802D9EB8)
.L802C72A0:
/* EBC50 802C72A0 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBC54 802C72A4 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBC50 802C72A0 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBC54 802C72A4 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBC58 802C72A8 3C05802E */ lui $a1, %hi(D_802D9ECC)
/* EBC5C 802C72AC 080B1CD6 */ j .L802C7358
/* EBC60 802C72B0 24A59ECC */ addiu $a1, $a1, %lo(D_802D9ECC)
@ -408,8 +408,8 @@ glabel si_handle_print_debug_var
/* EBC94 802C72E4 0047102A */ slt $v0, $v0, $a3
/* EBC98 802C72E8 14400007 */ bnez $v0, .L802C7308
/* EBC9C 802C72EC 3C02F2E3 */ lui $v0, 0xf2e3
/* EBCA0 802C72F0 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBCA4 802C72F4 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBCA0 802C72F0 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBCA4 802C72F4 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBCA8 802C72F8 3C05802E */ lui $a1, %hi(D_802D9EDC)
/* EBCAC 802C72FC 24A59EDC */ addiu $a1, $a1, %lo(D_802D9EDC)
/* EBCB0 802C7300 080B1CDE */ j .L802C7378
@ -423,8 +423,8 @@ glabel si_handle_print_debug_var
/* EBCCC 802C731C 00E0202D */ daddu $a0, $a3, $zero
/* EBCD0 802C7320 46000021 */ cvt.d.s $f0, $f0
/* EBCD4 802C7324 F7A00010 */ sdc1 $f0, 0x10($sp)
/* EBCD8 802C7328 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBCDC 802C732C 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBCD8 802C7328 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBCDC 802C732C 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBCE0 802C7330 3C05802E */ lui $a1, %hi(D_802D9EEC)
/* EBCE4 802C7334 24A59EEC */ addiu $a1, $a1, %lo(D_802D9EEC)
.L802C7338:
@ -433,8 +433,8 @@ glabel si_handle_print_debug_var
/* EBCF0 802C7340 080B1CE0 */ j .L802C7380
/* EBCF4 802C7344 00000000 */ nop
.L802C7348:
/* EBCF8 802C7348 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBCFC 802C734C 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBCF8 802C7348 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBCFC 802C734C 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBD00 802C7350 3C05802E */ lui $a1, %hi(D_802D9F00)
/* EBD04 802C7354 24A59F00 */ addiu $a1, $a1, %lo(D_802D9F00)
.L802C7358:
@ -443,8 +443,8 @@ glabel si_handle_print_debug_var
/* EBD10 802C7360 080B1CE0 */ j .L802C7380
/* EBD14 802C7364 00000000 */ nop
.L802C7368:
/* EBD18 802C7368 3C04802E */ lui $a0, %hi(D_802DACA0)
/* EBD1C 802C736C 2484ACA0 */ addiu $a0, $a0, %lo(D_802DACA0)
/* EBD18 802C7368 3C04802E */ lui $a0, %hi(evtDebugPrintBuffer)
/* EBD1C 802C736C 2484ACA0 */ addiu $a0, $a0, %lo(evtDebugPrintBuffer)
/* EBD20 802C7370 3C05802E */ lui $a1, %hi(D_802D9F10)
/* EBD24 802C7374 24A59F10 */ addiu $a1, $a1, %lo(D_802D9F10)
.L802C7378:

View File

@ -702,7 +702,7 @@ segments:
- [0xd0a70, c, d0a70_len_4fe0]
- [0xd5a50, c, hud_element]
- [0xdba20, c, dba20_len_350]
- [0xdbd70, c, dbd70_len_700]
- [0xdbd70, c, trigger]
- [0xdc470, c, dc470_len_14c0]
- [0xdd930, c, dd930_len_1c0]
- [0xddaf0, c, ddaf0_len_c50]

View File

@ -19037,8 +19037,8 @@ D_80158574 = 0x80158574; // type:data
D_80158580 = 0x80158580; // type:data
D_80158B80 = 0x80158B80; // type:data
D_80159180 = 0x80159180; // type:data
gTriggerList1 = 0x80159190; //
gTriggerList2 = 0x80159290; //
wTriggerList = 0x80159190; //
bTriggerList = 0x80159290; //
gCurrentTriggerListPtr = 0x80159390; //
D_801593A0 = 0x801593A0; // type:data
D_8015959E = 0x8015959E; // type:data
@ -20450,7 +20450,7 @@ gCurrentScriptListPtr = 0x802DA890; //
gScriptIndexList = 0x802DA898; //
gScriptIdList = 0x802DAA98; //
gScriptListCount = 0x802DAC98; //
D_802DACA0 = 0x802DACA0; // type:data
evtDebugPrintBuffer = 0x802DACA0; // type:data
gLavaResetList = 0x802DADA0; // type:data
D_802DADA4 = 0x802DADA4; // type:data
gBattleMeshAnimationList = 0x802DADB0; // size:0x40

View File

@ -260,8 +260,8 @@ D_80158574 = 0x80158574;
D_80158580 = 0x80158580;
D_80158B80 = 0x80158B80;
D_80159180 = 0x80159180;
gTriggerList1 = 0x80159190;
gTriggerList2 = 0x80159290;
wTriggerList = 0x80159190;
bTriggerList = 0x80159290;
gCurrentTriggerListPtr = 0x80159390;
D_801593A0 = 0x801593A0;
D_8015959E = 0x8015959E;
@ -1185,7 +1185,7 @@ gCurrentScriptListPtr = 0x802DA890;
gScriptIndexList = 0x802DA898;
gScriptIdList = 0x802DAA98;
gScriptListCount = 0x802DAC98;
D_802DACA0 = 0x802DACA0;
evtDebugPrintBuffer = 0x802DACA0;
gLavaResetList = 0x802DADA0;
D_802DADA4 = 0x802DADA4;
gBattleMeshAnimationList = 0x802DADB0;