* don't touch undefined syms/funcs auto

* git subrepo pull --force tools/splat

subrepo:
  subdir:   "tools/splat"
  merged:   "25b848a230"
upstream:
  origin:   "https://github.com/ethteck/splat.git"
  branch:   "master"
  commit:   "25b848a230"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"

* 4 npc funcs

* nine sef commands

* test

* test2

* run undefined_syms through cpp, remove bss and dead syms files

* nuContQueryRead

* Remove unnecessary flags

* oops

* oops2
This commit is contained in:
Ethan Roseman 2021-08-22 22:10:06 +09:00 committed by GitHub
parent eb8eb93f89
commit 2c0cb43181
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 2294 additions and 2237 deletions

View File

@ -176,7 +176,14 @@ typedef struct Npc {
/* 0x0C4 */ s32* spritePaletteList; /* 0x0C4 */ s32* spritePaletteList;
/* 0x0C8 */ Palette16 localPaletteData[16]; /* 0x0C8 */ Palette16 localPaletteData[16];
/* 0x2C8 */ Palette16* localPalettes[16]; /* 0x2C8 */ Palette16* localPalettes[16];
/* 0x308 */ char unk_308[16]; /* 0x308 */ s16 unk_308;
/* 0x30A */ s16 unk_30A;
/* 0x30C */ s16 unk_30C;
/* 0x30E */ s16 unk_30E;
/* 0x310 */ s16 unk_310;
/* 0x312 */ s16 unk_312;
/* 0x314 */ s16 unk_314;
/* 0x316 */ s16 unk_316;
/* 0x318 */ f32 screenSpaceOffset2D[2]; /* 0x318 */ f32 screenSpaceOffset2D[2];
/* 0x320 */ f32 verticalStretch; /* 0x320 */ f32 verticalStretch;
/* 0x324 */ struct EffectInstance* decorations[2]; /* 0x324 */ struct EffectInstance* decorations[2];

View File

@ -1576,7 +1576,6 @@ enum NpcFlags {
NPC_FLAG_40 = 0x00000040, NPC_FLAG_40 = 0x00000040,
NPC_FLAG_100 = 0x00000100, // TODO NPC_FLAG_100 = 0x00000100, // TODO
NPC_FLAG_GRAVITY = 0x00000200, ///< Enables gravity. Does nothing if NPC_FLAG_NO_Y_MOVEMENT is set. NPC_FLAG_GRAVITY = 0x00000200, ///< Enables gravity. Does nothing if NPC_FLAG_NO_Y_MOVEMENT is set.
NPC_FLAG_208 = 0x00000208,
NPC_FLAG_LOCK_ANIMS = 0x00000400, ///< Do not allow scripts to change animation NPC_FLAG_LOCK_ANIMS = 0x00000400, ///< Do not allow scripts to change animation
NPC_FLAG_NO_Y_MOVEMENT = 0x00000800, ///< Causes NpcMoveTo() to ignore stairs NPC_FLAG_NO_Y_MOVEMENT = 0x00000800, ///< Causes NpcMoveTo() to ignore stairs
NPC_FLAG_1000 = 0x00001000, NPC_FLAG_1000 = 0x00001000,

View File

@ -34,6 +34,7 @@ Shadow* get_shadow_by_index(s32 index);
s32 get_time_freeze_mode(void); s32 get_time_freeze_mode(void);
void render_player_model(); void render_player_model();
s16 get_game_mode(void); s16 get_game_mode(void);
s32 is_picking_up_item(void);
f32 integrate_gravity(void); f32 integrate_gravity(void);
f32 get_clamped_angle_diff(f32, f32); f32 get_clamped_angle_diff(f32, f32);

View File

@ -469,7 +469,146 @@ void update_encounters_conversation(void) {
void draw_encounters_conversation(void) { void draw_encounters_conversation(void) {
} }
// Mostly stack diffs, some issues with accessing fields from EncounterStatus at the very end
#ifdef NON_MATCHING
s8 check_conversation_trigger(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
Camera* camera = &gCameras[gCurrentCameraID];
f32 npcX;
f32 npcY;
f32 npcZ;
f32 angle;
f32 playerColliderRadius;
f32 playerColliderHeight;
f32 deltaX;
f32 deltaZ;
f32 playerX;
f32 playerY;
f32 playerZ;
f32 length;
f32 npcCollisionHeight;
f32 npcCollisionRadius;
Encounter* encounter;
Encounter* encounterTemp;
Npc* npc;
Npc* encounterNpc;
Enemy* enemy;
Enemy* encounterEnemy;
f32 minLength;
f32 xTemp;
f32 yTemp;
f32 zTemp;
s32 i;
s32 j;
playerStatus->unk_C8 = NULL;
playerStatus->flags &= ~0x2000000;
playerColliderHeight = playerStatus->colliderHeight;
playerColliderRadius = playerStatus->colliderDiameter / 2;
playerX = playerStatus->position.x;
playerY = playerStatus->position.y;
playerZ = playerStatus->position.z;
if (gPartnerActionStatus.actionState.b[0] == 0) {
encounter = NULL;
npc = NULL;
enemy = NULL;
minLength = 65535.0f;
for (i = 0; i < gCurrentEncounter.numEncounters; i++) {
encounterTemp = gCurrentEncounter.encounterList[i];
if (encounterTemp == NULL) {
continue;
}
for (j = 0; j < encounterTemp->count; j++) {
encounterEnemy = encounterTemp->enemy[j];
if (encounterEnemy == NULL) {
continue;
}
if (!(encounterEnemy->flags & 0x80000020)) {
if (encounterEnemy->flags & 1) {
if (!(encounterEnemy->flags & 0x8000000) && encounterEnemy->interactBytecode != NULL) {
encounterNpc = get_npc_unsafe(encounterEnemy->npcID);
npcX = encounterNpc->pos.x;
npcY = encounterNpc->pos.y;
npcZ = encounterNpc->pos.z;
deltaX = npcX - playerX;
deltaZ = npcZ - playerZ;
npcCollisionHeight = encounterNpc->collisionHeight;
npcCollisionRadius = encounterNpc->collisionRadius;
length = sqrtf(SQ(deltaX) + SQ(deltaZ));
if (!(playerColliderRadius + npcCollisionRadius <= length) &&
!(npcY + npcCollisionHeight < playerY) &&
!(playerY + playerColliderHeight < npcY)) {
if (clamp_angle(playerStatus->spriteFacingAngle) < 180.0f) {
angle = clamp_angle(camera->currentYaw - 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle + 60.0f);
}
} else {
angle = clamp_angle(camera->currentYaw + 120.0f);
if (playerStatus->trueAnimation & 0x1000000) {
angle = clamp_angle(angle - 60.0f);
}
}
if (fabsf(get_clamped_angle_diff(angle, atan2(playerX, playerZ, npcX, npcZ))) > 90.0f) {
continue;
}
if (!(encounterEnemy->flags & 0x10000) && encounterNpc->flags & 0x20000000) {
xTemp = npcX;
yTemp = npcY;
zTemp = npcZ;
if (npc_test_move_taller_with_slipping(0, &xTemp, &yTemp, &zTemp, length,
atan2(npcX, npcZ, playerX, playerZ),
npcCollisionHeight,
2.0f * npcCollisionRadius) != 0) {
continue;
}
}
if (length < minLength) {
minLength = length;
encounter = encounterTemp;
npc = encounterNpc;
enemy = encounterEnemy;
}
}
}
}
}
}
}
if (!(playerStatus->animFlags & 0x4000) && npc != NULL && !is_picking_up_item()) {
playerStatus->unk_C8 = npc;
playerStatus->flags |= 0x2000000;
if (playerStatus->pressedButtons & BUTTON_A) {
close_status_menu();
enemy->encountered = 5;
gCurrentEncounter.hitType = 5;
gCurrentEncounter.currentEncounter = encounter;
gCurrentEncounter.currentEnemy = enemy;
gCurrentEncounter.eFirstStrike = FIRST_STRIKE_PLAYER;
return TRUE;
}
}
}
return FALSE;
}
#else
INCLUDE_ASM(s32, "1a1f0_len_5390", check_conversation_trigger); INCLUDE_ASM(s32, "1a1f0_len_5390", check_conversation_trigger);
#endif
INCLUDE_ASM(s32, "1a1f0_len_5390", create_encounters); INCLUDE_ASM(s32, "1a1f0_len_5390", create_encounters);

View File

@ -182,7 +182,7 @@ void func_8004B328(s16 arg0, s32 arg1) {
func_80056D44(temp_s0); func_80056D44(temp_s0);
if (temp_s0 == 0) { if (temp_s0 == 0) {
nuAuTaskStop = 0; nuAuTaskStop = NU_AU_TASK_STOP;
} }
break; break;
} }

View File

@ -25,15 +25,15 @@ void func_8004B440(SoundManager* manager, u8 arg1, u8 arg2, UnkAl19E0* arg3, u8
for (i = 0; i < ARRAY_COUNT(manager->unk_16C); i++) { for (i = 0; i < ARRAY_COUNT(manager->unk_16C); i++) {
SoundPlayer* sub = &manager->unk_16C[i]; SoundPlayer* sub = &manager->unk_16C[i];
sub->counter = 0; sub->sefDataReadPos = 0;
sub->unk_5C = 0; sub->sfxVolume = 0;
sub->unk_8E = 0; sub->unk_8E = 0;
sub->unk_90 = 0; sub->unk_90 = 0;
sub->unk_92 = 0; sub->unk_92 = 0;
sub->unk_94 = 0; sub->unk_94 = 0;
sub->unk_9B = 0; sub->sfxPan = 0;
sub->unk_9C = 0; sub->reverb = 0;
sub->unk_9D = 0; sub->instrumentIndex = 0;
sub->unk_9E = 0; sub->unk_9E = 0;
sub->unk_9F = 0; sub->unk_9F = 0;
sub->unk_99 = 0; sub->unk_99 = 0;
@ -185,9 +185,39 @@ INCLUDE_ASM(s32, "26840_len_20d0", snd_set_voice_volume);
INCLUDE_ASM(s32, "26840_len_20d0", func_8004CDF8); INCLUDE_ASM(s32, "26840_len_20d0", func_8004CDF8);
void snd_SEFCmd_00_SetVolume(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_01_SetPan(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_02_SetInstrument(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_03_SetReverb(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_04(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_05(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_06(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_07(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_08(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_09_StartLoop(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0A_EndLoop(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0B(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0C(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0D(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0E(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_0F(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_10_Jump(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_13(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_14(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_15(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_16(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_17(SoundManager* manager, SoundPlayer* player);
void snd_SEFCmd_18(SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_00_SetVolume, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_00_SetVolume, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_01_SetPan, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_01_SetPan(SoundManager* manager, SoundPlayer* player) {
s8 sfxPan = *player->sefDataReadPos;
player->sefDataReadPos++;
player->changedPan = TRUE;
player->sfxPan = sfxPan;
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_02_SetInstrument, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_02_SetInstrument, SoundManager* manager, SoundPlayer* player);
@ -195,19 +225,40 @@ INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_03_SetReverb, SoundManager* manag
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_04, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_04, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_05, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_05(SoundManager* manager, SoundPlayer* player) {
s32 temp_v1 = *player->sefDataReadPos;
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_06, SoundManager* manager, SoundPlayer* player); player->sefDataReadPos++;
player->unk_92 = temp_v1 * 100;
}
void snd_SEFCmd_06(SoundManager* manager, SoundPlayer* player) {
s8 temp_v1 = *player->sefDataReadPos;
player->sefDataReadPos++;
player->unk_94 = temp_v1;
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_07, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_07, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_08, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_08, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_09_StartLoop, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_09_StartLoop(SoundManager* manager, SoundPlayer* player) {
s8 loopIterCount = *player->sefDataReadPos;
player->sefDataReadPos++;
player->loopStartPos = player->sefDataReadPos;
player->loopIterCount = loopIterCount;
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0A_EndLoop, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0A_EndLoop, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0B, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_0B(SoundManager* manager, SoundPlayer* player) {
if (player->unk_90 != 0) {
player->unk_8E = 3;
player->sefDataReadPos--;
}
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0C, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0C, SoundManager* manager, SoundPlayer* player);
@ -219,16 +270,33 @@ INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_0F, SoundManager* manager, SoundP
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_10_Jump, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_10_Jump, SoundManager* manager, SoundPlayer* player);
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_11_Restart, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_11_Restart(SoundManager* manager, SoundPlayer* player) {
player->sefDataReadPos = player->sefReadStart;
}
void snd_SEFCmd_12_NOP(SoundManager* manager, SoundPlayer* player) { void snd_SEFCmd_12_NOP(SoundManager* manager, SoundPlayer* player) {
} }
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_13, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_13(SoundManager* manager, SoundPlayer* player) {
s8 temp_v1 = *player->sefDataReadPos;
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_14, SoundManager* manager, SoundPlayer* player); player->sefDataReadPos++;
player->unk_A1 = temp_v1;
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_15, SoundManager* manager, SoundPlayer* player); void snd_SEFCmd_14(SoundManager* manager, SoundPlayer* player) {
s8 temp_v1 = *player->sefDataReadPos;
player->sefDataReadPos++;
player->unk_A2 = temp_v1;
}
void snd_SEFCmd_15(SoundManager* manager, SoundPlayer* player) {
s8 temp_v1 = *player->sefDataReadPos;
player->sefDataReadPos++;
player->unk_A3 = temp_v1;
}
INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_16, SoundManager* manager, SoundPlayer* player); INCLUDE_ASM(void, "26840_len_20d0", snd_SEFCmd_16, SoundManager* manager, SoundPlayer* player);

View File

@ -159,7 +159,7 @@ s32 is_picking_up_item(void) {
s32 ret = D_801565A8 != 0; s32 ret = D_801565A8 != 0;
if (D_801565A4 != 0) { if (D_801565A4 != 0) {
ret = 1; ret = TRUE;
} }
return ret; return ret;
} }

View File

@ -111,11 +111,53 @@ typedef struct SoundSFXEntry {
/* 0x9 */ char unk_9[0x1]; /* 0x9 */ char unk_9[0x1];
} SoundSFXEntry; // size = 0xA } SoundSFXEntry; // size = 0xA
typedef struct Instrument {
/* 0x00 */ s32 wavOffset;
/* 0x04 */ s32 wavLength;
/* 0x08 */ s32 loopPredictorOffset;
/* 0x0C */ s32 loopStart;
/* 0x10 */ s32 loopEnd;
/* 0x14 */ s32 loopCount;
/* 0x18 */ s32 predictorOffset;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
/* 0x20 */ f32 sampleRate;
/* 0x24 */ s8 skipLoopPredictor;
/* 0x25 */ s8 unk_25;
/* 0x26 */ s8 unk_26;
/* 0x27 */ s8 unk_27;
/* 0x28 */ s8 unk_28;
/* 0x29 */ s8 unk_29;
/* 0x2A */ s8 unk_2A;
/* 0x2B */ s8 unk_2B;
/* 0x2C */ s32 unkOffset;
} Instrument; // size = 0x30;
typedef Instrument* InstrumentGroup[16];
typedef struct SoundLerp {
/* 0x0 */ s32 current;
/* 0x4 */ s32 step;
/* 0x8 */ s16 goal;
/* 0xA */ s16 time;
} SoundLerp; // size = 0xC
typedef struct SoundPlayer { typedef struct SoundPlayer {
/* 0x00 */ s32 counter; /* 0x00 */ s8* sefDataReadPos;
/* 0x04 */ char unk_04[0x58]; /* 0x04 */ char unk_04[0x14];
/* 0x5C */ u16 unk_5C; /* 0x18 */ s32 unk_18;
/* 0x5E */ char unk_5E[0x1A]; /* 0x1C */ Instrument* sfxInstrumentRef;
/* 0x20 */ Instrument sfxInstrument;
/* 0x50 */ s32 sefReadStart;
/* 0x54 */ s8 changedTune;
/* 0x55 */ u8 changedVolume;
/* 0x56 */ u8 changedPan;
/* 0x57 */ u8 changedReverb;
/* 0x58 */ f32 actualSampleRate;
/* 0x5C */ u16 sfxVolume;
/* 0x5E */ s16 unk_5E;
/* 0x60 */ SoundLerp tuneLerp;
/* 0x6C */ SoundLerp volumeLerp;
/* 0x78 */ u8 locatorB; /* 0x78 */ u8 locatorB;
/* 0x79 */ u8 locatorC; /* 0x79 */ u8 locatorC;
/* 0x7A */ u8 locatorD; /* 0x7A */ u8 locatorD;
@ -124,20 +166,35 @@ typedef struct SoundPlayer {
/* 0x7D */ u8 unk_7D; /* 0x7D */ u8 unk_7D;
/* 0x7E */ u8 unk_7E; /* 0x7E */ u8 unk_7E;
/* 0x7F */ u8 unk_7F; /* 0x7F */ u8 unk_7F;
/* 0x80 */ char unk_80[0xE]; /* 0x80 */ s32 unk_80;
/* 0x84 */ s8 unk_84;
/* 0x85 */ s8 soundC00;
/* 0x86 */ char unk_86[0x2];
/* 0x88 */ s8* loopStartPos;
/* 0x8C */ s8 loopIterCount;
/* 0x8D */ char unk_8D;
/* 0x8E */ u16 unk_8E; /* 0x8E */ u16 unk_8E;
/* 0x90 */ u16 unk_90; /* 0x90 */ u16 unk_90;
/* 0x92 */ u16 unk_92; /* 0x92 */ u16 unk_92;
/* 0x94 */ u8 unk_94; /* 0x94 */ u8 unk_94;
/* 0x95 */ char unk_05[0x4]; /* 0x95 */ char unk_05;
/* 0x96 */ s16 currentSoundID;
/* 0x98 */ char unk_98[0x1];
/* 0x99 */ u8 unk_99; /* 0x99 */ u8 unk_99;
/* 0x9A */ char unk_9A[0x1]; /* 0x9A */ s8 sfxParamsFlags;
/* 0x9B */ u8 unk_9B; /* 0x9B */ u8 sfxPan;
/* 0x9C */ u8 unk_9C; /* 0x9C */ u8 reverb;
/* 0x9D */ u8 unk_9D; /* 0x9D */ u8 instrumentIndex; // ?
/* 0x9E */ u8 unk_9E; /* 0x9E */ u8 unk_9E;
/* 0x9F */ u8 unk_9F; /* 0x9F */ u8 unk_9F;
/* 0xA0 */ char unk_A0[0xC]; /* 0xA0 */ char unk_A0[0x1];
/* 0xA1 */ s8 unk_A1;
/* 0xA2 */ s8 unk_A2;
/* 0xA3 */ s8 unk_A3;
/* 0xA4 */ s16 masterPitchShift;
/* 0xA6 */ s16 masterVolume;
/* 0xA8 */ s8 masterPan;
/* 0xA9 */ char unk_A9[0x3];
} SoundPlayer; // size = 0xAC } SoundPlayer; // size = 0xAC
typedef struct SoundSefHeader { typedef struct SoundSefHeader {
@ -171,7 +228,7 @@ typedef struct SoundManager {
/* 0x0BC */ u8 unk_BC; /* 0x0BC */ u8 unk_BC;
/* 0x0BD */ u8 sfxPlayerSelector; /* 0x0BD */ u8 sfxPlayerSelector;
/* 0x0BE */ u8 unk_BE; /* 0x0BE */ u8 unk_BE;
/* 0x0BF */ char unk_BF[0x1]; /* 0x0BF */ u8 unk_BF;
/* 0x0C0 */ s8 unk_C0; /* 0x0C0 */ s8 unk_C0;
/* 0x0C1 */ char unk_C1[0x1]; /* 0x0C1 */ char unk_C1[0x1];
/* 0x0C2 */ SoundSFXEntry unk_C2[16]; /* 0x0C2 */ SoundSFXEntry unk_C2[16];
@ -196,30 +253,6 @@ typedef struct UnkAlC {
/* 0xA */ s8 unk_0A; /* 0xA */ s8 unk_0A;
} UnkAlC; } UnkAlC;
typedef struct Instrument {
/* 0x00 */ s32 wavOffset;
/* 0x04 */ s32 wavLength;
/* 0x08 */ s32 loopPredictorOffset;
/* 0x0C */ s32 loopStart;
/* 0x10 */ s32 loopEnd;
/* 0x14 */ s32 loopCount;
/* 0x18 */ s32 predictorOffset;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
/* 0x20 */ f32 sampleRate;
/* 0x24 */ s8 skipLoopPredictor;
/* 0x25 */ s8 unk_25;
/* 0x26 */ s8 unk_26;
/* 0x27 */ s8 unk_27;
/* 0x28 */ s8 unk_28;
/* 0x29 */ s8 unk_29;
/* 0x2A */ s8 unk_2A;
/* 0x2B */ s8 unk_2B;
/* 0x2C */ s32 unkOffset;
} Instrument;
typedef Instrument* InstrumentGroup[16];
typedef struct UnkAl48 { // Track? typedef struct UnkAl48 { // Track?
/* 0x00 */ s32 unk_00; // pointer to something /* 0x00 */ s32 unk_00; // pointer to something
/* 0x04 */ f32 unk_04; /* 0x04 */ f32 unk_04;

View File

@ -16,6 +16,7 @@ extern s32 D_80077C20;
extern s16 D_80077C30; extern s16 D_80077C30;
extern s32 D_80077C34; extern s32 D_80077C34;
extern s16 D_80077C38;
extern s16 D_80077C3A; extern s16 D_80077C3A;
void STUB_npc_callback(void) { void STUB_npc_callback(void) {
@ -260,7 +261,7 @@ void npc_do_world_collision(Npc* npc) {
f32 temp_y; f32 temp_y;
f32 temp_z; f32 temp_z;
if (npc->flags & 0x40) { if (npc->flags & NPC_FLAG_40) {
npc->flags |= NPC_FLAG_8000000; npc->flags |= NPC_FLAG_8000000;
} else if ((npc->pos.x != npc->colliderPos.x) || (npc->pos.y != npc->colliderPos.y) } else if ((npc->pos.x != npc->colliderPos.x) || (npc->pos.y != npc->colliderPos.y)
|| (npc->pos.z != npc->colliderPos.z) || npc->flags & NPC_FLAG_8000000) { || (npc->pos.z != npc->colliderPos.z) || npc->flags & NPC_FLAG_8000000) {
@ -356,15 +357,53 @@ INCLUDE_ASM(void, "npc", npc_do_other_npc_collision, Npc* npc);
INCLUDE_ASM(s32, "npc", npc_do_player_collision, Npc* npc); INCLUDE_ASM(s32, "npc", npc_do_player_collision, Npc* npc);
INCLUDE_ASM(void, "npc", npc_do_gravity, Npc* npc); void npc_do_gravity(Npc* npc) {
if (npc->flags & NPC_FLAG_GRAVITY) {
if (npc->flags & NPC_FLAG_NO_Y_MOVEMENT) {
npc->flags &= ~NPC_FLAG_1000;
} else {
f32 xTemp;
f32 yTemp;
f32 zTemp;
f32 length, oldLength;
s32 hit;
npc->jumpScale = 1.0f;
xTemp = npc->pos.x;
zTemp = npc->pos.z;
npc->jumpVelocity -= npc->jumpScale;
npc->pos.y += npc->jumpVelocity;
oldLength = length = fabsf(npc->jumpVelocity) + 16.0f;
yTemp = npc->pos.y + 13.0f;
if (!(npc->flags & NPC_FLAG_PARTICLE)) {
hit = npc_raycast_down_sides(npc->unk_80, &xTemp, &yTemp, &zTemp, &length);
} else {
hit = npc_raycast_down_ahead(npc->unk_80, &xTemp, &yTemp, &zTemp, &length, npc->yaw,
npc->collisionRadius);
}
if (hit && length <= oldLength) {
npc->jumpVelocity = 0.0f;
npc->flags |= NPC_FLAG_1000;
npc->pos.y = yTemp;
npc->unk_84 = D_8010C97A;
} else {
npc->flags &= ~NPC_FLAG_1000;
}
}
}
}
s32 func_800397E8(Npc* npc, f32 arg1) { s32 func_800397E8(Npc* npc, f32 arg1) {
if (!(npc->flags & NPC_FLAG_208)) { if (!(npc->flags & (NPC_FLAG_GRAVITY | NPC_FLAG_ENABLE_HIT_SCRIPT))) {
f32 x; f32 x;
f32 y; f32 y;
f32 z; f32 z;
f32 subroutine_arg; f32 length;
f32 temp_v1; f32 oldLength;
s32 phi_v0; s32 phi_v0;
if (npc->flags & NPC_FLAG_NO_Y_MOVEMENT) { if (npc->flags & NPC_FLAG_NO_Y_MOVEMENT) {
@ -372,20 +411,18 @@ s32 func_800397E8(Npc* npc, f32 arg1) {
return 0; return 0;
} }
temp_v1 = fabsf(arg1) + 16; length = oldLength = fabsf(arg1) + 16;
subroutine_arg = temp_v1;
x = npc->pos.x; x = npc->pos.x;
y = npc->pos.y + 13; y = npc->pos.y + 13;
z = npc->pos.z; z = npc->pos.z;
if (!(npc->flags & NPC_FLAG_PARTICLE)) { if (!(npc->flags & NPC_FLAG_PARTICLE)) {
phi_v0 = npc_raycast_down_sides(npc->unk_80, &x, &y, &z, &subroutine_arg); phi_v0 = npc_raycast_down_sides(npc->unk_80, &x, &y, &z, &length);
} else { } else {
phi_v0 = npc_raycast_down_ahead(npc->unk_80, &x, &y, &z, &subroutine_arg, npc->yaw, phi_v0 = npc_raycast_down_ahead(npc->unk_80, &x, &y, &z, &length, npc->yaw, npc->collisionRadius);
npc->collisionRadius);
} }
if (phi_v0 != 0 && subroutine_arg <= temp_v1) { if (phi_v0 != 0 && length <= oldLength) {
npc->pos.y = y; npc->pos.y = y;
npc->unk_84 = D_8010C97A; npc->unk_84 = D_8010C97A;
npc->flags |= NPC_FLAG_1000; npc->flags |= NPC_FLAG_1000;
@ -797,9 +834,19 @@ void func_8003B420(Npc* npc) {
npc->unk_B6 = 1; npc->unk_B6 = 1;
} }
INCLUDE_ASM(s32, "npc", npc_set_palswap_1); void npc_set_palswap_1(Npc* npc, s32 palIndexA, s32 palIndexB, s32 timeHoldA, s32 timeAB) {
npc->unk_308 = palIndexA;
npc->unk_30A = palIndexB;
npc->unk_30C = timeHoldA;
npc->unk_30E = timeAB;
}
INCLUDE_ASM(s32, "npc", npc_set_palswap_2); void npc_set_palswap_2(Npc* npc, s32 timeHoldB, s32 timeBA, s32 palIndexC, s32 palIndexD) {
npc->unk_310 = timeHoldB;
npc->unk_312 = timeBA;
npc->unk_314 = palIndexC;
npc->unk_316 = palIndexD;
}
void npc_draw_with_palswap(Npc* npc, s32 arg1, s32 arg2) { void npc_draw_with_palswap(Npc* npc, s32 arg1, s32 arg2) {
switch (npc->unk_B4) { switch (npc->unk_B4) {
@ -1293,7 +1340,7 @@ void func_8003D624(Npc* npc, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s
#ifdef NON_MATCHING #ifdef NON_MATCHING
// Rodata padding issue. Most likely belongs to a separate TU than the function above with the switch. // Rodata padding issue. Most likely belongs to a separate TU than the function above with the switch.
void func_8003D660(Npc* npc, s32 arg1) { void func_8003D660(Npc* npc, s32 arg1) {
Temp8010EBB0* temp = &gPartnerActionStatus; PartnerActionStatus* temp = &gPartnerActionStatus;
if ((npc->flags & (NPC_FLAG_400000 | NPC_FLAG_2)) == NPC_FLAG_400000) { if ((npc->flags & (NPC_FLAG_400000 | NPC_FLAG_2)) == NPC_FLAG_400000) {
if (npc->moveSpeed != 0.0f) { if (npc->moveSpeed != 0.0f) {
@ -1387,8 +1434,20 @@ void func_8003DFA0(Npc* npc) {
} }
} }
void func_8003E0D4(Npc* npc) {
if (D_80077C38++ >= 4) {
f32 theta;
f32 sinTheta;
f32 cosTheta;
INCLUDE_ASM(s32, "npc", func_8003E0D4); D_80077C38 = 0;
theta = (clamp_angle(-npc->yaw) * TAU) / 360.0f;
sinTheta = sin_rad(theta);
cosTheta = cos_rad(theta);
playFX_2C(1, npc->pos.x + (npc->collisionRadius * sinTheta * 0.2f),
40.0f, npc->pos.z + (npc->collisionRadius * cosTheta * 0.2f));
}
}
void func_8003E1D0(Npc* npc) { void func_8003E1D0(Npc* npc) {
if (D_80077C3A++ >= 4) { if (D_80077C3A++ >= 4) {

View File

@ -86,9 +86,9 @@ void npc_set_palswap_mode_B(Npc* npc, s32 arg1);
void func_8003B420(Npc* npc); void func_8003B420(Npc* npc);
s32 npc_set_palswap_1(); void npc_set_palswap_1(Npc* npc, s32 palIndexA, s32 palIndexB, s32 timeHoldA, s32 timeAB);
s32 npc_set_palswap_2(); void npc_set_palswap_2(Npc* npc, s32 timeHoldB, s32 timeBA, s32 palIndexC, s32 palIndexD);
void npc_draw_with_palswap(Npc* npc, s32 arg1, s32 arg2); void npc_draw_with_palswap(Npc* npc, s32 arg1, s32 arg2);
@ -186,7 +186,7 @@ s32 func_8003DC38();
void func_8003DFA0(Npc* npc); void func_8003DFA0(Npc* npc);
s32 func_8003E0D4(); void func_8003E0D4();
void func_8003E1D0(Npc* npc); void func_8003E1D0(Npc* npc);

View File

@ -6,6 +6,7 @@
// TODO: create src/os/nusys/nuSched.h? // TODO: create src/os/nusys/nuSched.h?
extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)];
// probably should be at 0x8009A630, unless D_8009A630 (what's technically used in boot_idle) isn't nuIdleFunc
static void (*nuIdleFunc)(void); static void (*nuIdleFunc)(void);
void nuBoot(void) { void nuBoot(void) {

View File

@ -1,3 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "os/3bd20_len_c0", nuContQueryRead);

View File

@ -0,0 +1,6 @@
#include "common.h"
#include "nu/nusys.h"
void nuContQueryRead(void) {
nuSiSendMesg(NU_CONT_QUERY_MSG, NULL);
}

View File

@ -12,9 +12,8 @@ DO_SHA1_CHECK = True
CPPFLAGS = "-w -Iver/$version/build/include -Iinclude -Isrc -Iassets/$version -D _LANGUAGE_C -D _FINALROM -D VERSION=$version " \ CPPFLAGS = "-w -Iver/$version/build/include -Iinclude -Isrc -Iassets/$version -D _LANGUAGE_C -D _FINALROM -D VERSION=$version " \
"-ffreestanding -DF3DEX_GBI_2 -D_MIPS_SZLONG=32" "-ffreestanding -DF3DEX_GBI_2 -D_MIPS_SZLONG=32"
CFLAGS = "-O2 -quiet -fno-common -G0 -mcpu=vr4300 -mfix4300 -mips3 -mgp32 -mfp32 " \ CFLAGS = "-G0 -O2 -quiet -fno-common -Wuninitialized -Wmissing-braces"
"-Wuninitialized -Wmissing-braces" ASFLAGS = "-G0"
ASFLAGS = "-EB -G 0"
# Paths: # Paths:
ROOT = Path(__file__).parent.parent.parent ROOT = Path(__file__).parent.parent.parent
@ -66,7 +65,7 @@ def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra
ninja.rule("ld", ninja.rule("ld",
description="link($version) $out", description="link($version) $out",
command=f"{cross}ld -T ver/$version/undefined_syms.txt -T ver/$version/undefined_syms_auto.txt -T ver/$version/undefined_funcs_auto.txt -T ver/$version/dead_syms.txt -T ver/$version/main_bss_syms.txt -Map $mapfile --no-check-sections -T $in -o $out", command=f"{cross}ld -T ver/$version/build/undefined_syms.txt -T ver/$version/undefined_syms_auto.txt -T ver/$version/undefined_funcs_auto.txt -Map $mapfile --no-check-sections -T $in -o $out",
) )
ninja.rule("z64", ninja.rule("z64",
@ -79,6 +78,11 @@ def write_ninja_rules(ninja: ninja_syntax.Writer, cpp: str, cppflags: str, extra
command="sha1sum -c $in && touch $out" if DO_SHA1_CHECK else "touch $out", command="sha1sum -c $in && touch $out" if DO_SHA1_CHECK else "touch $out",
) )
ninja.rule("cpp",
description="cpp $in",
command=f"{cpp} $in {cppflags} -P -o $out"
)
ninja.rule("cc", ninja.rule("cc",
description="cc($version) $in $cflags", description="cc($version) $in $cflags",
command=f"bash -o pipefail -c '{cpp} {CPPFLAGS} {cppflags} -MD -MF $out.d $in -o - | {iconv} | {cc1} {cflags} $cflags -o - | {nu64as} {ASFLAGS} - -o $out'", command=f"bash -o pipefail -c '{cpp} {CPPFLAGS} {cppflags} -MD -MF $out.d $in -o - | {iconv} | {cc1} {cflags} $cflags -o - | {nu64as} {ASFLAGS} - -o $out'",
@ -216,6 +220,9 @@ class Configure:
def build_path(self) -> Path: def build_path(self) -> Path:
return Path(f"ver/{self.version}/build") return Path(f"ver/{self.version}/build")
def undefined_syms_path(self) -> Path:
return self.build_path() / "undefined_syms.txt"
def elf_path(self) -> Path: def elf_path(self) -> Path:
# TODO: read basename and build_path from splat.yaml # TODO: read basename and build_path from splat.yaml
return Path(f"ver/{self.version}/build/papermario.elf") return Path(f"ver/{self.version}/build/papermario.elf")
@ -568,12 +575,19 @@ class Configure:
else: else:
raise Exception(f"don't know how to build {seg.__class__.__name__} '{seg.name}'") raise Exception(f"don't know how to build {seg.__class__.__name__} '{seg.name}'")
# Run undefined_syms through cpp
ninja.build(
str(self.undefined_syms_path()),
"cpp",
str(self.version_path / "undefined_syms.txt")
)
# Build elf, z64, ok # Build elf, z64, ok
ninja.build( ninja.build(
str(self.elf_path()), str(self.elf_path()),
"ld", "ld",
str(self.linker_script_path()), str(self.linker_script_path()),
implicit=[str(obj) for obj in built_objects], implicit=[str(obj) for obj in built_objects] + [str(self.undefined_syms_path())],
variables={ "version": self.version, "mapfile": str(self.map_path()) }, variables={ "version": self.version, "mapfile": str(self.map_path()) },
) )
ninja.build( ninja.build(

View File

@ -6,7 +6,7 @@
[subrepo] [subrepo]
remote = https://github.com/ethteck/splat.git remote = https://github.com/ethteck/splat.git
branch = master branch = master
commit = 265b837554469fddfdd8155c872298a7b3244183 commit = 25b848a230458b50c0d9124cf9af872cebb44ef2
parent = 99ddf7cb0eb0611d29fd8038e45b17e4512a1722 parent = 08f58ae5d9d266caf805fdee477008f88e84f1f9
method = merge method = merge
cmdver = 0.4.3 cmdver = 0.4.3

View File

@ -67,14 +67,19 @@ class N64SegC(N64SegCodeSubsegment):
def split(self, rom_bytes: bytes): def split(self, rom_bytes: bytes):
if not self.rom_start == self.rom_end: if not self.rom_start == self.rom_end:
asm_out_dir = options.get_asm_path() / "nonmatchings" / self.dir asm_out_dir = options.get_asm_path() / "nonmatchings" / self.dir
asm_out_dir.mkdir(parents=True, exist_ok=True) asm_out_dir.mkdir(parents=True, exist_ok=True)
for func in self.funcs_text: for func in self.funcs_text:
func_name = self.parent.get_symbol(func, type="func", local_only=True).name func_name = self.parent.get_symbol(func, type="func", local_only=True).name
if func_name in self.global_asm_funcs: if options.get_compiler() == "GCC":
self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name) if func_name not in self.defined_funcs:
self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name)
else:
if func_name in self.global_asm_funcs:
self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name)
c_path = self.out_path() c_path = self.out_path()
if c_path: if c_path:
@ -149,12 +154,19 @@ class N64SegC(N64SegCodeSubsegment):
for func in funcs_text: for func in funcs_text:
func_name = self.parent.get_symbol(func, type="func", local_only=True).name func_name = self.parent.get_symbol(func, type="func", local_only=True).name
if options.get_compiler() == "GCC":
c_lines.append("INCLUDE_ASM(s32, \"{}\", {});".format(self.name, func_name)) # Terrible hack to "auto-decompile" empty functions
# TODO move disassembly into funcs_text or somewhere we can access it from here
if len(funcs_text[func][0]) == 3 and funcs_text[func][0][1][-3:] == "$ra" and funcs_text[func][0][2][-3:] == "nop":
c_lines.append("void " + func_name + "(void) {")
c_lines.append("}")
else: else:
asm_outpath = Path(os.path.join(asm_out_dir, self.name, func_name + ".s")) if options.get_compiler() == "GCC":
rel_asm_outpath = os.path.relpath(asm_outpath, options.get_base_path()) c_lines.append("INCLUDE_ASM(s32, \"{}\", {});".format(self.name, func_name))
c_lines.append(f"#pragma GLOBAL_ASM(\"{rel_asm_outpath}\")") else:
asm_outpath = Path(os.path.join(asm_out_dir, self.dir, self.name, func_name + ".s"))
rel_asm_outpath = os.path.relpath(asm_outpath, options.get_base_path())
c_lines.append(f"#pragma GLOBAL_ASM(\"{rel_asm_outpath}\")")
c_lines.append("") c_lines.append("")
Path(c_path).parent.mkdir(parents=True, exist_ok=True) Path(c_path).parent.mkdir(parents=True, exist_ok=True)

View File

@ -233,18 +233,20 @@ def main(config_path, base_dir, target_path, modes, verbose, use_cache=True):
linker_writer.save_symbol_header() linker_writer.save_symbol_header()
# Write undefined_funcs_auto.txt # Write undefined_funcs_auto.txt
to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and s.type == "func"] if options.get_create_undefined_funcs_auto():
if len(to_write) > 0: to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and s.type == "func"]
with open(options.get_undefined_funcs_auto_path(), "w", newline="\n") as f: if len(to_write) > 0:
for symbol in to_write: with open(options.get_undefined_funcs_auto_path(), "w", newline="\n") as f:
f.write(f"{symbol.name} = 0x{symbol.vram_start:X};\n") for symbol in to_write:
f.write(f"{symbol.name} = 0x{symbol.vram_start:X};\n")
# write undefined_syms_auto.txt # write undefined_syms_auto.txt
to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and not s.type == "func"] if options.get_create_undefined_syms_auto():
if len(to_write) > 0: to_write = [s for s in symbols.all_symbols if s.referenced and not s.defined and not s.dead and not s.type == "func"]
with open(options.get_undefined_syms_auto_path(), "w", newline="\n") as f: if len(to_write) > 0:
for symbol in to_write: with open(options.get_undefined_syms_auto_path(), "w", newline="\n") as f:
f.write(f"{symbol.name} = 0x{symbol.vram_start:X};\n") for symbol in to_write:
f.write(f"{symbol.name} = 0x{symbol.vram_start:X};\n")
# print warnings during split # print warnings during split
for segment in all_segments: for segment in all_segments:

View File

@ -62,9 +62,15 @@ def get_asm_path() -> Path:
def get_cache_path(): def get_cache_path():
return get_base_path() / opts.get("cache_path", ".splat_cache") return get_base_path() / opts.get("cache_path", ".splat_cache")
def get_create_undefined_funcs_auto() -> bool:
return opts.get("create_undefined_funcs_auto", True)
def get_undefined_funcs_auto_path(): def get_undefined_funcs_auto_path():
return get_base_path() / opts.get("undefined_funcs_auto_path", "undefined_funcs_auto.txt") return get_base_path() / opts.get("undefined_funcs_auto_path", "undefined_funcs_auto.txt")
def get_create_undefined_syms_auto() -> bool:
return opts.get("create_undefined_syms_auto", True)
def get_undefined_syms_auto_path(): def get_undefined_syms_auto_path():
return get_base_path() / opts.get("undefined_syms_auto_path", "undefined_syms_auto.txt") return get_base_path() / opts.get("undefined_syms_auto_path", "undefined_syms_auto.txt")

View File

View File

@ -1,12 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_01_SetPan
/* 282A4 8004CEA4 8CA20000 */ lw $v0, ($a1)
/* 282A8 8004CEA8 90430000 */ lbu $v1, ($v0)
/* 282AC 8004CEAC 24420001 */ addiu $v0, $v0, 1
/* 282B0 8004CEB0 ACA20000 */ sw $v0, ($a1)
/* 282B4 8004CEB4 24020001 */ addiu $v0, $zero, 1
/* 282B8 8004CEB8 A0A20056 */ sb $v0, 0x56($a1)
/* 282BC 8004CEBC 03E00008 */ jr $ra
/* 282C0 8004CEC0 A0A3009B */ sb $v1, 0x9b($a1)

View File

@ -1,15 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_05
/* 2840C 8004D00C 8CA20000 */ lw $v0, ($a1)
/* 28410 8004D010 80430000 */ lb $v1, ($v0)
/* 28414 8004D014 24420001 */ addiu $v0, $v0, 1
/* 28418 8004D018 ACA20000 */ sw $v0, ($a1)
/* 2841C 8004D01C 00031040 */ sll $v0, $v1, 1
/* 28420 8004D020 00431021 */ addu $v0, $v0, $v1
/* 28424 8004D024 000210C0 */ sll $v0, $v0, 3
/* 28428 8004D028 00431021 */ addu $v0, $v0, $v1
/* 2842C 8004D02C 00021080 */ sll $v0, $v0, 2
/* 28430 8004D030 03E00008 */ jr $ra
/* 28434 8004D034 A4A20092 */ sh $v0, 0x92($a1)

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_06
/* 28438 8004D038 8CA20000 */ lw $v0, ($a1)
/* 2843C 8004D03C 90430000 */ lbu $v1, ($v0)
/* 28440 8004D040 24420001 */ addiu $v0, $v0, 1
/* 28444 8004D044 ACA20000 */ sw $v0, ($a1)
/* 28448 8004D048 03E00008 */ jr $ra
/* 2844C 8004D04C A0A30094 */ sb $v1, 0x94($a1)

View File

@ -1,11 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_09_StartLoop
/* 28514 8004D114 8CA20000 */ lw $v0, ($a1)
/* 28518 8004D118 90430000 */ lbu $v1, ($v0)
/* 2851C 8004D11C 24420001 */ addiu $v0, $v0, 1
/* 28520 8004D120 ACA20000 */ sw $v0, ($a1)
/* 28524 8004D124 ACA20088 */ sw $v0, 0x88($a1)
/* 28528 8004D128 03E00008 */ jr $ra
/* 2852C 8004D12C A0A3008C */ sb $v1, 0x8c($a1)

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_0B
/* 2855C 8004D15C 94A20090 */ lhu $v0, 0x90($a1)
/* 28560 8004D160 10400005 */ beqz $v0, .L8004D178
/* 28564 8004D164 24030003 */ addiu $v1, $zero, 3
/* 28568 8004D168 8CA20000 */ lw $v0, ($a1)
/* 2856C 8004D16C A4A3008E */ sh $v1, 0x8e($a1)
/* 28570 8004D170 2442FFFF */ addiu $v0, $v0, -1
/* 28574 8004D174 ACA20000 */ sw $v0, ($a1)
.L8004D178:
/* 28578 8004D178 03E00008 */ jr $ra
/* 2857C 8004D17C 00000000 */ nop

View File

@ -1,7 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_11_Restart
/* 28710 8004D310 8CA20050 */ lw $v0, 0x50($a1)
/* 28714 8004D314 03E00008 */ jr $ra
/* 28718 8004D318 ACA20000 */ sw $v0, ($a1)

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_13
/* 28724 8004D324 8CA20000 */ lw $v0, ($a1)
/* 28728 8004D328 90430000 */ lbu $v1, ($v0)
/* 2872C 8004D32C 24420001 */ addiu $v0, $v0, 1
/* 28730 8004D330 ACA20000 */ sw $v0, ($a1)
/* 28734 8004D334 03E00008 */ jr $ra
/* 28738 8004D338 A0A300A1 */ sb $v1, 0xa1($a1)

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_14
/* 2873C 8004D33C 8CA20000 */ lw $v0, ($a1)
/* 28740 8004D340 90430000 */ lbu $v1, ($v0)
/* 28744 8004D344 24420001 */ addiu $v0, $v0, 1
/* 28748 8004D348 ACA20000 */ sw $v0, ($a1)
/* 2874C 8004D34C 03E00008 */ jr $ra
/* 28750 8004D350 A0A300A2 */ sb $v1, 0xa2($a1)

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel snd_SEFCmd_15
/* 28754 8004D354 8CA20000 */ lw $v0, ($a1)
/* 28758 8004D358 90430000 */ lbu $v1, ($v0)
/* 2875C 8004D35C 24420001 */ addiu $v0, $v0, 1
/* 28760 8004D360 ACA20000 */ sw $v0, ($a1)
/* 28764 8004D364 03E00008 */ jr $ra
/* 28768 8004D368 A0A300A3 */ sb $v1, 0xa3($a1)

View File

@ -1,68 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8003E0D4
/* 194D4 8003E0D4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 194D8 8003E0D8 AFB00010 */ sw $s0, 0x10($sp)
/* 194DC 8003E0DC 0080802D */ daddu $s0, $a0, $zero
/* 194E0 8003E0E0 3C048007 */ lui $a0, %hi(D_80077C38)
/* 194E4 8003E0E4 24847C38 */ addiu $a0, $a0, %lo(D_80077C38)
/* 194E8 8003E0E8 AFBF0014 */ sw $ra, 0x14($sp)
/* 194EC 8003E0EC F7B40018 */ sdc1 $f20, 0x18($sp)
/* 194F0 8003E0F0 94820000 */ lhu $v0, ($a0)
/* 194F4 8003E0F4 24430001 */ addiu $v1, $v0, 1
/* 194F8 8003E0F8 00021400 */ sll $v0, $v0, 0x10
/* 194FC 8003E0FC 00021403 */ sra $v0, $v0, 0x10
/* 19500 8003E100 28420004 */ slti $v0, $v0, 4
/* 19504 8003E104 1440002D */ bnez $v0, .L8003E1BC
/* 19508 8003E108 A4830000 */ sh $v1, ($a0)
/* 1950C 8003E10C C60C000C */ lwc1 $f12, 0xc($s0)
/* 19510 8003E110 A4800000 */ sh $zero, ($a0)
/* 19514 8003E114 0C00A6C9 */ jal clamp_angle
/* 19518 8003E118 46006307 */ neg.s $f12, $f12
/* 1951C 8003E11C 3C0140C9 */ lui $at, 0x40c9
/* 19520 8003E120 34210FD0 */ ori $at, $at, 0xfd0
/* 19524 8003E124 44811000 */ mtc1 $at, $f2
/* 19528 8003E128 00000000 */ nop
/* 1952C 8003E12C 46020502 */ mul.s $f20, $f0, $f2
/* 19530 8003E130 00000000 */ nop
/* 19534 8003E134 3C0143B4 */ lui $at, 0x43b4
/* 19538 8003E138 44810000 */ mtc1 $at, $f0
/* 1953C 8003E13C 00000000 */ nop
/* 19540 8003E140 4600A503 */ div.s $f20, $f20, $f0
/* 19544 8003E144 0C00A85B */ jal sin_rad
/* 19548 8003E148 4600A306 */ mov.s $f12, $f20
/* 1954C 8003E14C 4600A306 */ mov.s $f12, $f20
/* 19550 8003E150 0C00A874 */ jal cos_rad
/* 19554 8003E154 46000506 */ mov.s $f20, $f0
/* 19558 8003E158 860200A6 */ lh $v0, 0xa6($s0)
/* 1955C 8003E15C 44821000 */ mtc1 $v0, $f2
/* 19560 8003E160 00000000 */ nop
/* 19564 8003E164 468010A0 */ cvt.s.w $f2, $f2
/* 19568 8003E168 46141502 */ mul.s $f20, $f2, $f20
/* 1956C 8003E16C 00000000 */ nop
/* 19570 8003E170 46001082 */ mul.s $f2, $f2, $f0
/* 19574 8003E174 00000000 */ nop
/* 19578 8003E178 3C013E4C */ lui $at, 0x3e4c
/* 1957C 8003E17C 3421CCCD */ ori $at, $at, 0xcccd
/* 19580 8003E180 44810000 */ mtc1 $at, $f0
/* 19584 8003E184 00000000 */ nop
/* 19588 8003E188 4600A502 */ mul.s $f20, $f20, $f0
/* 1958C 8003E18C 00000000 */ nop
/* 19590 8003E190 46001082 */ mul.s $f2, $f2, $f0
/* 19594 8003E194 00000000 */ nop
/* 19598 8003E198 C6000038 */ lwc1 $f0, 0x38($s0)
/* 1959C 8003E19C 46140000 */ add.s $f0, $f0, $f20
/* 195A0 8003E1A0 44050000 */ mfc1 $a1, $f0
/* 195A4 8003E1A4 C6000040 */ lwc1 $f0, 0x40($s0)
/* 195A8 8003E1A8 46020000 */ add.s $f0, $f0, $f2
/* 195AC 8003E1AC 3C064220 */ lui $a2, 0x4220
/* 195B0 8003E1B0 44070000 */ mfc1 $a3, $f0
/* 195B4 8003E1B4 0C01C244 */ jal playFX_2C
/* 195B8 8003E1B8 24040001 */ addiu $a0, $zero, 1
.L8003E1BC:
/* 195BC 8003E1BC 8FBF0014 */ lw $ra, 0x14($sp)
/* 195C0 8003E1C0 8FB00010 */ lw $s0, 0x10($sp)
/* 195C4 8003E1C4 D7B40018 */ ldc1 $f20, 0x18($sp)
/* 195C8 8003E1C8 03E00008 */ jr $ra
/* 195CC 8003E1CC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,97 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_do_gravity
/* 14A88 80039688 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 14A8C 8003968C AFB00030 */ sw $s0, 0x30($sp)
/* 14A90 80039690 0080802D */ daddu $s0, $a0, $zero
/* 14A94 80039694 AFBF0034 */ sw $ra, 0x34($sp)
/* 14A98 80039698 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 14A9C 8003969C 8E030000 */ lw $v1, ($s0)
/* 14AA0 800396A0 30620200 */ andi $v0, $v1, 0x200
/* 14AA4 800396A4 1040004B */ beqz $v0, .L800397D4
/* 14AA8 800396A8 30620800 */ andi $v0, $v1, 0x800
/* 14AAC 800396AC 14400047 */ bnez $v0, .L800397CC
/* 14AB0 800396B0 2402EFFF */ addiu $v0, $zero, -0x1001
/* 14AB4 800396B4 3C013F80 */ lui $at, 0x3f80
/* 14AB8 800396B8 44810000 */ mtc1 $at, $f0
/* 14ABC 800396BC C602001C */ lwc1 $f2, 0x1c($s0)
/* 14AC0 800396C0 C6040038 */ lwc1 $f4, 0x38($s0)
/* 14AC4 800396C4 46001081 */ sub.s $f2, $f2, $f0
/* 14AC8 800396C8 E6000014 */ swc1 $f0, 0x14($s0)
/* 14ACC 800396CC C600003C */ lwc1 $f0, 0x3c($s0)
/* 14AD0 800396D0 E7A40020 */ swc1 $f4, 0x20($sp)
/* 14AD4 800396D4 3C014150 */ lui $at, 0x4150
/* 14AD8 800396D8 44812000 */ mtc1 $at, $f4
/* 14ADC 800396DC 46020000 */ add.s $f0, $f0, $f2
/* 14AE0 800396E0 3C030400 */ lui $v1, 0x400
/* 14AE4 800396E4 E602001C */ swc1 $f2, 0x1c($s0)
/* 14AE8 800396E8 E600003C */ swc1 $f0, 0x3c($s0)
/* 14AEC 800396EC 3C014180 */ lui $at, 0x4180
/* 14AF0 800396F0 44810000 */ mtc1 $at, $f0
/* 14AF4 800396F4 46001085 */ abs.s $f2, $f2
/* 14AF8 800396F8 46001080 */ add.s $f2, $f2, $f0
/* 14AFC 800396FC C600003C */ lwc1 $f0, 0x3c($s0)
/* 14B00 80039700 C6060040 */ lwc1 $f6, 0x40($s0)
/* 14B04 80039704 46040000 */ add.s $f0, $f0, $f4
/* 14B08 80039708 E7A60028 */ swc1 $f6, 0x28($sp)
/* 14B0C 8003970C E7A2002C */ swc1 $f2, 0x2c($sp)
/* 14B10 80039710 E7A00024 */ swc1 $f0, 0x24($sp)
/* 14B14 80039714 8E020000 */ lw $v0, ($s0)
/* 14B18 80039718 00431024 */ and $v0, $v0, $v1
/* 14B1C 8003971C 1440000A */ bnez $v0, .L80039748
/* 14B20 80039720 46001506 */ mov.s $f20, $f2
/* 14B24 80039724 27A50020 */ addiu $a1, $sp, 0x20
/* 14B28 80039728 27A60024 */ addiu $a2, $sp, 0x24
/* 14B2C 8003972C 27A2002C */ addiu $v0, $sp, 0x2c
/* 14B30 80039730 AFA20010 */ sw $v0, 0x10($sp)
/* 14B34 80039734 8E040080 */ lw $a0, 0x80($s0)
/* 14B38 80039738 0C0372DF */ jal npc_raycast_down_sides
/* 14B3C 8003973C 27A70028 */ addiu $a3, $sp, 0x28
/* 14B40 80039740 0800E5E0 */ j .L80039780
/* 14B44 80039744 00000000 */ nop
.L80039748:
/* 14B48 80039748 27A2002C */ addiu $v0, $sp, 0x2c
/* 14B4C 8003974C AFA20010 */ sw $v0, 0x10($sp)
/* 14B50 80039750 C600000C */ lwc1 $f0, 0xc($s0)
/* 14B54 80039754 27A50020 */ addiu $a1, $sp, 0x20
/* 14B58 80039758 E7A00014 */ swc1 $f0, 0x14($sp)
/* 14B5C 8003975C 860200A6 */ lh $v0, 0xa6($s0)
/* 14B60 80039760 27A60024 */ addiu $a2, $sp, 0x24
/* 14B64 80039764 44820000 */ mtc1 $v0, $f0
/* 14B68 80039768 00000000 */ nop
/* 14B6C 8003976C 46800020 */ cvt.s.w $f0, $f0
/* 14B70 80039770 E7A00018 */ swc1 $f0, 0x18($sp)
/* 14B74 80039774 8E040080 */ lw $a0, 0x80($s0)
/* 14B78 80039778 0C0371DE */ jal npc_raycast_down_ahead
/* 14B7C 8003977C 27A70028 */ addiu $a3, $sp, 0x28
.L80039780:
/* 14B80 80039780 10400010 */ beqz $v0, .L800397C4
/* 14B84 80039784 00000000 */ nop
/* 14B88 80039788 C7A0002C */ lwc1 $f0, 0x2c($sp)
/* 14B8C 8003978C 4614003E */ c.le.s $f0, $f20
/* 14B90 80039790 00000000 */ nop
/* 14B94 80039794 4500000B */ bc1f .L800397C4
/* 14B98 80039798 00000000 */ nop
/* 14B9C 8003979C 8E020000 */ lw $v0, ($s0)
/* 14BA0 800397A0 AE00001C */ sw $zero, 0x1c($s0)
/* 14BA4 800397A4 C7A00024 */ lwc1 $f0, 0x24($sp)
/* 14BA8 800397A8 3C038011 */ lui $v1, %hi(D_8010C97A)
/* 14BAC 800397AC 9463C97A */ lhu $v1, %lo(D_8010C97A)($v1)
/* 14BB0 800397B0 34421000 */ ori $v0, $v0, 0x1000
/* 14BB4 800397B4 AE020000 */ sw $v0, ($s0)
/* 14BB8 800397B8 E600003C */ swc1 $f0, 0x3c($s0)
/* 14BBC 800397BC 0800E5F5 */ j .L800397D4
/* 14BC0 800397C0 A6030084 */ sh $v1, 0x84($s0)
.L800397C4:
/* 14BC4 800397C4 8E020000 */ lw $v0, ($s0)
/* 14BC8 800397C8 2403EFFF */ addiu $v1, $zero, -0x1001
.L800397CC:
/* 14BCC 800397CC 00431024 */ and $v0, $v0, $v1
/* 14BD0 800397D0 AE020000 */ sw $v0, ($s0)
.L800397D4:
/* 14BD4 800397D4 8FBF0034 */ lw $ra, 0x34($sp)
/* 14BD8 800397D8 8FB00030 */ lw $s0, 0x30($sp)
/* 14BDC 800397DC D7B40038 */ ldc1 $f20, 0x38($sp)
/* 14BE0 800397E0 03E00008 */ jr $ra
/* 14BE4 800397E4 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_set_palswap_1
/* 1684C 8003B44C 8FA20010 */ lw $v0, 0x10($sp)
/* 16850 8003B450 A4850308 */ sh $a1, 0x308($a0)
/* 16854 8003B454 A486030A */ sh $a2, 0x30a($a0)
/* 16858 8003B458 A487030C */ sh $a3, 0x30c($a0)
/* 1685C 8003B45C 03E00008 */ jr $ra
/* 16860 8003B460 A482030E */ sh $v0, 0x30e($a0)

View File

@ -1,10 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_set_palswap_2
/* 16864 8003B464 8FA20010 */ lw $v0, 0x10($sp)
/* 16868 8003B468 A4850310 */ sh $a1, 0x310($a0)
/* 1686C 8003B46C A4860312 */ sh $a2, 0x312($a0)
/* 16870 8003B470 A4870314 */ sh $a3, 0x314($a0)
/* 16874 8003B474 03E00008 */ jr $ra
/* 16878 8003B478 A4820316 */ sh $v0, 0x316($a0)

View File

@ -1,12 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuContQueryRead
/* 3BD20 80060920 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 3BD24 80060924 24040103 */ addiu $a0, $zero, 0x103
/* 3BD28 80060928 AFBF0010 */ sw $ra, 0x10($sp)
/* 3BD2C 8006092C 0C00B3CA */ jal nuSiSendMesg
/* 3BD30 80060930 0000282D */ daddu $a1, $zero, $zero
/* 3BD34 80060934 8FBF0010 */ lw $ra, 0x10($sp)
/* 3BD38 80060938 03E00008 */ jr $ra
/* 3BD3C 8006093C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,104 +0,0 @@
dead_atan2 = 0x8002AF70;
D_80100060 = 0x80100060;
D_801000A0 = 0x801000A0;
dead_get_variable = 0x802D4E8C;
dead_set_variable = 0x802D5468;
dead_get_float_variable = 0x802D57FC;
dead_cos_rad = 0x8002B4C0;
dead_set_float_variable = 0x802D5A10;
dead_playFX_11 = 0x80075170;
dead_gPlayerStatusPtr = 0x800FFC90;
dead_set_main_pan_u = 0x80126064;
dead_set_main_pan_v = 0x8012607C;
dead_set_aux_pan_u = 0x80126094;
dead_set_aux_pan_v = 0x801260AC;
dead_get_npc_unsafe = 0x8003E4BC;
func_80075110 = 0x80075110;
func_80042AF4 = 0x80042AF4;
func_8002B1C4 = 0x8002B1C4;
func_8002AF18 = 0x8002AF18;
dead_clamp_angle = 0x8002AE14;
func_8004D800 = 0x8004D800;
func_8002B28C = 0x8002B28C;
func_8004D9C0 = 0x8004D9C0;
func_8004DAD8 = 0x8004DAD8;
func_8004DF64 = 0x8004DF64;
func_8004E024 = 0x8004E024;
func_8004E25C = 0x8004E25C;
func_8004E2EC = 0x8004E2EC;
func_8004E39C = 0x8004E39C;
func_8004E544 = 0x8004E544;
func_8004E808 = 0x8004E808;
func_8004EB8C = 0x8004EB8C;
func_8004D1A4 = 0x8004D1A4;
func_8003E424 = 0x8003E424;
func_80067040 = 0x80067040;
func_800E5304 = 0x800E5304;
func_800E423C = 0x800E423C;
func_8004D0C4 = 0x8004D0C4;
func_8004D8E0 = 0x8004D8E0;
dead_rand_int = 0x8002ACEC;
func_8003E534 = 0x8003E534;
func_8002BFD4 = 0x8002BFD4;
func_8002C01C = 0x8002C01C;
func_8002B5DC = 0x8002B5DC;
func_8002B640 = 0x8002B640;
func_800F1EF8 = 0x800F1EF8;
func_8015704C = 0x8015704C;
func_80077C30 = 0x80077C30;
func_8002B6A4 = 0x8002B6A4;
func_80077930 = 0x80077930;
func_8011AAB4 = 0x8011AAB4;
func_8002B21C = 0x8002B21C;
func_802E2A80 = 0x802E2A80;
func_802E2B74 = 0x802E2B74;
func_80128510 = 0x80128510;
func_8012DFE8 = 0x8012DFE8;
func_8002AA2C = 0x8002AA2C;
func_80059AC8 = 0x80059AC8;
func_80118BB0 = 0x80118BB0;
func_80077BD0 = 0x80077BD0;
func_80041080 = 0x80041080;
func_800F1D9C = 0x800F1D9C;
func_800F1730 = 0x800F1730;
func_8003C43C = 0x8003C43C;
func_800F1718 = 0x800F1718;
func_800F16F4 = 0x800F16F4;
func_80125270 = 0x80125270;
func_80124F44 = 0x80124F44;
func_8006CAC0 = 0x8006CAC0;
func_800775D0 = 0x800775D0;
func_802F3B00 = 0x802F3B00;
func_800FCD0C = 0x800FCD0C;
func_800F9260 = 0x800F9260;
func_800F93E8 = 0x800F93E8;
func_800F2D5C = 0x800F2D5C;
func_80130C74 = 0x80130C74;
func_800769D0 = 0x800769D0;
func_80075E30 = 0x80075E30;
func_8002B524 = 0x8002B524;
func_8002BF18 = 0x8002BF18;
func_80076970 = 0x80076970;
func_80144200 = 0x80144200;
func_80144178 = 0x80144178;
func_800E53AC = 0x800E53AC;
func_8013CF98 = 0x8013CF98;
func_80066FE0 = 0x80066FE0;
func_8002A910 = 0x8002A910;
func_8005F128 = 0x8005F128;
func_800F7278 = 0x800F7278;
func_800F2E98 = 0x800F2E98;
func_8003ED50 = 0x8003ED50;
func_8003E5E8 = 0x8003E5E8;
func_8002FCBC = 0x8002FCBC;
func_801574DC = 0x801574DC;
func_80157118 = 0x80157118;
func_8005F238 = 0x8005F238;
func_80074070 = 0x80074070;
func_8002BF68 = 0x8002BF68;
func_80130C64 = 0x80130C64;
func_8002B45C = 0x8002B45C;
func_801266F8 = 0x801266F8;
func_80126734 = 0x80126734;
func_80144194 = 0x80144194;
dead_gItemTable = 0x8008D2C0;

View File

@ -1,453 +0,0 @@
nuScPreNMIFlag = 0x8009A5B0;
D_8009A5B8 = 0x8009A5B8;
D_8009A5C0 = 0x8009A5C0;
D_8009A5C8 = 0x8009A5C8;
D_8009A5CC = 0x8009A5CC;
D_8009A5D0 = 0x8009A5D0;
D_8009A5D4 = 0x8009A5D4;
timeFreezeMode = 0x8009A5D8;
nuGfxZBuffer = 0x8009A5DC;
nuContDataLockKey = 0x8009A5E0;
D_8009A5E4 = 0x8009A5E4;
D_8009A5E8 = 0x8009A5E8;
D_8009A5EC = 0x8009A5EC;
nuGfxCfbCounter = 0x8009A5F0;
D_8009A5F4 = 0x8009A5F4;
nuGfxDisplay = 0x8009A5F8;
D_8009A5FC = 0x8009A5FC;
gGameState = 0x8009A600;
gNpcCount = 0x8009A604;
D_8009A606 = 0x8009A606;
D_8009A608 = 0x8009A608;
D_8009A60C = 0x8009A60C;
nuGfxUcode = 0x8009A610;
nuContNum = 0x8009A614;
nuGfxTaskSpool = 0x8009A618;
D_8009A61C = 0x8009A61C;
D_8009A620 = 0x8009A620;
D_8009A628 = 0x8009A628;
D_8009A62C = 0x8009A62C;
D_8009A630 = 0x8009A630;
gCurrentCamID = 0x8009A634;
nuPiCartHandle = 0x8009A638;
D_8009A63C = 0x8009A63C;
D_8009A640 = 0x8009A640;
nuGfxCfb_ptr = 0x8009A64C;
gOverrideFlags = 0x8009A650;
D_8009A654 = 0x8009A654;
nuGfxCfb = 0x8009A658;
D_8009A660 = 0x8009A660;
D_8009A664 = 0x8009A664;
D_8009A668 = 0x8009A668;
gMasterGfxPos = 0x8009A66C;
D_8009A670 = 0x8009A670;
gDisplayContext = 0x8009A674;
D_8009A678 = 0x8009A678;
D_8009A680 = 0x8009A680;
D_8009A690 = 0x8009A690;
D_8009A6A0 = 0x8009A6A0;
D_8009A6A2 = 0x8009A6A2;
D_8009A6A4 = 0x8009A6A4;
D_8009A6A6 = 0x8009A6A6;
D_8009A6B0 = 0x8009A6B0;
logicalSaveInfo = 0x8009BA30;
physicalSaveInfo = 0x8009BA50;
nextAvailableSavePage = 0x8009BA80;
gCurtainScale = 0x8009BA90;
gCurtainScaleGoal = 0x8009BA94;
gCurtainFade = 0x8009BA98;
gCurtainFadeGoal = 0x8009BA9C;
gCurtainDrawCallback = 0x8009BAA0;
D_8009BAA8 = 0x8009BAA8;
D_8009BB30 = 0x8009BB30;
D_8009C4E0 = 0x8009C4E0;
D_8009C4FC = 0x8009C4FC;
nuGfxTask_ptr = 0x8009C510;
taskDoneMsg = 0x8009C514;
swapBufMsg = 0x8009C516;
GfxTaskMgrThread = 0x8009C518;
D_8009E6D0 = 0x8009E6D0;
nuSiMesgBuf = 0x8009E6F0;
siMgrThread = 0x8009E710;
D_800A08C0 = 0x800A08C0;
D_800A08DC = 0x800A08DC;
D_800A08E0 = 0x800A08E0;
D_800A08E4 = 0x800A08E4;
D_800A08E8 = 0x800A08E8;
D_800A08EC = 0x800A08EC;
gameMode = 0x800A08F0;
D_800A0900 = 0x800A0900;
D_800A0904 = 0x800A0904;
D_800A0908 = 0x800A0908;
D_800A0910 = 0x800A0910;
D_800A0914 = 0x800A0914;
D_800A0918 = 0x800A0918;
D_800A091C = 0x800A091C;
D_800A0920 = 0x800A0920;
D_800A0921 = 0x800A0921;
D_800A0922 = 0x800A0922;
D_800A0924 = 0x800A0924;
D_800A0930 = 0x800A0930;
D_800A0931 = 0x800A0931;
D_800A0932 = 0x800A0932;
gMapTransitionAlpha = 0x800A0940;
D_800A0942 = 0x800A0942;
D_800A0944 = 0x800A0944;
D_800A0946 = 0x800A0946;
D_800A0948 = 0x800A0948;
D_800A0950 = 0x800A0950;
D_800A0954 = 0x800A0954;
D_800A0956 = 0x800A0956;
D_800A0958 = 0x800A0958;
D_800A095A = 0x800A095A;
D_800A095B = 0x800A095B;
D_800A095C = 0x800A095C;
D_800A095D = 0x800A095D;
D_800A095E = 0x800A095E;
D_800A095F = 0x800A095F;
D_800A0960 = 0x800A0960;
D_800A0963 = 0x800A0963;
D_800A0964 = 0x800A0964;
D_800A0970 = 0x800A0970;
D_800A0974 = 0x800A0974;
D_800A0978 = 0x800A0978;
D_800A097C = 0x800A097C;
D_800A0980 = 0x800A0980;
D_800A0988 = 0x800A0988;
gWorldNpcList = 0x800A0990;
gBattleNpcList = 0x800A0A90;
gCurrentNpcListPtr = 0x800A0B90;
D_800A0B94 = 0x800A0B94;
D_800A0BA0 = 0x800A0BA0;
D_800A0BA4 = 0x800A0BA4;
D_800A0BA8 = 0x800A0BA8;
D_800A0BAC = 0x800A0BAC;
D_800A0BB0 = 0x800A0BB0;
D_800A0BB4 = 0x800A0BB4;
D_800A0BB8 = 0x800A0BB8;
D_800A0BC0 = 0x800A0BC0;
D_800A0F40 = 0x800A0F40;
D_800A0F44 = 0x800A0F44;
D_800A0F50 = 0x800A0F50;
D_800A0F58 = 0x800A0F58;
D_800A1530 = 0x800A1530;
D_800A158C = 0x800A158C;
D_800A15A4 = 0x800A15A4;
D_800A15A8 = 0x800A15A8;
D_800A15C4 = 0x800A15C4;
D_800A15CC = 0x800A15CC;
D_800A3510 = 0x800A3510;
D_800A3520 = 0x800A3520;
D_800A3628 = 0x800A3628;
nuAuFrameSampleSize = 0x800A3634;
D_800A3638 = 0x800A3638;
D_800A3640 = 0x800A3640;
D_800A3658 = 0x800A3658;
D_800A3720 = 0x800A3720;
nuAuDmaState = 0x800A3BD0;
D_800A3BD4 = 0x800A3BD4;
nuAuDmaBuf = 0x800A3BE0;
D_800A3BF0 = 0x800A3BF0;
D_800A3FD0 = 0x800A3FD0;
D_800A3FE0 = 0x800A3FE0;
D_800A3FE4 = 0x800A3FE4;
D_800A3FE8 = 0x800A3FE8;
D_800A3FEC = 0x800A3FEC;
D_800A3FEE = 0x800A3FEE;
D_800A3FF0 = 0x800A3FF0;
gEffectGraphicsData = 0x800A4000;
D_800A41C0 = 0x800A41C0;
gMap = 0x800A41E0;
gMapConfig = 0x800A41E8;
D_800A4230 = 0x800A4230;
D_800A4234 = 0x800A4234;
D_800A4238 = 0x800A4238;
D_800A423C = 0x800A423C;
D_800A4240 = 0x800A4240;
D_800A4244 = 0x800A4244;
D_800A4248 = 0x800A4248;
D_800A424C = 0x800A424C;
D_800A4250 = 0x800A4250;
D_800A4254 = 0x800A4254;
D_800A4258 = 0x800A4258;
D_800A425C = 0x800A425C;
D_800A4260 = 0x800A4260;
D_800A4264 = 0x800A4264;
D_800A4268 = 0x800A4268;
D_800A4270 = 0x800A4270;
D_800A4420 = 0x800A4420;
nuScStack = 0x800A65D0;
nuScAudioStack = 0x800A85D0;
nuScGraphicsStack = 0x800AA5D0;
D_800AC5D0 = 0x800AC5D0;
D_800AC5E8 = 0x800AC5E8;
nuGfxMesgBuf = 0x800AC6B0;
nuContWaitMesgBuf = 0x800AE6D0;
nuContDataMutexBuf = 0x800AE6D4;
piMgrThread = 0x800AE6E0;
__osPiMesgQueue = 0x800AF890;
piMgrMesgBuff = 0x800AF8A8;
D_800AF8B0 = 0x800AF8B0;
D_800AF8C0 = 0x800AF8C0;
D_800AF8C4 = 0x800AF8C4;
D_800AF8D0 = 0x800AF8D0;
D_800AF8D8 = 0x800AF8D8;
D_800AF8DC = 0x800AF8DC;
D_800AF8E0 = 0x800AF8E0;
D_800AF8E8 = 0x800AF8E8;
D_800AF8EC = 0x800AF8EC;
D_800AF8F0 = 0x800AF8F0;
D_800AF8F8 = 0x800AF8F8;
D_800AF8FC = 0x800AF8FC;
D_800AF900 = 0x800AF900;
D_800AF910 = 0x800AF910;
D_800AF918 = 0x800AF918;
D_800B0AD0 = 0x800B0AD0;
D_800B0AE8 = 0x800B0AE8;
D_800B0B00 = 0x800B0B00;
D_800B0B02 = 0x800B0B02;
D_800B0B04 = 0x800B0B04;
D_800B0B18 = 0x800B0B18;
D_800B0B1A = 0x800B0B1A;
D_800B0B1C = 0x800B0B1C;
D_800B0B30 = 0x800B0B30;
D_800B0B6C = 0x800B0B6C;
D_800B0C30 = 0x800B0C30;
D_800B0C40 = 0x800B0C40;
D_800B0C42 = 0x800B0C42;
D_800B0C44 = 0x800B0C44;
D_800B0C48 = 0x800B0C48;
D_800B0C4C = 0x800B0C4C;
D_800B0C50 = 0x800B0C50;
D_800B0C58 = 0x800B0C58;
D_800B0C70 = 0x800B0C70;
D_800B0C74 = 0x800B0C74;
D_800B0C75 = 0x800B0C75;
D_800B0C76 = 0x800B0C76;
D_800B0C77 = 0x800B0C77;
D_800B0C78 = 0x800B0C78;
D_800B0C79 = 0x800B0C79;
D_800B0C7C = 0x800B0C7C;
D_800B0C80 = 0x800B0C80;
D_800B0CE4 = 0x800B0CE4;
D_800B0CE8 = 0x800B0CE8;
wMapTexName = 0x800B0CF0;
D_800B0D08 = 0x800B0D08;
nuContWaitMesgQ = 0x800B0EB8;
D_800B0ED0 = 0x800B0ED0;
D_800B0F08 = 0x800B0F08;
D_800B0F0C = 0x800B0F0C;
gCurrentEncounter = 0x800B0F10;
LeoDiskHandle = 0x800B1B08;
D_800B1B0C = 0x800B1B0C;
D_800B1B0D = 0x800B1B0D;
D_800B1B0E = 0x800B1B0E;
D_800B1B0F = 0x800B1B0F;
D_800B1B10 = 0x800B1B10;
nuContStatus = 0x800B1B7C;
D_800B1B90 = 0x800B1B90;
nuContRmbCtl = 0x800B1D40;
nuContData = 0x800B1D68;
gCameras = 0x800B1D80;
gCollisionData = 0x800B42E0;
nuGfxMesgQ = 0x800B42F0;
D_800B4308 = 0x800B4308;
D_800B430C = 0x800B430C;
D_800B430D = 0x800B430D;
D_800B430E = 0x800B430E;
D_800B430F = 0x800B430F;
D_800B4310 = 0x800B4310;
D_800B4311 = 0x800B4311;
D_800B4314 = 0x800B4314;
D_800B4318 = 0x800B4318;
gOsPiMessageQueue = 0x800B4380;
gEffectInstances = 0x800B4398;
D_800B4514 = 0x800B4514;
CartRomHandle = 0x800B4518;
D_800B451C = 0x800B451C;
D_800B451D = 0x800B451D;
D_800B451E = 0x800B451E;
D_800B451F = 0x800B451F;
D_800B4520 = 0x800B4520;
D_800B6590 = 0x800B6590;
D_800B7EF0 = 0x800B7EF0;
nuYieldBuf = 0x800B8590;
dead_gCameras = 0x800B8D80;
D_800B8DEC = 0x800B8DEC;
D_800B91A0 = 0x800B91A0;
D_800B91D0 = 0x800B91D0;
D_800D91D0 = 0x800D91D0;
D_800D91D4 = 0x800D91D4;
D_800D91DC = 0x800D91DC;
wMapHitName = 0x800D91E0;
nuSiMgrMesgQ = 0x800D91F8;
wMapShapeName = 0x800D9230;
D_800D9248 = 0x800D9248;
nuGfxTask = 0x800D9278;
D_800D95E8 = 0x800D95E8;
D_800D9620 = 0x800D9620;
D_800D9668 = 0x800D9668;
D_800D9680 = 0x800D9680;
D_800D9780 = 0x800D9780;
D_800D9F80 = 0x800D9F80;
D_800DA000 = 0x800DA000;
D_800DA03C = 0x800DA03C;
D_800DA040 = 0x800DA040;
nusched = 0x800DA440;
D_800DA444 = 0x800DA444;
D_800DA47C = 0x800DA47C;
D_800DA4B4 = 0x800DA4B4;
D_800DA55C = 0x800DA55C;
D_800DAAA8 = 0x800DAAA8;
D_800DAAAC = 0x800DAAAC;
D_800DAAB8 = 0x800DAAB8;
D_800DAABC = 0x800DAABC;
D_800DAABD = 0x800DAABD;
D_800DAAC0 = 0x800DAAC0;
nuContPfs = 0x800DAAD8;
nuSiMesgQ = 0x800DAC78;
D_800DAC90 = 0x800DAC90;
D_800DACA8 = 0x800DACA8;
gCurrentSaveFile = 0x800DACC0;
D_800DBC70 = 0x800DBC70;
D_800DBD70 = 0x800DBD70;
D_800DBF70 = 0x800DBF70;
D_800DBF90 = 0x800DBF90;
nuContDataMutexQ = 0x800DC040;
D_800DC060 = 0x800DC060;
D_800DC064 = 0x800DC064;
gBattleState = 0x800DC068;
gBattleStatus = 0x800DC070;
D_800DC4D0 = 0x800DC4D0;
D_800DC4D4 = 0x800DC4D4;
D_800DC4D8 = 0x800DC4D8;
gBattleState2 = 0x800DC4DC;
D_800DC4E0 = 0x800DC4E0;
D_800DC4E4 = 0x800DC4E4;
D_800DC4E8 = 0x800DC4E8;
gCurrentBattleSection = 0x800DC4EA;
D_800DC4EB = 0x800DC4EB;
D_800DC4EC = 0x800DC4EC;
D_800DC4F0 = 0x800DC4F0;
D_800DC4F4 = 0x800DC4F4;
D_800DC4F8 = 0x800DC4F8;
D_800DC4FC = 0x800DC4FC;
D_8010C920 = 0x8010C920;
D_8010C924 = 0x8010C924;
D_8010C928 = 0x8010C928;
D_8010C92C = 0x8010C92C;
wPartnerNpc = 0x8010C930;
D_8010C934 = 0x8010C934;
D_8010C938 = 0x8010C938;
D_8010C93C = 0x8010C93C;
D_8010C940 = 0x8010C940;
gSpinHistoryBufferPos = 0x8010C944;
D_8010C94C = 0x8010C94C;
D_8010C950 = 0x8010C950;
D_8010C954 = 0x8010C954;
D_8010C958 = 0x8010C958;
D_8010C95C = 0x8010C95C;
D_8010C960 = 0x8010C960;
D_8010C964 = 0x8010C964;
D_8010C968 = 0x8010C968;
D_8010C96B = 0x8010C96B;
D_8010C96C = 0x8010C96C;
D_8010C970 = 0x8010C970;
D_8010C974 = 0x8010C974;
D_8010C978 = 0x8010C978;
D_8010C97A = 0x8010C97A;
D_8010C97C = 0x8010C97C;
D_8010C980 = 0x8010C980;
D_8010C984 = 0x8010C984;
D_8010C98C = 0x8010C98C;
D_8010C990 = 0x8010C990;
D_8010C9A0 = 0x8010C9A0;
D_8010C9B0 = 0x8010C9B0;
D_8010C9C0 = 0x8010C9C0;
D_8010C9C8 = 0x8010C9C8;
D_8010CCF8 = 0x8010CCF8;
D_8010CCFA = 0x8010CCFA;
D_8010CCFC = 0x8010CCFC;
D_8010CCFE = 0x8010CCFE;
D_8010CD00 = 0x8010CD00;
D_8010CD10 = 0x8010CD10;
D_8010CD12 = 0x8010CD12;
D_8010CD20 = 0x8010CD20;
D_8010CD30 = 0x8010CD30;
D_8010CD34 = 0x8010CD34;
D_8010CD38 = 0x8010CD38;
D_8010CFB8 = 0x8010CFB8;
D_8010CFBC = 0x8010CFBC;
D_8010CFC0 = 0x8010CFC0;
D_8010CFC4 = 0x8010CFC4;
D_8010CFC8 = 0x8010CFC8;
D_8010CFCA = 0x8010CFCA;
D_8010CFCC = 0x8010CFCC;
D_8010CFCE = 0x8010CFCE;
D_8010CFD0 = 0x8010CFD0;
D_8010CFD4 = 0x8010CFD4;
D_8010CFD8 = 0x8010CFD8;
D_8010CFDC = 0x8010CFDC;
D_8010CFE0 = 0x8010CFE0;
D_8010CFE4 = 0x8010CFE4;
D_8010CFE8 = 0x8010CFE8;
wPartner = 0x8010CFEC;
D_8010CFF0 = 0x8010CFF0;
D_8010CFF4 = 0x8010CFF4;
D_8010D000 = 0x8010D000;
D_8010D640 = 0x8010D640;
D_8010D644 = 0x8010D644;
D_8010D648 = 0x8010D648;
D_8010D64C = 0x8010D64C;
D_8010D650 = 0x8010D650;
D_8010D654 = 0x8010D654;
D_8010D655 = 0x8010D655;
D_8010D656 = 0x8010D656;
D_8010D658 = 0x8010D658;
D_8010D65A = 0x8010D65A;
D_8010D65C = 0x8010D65C;
D_8010D660 = 0x8010D660;
D_8010D664 = 0x8010D664;
D_8010D668 = 0x8010D668;
D_8010D66C = 0x8010D66C;
D_8010D670 = 0x8010D670;
D_8010D674 = 0x8010D674;
D_8010D678 = 0x8010D678;
D_8010D67C = 0x8010D67C;
D_8010D67E = 0x8010D67E;
D_8010D680 = 0x8010D680;
D_8010D682 = 0x8010D682;
D_8010D684 = 0x8010D684;
D_8010D686 = 0x8010D686;
D_8010D688 = 0x8010D688;
D_8010D68A = 0x8010D68A;
D_8010D68C = 0x8010D68C;
D_8010D68E = 0x8010D68E;
D_8010D68F = 0x8010D68F;
D_8010D690 = 0x8010D690;
D_8010D691 = 0x8010D691;
D_8010D692 = 0x8010D692;
D_8010D693 = 0x8010D693;
D_8010D694 = 0x8010D694;
D_8010D698 = 0x8010D698;
D_8010D699 = 0x8010D699;
D_8010D69A = 0x8010D69A;
D_8010D69C = 0x8010D69C;
D_8010D6A0 = 0x8010D6A0;
D_8010D6A4 = 0x8010D6A4;
D_8010D6B0 = 0x8010D6B0;
gPartnerActionStatus = 0x8010EBB0;
gSpinHistoryPosY = 0x8010EF10;
gSpinHistoryPosX = 0x8010EF28;
gSpinHistoryPosZ = 0x8010EF40;
gUIStatus = 0x8010EF58;
D_8010EF92 = 0x8010EF92;
D_8010EF9C = 0x8010EF9C;
D_8010EF9D = 0x8010EF9D;
D_8010EF9E = 0x8010EF9E;
gPlayerStatus = 0x8010EFC8;
gPlayerActionState = 0x8010F07C;
gPlayerAnimation = 0x8010F080;
D_8010F250 = 0x8010F250;
gPlayerData = 0x8010F290;
gSpinHistoryPosAngle = 0x8010F6B8;

View File

@ -20,6 +20,8 @@ options:
asset_path: assets/us asset_path: assets/us
build_path: ver/us/build build_path: ver/us/build
cache_path: ver/us/.splat_cache cache_path: ver/us/.splat_cache
create_undefined_funcs_auto: False
create_undefined_syms_auto: False
undefined_funcs_auto_path: ver/us/undefined_funcs_auto.txt undefined_funcs_auto_path: ver/us/undefined_funcs_auto.txt
undefined_syms_auto_path: ver/us/undefined_syms_auto.txt undefined_syms_auto_path: ver/us/undefined_syms_auto.txt
asset_stack: asset_stack:
@ -120,7 +122,7 @@ segments:
- [0x3B890, c, os/nusys/nuSiCallBackRemove] - [0x3B890, c, os/nusys/nuSiCallBackRemove]
- [0x3B910, c, os/nusys/nuContMgr] - [0x3B910, c, os/nusys/nuContMgr]
- [0x3BCC0, c, os/nusys/nuContDataLock] - [0x3BCC0, c, os/nusys/nuContDataLock]
- [0x3BD20, c, os/3bd20_len_c0] - [0x3BD20, c, os/nusys/nuContQueryRead]
- [0x3BD40, hasm, os/osSetIntMask] - [0x3BD40, hasm, os/osSetIntMask]
- [0x3BDE0, c, os/osCreatePiManager] - [0x3BDE0, c, os/osCreatePiManager]
- [0x3C160, c, os/osEPiWriteIo] # MOVE_ADDU - [0x3C160, c, os/osEPiWriteIo] # MOVE_ADDU

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff