Npc funcs, fio.c, and others (#674)

* filemenu_choose_name_handle_input

* filemenu_choose_name_init

* filemenu_main_handle_input

* update symbol_addrs

* filemenu_draw_contents_copy_arrow

* cleanup

* dusting

* npc funcs

* fio.c finished

* Cleanup

* warnings

* Cleanup + SaveDataHeader struct

* re-add decl
This commit is contained in:
Ethan Roseman 2022-04-05 21:53:40 +09:00 committed by GitHub
parent b7f7e4c96d
commit 02d678b543
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 4857 additions and 4579 deletions

View File

@ -286,7 +286,10 @@ typedef struct PlayerData {
/* 0x338 */ u32 smashGameTotal; /* all-time winnings, max = 99999 */ /* 0x338 */ u32 smashGameTotal; /* all-time winnings, max = 99999 */
/* 0x33C */ u16 smashGameRecord; /* 0x33C */ u16 smashGameRecord;
/* 0x33E */ char unk_33E[2]; /* 0x33E */ char unk_33E[2];
} PlayerData; // size = 0x340 /* 0x340 */ char unk_340[0xE0];
/* 0x420 */ s32 starPoints2;
/* 0x424 */ char unk_464[4];
} PlayerData; // size = 0x428
typedef union { typedef union {
struct { struct {
@ -2152,32 +2155,51 @@ typedef struct EncounterStatus {
/* 0xFB4 */ char unk_FB4[4]; /* 0xFB4 */ char unk_FB4[4];
} EncounterStatus; // size = 0xFB8 } EncounterStatus; // size = 0xFB8
typedef struct SaveDataHeader {
/* 0x0000 */ char magicString[16]; /* "Mario Story 006" string */
/* 0x0010 */ s8 pad[0x20]; /* always zero */
/* 0x0030 */ s32 crc1;
/* 0x0034 */ s32 crc2;
/* 0x0038 */ s32 saveSlot;
/* 0x003C */ s32 saveCount;
/* 0x0040 */ s8 ignored[0x40];
} SaveDataHeader;
typedef struct SaveMetadata {
/* 0x00 */ s32 timePlayed;
/* 0x04 */ u8 spiritsRescued;
/* 0x05 */ char unk_05[0x1];
/* 0x06 */ s8 level;
/* 0x07 */ unsigned char filename[8];
/* 0x0F */ char unk_0F[0x1];
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
} SaveMetadata; // size = 0x18
typedef struct SaveData { typedef struct SaveData {
/* 0x0000 */ char magicString[16]; /* "Mario Story 006" string */ /* 0x0000 */ char magicString[16]; /* "Mario Story 006" string */
/* 0x0010 */ s8 pad[32]; /* always zero */ /* 0x0010 */ s8 pad[32]; /* always zero */
/* 0x0030 */ s32 crc1; /* 0x0030 */ s32 crc1;
/* 0x0034 */ s32 crc2; /* 0x0034 */ s32 crc2;
/* 0x0038 */ s32 saveSlot; /* 0x0038 */ s32 saveSlot;
/* 0x003C */ u32 saveCount; /* 0x003C */ s32 saveCount;
/* 0x0040 */ PlayerData player; /* 0x0040 */ PlayerData player;
/* 0x0380 */ char unk_380[0xE0];
/* 0x0460 */ s32 starPoints;
/* 0x0464 */ char unk_464[4];
/* 0x0468 */ s16 areaID; /* 0x0468 */ s16 areaID;
/* 0x046A */ s16 mapID; /* 0x046A */ s16 mapID;
/* 0x046C */ s16 entryID; /* 0x046C */ s16 entryID;
/* 0x046E */ char unk_46E[2]; /* 0x046E */ char unk_46E[2];
/* 0x0470 */ s32 enemyDefeatFlags[720]; /* 0x0470 */ s32 enemyDefeatFlags[60][12];
/* 0x0FB0 */ s32 globalFlags[64]; /* 0x0FB0 */ s32 globalFlags[64];
/* 0x10B0 */ s8 globalBytes[512]; /* 0x10B0 */ s8 globalBytes[512];
/* 0x12B0 */ s32 areaFlags[8]; /* 0x12B0 */ s32 areaFlags[8];
/* 0x12D0 */ s8 areaBytes[16]; /* 0x12D0 */ s8 areaBytes[16];
/* 0x12E0 */ char unk_12E0[6]; /* 0x12E0 */ s8 debugEnemyContact;
/* 0x12E0 */ s8 unk_12E1;
/* 0x12E0 */ s8 unk_12E2;
/* 0x12E0 */ s8 musicEnabled;
/* 0x12E4 */ char unk_12E4[0x2];
/* 0x12E6 */ Vec3s savePos; /* 0x12E6 */ Vec3s savePos;
/* 0x12EC */ s32 unk_12EC; /* 0x12EC */ SaveMetadata unk_12EC;
/* 0x12F0 */ s8 unk_12F0[12]; /* player name starts at 4th char */
/* 0x12FC */ s32 unk_12FC;
/* 0x1300 */ s32 unk_1300;
/* 0x1304 */ char unk_1304[0x7C]; /* 0x1304 */ char unk_1304[0x7C];
} SaveData; // size = 0x1380 } SaveData; // size = 0x1380
@ -2455,17 +2477,6 @@ typedef struct Struct8015A578 {
/* 0x0C */ char unk_0C[0x4]; /* 0x0C */ char unk_0C[0x4];
} Struct8015A578; // size = 0x10 } Struct8015A578; // size = 0x10
typedef struct SaveMetadata {
/* 0x00 */ s32 timePlayed;
/* 0x04 */ u8 spiritsRescued;
/* 0x05 */ char unk_05[0x1];
/* 0x06 */ s8 level;
/* 0x07 */ unsigned char filename[8];
/* 0x0F */ char unk_0F[0x1];
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
} SaveMetadata; // size = 0x18
typedef struct SpriteShadingLightSource { typedef struct SpriteShadingLightSource {
/* 0x00 */ s8 flags; /* 0x00 */ s8 flags;
/* 0x01 */ Color_RGB8 rgb; /* 0x01 */ Color_RGB8 rgb;

View File

@ -655,6 +655,10 @@ enum SoundIDs {
SOUND_SPELL_CAST5 = 0x000020D8, SOUND_SPELL_CAST5 = 0x000020D8,
SOUND_20F6 = 0x000020F6, SOUND_20F6 = 0x000020F6,
SOUND_2101 = 0x00002101, SOUND_2101 = 0x00002101,
SOUND_2102 = 0x00002102,
SOUND_2103 = 0x00002103,
SOUND_2104 = 0x00002104,
SOUND_2105 = 0x00002105,
SOUND_2106 = 0x00002106, SOUND_2106 = 0x00002106,
SOUND_2107 = 0x00002107, SOUND_2107 = 0x00002107,
SOUND_2111 = 0x00002111, SOUND_2111 = 0x00002111,

View File

@ -100,6 +100,7 @@ void pause_handle_input(s32 buttonsPressed, s32 buttonsHeld);
void pause_cleanup(void); void pause_cleanup(void);
// file menu stuff // file menu stuff
void func_80248170(s32 idx);
void filemenu_set_selected(MenuPanel* menu, s32 col, s32 row); void filemenu_set_selected(MenuPanel* menu, s32 col, s32 row);
void filemenu_set_cursor_alpha(s32 arg0); void filemenu_set_cursor_alpha(s32 arg0);
void filemenu_set_cursor_goal_pos(s32 windowIndex, s32 posX, s32 posY); void filemenu_set_cursor_goal_pos(s32 windowIndex, s32 posX, s32 posY);
@ -411,6 +412,7 @@ Evt* start_script(EvtScript* source, s32 priority, s32 initialState);
Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 groupFlags); Evt* start_script_in_group(EvtScript* source, u8 priority, u8 initialState, u8 groupFlags);
f32 get_player_normal_yaw(void); f32 get_player_normal_yaw(void);
void set_standard_shadow_scale(Shadow* shadow, f32 scale); void set_standard_shadow_scale(Shadow* shadow, f32 scale);
void set_npc_shadow_scale(Shadow* shadow, f32 height, f32 npcRadius);
void set_peach_shadow_scale(Shadow* shadow, f32 scale); void set_peach_shadow_scale(Shadow* shadow, f32 scale);
s32 is_block_on_ground(Entity* block); s32 is_block_on_ground(Entity* block);
void set_animation(s32 actorID, s32, s32 animationIndex); void set_animation(s32 actorID, s32, s32 animationIndex);

View File

@ -328,7 +328,7 @@ s32 func_800397E8(Npc* npc, f32 arg1);
/// Updates all NPCs. /// Updates all NPCs.
void update_npcs(void); void update_npcs(void);
f32 npc_get_render_yaw(void); f32 npc_get_render_yaw(Npc* npc);
void appendGfx_npc(Npc* npc); void appendGfx_npc(Npc* npc);
@ -370,17 +370,17 @@ void npc_set_palswap_1(Npc* npc, s32 palIndexA, s32 palIndexB, s32 timeHoldA, s3
void npc_set_palswap_2(Npc* npc, s32 timeHoldB, s32 timeBA, s32 palIndexC, s32 palIndexD); 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, Matrix4f mtx);
void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, s32 arg2); void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, Matrix4f mtx);
s32 npc_draw_palswap_mode_1(Npc*, s32, s32); s32 npc_draw_palswap_mode_1(Npc*, s32, Matrix4f mtx);
s32 npc_blend_palette_colors(void); u16 npc_blend_palette_colors(u16 colorA, u16 colorB, s32 lerpAlpha);
s32 npc_draw_palswap_mode_2(Npc*, s32, s32, s32); s32 npc_draw_palswap_mode_2(Npc*, s32, s32, Matrix4f mtx);
s32 npc_draw_palswap_mode_4(Npc*, s32, s32); s32 npc_draw_palswap_mode_4(Npc*, s32, Matrix4f mtx);
void npc_set_decoration(Npc* npc, s32 idx, s32 decorationType); void npc_set_decoration(Npc* npc, s32 idx, s32 decorationType);

View File

@ -162,10 +162,10 @@ extern s32 D_802A3838;
extern s32 gGameState; extern s32 gGameState;
extern s16 gNpcCount; extern s16 gNpcCount;
extern s32 gOverrideFlags; extern s32 gOverrideFlags;
extern u16 D_8009A6A0; extern s16 D_8009A6A0;
extern u16 D_8009A6A2; extern s16 D_8009A6A2;
extern u16 D_8009A6A4; extern s16 D_8009A6A4;
extern u16 D_8009A6A6; extern s16 D_8009A6A6;
extern s32* D_800A0914; extern s32* D_800A0914;
extern s32* D_800A0918; extern s32* D_800A0918;

View File

@ -20,14 +20,14 @@ extern s32 D_8024BA98;
s32* D_80249B80[] = { &D_80241ECC }; s32* D_80249B80[] = { &D_80241ECC };
MenuPanel* filemenu_menus[4] = { &D_8024A098, &D_8024A114, &D_8024A158, &D_8024A1D8 }; MenuPanel* filemenu_menus[4] = { &D_8024A098, &D_8024A114, &D_8024A158, &D_8024A1D8 };
s32 D_80249B94 = 160; s32 D_80249B94 = SCREEN_WIDTH / 2;
s32 D_80249B98 = -120; s32 D_80249B98 = -SCREEN_HEIGHT / 2;
s32 D_80249B9C = 0; s32 D_80249B9C = 0;
s32 D_80249BA0 = 160; s32 D_80249BA0 = SCREEN_WIDTH / 2;
s32 D_80249BA4 = -120; s32 D_80249BA4 = -SCREEN_HEIGHT / 2;
s32 filemenu_cursorGoalAlpha = 0; s32 filemenu_cursorGoalAlpha = 0;
s32 filemenu_cursorGoalAlpha2 = 0; s32 filemenu_cursorGoalAlpha2 = 0;
s32 D_80249BB0[] = { 0x00000001, 0x00000000 }; s32 D_80249BB0[] = { TRUE, FALSE };
s32 D_80249BB8 = 0; s32 D_80249BB8 = 0;
s16 D_80249BBC[16] = { 315, 303, 283, 260, 235, 210, 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 }; s16 D_80249BBC[16] = { 315, 303, 283, 260, 235, 210, 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 };
s16 D_80249BDC[16] = { 315, 303, 283, 260, 235, 210, 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 }; s16 D_80249BDC[16] = { 315, 303, 283, 260, 235, 210, 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 };
@ -46,15 +46,23 @@ s16 D_80249D14[16] = { 0, 2, 9, 21, 34, 48, 62, 77, 91, 105, 120, 134, 148, 161,
s16 D_80249D34[10] = { 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 }; s16 D_80249D34[10] = { 185, 160, 135, 110, 85, 60, 37, 17, 5, 0 };
s16 D_80249D48[10] = { 0, 5, 17, 37, 60, 85, 110, 135, 160, 185}; s16 D_80249D48[10] = { 0, 5, 17, 37, 60, 85, 110, 135, 160, 185};
s32 D_80249D4C = 0; // padding? s32 D_80249D4C = 0; // padding?
s32 D_80249D60[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000, }; Vp D_80249D60 = {
s32 D_80249D70[] = { 0x40E00000, 0x41480000, 0x41500000, 0x41680000, 0x41600000, 0x41500000, 0x41380000, 0x41180000, .vp = {
0x40F00000, 0x40B00000, 0x40600000, 0x40000000, 0x3F800000, 0x3F000000, 0x00000000, }; .vscale = { 640, 480, 511, 0},
.vtrans = { 640, 480, 511, 0},
}
};
f32 D_80249D70[15] = { 7.0f, 12.5f, 13.0f, 14.5f, 14.0f, 13.0f, 11.5f, 9.5f, 7.5f, 5.5f, 3.5f, 2.0f, 1.0f, 0.5f, 0.0f };
s32 D_80249DAC[] = { 0x2C000010, 0x00180120, 0x00C00000, 0x00000000, 0x00000000, 0xFF000000, 0x00000001, 0x40000000, }; s32 D_80249DAC[] = { 0x2C000010, 0x00180120, 0x00C00000, 0x00000000, 0x00000000, 0xFF000000, 0x00000001, 0x40000000, };
s32 D_80249DCC[] = { &D_8024BA60, 0x18000000, 0x00000120, 0x00C00000, filemenu_draw_contents_copy_arrow, 0x00000000, s32 D_80249DCC[] = { &D_8024BA60, 0x18000000, 0x00000120, 0x00C00000, filemenu_draw_contents_copy_arrow, 0x00000000,
0x2C000000, 0x00000001, 0x00000000, &D_8024BA98, 0x17000000, 0x00000140, 0x00F00000, 0x2C000000, 0x00000001, 0x00000000, &D_8024BA98, 0x17000000, 0x00000140, 0x00F00000,
filemenu_draw_cursor, 0x00000000, 0xFF000000, 0x00000001, 0x00000000, &D_8024BA98, 0x00000000, filemenu_draw_cursor, 0x00000000, 0xFF000000, 0x00000001, 0x00000000, &D_8024BA98, 0x00000000,
0x00000000, }; 0x00000000, };
extern Gfx D_8024B600[];
extern Gfx D_8024B6F0[];
extern Gfx D_8024B708[];
BSS s32 filemenu_iterFileIdx; BSS s32 filemenu_iterFileIdx;
BSS s32 filemenu_pressedButtons; BSS s32 filemenu_pressedButtons;
BSS s32 filemenu_8024C088; BSS s32 filemenu_8024C088;
@ -88,10 +96,10 @@ void filemenu_set_cursor_alpha(s32 arg0) {
void filemenu_set_cursor_goal_pos(s32 windowID, s32 posX, s32 posY) { void filemenu_set_cursor_goal_pos(s32 windowID, s32 posX, s32 posY) {
Window* window = &gWindows[windowID]; Window* window = &gWindows[windowID];
if (D_80249BB0[0] != 0 if (D_80249BB0[0]
|| get_game_mode() == GAME_MODE_END_FILE_SELECT || get_game_mode() == GAME_MODE_END_FILE_SELECT
|| get_game_mode() == GAME_MODE_END_LANGUAGE_SELECT) { || get_game_mode() == GAME_MODE_END_LANGUAGE_SELECT) {
if (D_80249BB0[0] != 0) { if (D_80249BB0[0]) {
s32 i; s32 i;
for (i = 0x2C; i < ARRAY_COUNT(gWindows); i++) { for (i = 0x2C; i < ARRAY_COUNT(gWindows); i++) {
@ -103,7 +111,7 @@ void filemenu_set_cursor_goal_pos(s32 windowID, s32 posX, s32 posY) {
} }
} }
if (i >= ARRAY_COUNT(gWindows)) { if (i >= ARRAY_COUNT(gWindows)) {
D_80249BB0[0] = 0; D_80249BB0[0] = FALSE;
} }
} }
D_80249BA0 = posX; D_80249BA0 = posX;
@ -164,7 +172,7 @@ void filemenu_update_cursor(void) {
} }
if (i >= ARRAY_COUNT(gWindows)) { if (i >= ARRAY_COUNT(gWindows)) {
if (filemenu_cursorGoalAlpha2 == 0xFF) { if (filemenu_cursorGoalAlpha2 == 255) {
if (D_80249BB8 != 0) { if (D_80249BB8 != 0) {
D_80249BB8--; D_80249BB8--;
if (D_80249BB8 == 0) { if (D_80249BB8 == 0) {
@ -180,7 +188,7 @@ void filemenu_update_cursor(void) {
D_80249BB8 = 1; D_80249BB8 = 1;
} }
filemenu_cursorGoalAlpha2 = 0xFF; filemenu_cursorGoalAlpha2 = 255;
} }
void filemenu_update(void) { void filemenu_update(void) {
@ -678,7 +686,119 @@ void filemenu_draw_cursor(MenuPanel* menu, s32 baseX, s32 baseY, s32 width, s32
} }
} }
INCLUDE_ASM(s32, "163400", filemenu_draw_contents_copy_arrow);
void filemenu_draw_contents_copy_arrow(MenuPanel* menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity,
s32 darkening)
{
Matrix4f sp20, sp60;
MenuPanel* menu0 = filemenu_menus[0];
f32 startX, startZ;
f32 endX, endZ;
f32 temp_f28;
if (menu0->page == 4 && menu0->selected < 4) {
if (menu0->selected != filemenu_loadedFileIdx && filemenu_8024C098 != 2) {
switch (filemenu_loadedFileIdx) {
case 0:
startX = 130.0f;
startZ = 90.0f;
break;
case 1:
startX = 190.0f;
startZ = 90.0f;
break;
case 2:
startX = 130.0f;
startZ = 150.0f;
break;
default:
startX = 190.0f;
startZ = 150.0f;
break;
}
switch (filemenu_menus[0]->selected) {
case 0:
endX = 130.0f;
endZ = 90.0f;
break;
case 1:
endX = 190.0f;
endZ = 90.0f;
break;
case 2:
endX = 130.0f;
endZ = 150.0f;
break;
default:
endX = 190.0f;
endZ = 150.0f;
break;
}
temp_f28 = -atan2(startX, startZ, endX, endZ) - 90.0f;
gSPViewport(gMasterGfxPos++, &D_80249D60);
guOrthoF(sp20, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT, 0.0f, -100.0f, 100.0f, 1.0f);
guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPDisplayList(gMasterGfxPos++, D_8024B600);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, 128);
gDPSetEnvColor(gMasterGfxPos++, 0, 0, 0, 0);
guTranslateF(sp20, startX + 4.0f, startZ + 4.0f, 0.0f);
guScaleF(sp60, -1.0f, 1.0f, 1.0f);
guMtxCatF(sp60, sp20, sp20);
guRotateF(sp60, temp_f28, 0.0f, 0.0f, 1.0f);
guMtxCatF(sp60, sp20, sp20);
guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, D_8024B6F0);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
guTranslateF(sp60, D_80249D70[gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70)], 0.0f, 0.0f);
guMtxCatF(sp60, sp20, sp20);
guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetTileSize(gMasterGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0,
((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0);
gSPDisplayList(gMasterGfxPos++, D_8024B708);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 230, 230, 230, 255);
gDPSetEnvColor(gMasterGfxPos++, 232, 40, 160, 0);
guTranslateF(sp20, startX, startZ, 0.0f);
guScaleF(sp60, -1.0f, 1.0f, 1.0f);
guMtxCatF(sp60, sp20, sp20);
guRotateF(sp60, temp_f28, 0.0f, 0.0f, 1.0f);
guMtxCatF(sp60, sp20, sp20);
guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gMasterGfxPos++, D_8024B6F0);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
guTranslateF(sp60, D_80249D70[(gGameStatusPtr->frameCounter % ARRAY_COUNT(D_80249D70))], 0.0f, 0.0f);
guMtxCatF(sp60, sp20, sp20);
guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]);
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++],
G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetTileSize(gMasterGfxPos++, 1, (gGameStatusPtr->frameCounter * 8) % 512, 0,
((gGameStatusPtr->frameCounter * 8) % 512) + 60, 0);
gSPDisplayList(gMasterGfxPos++, D_8024B708);
gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW);
}
}
}
INCLUDE_ASM(void, "163400", filemenu_init); INCLUDE_ASM(void, "163400", filemenu_init);

View File

@ -4,8 +4,6 @@
#include "audio.h" #include "audio.h"
#include "fio.h" #include "fio.h"
extern SaveMetadata gSaveSlotMetadata[4];
extern u8 gSaveSlotHasData[4];
extern HudScript* filemenu_hudElemScripts[14]; extern HudScript* filemenu_hudElemScripts[14];
extern MenuWindowBP filemenu_windowBPs[14]; extern MenuWindowBP filemenu_windowBPs[14];
@ -361,15 +359,9 @@ void filemenu_main_init(MenuPanel* menu) {
menu->initialized = 1; menu->initialized = 1;
} }
static const f32 padding[] = { 0.0f }; // TODO remove when the following func is matched
void filemenu_main_handle_input(MenuPanel* menu);
// tons of issues
#ifdef NON_EQUIVALENT
void filemenu_main_handle_input(MenuPanel* menu) { void filemenu_main_handle_input(MenuPanel* menu) {
s32 originalSelected = menu->selected; s32 originalSelected = menu->selected;
s32 i; s32 i;
MenuPanel* temp_a0;
if (filemenu_heldButtons & BUTTON_STICK_LEFT) { if (filemenu_heldButtons & BUTTON_STICK_LEFT) {
while(TRUE) { while(TRUE) {
@ -477,37 +469,38 @@ void filemenu_main_handle_input(MenuPanel* menu) {
} }
} }
if ((filemenu_pressedButtons & 0x1000) && menu->page == 0 && menu->selected < 4) { if ((filemenu_pressedButtons & BUTTON_START) && menu->page == 0 && menu->selected < 4) {
filemenu_pressedButtons = 0x8000; filemenu_pressedButtons = BUTTON_A;
} }
if (filemenu_pressedButtons & 0x8000) { if (filemenu_pressedButtons & BUTTON_A) {
s32 cond = FALSE; s32 cond = FALSE;
switch (menu->page) { switch (menu->page) {
case 0: case 0:
if (menu->selected < 4 && !gSaveSlotHasData[menu->selected] == 0) { if (menu->selected < 4 && !gSaveSlotHasData[menu->selected]) {
cond = TRUE; cond = TRUE;
} }
if (cond) { if (cond) {
MenuPanel* temp_a0;
for (i = 0; i < ARRAY_COUNT(filemenu_8024C110); i++) { for (i = 0; i < ARRAY_COUNT(filemenu_8024C110); i++) {
filemenu_8024C110[i] = 0xF7; filemenu_8024C110[i] = 0xF7;
} }
D_8024C090 = 0; D_8024C090 = 0;
set_window_update(WINDOW_ID_48, filemenu_update_show_name_input); set_window_update(WINDOW_ID_48, (s32)filemenu_update_show_name_input);
set_window_update(WINDOW_ID_49, filemenu_update_show_name_input); set_window_update(WINDOW_ID_49, (s32)filemenu_update_show_name_input);
set_window_update(WINDOW_ID_45, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_45, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_51, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_54, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_54, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_56, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_56, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_57, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_57, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_58, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_58, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_59, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_59, (s32)filemenu_update_hidden_with_rotation);
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
filemenu_8024C098 = 3; filemenu_8024C098 = 3;
temp_a0 = filemenu_menus[filemenu_8024C098]; temp_a0 = filemenu_menus[filemenu_8024C098];
@ -517,59 +510,66 @@ void filemenu_main_handle_input(MenuPanel* menu) {
} }
if (menu->selected == 6) { if (menu->selected == 6) {
set_window_update(WINDOW_ID_51, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_54, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_54, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_56, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_56, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_57, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_57, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_58, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_58, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_59, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_59, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_45, filemenu_update_hidden_title); set_window_update(WINDOW_ID_45, (s32)filemenu_update_hidden_title);
sfx_play_sound(SOUND_D6); sfx_play_sound(SOUND_D6);
set_game_mode(0xF); set_game_mode(GAME_MODE_END_FILE_SELECT);
} else if (menu->selected == 4) { } else if (menu->selected == 4) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
menu->page = 1; menu->page = 1;
filemenu_set_selected(menu, 1, 2); filemenu_set_selected(menu, 1, 2);
set_window_update(WINDOW_ID_51, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_options_bottom);
} else if (menu->selected == 5) { } else if (menu->selected == 5) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
menu->page = 3; menu->page = 3;
filemenu_set_selected(menu, 1, 2); filemenu_set_selected(menu, 1, 2);
set_window_update(WINDOW_ID_51, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_options_bottom);
} else if (menu->selected < 4) { } else if (menu->selected < 4) {
MenuPanel* temp_a0;
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_45, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_45, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_51, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_54, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_54, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_56, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_56, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_57, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_57, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_58, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_58, (s32)filemenu_update_hidden_with_rotation);
set_window_update(WINDOW_ID_59, filemenu_update_hidden_with_rotation); set_window_update(WINDOW_ID_59, (s32)filemenu_update_hidden_with_rotation);
set_window_update(menu->selected + WINDOW_ID_56, filemenu_update_select_file); set_window_update(menu->selected + WINDOW_ID_56, (s32)filemenu_update_select_file);
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, WINDOW_UPDATE_SHOW); set_window_update(WINDOW_ID_50, WINDOW_UPDATE_SHOW);
gWindows[50].pos.y = 143; gWindows[50].pos.y = 143;
gWindows[50].width = 69; gWindows[50].width = 69;
gWindows[50].height = 44; gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1) ? (gWindows[gWindows[50].parent].width / 2) : 320 / 2) - gWindows[50].width / 2; gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -29; gWindows[46].pos.y = -29;
gWindows[46].width = 192; gWindows[46].width = 192;
gWindows[46].height = 25; gWindows[46].height = 25;
gWindows[46].pos.x = ((gWindows[46].parent != -1) ? (gWindows[gWindows[46].parent].width / 2) : 320 / 2) - gWindows[46].width / 2; gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
filemenu_8024C098 = 1; filemenu_8024C098 = 1;
temp_a0 = filemenu_menus[filemenu_8024C098]; temp_a0 = filemenu_menus[filemenu_8024C098];
@ -581,24 +581,31 @@ void filemenu_main_handle_input(MenuPanel* menu) {
if (menu->selected == 6) { if (menu->selected == 6) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
menu->page = 0; menu->page = 0;
set_window_update(WINDOW_ID_51, filemenu_update_show_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_show_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_show_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_show_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_show_options_bottom);
filemenu_set_selected(menu, 0, 2); filemenu_set_selected(menu, 0, 2);
} else if (menu->selected < 4) { } else if (menu->selected < 4) {
if (gSaveSlotHasData[menu->selected] != 0) { if (gSaveSlotHasData[menu->selected]) {
MenuPanel* temp_a0;
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, filemenu_update_show_name_confirm); set_window_update(50, (s32)filemenu_update_show_name_confirm);
gWindows[50].pos.y = 121; gWindows[50].pos.y = 121;
gWindows[50].width = 69; gWindows[50].width = 69;
gWindows[50].height = 44; gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1) ? (gWindows[gWindows[50].parent].width / 2) : 320 / 2) - 34; gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -29; gWindows[46].pos.y = -29;
gWindows[46].width = 118; gWindows[46].width = 118;
gWindows[46].height = 25; gWindows[46].height = 25;
gWindows[46].pos.x = ((gWindows[46].parent != -1) ? (gWindows[gWindows[46].parent].width / 2) : 320 / 2) - 59; gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
filemenu_8024C098 = 1; filemenu_8024C098 = 1;
temp_a0 = filemenu_menus[filemenu_8024C098]; temp_a0 = filemenu_menus[filemenu_8024C098];
@ -613,13 +620,13 @@ void filemenu_main_handle_input(MenuPanel* menu) {
if (menu->selected == 6) { if (menu->selected == 6) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
menu->page = 0; menu->page = 0;
set_window_update(WINDOW_ID_51, filemenu_update_show_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_show_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_show_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_show_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_show_options_bottom);
filemenu_set_selected(menu, 0, 1); filemenu_set_selected(menu, 0, 1);
} else if (menu->selected < 4) { } else if (menu->selected < 4) {
if (gSaveSlotHasData[menu->selected] != 0) { if (gSaveSlotHasData[menu->selected]) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
menu->page = 4; menu->page = 4;
filemenu_loadedFileIdx = menu->selected; filemenu_loadedFileIdx = menu->selected;
@ -638,36 +645,43 @@ void filemenu_main_handle_input(MenuPanel* menu) {
sfx_play_sound(SOUND_MENU_ERROR); sfx_play_sound(SOUND_MENU_ERROR);
} else { } else {
filemenu_iterFileIdx = menu->selected; filemenu_iterFileIdx = menu->selected;
if (gSaveSlotHasData[menu->selected] == 0) { if (!gSaveSlotHasData[menu->selected]) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
filemenu_8024C098 = 2; filemenu_8024C098 = 2;
filemenu_menus[filemenu_8024C098]->page = 2; filemenu_menus[filemenu_8024C098]->page = 2;
gWindows[47].width = 154; gWindows[47].width = 154;
gWindows[47].height = 39; gWindows[47].height = 39;
gWindows[47].pos.x = ((gWindows[47].parent != -1) ? (gWindows[gWindows[47].parent].width / 2) : 320 / 2) - gWindows[47].width / 2; gWindows[47].pos.x = ((gWindows[47].parent != -1)
gWindows[47].pos.y = ((gWindows[47].parent != -1) ? (gWindows[gWindows[47].parent].height / 2) : 240 / 2) - gWindows[47].height / 2; ? (gWindows[gWindows[47].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[47].width / 2;
gWindows[47].pos.y = ((gWindows[47].parent != -1)
? (gWindows[gWindows[47].parent].height / 2)
: SCREEN_HEIGHT / 2) - gWindows[47].height / 2;
set_window_update(WINDOW_ID_47, WINDOW_UPDATE_SHOW); set_window_update(WINDOW_ID_47, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_50, WINDOW_UPDATE_HIDE); set_window_update(WINDOW_ID_50, WINDOW_UPDATE_HIDE);
fio_load_game(filemenu_loadedFileIdx); fio_load_game(filemenu_loadedFileIdx);
gSaveSlotMetadata[filemenu_iterFileIdx] = gSaveSlotMetadata[filemenu_loadedFileIdx]; gSaveSlotMetadata[filemenu_iterFileIdx] = gSaveSlotMetadata[filemenu_loadedFileIdx];
fio_save_game(filemenu_iterFileIdx); fio_save_game(filemenu_iterFileIdx);
gSaveSlotHasData[filemenu_iterFileIdx] = 1; gSaveSlotHasData[filemenu_iterFileIdx] = TRUE;
} else { } else {
sfx_play_sound(SOUND_MENU_NEXT); MenuPanel* temp_a0;
set_window_update(WINDOW_ID_50, filemenu_update_show_name_confirm);
sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, (s32)filemenu_update_show_name_confirm);
gWindows[50].pos.y = 121; gWindows[50].pos.y = 121;
gWindows[50].width = 69; gWindows[50].width = 69;
gWindows[50].height = 44; gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1) ? (gWindows[gWindows[50].parent].width / 2) : 320 / 2) - gWindows[50].width / 2; gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -43; gWindows[46].pos.y = -43;
gWindows[46].width = 182; gWindows[46].width = 182;
gWindows[46].height = 39; gWindows[46].height = 39;
gWindows[46].pos.x = ((gWindows[46].parent != -1) ? (gWindows[gWindows[46].parent].width / 2) : 320 / 2) - gWindows[46].width / 2; gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
filemenu_8024C098 = 1; filemenu_8024C098 = 1;
temp_a0 = filemenu_menus[filemenu_8024C098]; temp_a0 = filemenu_menus[filemenu_8024C098];
@ -680,29 +694,35 @@ void filemenu_main_handle_input(MenuPanel* menu) {
case 2: case 2:
if (menu->selected == 6) { if (menu->selected == 6) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
set_game_mode(0xD); set_game_mode(GAME_MODE_END_LANGUAGE_SELECT);
} else if (menu->selected < 4) { } else if (menu->selected < 4) {
if (gSaveSlotHasData[menu->selected] == 0) { if (!gSaveSlotHasData[menu->selected]) {
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
filemenu_8024C098 = 2; filemenu_8024C098 = 2;
filemenu_menus[filemenu_8024C098]->page = 1; filemenu_menus[filemenu_8024C098]->page = 1;
set_window_update(WINDOW_ID_PAUSE_CURSOR, main_menu_window_update); set_window_update(WINDOW_ID_PAUSE_CURSOR, (s32)main_menu_window_update);
set_window_update(WINDOW_ID_47, WINDOW_UPDATE_SHOW); set_window_update(WINDOW_ID_47, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_50, WINDOW_UPDATE_HIDE); set_window_update(WINDOW_ID_50, WINDOW_UPDATE_HIDE);
fio_save_game(menu->selected); fio_save_game(menu->selected);
gSaveSlotHasData[menu->selected] = 1; gSaveSlotHasData[menu->selected] = TRUE;
} else { } else {
MenuPanel* temp_a0;
sfx_play_sound(SOUND_MENU_NEXT); sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, filemenu_update_show_name_confirm); set_window_update(WINDOW_ID_50, (s32)filemenu_update_show_name_confirm);
gWindows[50].pos.y = 127; gWindows[50].pos.y = 127;
gWindows[50].width = 69; gWindows[50].width = 69;
gWindows[50].height = 44; gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1) ? (gWindows[gWindows[50].parent].width / 2) : 320 / 2) - gWindows[50].width / 2; gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -50; gWindows[46].pos.y = -50;
gWindows[46].width = 148; gWindows[46].width = 148;
gWindows[46].height = 38; gWindows[46].height = 38;
gWindows[46].pos.x = ((gWindows[46].parent != -1) ? (gWindows[gWindows[46].parent].width / 2) : 320 / 2) - gWindows[46].width / 2; gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
filemenu_8024C098 = 1; filemenu_8024C098 = 1;
temp_a0 = filemenu_menus[filemenu_8024C098]; temp_a0 = filemenu_menus[filemenu_8024C098];
@ -735,35 +755,35 @@ void filemenu_main_handle_input(MenuPanel* menu) {
switch (menu->page) { switch (menu->page) {
case 0: case 0:
set_window_update(WINDOW_ID_51, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_54, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_54, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_hidden_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_hidden_options_bottom);
set_window_update(WINDOW_ID_56, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_56, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_57, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_57, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_58, filemenu_update_hidden_options_left); set_window_update(WINDOW_ID_58, (s32)filemenu_update_hidden_options_left);
set_window_update(WINDOW_ID_59, filemenu_update_hidden_options_right); set_window_update(WINDOW_ID_59, (s32)filemenu_update_hidden_options_right);
set_window_update(WINDOW_ID_45, filemenu_update_hidden_title); set_window_update(WINDOW_ID_45, (s32)filemenu_update_hidden_title);
sfx_play_sound(SOUND_D6); sfx_play_sound(SOUND_D6);
set_game_mode(0xF); set_game_mode(GAME_MODE_END_FILE_SELECT);
break; break;
case 1: case 1:
menu->page = 0; menu->page = 0;
filemenu_set_selected(menu, 0, 2); filemenu_set_selected(menu, 0, 2);
set_window_update(WINDOW_ID_51, filemenu_update_show_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_show_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_show_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_show_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_show_options_bottom);
sfx_play_sound(SOUND_MENU_BACK); sfx_play_sound(SOUND_MENU_BACK);
break; break;
case 3: case 3:
menu->page = 0; menu->page = 0;
filemenu_set_selected(menu, 1, 2); filemenu_set_selected(menu, 1, 2);
set_window_update(WINDOW_ID_51, filemenu_update_show_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left);
set_window_update(WINDOW_ID_52, filemenu_update_show_options_right); set_window_update(WINDOW_ID_52, (s32)filemenu_update_show_options_right);
set_window_update(WINDOW_ID_53, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_53, (s32)filemenu_update_show_options_bottom);
set_window_update(WINDOW_ID_55, filemenu_update_show_options_bottom); set_window_update(WINDOW_ID_55, (s32)filemenu_update_show_options_bottom);
sfx_play_sound(SOUND_MENU_BACK); sfx_play_sound(SOUND_MENU_BACK);
break; break;
case 4: case 4:
@ -773,14 +793,11 @@ void filemenu_main_handle_input(MenuPanel* menu) {
break; break;
case 2: case 2:
sfx_play_sound(SOUND_MENU_BACK); sfx_play_sound(SOUND_MENU_BACK);
set_game_mode(0xD); set_game_mode(GAME_MODE_END_LANGUAGE_SELECT);
break; break;
} }
} }
} }
#else
INCLUDE_ASM(s32, "165490", filemenu_main_handle_input);
#endif
INCLUDE_ASM(s32, "165490", filemenu_main_update); INCLUDE_ASM(s32, "165490", filemenu_main_update);

View File

@ -267,7 +267,7 @@ void filemenu_yesno_handle_input(MenuPanel* menu) {
fio_flush_backups(); fio_flush_backups();
} }
fio_load_game(slot3); fio_load_game(slot3);
set_game_mode(0xF); set_game_mode(GAME_MODE_END_FILE_SELECT);
break; break;
} }
break; break;

View File

@ -3,14 +3,15 @@
#include "hud_element.h" #include "hud_element.h"
extern MenuWindowBP D_8024A134[1]; extern MenuWindowBP D_8024A134[1];
extern HudScript* D_8024A180[3];
extern MenuWindowBP D_8024A190[2];
extern s32 D_8024A1B4;
extern s8 D_8024C090; extern s8 D_8024C090;
extern s32 D_8024C100_C09980[3]; extern s32 D_8024C100_C09980[3];
extern u8 D_8024C117;
void filemenu_info_draw_message_contents(MenuPanel* menu, s32 baseX, s32 baseY) { void filemenu_info_draw_message_contents(MenuPanel* menu, s32 baseX, s32 baseY) {
s8 page = menu->page; switch (menu->page) {
switch (page) {
case 0: case 0:
filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0);
draw_number(filemenu_menus[0]->selected + 1, baseX + 48, baseY + 6, 0, 0, 255, 3); draw_number(filemenu_menus[0]->selected + 1, baseX + 48, baseY + 6, 0, 0, 255, 3);
@ -30,7 +31,7 @@ void filemenu_info_draw_message_contents(MenuPanel* menu, s32 baseX, s32 baseY)
break; break;
case 3: case 3:
filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_FILE_26), baseX + 10, baseY + 4, 255, 0, 0);
draw_number(filemenu_menus[0]->selected + 1, baseX + 48, baseY + 6, 0, 0, 255, page); draw_number(filemenu_menus[0]->selected + 1, baseX + 48, baseY + 6, 0, 0, 255, 3);
filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_CREATED), baseX + 49, baseY + 4, 255, 0, 0); filemenu_draw_message(filemenu_get_menu_message(FILE_MESSAGE_HAS_BEEN_CREATED), baseX + 49, baseY + 4, 255, 0, 0);
break; break;
} }
@ -51,12 +52,10 @@ void filemenu_info_init(MenuPanel* tab) {
void filemenu_info_handle_input(void) { void filemenu_info_handle_input(void) {
if (filemenu_pressedButtons & (BUTTON_A | BUTTON_B)) { if (filemenu_pressedButtons & (BUTTON_A | BUTTON_B)) {
MenuPanel* menu = filemenu_menus[0]; MenuPanel* menu = filemenu_menus[0];
s32 page;
filemenu_8024C098 = 0; filemenu_8024C098 = 0;
page = menu->page;
switch(page) { switch(menu->page) {
case 1: case 1:
menu->page = 0; menu->page = 0;
set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left); set_window_update(WINDOW_ID_51, (s32)filemenu_update_show_options_left);
@ -74,7 +73,7 @@ void filemenu_info_handle_input(void) {
filemenu_set_selected(menu, 1, 2); filemenu_set_selected(menu, 1, 2);
break; break;
case 2: case 2:
menu->page = page; menu->page = 2;
filemenu_set_selected(menu, 1, 2); filemenu_set_selected(menu, 1, 2);
break; break;
} }
@ -121,7 +120,7 @@ void filemenu_draw_contents_file_create_header(MenuPanel* menu, s32 baseX, s32 b
s32 phi_v0 = 122; s32 phi_v0 = 122;
if (D_8024C090 != tempAmt) { if (D_8024C090 != tempAmt) {
phi_v0 = (D_8024C090 * 0xB) + 45; phi_v0 = (D_8024C090 * 11) + 45;
} }
hud_element_set_render_pos(D_8024C100_C09980[0], baseX + phi_v0, baseY + 45); hud_element_set_render_pos(D_8024C100_C09980[0], baseX + phi_v0, baseY + 45);
hud_element_draw_next(D_8024C100_C09980[0]); hud_element_draw_next(D_8024C100_C09980[0]);
@ -130,9 +129,233 @@ void filemenu_draw_contents_file_create_header(MenuPanel* menu, s32 baseX, s32 b
INCLUDE_ASM(s32, "168590", filemenu_draw_contents_choose_name); INCLUDE_ASM(s32, "168590", filemenu_draw_contents_choose_name);
INCLUDE_ASM(s32, "168590", filemenu_choose_name_init); void filemenu_choose_name_init(MenuPanel* menu) {
s32 i;
INCLUDE_ASM(s32, "168590", filemenu_choose_name_handle_input); for (i = 0; i < ARRAY_COUNT(D_8024A180); i++) {
D_8024C100_C09980[i] = hud_element_create(D_8024A180[i]);
hud_element_set_flags(D_8024C100_C09980[i], HUD_ELEMENT_FLAGS_80);
}
for (i = 0; i < ARRAY_COUNT(D_8024A190); i++) {
D_8024A190[i].tab = menu;
}
setup_pause_menu_tab(D_8024A190, 2);
gWindows[48].pos.x = ((gWindows[48].parent != -1)
? (gWindows[gWindows[48].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[48].width / 2;
gWindows[49].pos.x = ((gWindows[49].parent != -1)
? (gWindows[gWindows[49].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[49].width / 2;
menu->initialized = TRUE;
}
void filemenu_choose_name_handle_input(MenuPanel* menu) {
s32 oldSelected = menu->selected;
MenuPanel* newMenu;
MenuPanel* newMenu2;
s32 temp;
s32 i;
if (filemenu_heldButtons & BUTTON_STICK_LEFT) {
menu->col--;
if (menu->col < 0) {
menu->col = menu->numCols - 1;
}
} else if (filemenu_heldButtons & BUTTON_STICK_RIGHT) {
menu->col++;
if (menu->col >= menu->numCols) {
menu->col = 0;
}
if (menu->row == menu->numRows - 1) {
if (menu->col > 10) {
menu->col = 0;
} else if (menu->col == 8 || menu->col == 9) {
menu->col = 10;
} else if (menu->col == 5 || menu->col == 6) {
menu->col = 7;
}
}
}
if (filemenu_heldButtons & BUTTON_STICK_UP) {
menu->row--;
if (menu->row < 0) {
menu->row = menu->numRows - 1;
}
} else if (filemenu_heldButtons & BUTTON_STICK_DOWN) {
menu->row++;
if (menu->row >= menu->numRows) {
menu->row = 0;
}
}
if (menu->row == menu->numRows - 1) {
if (menu->col > 10) {
menu->col = 10;
} else if (menu->col == 8 || menu->col == 9) {
menu->col = 7;
} else if (menu->col == 5 || menu->col == 6) {
menu->col = 4;
}
}
menu->selected = MENU_PANEL_SELECTED_GRID_DATA(menu);
if (oldSelected != menu->selected) {
sfx_play_sound(SOUND_2102);
}
if (filemenu_pressedButtons & BUTTON_A) {
switch (menu->selected) {
case 0xC6:
sfx_play_sound(SOUND_2103);
if (D_8024C090 == ARRAY_COUNT(filemenu_8024C110)) {
D_8024C090 = ARRAY_COUNT(filemenu_8024C110) - 1;
}
filemenu_8024C110[D_8024C090] = 0xF7;
D_8024C090++;
if (D_8024C090 > ARRAY_COUNT(filemenu_8024C110)) {
D_8024C090 = ARRAY_COUNT(filemenu_8024C110);
}
break;
case 0xC9:
break;
case 0xC7:
if (menu->page != 1) {
sfx_play_sound(SOUND_2105);
menu->page = 1;
filemenu_set_selected(menu, menu->col, menu->row);
set_window_update(WINDOW_ID_49, (s32)func_80248170);
}
break;
case 0xC8:
if (menu->page != 0) {
sfx_play_sound(SOUND_2105);
menu->page = 0;
filemenu_set_selected(menu, menu->col, menu->row);
set_window_update(WINDOW_ID_49, (s32)func_80248170);
}
break;
case 0xCA:
for (i = 0; i < ARRAY_COUNT(filemenu_8024C110); i++) {
if (filemenu_8024C110[i] != 0xF7) {
break;
}
}
if (i == ARRAY_COUNT(filemenu_8024C110)) {
sfx_play_sound(SOUND_MENU_ERROR);
break;
}
sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, (s32) filemenu_update_show_name_confirm);
gWindows[50].pos.y = 121;
gWindows[50].width = 69;
gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -70;
gWindows[46].width = 164;
gWindows[46].height = 62;
gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
filemenu_8024C098 = 1;
newMenu = filemenu_menus[filemenu_8024C098];
newMenu->page = 2;
filemenu_set_selected(newMenu, 0, 0);
return;
default:
sfx_play_sound(SOUND_2103);
if (D_8024C090 == ARRAY_COUNT(filemenu_8024C110)) {
D_8024C117 = menu->selected;
} else {
filemenu_8024C110[D_8024C090] = menu->selected;
D_8024C090++;
if (D_8024C090 > ARRAY_COUNT(filemenu_8024C110)) {
D_8024C090 = ARRAY_COUNT(filemenu_8024C110);
}
}
break;
}
if (((u8)(menu->selected + 0x39) >= 3) && (D_8024C090 == ARRAY_COUNT(filemenu_8024C110))) { // todo ???
filemenu_set_selected(menu, menu->numCols - 3, menu->numRows - 1);
}
}
if ((filemenu_pressedButtons & BUTTON_B) || ((filemenu_pressedButtons & BUTTON_A) && (menu->selected == 0xC9))) {
sfx_play_sound(SOUND_2104);
D_8024C090--;
if (D_8024C090 < 0) {
D_8024C090 = 0;
set_window_update(WINDOW_ID_48, (s32) &filemenu_update_hidden_name_input);
set_window_update(WINDOW_ID_49, (s32) &filemenu_update_hidden_name_input);
set_window_update(WINDOW_ID_45, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_51, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_52, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_53, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_54, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_55, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_53, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_56, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_57, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_58, (s32) &filemenu_update_show_with_rotation);
set_window_update(WINDOW_ID_59, (s32) &filemenu_update_show_with_rotation);
filemenu_8024C098 = 0;
return;
}
for (i = D_8024C090; i < ARRAY_COUNT(filemenu_8024C110); i++) {
filemenu_8024C110[i] = 0xF7;
}
}
if (filemenu_pressedButtons & BUTTON_START) {
for (i = 0; i < ARRAY_COUNT(filemenu_8024C110); i++) {
if (filemenu_8024C110[i] != 0xF7) {
break;
}
}
if (i == ARRAY_COUNT(filemenu_8024C110)) {
sfx_play_sound(SOUND_MENU_ERROR);
return;
}
sfx_play_sound(SOUND_MENU_NEXT);
set_window_update(WINDOW_ID_50, (s32) filemenu_update_show_name_confirm);
gWindows[50].pos.y = 121;
gWindows[50].width = 69;
gWindows[50].height = 44;
gWindows[50].pos.x = ((gWindows[50].parent != -1)
? (gWindows[gWindows[50].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[50].width / 2;
gWindows[46].pos.y = -70;
gWindows[46].width = 164;
gWindows[46].height = 62;
gWindows[46].pos.x = ((gWindows[46].parent != -1)
? (gWindows[gWindows[46].parent].width / 2)
: SCREEN_WIDTH / 2) - gWindows[46].width / 2;
newMenu2 = filemenu_menus[1];
filemenu_8024C098 = 1;
newMenu2->page = 2;
filemenu_set_selected(newMenu2, 0, 0);
}
}
static const f32 padding[2] = { 0.0f, 0.0f }; // not sure why this is needed
void filemenu_choose_name_update(void) { void filemenu_choose_name_update(void) {
} }

View File

@ -2,6 +2,8 @@
extern Message* gFileMenuMessages[35]; extern Message* gFileMenuMessages[35];
extern s32 D_8024B74C[];
INCLUDE_ASM(s32, "169BE0", filemenu_draw_char); INCLUDE_ASM(s32, "169BE0", filemenu_draw_char);
INCLUDE_ASM(s32, "169BE0", filemenu_draw_message); INCLUDE_ASM(s32, "169BE0", filemenu_draw_message);

189
src/fio.c
View File

@ -1,7 +1,19 @@
#include "fio.h" #include "fio.h"
#include "PR/os_flash.h"
extern SaveData D_8009A6B0;
extern s32 logicalSaveInfo[4][2];
extern s32 physicalSaveInfo[6][2];
extern s32 nextAvailableSavePage;
char magicSaveString[] = "Mario Story 006"; char magicSaveString[] = "Mario Story 006";
void fio_deserialize_state(void);
void fio_serialize_state(void);
s32 fio_read_flash(s32 pageNum, void* readBuffer, u32 numBytes);
s32 fio_write_flash(s32 pageNum, s8* readBuffer, u32 numBytes);
void fio_erase_flash(s32 pageNum);
s32 get_spirits_rescued(void) { s32 get_spirits_rescued(void) {
s32 storyProgress = evt_get_variable(NULL, EVT_STORY_PROGRESS); s32 storyProgress = evt_get_variable(NULL, EVT_STORY_PROGRESS);
s32 ret = 7; s32 ret = 7;
@ -27,36 +39,35 @@ s32 get_spirits_rescued(void) {
s32 fio_calc_header_checksum(void) { s32 fio_calc_header_checksum(void) {
u32 sum = 0; u32 sum = 0;
s32* it = &D_800D95E8; s32* it = (s32*)&D_800D95E8;
u32 i; u32 i;
for (i = 0; i < 0x20; i++, it++) { for (i = 0; i < sizeof(D_800D95E8) / sizeof(*it); i++, it++) {
sum += *it; sum += *it;
} }
return sum; return sum;
} }
#ifdef NON_EQUIVALENT
s32 fio_validate_header_checksums(void) { s32 fio_validate_header_checksums(void) {
SaveData* saveData = D_800D95E8; SaveDataHeader* header = &D_800D95E8;
if (!strcmp(saveData->magicString, magicSaveString) && saveData->crc1 == ~saveData->crc2) { if (strcmp(header->magicString, magicSaveString)) {
return fio_calc_header_checksum() == saveData->crc1; return FALSE;
} }
return FALSE; if (header->crc1 != ~header->crc2) {
return FALSE;
}
return fio_calc_header_checksum() == header->crc1;
} }
#else
INCLUDE_ASM(s32, "fio", fio_validate_header_checksums);
#endif
s32 fio_has_valid_backup(void) { s32 fio_has_valid_backup(void) {
fio_read_flash(6, &D_800D95E8, 0x80); fio_read_flash(6, &D_800D95E8, sizeof(D_800D95E8));
if (fio_validate_header_checksums() == FALSE) { if (!fio_validate_header_checksums()) {
fio_read_flash(7, &D_800D95E8, 0x80); fio_read_flash(7, &D_800D95E8, sizeof(D_800D95E8));
if (fio_validate_header_checksums() == FALSE) { if (!fio_validate_header_checksums()) {
bzero(&D_800D95E8, 0x80); bzero(&D_800D95E8, sizeof(D_800D95E8));
return FALSE; return FALSE;
} }
} }
@ -66,22 +77,22 @@ s32 fio_has_valid_backup(void) {
s32 fio_flush_backups(void) { s32 fio_flush_backups(void) {
s32 checksum; s32 checksum;
strcpy(D_800D95E8.magicString, &magicSaveString); strcpy(D_800D95E8.magicString, magicSaveString);
D_800D95E8.crc1 = 0; D_800D95E8.crc1 = 0;
D_800D95E8.crc2 = -1; D_800D95E8.crc2 = -1;
checksum = fio_calc_header_checksum(); checksum = fio_calc_header_checksum();
D_800D95E8.crc1 = checksum; D_800D95E8.crc1 = checksum;
D_800D95E8.crc2 = ~checksum; D_800D95E8.crc2 = ~checksum;
fio_erase_flash(6); fio_erase_flash(6);
fio_write_flash(6, &D_800D95E8, 0x80); fio_write_flash(6, (s8*)&D_800D95E8, sizeof(D_800D95E8));
fio_erase_flash(7); fio_erase_flash(7);
fio_write_flash(7, &D_800D95E8, 0x80); fio_write_flash(7, (s8*)&D_800D95E8, sizeof(D_800D95E8));
return 1; return 1;
} }
s32 fio_calc_file_checksum(SaveData* saveData) { s32 fio_calc_file_checksum(SaveData* saveData) {
u32 sum = 0; u32 sum = 0;
s32* it = saveData; s32* it = (s32*)saveData;
u32 i; u32 i;
for (i = 0; i < sizeof(*saveData) / sizeof(*it); i++, it++) { for (i = 0; i < sizeof(*saveData) / sizeof(*it); i++, it++) {
@ -98,8 +109,8 @@ s32 fio_validate_file_checksum(SaveData* saveData) {
} }
s32 fio_fetch_saved_file_info(void) { s32 fio_fetch_saved_file_info(void) {
s32* buffer = D_8009A6B0; SaveData* buffer = &D_8009A6B0; // temps required to match
void* bufferPtr = (void*)buffer; SaveData* buffer2 = buffer;
s32 i, j, savePage; s32 i, j, savePage;
for (i = 0; i < ARRAY_COUNT(logicalSaveInfo); i++) { for (i = 0; i < ARRAY_COUNT(logicalSaveInfo); i++) {
@ -108,13 +119,13 @@ s32 fio_fetch_saved_file_info(void) {
} }
for (i = 0; i < ARRAY_COUNT(physicalSaveInfo); i++) { for (i = 0; i < ARRAY_COUNT(physicalSaveInfo); i++) {
fio_read_flash(i, bufferPtr, sizeof(SaveData)); fio_read_flash(i, buffer, sizeof(SaveData));
if (fio_validate_file_checksum(bufferPtr) != 0) { if (fio_validate_file_checksum(buffer)) {
physicalSaveInfo[i][0] = buffer[14]; physicalSaveInfo[i][0] = buffer2->saveSlot;
physicalSaveInfo[i][1] = buffer[15]; physicalSaveInfo[i][1] = buffer2->saveCount;
if (logicalSaveInfo[buffer[14]][1] < buffer[15]) { if (logicalSaveInfo[buffer2->saveSlot][1] < buffer2->saveCount) {
logicalSaveInfo[buffer[14]][0] = i; logicalSaveInfo[buffer2->saveSlot][0] = i;
logicalSaveInfo[buffer[14]][1] = buffer[15]; logicalSaveInfo[buffer2->saveSlot][1] = buffer2->saveCount;
} }
} }
} }
@ -134,8 +145,7 @@ s32 fio_fetch_saved_file_info(void) {
} }
} }
} }
return TRUE;
return 1;
} }
s32 fio_load_game(s32 saveSlot) { s32 fio_load_game(s32 saveSlot) {
@ -173,7 +183,7 @@ void fio_save_game(s32 saveSlot) {
gCurrentSaveFile.crc2 = ~gCurrentSaveFile.crc1; gCurrentSaveFile.crc2 = ~gCurrentSaveFile.crc1;
fio_erase_flash(nextAvailableSavePage); fio_erase_flash(nextAvailableSavePage);
fio_write_flash(nextAvailableSavePage, &gCurrentSaveFile, sizeof(SaveData)); fio_write_flash(nextAvailableSavePage, (s8*)&gCurrentSaveFile, sizeof(SaveData));
} }
void fio_erase_game(s32 saveSlot) { void fio_erase_game(s32 saveSlot) {
@ -188,23 +198,130 @@ void fio_erase_game(s32 saveSlot) {
} }
} }
INCLUDE_ASM(s32, "fio", fio_deserialize_state); void fio_deserialize_state(void) {
SaveData* saveData = &gCurrentSaveFile;
s32 i, j;
gPlayerData = saveData->player;
gGameStatusPtr->areaID = saveData->areaID;
gGameStatusPtr->mapID = saveData->mapID;
gGameStatusPtr->entryID = saveData->entryID;
gGameStatusPtr->savedPos.x = saveData->savePos.x;
gGameStatusPtr->savedPos.y = saveData->savePos.y;
gGameStatusPtr->savedPos.z = saveData->savePos.z;
for (i = 0; i < ARRAY_COUNT(gCurrentEncounter.defeatFlags[0]); i++) {
for (j = 0; j < ARRAY_COUNT(gCurrentEncounter.defeatFlags); j++) {
gCurrentEncounter.defeatFlags[j][i] = saveData->enemyDefeatFlags[j][i];
}
}
gGameStatusPtr->debugEnemyContact = 0;
gGameStatusPtr->unk_76 = 0;
gGameStatusPtr->unk_77 = 0;
gGameStatusPtr->musicEnabled = TRUE;
gSaveSlotMetadata[gGameStatusPtr->saveSlot] = saveData->unk_12EC;
}
void func_8002B608(void) { void func_8002B608(void) {
gGameStatusPtr->entryID = 10; gGameStatusPtr->entryID = 10;
fio_serialize_state(); fio_serialize_state();
} }
INCLUDE_ASM(void, "fio", fio_serialize_state); void fio_serialize_state(void) {
SaveData* saveData = &gCurrentSaveFile;
s32 i, j;
saveData->player = gPlayerData;
saveData->areaID = gGameStatusPtr->areaID;
saveData->mapID = gGameStatusPtr->mapID;
saveData->entryID = gGameStatusPtr->entryID;
saveData->savePos.x = gGameStatusPtr->savedPos.x;
saveData->savePos.y = gGameStatusPtr->savedPos.y;
saveData->savePos.z = gGameStatusPtr->savedPos.z;
for (i = 0; i < ARRAY_COUNT(gCurrentEncounter.defeatFlags[0]); i++) {
for (j = 0; j < ARRAY_COUNT(gCurrentEncounter.defeatFlags); j++) {
saveData->enemyDefeatFlags[j][i] = gCurrentEncounter.defeatFlags[j][i];
}
}
saveData->debugEnemyContact = gGameStatusPtr->debugEnemyContact;
saveData->unk_12E1 = gGameStatusPtr->unk_76;
saveData->unk_12E2 = gGameStatusPtr->unk_77;
saveData->musicEnabled = gGameStatusPtr->musicEnabled;
gSaveSlotMetadata[gGameStatusPtr->saveSlot].level = gPlayerData.level;
gSaveSlotMetadata[gGameStatusPtr->saveSlot].spiritsRescued = get_spirits_rescued();
gSaveSlotMetadata[gGameStatusPtr->saveSlot].timePlayed = gPlayerData.frameCounter;
saveData->unk_12EC = gSaveSlotMetadata[gGameStatusPtr->saveSlot];
}
void fio_init_flash(void) { void fio_init_flash(void) {
osFlashInit(); osFlashInit();
} }
INCLUDE_ASM(s32, "fio", fio_read_flash, s32 pageNum, s32* readBuffer, s32 numBytes); s32 fio_read_flash(s32 pageNum, void* readBuffer, u32 numBytes) {
OSIoMesg mb;
OSMesgQueue mesgQueue;
OSMesg mesg;
s8* buf = (s8*)readBuffer;
s32 amt;
u16 i;
INCLUDE_ASM(s32, "fio", fio_write_flash); osInvalDCache(buf, numBytes);
osCreateMesgQueue(&mesgQueue, &mesg, 1);
i = 0;
while (numBytes != 0) {
if (numBytes > sizeof(SaveDataHeader)) {
amt = sizeof(SaveDataHeader);
} else {
amt = numBytes;
}
osFlashReadArray(&mb, 0, pageNum * sizeof(SaveDataHeader) + i, buf, 1, &mesgQueue);
osRecvMesg(&mesgQueue, NULL, 1);
i++;
numBytes -= amt;
buf += amt;
}
return TRUE;
}
s32 fio_write_flash(s32 pageNum, s8* readBuffer, u32 numBytes) {
OSIoMesg mb;
OSMesgQueue mesgQueue;
OSMesg mesg;
s32 amt;
u16 i;
osWritebackDCache(readBuffer, numBytes);
osCreateMesgQueue(&mesgQueue, &mesg, 1);
i = 0;
while (numBytes != 0) {
if (numBytes > sizeof(SaveDataHeader)) {
amt = sizeof(SaveDataHeader);
} else {
amt = numBytes;
}
osFlashWriteBuffer(&mb, 0, readBuffer, &mesgQueue);
osFlashWriteArray((pageNum * sizeof(SaveDataHeader)) + i);
osRecvMesg(&mesgQueue, NULL, 1);
i++;
numBytes -= amt;
readBuffer += amt;
}
return TRUE;
}
void fio_erase_flash(s32 pageNum) { void fio_erase_flash(s32 pageNum) {
osFlashSectorErase(pageNum * 128); osFlashSectorErase(pageNum * sizeof(SaveDataHeader));
} }

View File

@ -3,56 +3,14 @@
#include "common.h" #include "common.h"
extern char magicSaveString[];
void fio_serialize_state(void);
void fio_erase_flash(s32 pageNum);
void fio_write_flash(s32 pageNum, s32* readBuffer, s32 numBytes);
s32 get_spirits_rescued(void);
s32 fio_calc_header_checksum(void);
s32 fio_validate_header_checksums(void);
s32 fio_has_valid_backup(void); s32 fio_has_valid_backup(void);
s32 fio_flush_backups(void); s32 fio_flush_backups(void);
s32 fio_calc_file_checksum(SaveData* saveData);
s32 fio_validate_file_checksum(SaveData* saveData);
s32 fio_fetch_saved_file_info(void);
s32 fio_load_game(s32 saveSlot); s32 fio_load_game(s32 saveSlot);
void fio_save_game(s32 saveSlot); void fio_save_game(s32 saveSlot);
void fio_erase_game(s32 saveSlot); void fio_erase_game(s32 saveSlot);
//fio_deserialize_state; extern SaveMetadata gSaveSlotMetadata[4];
extern u8 gSaveSlotHasData[4];
void func_8002B608(void); extern SaveDataHeader D_800D95E8;
//fio_init_flash;
//fio_serialize_state;
//fio_read_flash;
//fio_write_flash;
extern s32 logicalSaveInfo[4][2];
extern s32 physicalSaveInfo[6][2];
extern s32 nextAvailableSavePage;
extern SaveData D_800D95E8;
extern s32 D_8009A6B0[];
#endif #endif

405
src/npc.c
View File

@ -352,7 +352,74 @@ void npc_do_world_collision(Npc* npc) {
} }
} }
// float regalloc :(
#ifdef NON_MATCHING
void npc_do_other_npc_collision(Npc* npc) {
Npc* otherNpc;
f32 temp_f20_2;
f32 temp_f22_3;
f32 temp_f24_2;
f32 temp_f22_4;
f32 temp_f2;
f32 thisX, thisY, thisZ;
f32 thisBuf;
f32 otherX, otherZ;
f32 otherBuf;
f32 xDiff, zDiff;
f32 dist;
s32 collision;
s32 i;
if (!(npc->flags & NPC_FLAG_100)) {
npc->flags &= ~NPC_FLAG_SIMPLIFIED_PHYSICS;
thisBuf = npc->collisionRadius * 0.5f;
thisX = npc->pos.x;
thisY = npc->pos.y;
thisZ = npc->pos.z;
for (i = 0; i < 0x40; i++) {
otherNpc = get_npc_by_index(i);
if (otherNpc != NULL && npc != otherNpc) {
if (otherNpc->flags != 0 && !(otherNpc->flags & (0x80000000 | NPC_FLAG_100))) {
if (!(otherNpc->pos.y + otherNpc->collisionHeight < thisY) &&
!(thisY + npc->collisionHeight < otherNpc->pos.y))
{
otherX = otherNpc->pos.x;
otherZ = otherNpc->pos.z;
xDiff = otherX - thisX;
zDiff = otherZ - thisZ;
otherBuf = otherNpc->collisionRadius * 0.5f;
dist = sqrtf(SQ(xDiff) + SQ(zDiff));
if (!(thisBuf + otherBuf <= dist)) {
collision = FALSE;
if (npc->flags & NPC_FLAG_PARTICLE) {
collision = gPartnerActionStatus.actionState.b[0] == 0;
} else if (!(otherNpc->flags & NPC_FLAG_PARTICLE) || gPartnerActionStatus.actionState.b[0] == 0) {
collision = TRUE;
}
if (collision) {
temp_f20_2 = atan2(otherX, otherZ, thisX, thisZ) * TAU / 360.0f;
temp_f24_2 = thisBuf + otherBuf - dist;
temp_f22_3 = temp_f24_2 * sin_rad(temp_f20_2);
temp_f22_4 = -temp_f24_2 * cos_rad(temp_f20_2);
thisX += temp_f22_3 * 0.1f;
thisZ += temp_f22_4 * 0.1f;
}
npc->flags |= NPC_FLAG_SIMPLIFIED_PHYSICS;
}
}
}
}
}
npc->pos.x = thisX;
npc->pos.z = thisZ;
}
}
#else
INCLUDE_ASM(void, "npc", npc_do_other_npc_collision, Npc* npc); INCLUDE_ASM(void, "npc", npc_do_other_npc_collision, Npc* npc);
#endif
INCLUDE_ASM(s32, "npc", npc_do_player_collision, Npc* npc); INCLUDE_ASM(s32, "npc", npc_do_player_collision, Npc* npc);
@ -435,127 +502,319 @@ s32 func_800397E8(Npc* npc, f32 arg1) {
return 0; return 0;
} }
INCLUDE_ASM(void, "npc", update_npcs, void); void update_npcs(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
f32 x, y, z;
f32 hitYaw, hitPitch, hitLength;
playerStatus->animFlags &= ~PLAYER_STATUS_ANIM_FLAGS_8000;
if (!(gOverrideFlags & (GLOBAL_OVERRIDES_800 | GLOBAL_OVERRIDES_400))) {
s32 i;
for (i = 0; i < 0x40; i++) {
Npc* npc = (*gCurrentNpcListPtr)[i];
if (npc != NULL) {
if (npc->flags != 0) {
if (npc->flags & (NPC_FLAG_80000000 | NPC_FLAG_4)) {
npc_do_world_collision(npc);
continue;
}
npc->onUpdate(npc);
if (npc->flags & NPC_FLAG_8000) {
npc->collisionChannel |= 0x40000;
} else {
npc->collisionChannel &= ~0x40000;
}
npc->currentFloor = -1;
npc->currentWall = -1;
npc->flags &= ~(NPC_FLAG_4000 | NPC_FLAG_NO_PROJECT_SHADOW);
npc_do_world_collision(npc);
npc_do_gravity(npc);
func_800397E8(npc, 0.0f);
npc_do_player_collision(npc);
npc_do_other_npc_collision(npc);
if (npc->flags & NPC_FLAG_MOTION_BLUR) {
update_npc_blur(npc);
}
if ((npc->pos.y < -2000.0f) && !(npc->flags & NPC_FLAG_PARTICLE)) {
npc->pos.y = playerStatus->position.y;
npc->jumpVelocity = 0.0f;
npc->moveSpeed = 0.0f;
npc->jumpScale = 0.0f;
npc->flags &= ~NPC_FLAG_NO_Y_MOVEMENT;
}
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_1000000)) {
if (npc->currentAnim.w != 0) {
if (npc->spriteInstanceID >= 0) {
spr_update_sprite(npc->spriteInstanceID, npc->currentAnim.w, npc->animationSpeed);
}
}
}
} else {
spr_update_player_sprite(1, npc->currentAnim.w, npc->animationSpeed);
}
if (npc->flags & NPC_FLAG_HAS_SHADOW) {
Shadow* shadow = get_shadow_by_index(npc->shadowIndex);
EntityModel* entityModel = get_entity_model(shadow->entityModelID);
entityModel->flags &= ~ENTITY_MODEL_FLAGS_200;
if (npc->flags & NPC_FLAG_REFLECT_WALL) {
entityModel->flags |= ENTITY_MODEL_FLAGS_200;
}
x = npc->pos.x;
y = npc->pos.y;
z = npc->pos.z;
if (!(npc->flags & NPC_FLAG_NO_AI)) {
if (
x != npc->colliderPos.x ||
y != npc->colliderPos.y ||
z != npc->colliderPos.z ||
(npc->flags & NPC_FLAG_DIRTY_SHADOW))
{
x = npc->pos.x;
y = npc->pos.y + (npc->collisionHeight / 2);
z = npc->pos.z;
hitLength = 1000.0f;
entity_raycast_down(&x, &y, &z, &hitYaw, &hitPitch, &hitLength);
set_npc_shadow_scale(shadow, hitLength, npc->collisionRadius);
shadow->position.x = x;
shadow->position.y = y;
shadow->position.z = z;
shadow->rotation.x = hitYaw;
shadow->rotation.y = npc->renderYaw;
shadow->rotation.z = hitPitch;
shadow->scale.x *= npc->shadowScale;
npc->flags &= ~NPC_FLAG_DIRTY_SHADOW;
}
} else {
if (npc->flags & NPC_FLAG_LOCK_ANIMS) {
shadow->position.x = npc->pos.x;
} else {
shadow->position.x = npc->pos.x;
shadow->position.y = npc->pos.y;
}
shadow->position.z = npc->pos.z;
}
}
npc->colliderPos.x = npc->pos.x;
npc->colliderPos.y = npc->pos.y;
npc->colliderPos.z = npc->pos.z;
npc_update_decorations(npc);
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_1000000)) {
if (npc->spriteInstanceID < 0) {
npc->spriteInstanceID++;
if (npc->spriteInstanceID == -1) {
npc->spriteInstanceID = spr_load_npc_sprite(npc->currentAnim.w, npc->extraAnimList);
ASSERT(npc->spriteInstanceID >= 0);
spr_update_sprite(npc->spriteInstanceID, npc->currentAnim.w, npc->animationSpeed);
}
}
}
}
}
}
}
}
}
// float regalloc, issue at the bottom with a mov.s
#ifdef NON_MATCHING
f32 npc_get_render_yaw(Npc* npc) {
Camera* camera = &gCameras[gCurrentCamID];
f32 cameraYaw;
f32 temp;
s32 phi_s0;
if (!(gOverrideFlags & (GLOBAL_OVERRIDES_8000 | GLOBAL_OVERRIDES_4000))) {
cameraYaw = camera->currentYaw;
temp = get_clamped_angle_diff(cameraYaw, npc->yaw);
if (temp < -5.0f && temp > -175.0f) {
phi_s0 = 0;
temp = clamp_angle(0.0f);
} else if (temp > 5.0f && temp < 175.0f) {
phi_s0 = 1;
temp = clamp_angle(180.0f);
} else {
phi_s0 = 2;
temp = clamp_angle(npc->yawCamOffset);
}
npc->yawCamOffset = temp;
if (!(npc->flags & NPC_FLAG_40000)) {
if (npc->isFacingAway != phi_s0 && phi_s0 != 2) {
npc->isFacingAway = phi_s0;
if (npc->isFacingAway) {
npc->turnAroundYawAdjustment = 180;
} else {
npc->turnAroundYawAdjustment = -180;
}
if (fabsf(get_clamped_angle_diff(cameraYaw, npc->yaw)) >= 90.0f) {
npc->turnAroundYawAdjustment = -npc->turnAroundYawAdjustment;
}
}
if (npc->turnAroundYawAdjustment != 0) {
if (npc->turnAroundYawAdjustment < 0) {
npc->turnAroundYawAdjustment += 20;
}
if (npc->turnAroundYawAdjustment > 0) {
npc->turnAroundYawAdjustment -= 20;
}
}
if (npc->flags & NPC_FLAG_200000) {
npc->turnAroundYawAdjustment = 0;
}
temp = clamp_angle(clamp_angle(npc->turnAroundYawAdjustment + temp) - cameraYaw);
npc->renderYaw = temp;
return temp;
}
}
return npc->renderYaw;
}
#else
INCLUDE_ASM(f32, "npc", npc_get_render_yaw); INCLUDE_ASM(f32, "npc", npc_get_render_yaw);
#endif
#ifdef NON_EQUIVALENT
// float regalloc
void appendGfx_npc(Npc* npc) { void appendGfx_npc(Npc* npc) {
Matrix4f subroutine_arg6; Matrix4f mtx1, mtx2;
Matrix4f subroutine_arg16; f32 renderYaw = npc_get_render_yaw(npc);
f32 temp_f22 = npc_get_render_yaw();
guTranslateF(subroutine_arg6, npc->pos.x, npc->pos.y + npc->unk_AB, npc->pos.z); guTranslateF(mtx1, npc->pos.x, npc->pos.y + npc->unk_AB, npc->pos.z);
if (npc->flags & NPC_FLAG_UPSIDE_DOWN) { if (npc->flags & NPC_FLAG_UPSIDE_DOWN) {
mtx_ident_mirror_y(subroutine_arg16); mtx_ident_mirror_y(mtx2);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (npc->rotationVerticalPivotOffset != 0.0f) { if (npc->rotationVerticalPivotOffset != 0.0f) {
guTranslateF(subroutine_arg16, 0.0f, npc->rotationVerticalPivotOffset, 0.0f); guTranslateF(mtx2, 0.0f, npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (npc->rotation.y != 0.0f) { if (npc->rotation.y != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.y, 0.0f, 1.0f, 0.0f); guRotateF(mtx2, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (npc->rotation.x != 0.0f) { if (npc->rotation.x != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.x, 1.0f, 0.0f, 0.0f); guRotateF(mtx2, npc->rotation.x, 1.0f, 0.0f, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (npc->rotation.z != 0.0f) { if (npc->rotation.z != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.z, 0.0f, 0.0f, 1.0f); guRotateF(mtx2, npc->rotation.z, 0.0f, 0.0f, 1.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (npc->rotationVerticalPivotOffset != 0.0f) { if (npc->rotationVerticalPivotOffset != 0.0f) {
guTranslateF(subroutine_arg16, 0.0f, -npc->rotationVerticalPivotOffset, 0.0f); guTranslateF(mtx2, 0.0f, -npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if ((npc->screenSpaceOffset2D[0] != 0.0f) || (npc->screenSpaceOffset2D[1] != 0.0f)) { if ((npc->screenSpaceOffset2D[0] != 0.0f) || (npc->screenSpaceOffset2D[1] != 0.0f)) {
guTranslateF(subroutine_arg6, npc->screenSpaceOffset2D[0], npc->screenSpaceOffset2D[1], 0.0f); guTranslateF(mtx1, npc->screenSpaceOffset2D[0], npc->screenSpaceOffset2D[1], 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if ((npc->scale.x * (5.0 / 7) != 1.0f) || ((npc->scale.y * npc->verticalStretch) * (5.0 / 7) != 1.0f) if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
|| (npc->scale.z * (5.0 / 7) != 1.0f)) { || (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f)) {
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7), guScaleF(mtx2, npc->scale.x * SPRITE_PIXEL_SCALE, (npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE,
npc->scale.z * (5.0 / 7)); npc->scale.z * SPRITE_PIXEL_SCALE);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) { if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_100000) && (npc->currentAnim.w != 0) && (npc->spriteInstanceID >= 0)) { if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0) && (npc->spriteInstanceID >= 0)) {
npc_draw_with_palswap(npc, temp_f22, subroutine_arg6); npc_draw_with_palswap(npc, renderYaw, mtx1);
npc->unk_2C = func_802DE5C8(npc->spriteInstanceID); npc->unk_2C = func_802DE5C8(npc->spriteInstanceID);
} }
} else { } else {
npc_draw_with_palswap(npc, temp_f22, subroutine_arg6); npc_draw_with_palswap(npc, renderYaw, mtx1);
npc->unk_2C = func_802DDEC4(1); npc->unk_2C = func_802DDEC4(1);
} }
if (npc->flags & NPC_FLAG_REFLECT_WALL) { if (npc->flags & NPC_FLAG_REFLECT_WALL) {
guTranslateF(subroutine_arg6, npc->pos.x, npc->pos.y + npc->unk_AB, -npc->pos.z); guTranslateF(mtx1, npc->pos.x, npc->pos.y + npc->unk_AB, -npc->pos.z);
if (npc->flags & NPC_FLAG_UPSIDE_DOWN) { if (npc->flags & NPC_FLAG_UPSIDE_DOWN) {
mtx_ident_mirror_y(subroutine_arg16); mtx_ident_mirror_y(mtx2);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if ((npc->rotation.y != 0.0f) || (npc->rotation.x != 0.0f) || (npc->rotation.z != 0.0f)) { if ((npc->rotation.y != 0.0f) || (npc->rotation.x != 0.0f) || (npc->rotation.z != 0.0f)) {
guRotateRPYF(subroutine_arg16, npc->rotation.x, npc->rotation.y, npc->rotation.z); guRotateRPYF(mtx2, npc->rotation.x, npc->rotation.y, npc->rotation.z);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if ((npc->scale.x * (5.0 / 7) != 1.0f) || ((npc->scale.y * npc->verticalStretch) * (5.0 / 7) != 1.0f)
|| (npc->scale.z * (5.0 / 7) != 1.0f)) { if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7), || (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f))
npc->scale.z * (5.0 / 7)); {
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); do {
guScaleF(mtx2, npc->scale.x * SPRITE_PIXEL_SCALE,
(npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE,
npc->scale.z * SPRITE_PIXEL_SCALE);
} while (0); // required to match (macro?)
guMtxCatF(mtx2, mtx1, mtx1);
} }
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) { if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0)) { if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0)) {
spr_draw_npc_sprite(npc->spriteInstanceID, temp_f22, 0, 0, subroutine_arg6); spr_draw_npc_sprite(npc->spriteInstanceID, renderYaw, 0, 0, mtx1);
} }
} else { } else {
spr_draw_player_sprite(0x40000001, temp_f22, 0, 0, subroutine_arg6); spr_draw_player_sprite(0x40000001, renderYaw, 0, 0, mtx1);
} }
} }
if (npc->flags & NPC_FLAG_REFLECT_FLOOR) { if (npc->flags & NPC_FLAG_REFLECT_FLOOR) {
guTranslateF(subroutine_arg6, npc->pos.x, -(npc->pos.y + npc->unk_AB), npc->pos.z); guTranslateF(mtx1, npc->pos.x, -(npc->pos.y + npc->unk_AB), npc->pos.z);
mtx_ident_mirror_y(subroutine_arg16); mtx_ident_mirror_y(mtx2);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
if (npc->rotation.y != 0.0f || npc->rotation.x != 0.0f || npc->rotation.z != 0.0f) { if (npc->rotation.y != 0.0f || npc->rotation.x != 0.0f || npc->rotation.z != 0.0f) {
guRotateRPYF(subroutine_arg16, npc->rotation.x, npc->rotation.y, npc->rotation.z); guRotateRPYF(mtx2, npc->rotation.x, npc->rotation.y, npc->rotation.z);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guMtxCatF(mtx2, mtx1, mtx1);
} }
if ((npc->scale.x * (5.0 / 7) != 1.0f) || ((npc->scale.y * npc->verticalStretch) * (5.0 / 7) != 1.0f) if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
|| (npc->scale.z * (5.0 / 7) != 1.0f)) { || (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f))
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7), {
npc->scale.z * (5.0 / 7)); do {
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6); guScaleF(mtx2, npc->scale.x * SPRITE_PIXEL_SCALE,
} (npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE,
npc->scale.z * SPRITE_PIXEL_SCALE);
} while (0); // required to match (macro?)
guMtxCatF(mtx2, mtx1, mtx1);
}
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) { if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0)) { if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0)) {
spr_draw_npc_sprite(npc->spriteInstanceID, temp_f22, 0, 0, subroutine_arg6); spr_draw_npc_sprite(npc->spriteInstanceID, renderYaw, 0, 0, mtx1);
} }
} else { } else {
spr_draw_player_sprite(0x40000001, temp_f22, 0, 0, subroutine_arg6); spr_draw_player_sprite(0x40000001, renderYaw, 0, 0, mtx1);
} }
} }
npc->onRender(npc); npc->onRender(npc);
} }
#else
INCLUDE_ASM(void, "npc", appendGfx_npc, Npc* npc);
#endif
void render_npcs(void) { void render_npcs(void) {
f32 temp_f20; f32 temp_f20;
@ -847,27 +1106,27 @@ void npc_set_palswap_2(Npc* npc, s32 timeHoldB, s32 timeBA, s32 palIndexC, s32 p
npc->unk_316 = palIndexD; npc->unk_316 = palIndexD;
} }
void npc_draw_with_palswap(Npc* npc, s32 arg1, s32 arg2) { void npc_draw_with_palswap(Npc* npc, s32 arg1, Matrix4f mtx) {
switch (npc->palSwapType) { switch (npc->palSwapType) {
case 0: case 0:
npc_draw_palswap_mode_0(npc, arg1, arg2); npc_draw_palswap_mode_0(npc, arg1, mtx);
break; break;
case 1: case 1:
npc_draw_palswap_mode_1(npc, arg1, arg2); npc_draw_palswap_mode_1(npc, arg1, mtx);
break; break;
case 2: case 2:
npc_draw_palswap_mode_2(npc, arg1, 0, arg2); npc_draw_palswap_mode_2(npc, arg1, 0, mtx);
break; break;
case 3: case 3:
npc_draw_palswap_mode_2(npc, arg1, 1, arg2); npc_draw_palswap_mode_2(npc, arg1, 1, mtx);
break; break;
case 4: case 4:
npc_draw_palswap_mode_4(npc, arg1, arg2); npc_draw_palswap_mode_4(npc, arg1, mtx);
break; break;
} }
} }
void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, s32 arg2) { void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, Matrix4f mtx) {
if (npc->dirtyPalettes != 0) { if (npc->dirtyPalettes != 0) {
npc->screenSpaceOffset2D[0] = 0.0f; npc->screenSpaceOffset2D[0] = 0.0f;
npc->screenSpaceOffset2D[1] = 0.0f; npc->screenSpaceOffset2D[1] = 0.0f;
@ -878,15 +1137,21 @@ void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, s32 arg2) {
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) { if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
s32 temp_a2 = (npc->alpha * npc->alpha2 / 255); s32 temp_a2 = (npc->alpha * npc->alpha2 / 255);
s32 temp = temp_a2 < 255; // TODO: better match? s32 temp = temp_a2 < 255; // TODO: better match?
spr_draw_npc_sprite(npc->spriteInstanceID | (temp) << 31, arg1, temp_a2, NULL, arg2); spr_draw_npc_sprite(npc->spriteInstanceID | (temp) << 31, arg1, temp_a2, NULL, mtx);
} else { } else {
spr_draw_player_sprite(0x40000001, arg1, 0, 0, arg2); spr_draw_player_sprite(0x40000001, arg1, 0, 0, mtx);
} }
} }
INCLUDE_ASM(s32, "npc", npc_draw_palswap_mode_1); INCLUDE_ASM(s32, "npc", npc_draw_palswap_mode_1);
INCLUDE_ASM(s32, "npc", npc_blend_palette_colors); u16 npc_blend_palette_colors(u16 colorA, u16 colorB, s32 lerpAlpha) {
u32 r = ((((colorA >> 11) & 0x1F) * (255 - lerpAlpha)) + (((colorB >> 11) & 0x1F) * lerpAlpha)) / 255;
u32 g = ((((colorA >> 6) & 0x1F) * (255 - lerpAlpha)) + (((colorB >> 6) & 0x1F) * lerpAlpha)) / 255;
u32 b = ((((colorA >> 1) & 0x1F) * (255 - lerpAlpha)) + (((colorB >> 1) & 0x1F) * lerpAlpha)) / 255;
return (colorB & 1) | (((r & 0xFF) << 11) | ((g & 0xFF) << 6) | ((b & 0xFF) << 1));
}
INCLUDE_ASM(s32, "npc", npc_draw_palswap_mode_2); INCLUDE_ASM(s32, "npc", npc_draw_palswap_mode_2);
@ -1259,8 +1524,6 @@ s32 npc_get_collider_below(Npc* npc) {
return 0; return 0;
} }
#ifdef NON_EQUIVALENT
// Rodata issue. Most likely the last function in the TU with a jumptable.
void func_8003D3BC(Npc* npc) { void func_8003D3BC(Npc* npc) {
s32 temp_s4 = npc->unk_98; s32 temp_s4 = npc->unk_98;
s32 temp_s0 = npc->unk_9A; s32 temp_s0 = npc->unk_9A;
@ -1279,6 +1542,7 @@ void func_8003D3BC(Npc* npc) {
case 2: case 2:
case 3: case 3:
npc->renderMode = 13; npc->renderMode = 13;
// fallthrough
case 1: case 1:
func_802DE894(npc->spriteInstanceID, temp_s4, 0, 0, 0, 0, temp_s3); func_802DE894(npc->spriteInstanceID, temp_s4, 0, 0, 0, 0, temp_s3);
break; break;
@ -1328,9 +1592,6 @@ void func_8003D3BC(Npc* npc) {
break; break;
} }
} }
#else
INCLUDE_ASM(void, "npc", func_8003D3BC, Npc* npc);
#endif
void func_8003D624(Npc* npc, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) { void func_8003D624(Npc* npc, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
npc->unk_98 = arg1; npc->unk_98 = arg1;

View File

@ -40,6 +40,7 @@ extern HudScript HudScript_StatusStar4[];
extern HudScript HudScript_StatusStar5[]; extern HudScript HudScript_StatusStar5[];
extern HudScript HudScript_StatusStar6[]; extern HudScript HudScript_StatusStar6[];
extern HudScript HudScript_StatusStar7[]; extern HudScript HudScript_StatusStar7[];
extern HudScript HudScript_StatusStarEmpty[];
extern HudScript HudScript_StatTimes[]; extern HudScript HudScript_StatTimes[];
extern HudScript HudScript_ListPrevPage[]; extern HudScript HudScript_ListPrevPage[];
extern HudScript HudScript_ListNextPage[]; extern HudScript HudScript_ListNextPage[];
@ -59,6 +60,7 @@ extern HudScript HudScript_StatusSPIncrement4[];
extern HudScript HudScript_StatusSPIncrement5[]; extern HudScript HudScript_StatusSPIncrement5[];
extern HudScript HudScript_StatusSPIncrement6[]; extern HudScript HudScript_StatusSPIncrement6[];
extern HudScript HudScript_StatusSPIncrement7[]; extern HudScript HudScript_StatusSPIncrement7[];
extern HudScript HudScript_StatusSPEmptyIncrement[];
extern HudScriptPair gItemHudScripts[]; extern HudScriptPair gItemHudScripts[];
extern WindowStyleCustom gPauseWS_0; extern WindowStyleCustom gPauseWS_0;

View File

@ -51,7 +51,7 @@ HudScript* gPauseStatsSPIncElements[] = { HudScript_StatusSPIncrement1, HudScrip
HudScript* gPauseStatsStarElements[] = { HudScript_StatusStar1, HudScript_StatusStar3, HudScript_StatusStar2, HudScript* gPauseStatsStarElements[] = { HudScript_StatusStar1, HudScript_StatusStar3, HudScript_StatusStar2,
HudScript_StatusStar4, HudScript_StatusStar5, HudScript_StatusStar6, HudScript_StatusStar4, HudScript_StatusStar5, HudScript_StatusStar6,
HudScript_StatusStar7 }; HudScript_StatusStar7 };
// TODO replace with array when pause_stats_draw_contents is matched //s32 D_8024F46C[] = { -1, 1, 2, 4, 5, 7, 8 };
s32 D_8024F46C = -1; s32 D_8024F46C = -1;
s32 D_8024F470 = 1; s32 D_8024F470 = 1;
s32 D_8024F474 = 2; s32 D_8024F474 = 2;

View File

@ -13,18 +13,15 @@
#define TITLE_POS_TOP 15 // Top edge of the texture on screen (with no offset) #define TITLE_POS_TOP 15 // Top edge of the texture on screen (with no offset)
s16 D_800779C0[2] = {0, 0}; s16 D_800779C0[2] = {0, 0};
s32 gSaveSlotMetadata = 0;
s8 D_800779C8[2] = {0, 0}; SaveMetadata gSaveSlotMetadata[4] = {
s8 D_800779CA = 0; { .filename = {"ERROR\xf7\xf7\xf7"}, },
s8 D_800779CB = 0x45; { .filename = {"ERROR\xf7\xf7\xf7"}, },
s32 D_800779CC = 0x52524F52; { .filename = {"ERROR\xf7\xf7\xf7"}, },
s32 D_800779D0 = 0xF7F7F700; { .filename = {"ERROR\xf7\xf7\xf7"}, },
s32 D_800779D4 = 0; };
s32 D_800779D8[] = { 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000,
0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52, u8 gSaveSlotHasData[4] = {TRUE, TRUE, TRUE, TRUE};
0xF7F7F700, 0x00000000, 0x00000000,
};
s32 gSaveSlotHasData = 0x01010101;
s32 D_80077A28 = 0; s32 D_80077A28 = 0;
s32 D_80077A2C = 0; s32 D_80077A2C = 0;
s32 D_80077A30 = 0; s32 D_80077A30 = 0;

View File

@ -1,544 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel filemenu_draw_contents_copy_arrow
/* 16491C 802440BC 3C048025 */ lui $a0, %hi(filemenu_menus)
/* 164920 802440C0 8C849B84 */ lw $a0, %lo(filemenu_menus)($a0)
/* 164924 802440C4 27BDFF08 */ addiu $sp, $sp, -0xf8
/* 164928 802440C8 AFBF00C4 */ sw $ra, 0xc4($sp)
/* 16492C 802440CC AFBE00C0 */ sw $fp, 0xc0($sp)
/* 164930 802440D0 AFB700BC */ sw $s7, 0xbc($sp)
/* 164934 802440D4 AFB600B8 */ sw $s6, 0xb8($sp)
/* 164938 802440D8 AFB500B4 */ sw $s5, 0xb4($sp)
/* 16493C 802440DC AFB400B0 */ sw $s4, 0xb0($sp)
/* 164940 802440E0 AFB300AC */ sw $s3, 0xac($sp)
/* 164944 802440E4 AFB200A8 */ sw $s2, 0xa8($sp)
/* 164948 802440E8 AFB100A4 */ sw $s1, 0xa4($sp)
/* 16494C 802440EC AFB000A0 */ sw $s0, 0xa0($sp)
/* 164950 802440F0 F7BE00F0 */ sdc1 $f30, 0xf0($sp)
/* 164954 802440F4 F7BC00E8 */ sdc1 $f28, 0xe8($sp)
/* 164958 802440F8 F7BA00E0 */ sdc1 $f26, 0xe0($sp)
/* 16495C 802440FC F7B800D8 */ sdc1 $f24, 0xd8($sp)
/* 164960 80244100 F7B600D0 */ sdc1 $f22, 0xd0($sp)
/* 164964 80244104 F7B400C8 */ sdc1 $f20, 0xc8($sp)
/* 164968 80244108 80830004 */ lb $v1, 4($a0)
/* 16496C 8024410C 24020004 */ addiu $v0, $zero, 4
/* 164970 80244110 146201E1 */ bne $v1, $v0, .L80244898
/* 164974 80244114 00000000 */ nop
/* 164978 80244118 90820003 */ lbu $v0, 3($a0)
/* 16497C 8024411C 2C420004 */ sltiu $v0, $v0, 4
/* 164980 80244120 104001DD */ beqz $v0, .L80244898
/* 164984 80244124 00000000 */ nop
/* 164988 80244128 90820003 */ lbu $v0, 3($a0)
/* 16498C 8024412C 3C038025 */ lui $v1, %hi(filemenu_loadedFileIdx)
/* 164990 80244130 8C63C094 */ lw $v1, %lo(filemenu_loadedFileIdx)($v1)
/* 164994 80244134 104301D8 */ beq $v0, $v1, .L80244898
/* 164998 80244138 24040002 */ addiu $a0, $zero, 2
/* 16499C 8024413C 3C028025 */ lui $v0, %hi(filemenu_8024C098)
/* 1649A0 80244140 8042C098 */ lb $v0, %lo(filemenu_8024C098)($v0)
/* 1649A4 80244144 104401D4 */ beq $v0, $a0, .L80244898
/* 1649A8 80244148 24020001 */ addiu $v0, $zero, 1
/* 1649AC 8024414C 10620011 */ beq $v1, $v0, .L80244194
/* 1649B0 80244150 0064102A */ slt $v0, $v1, $a0
/* 1649B4 80244154 10400005 */ beqz $v0, .L8024416C
/* 1649B8 80244158 00000000 */ nop
/* 1649BC 8024415C 10600007 */ beqz $v1, .L8024417C
/* 1649C0 80244160 00000000 */ nop
/* 1649C4 80244164 0809106F */ j .L802441BC
/* 1649C8 80244168 00000000 */ nop
.L8024416C:
/* 1649CC 8024416C 1064000F */ beq $v1, $a0, .L802441AC
/* 1649D0 80244170 00000000 */ nop
/* 1649D4 80244174 0809106F */ j .L802441BC
/* 1649D8 80244178 00000000 */ nop
.L8024417C:
/* 1649DC 8024417C 3C014302 */ lui $at, 0x4302
/* 1649E0 80244180 4481C000 */ mtc1 $at, $f24
/* 1649E4 80244184 3C0142B4 */ lui $at, 0x42b4
/* 1649E8 80244188 4481B000 */ mtc1 $at, $f22
/* 1649EC 8024418C 08091073 */ j .L802441CC
/* 1649F0 80244190 00000000 */ nop
.L80244194:
/* 1649F4 80244194 3C01433E */ lui $at, 0x433e
/* 1649F8 80244198 4481C000 */ mtc1 $at, $f24
/* 1649FC 8024419C 3C0142B4 */ lui $at, 0x42b4
/* 164A00 802441A0 4481B000 */ mtc1 $at, $f22
/* 164A04 802441A4 08091073 */ j .L802441CC
/* 164A08 802441A8 00000000 */ nop
.L802441AC:
/* 164A0C 802441AC 3C014302 */ lui $at, 0x4302
/* 164A10 802441B0 4481C000 */ mtc1 $at, $f24
/* 164A14 802441B4 08091071 */ j .L802441C4
/* 164A18 802441B8 00000000 */ nop
.L802441BC:
/* 164A1C 802441BC 3C01433E */ lui $at, 0x433e
/* 164A20 802441C0 4481C000 */ mtc1 $at, $f24
.L802441C4:
/* 164A24 802441C4 3C014316 */ lui $at, 0x4316
/* 164A28 802441C8 4481B000 */ mtc1 $at, $f22
.L802441CC:
/* 164A2C 802441CC 3C028025 */ lui $v0, %hi(filemenu_menus)
/* 164A30 802441D0 8C429B84 */ lw $v0, %lo(filemenu_menus)($v0)
/* 164A34 802441D4 90430003 */ lbu $v1, 3($v0)
/* 164A38 802441D8 24020001 */ addiu $v0, $zero, 1
/* 164A3C 802441DC 10620012 */ beq $v1, $v0, .L80244228
/* 164A40 802441E0 00000000 */ nop
/* 164A44 802441E4 28620002 */ slti $v0, $v1, 2
/* 164A48 802441E8 50400005 */ beql $v0, $zero, .L80244200
/* 164A4C 802441EC 24020002 */ addiu $v0, $zero, 2
/* 164A50 802441F0 10600007 */ beqz $v1, .L80244210
/* 164A54 802441F4 00000000 */ nop
/* 164A58 802441F8 08091094 */ j .L80244250
/* 164A5C 802441FC 00000000 */ nop
.L80244200:
/* 164A60 80244200 1062000F */ beq $v1, $v0, .L80244240
/* 164A64 80244204 00000000 */ nop
/* 164A68 80244208 08091094 */ j .L80244250
/* 164A6C 8024420C 00000000 */ nop
.L80244210:
/* 164A70 80244210 3C014302 */ lui $at, 0x4302
/* 164A74 80244214 44811000 */ mtc1 $at, $f2
/* 164A78 80244218 3C0142B4 */ lui $at, 0x42b4
/* 164A7C 8024421C 44810000 */ mtc1 $at, $f0
/* 164A80 80244220 08091099 */ j .L80244264
/* 164A84 80244224 3C130001 */ lui $s3, 1
.L80244228:
/* 164A88 80244228 3C01433E */ lui $at, 0x433e
/* 164A8C 8024422C 44811000 */ mtc1 $at, $f2
/* 164A90 80244230 3C0142B4 */ lui $at, 0x42b4
/* 164A94 80244234 44810000 */ mtc1 $at, $f0
/* 164A98 80244238 08091099 */ j .L80244264
/* 164A9C 8024423C 3C130001 */ lui $s3, 1
.L80244240:
/* 164AA0 80244240 3C014302 */ lui $at, 0x4302
/* 164AA4 80244244 44811000 */ mtc1 $at, $f2
/* 164AA8 80244248 08091096 */ j .L80244258
/* 164AAC 8024424C 00000000 */ nop
.L80244250:
/* 164AB0 80244250 3C01433E */ lui $at, 0x433e
/* 164AB4 80244254 44811000 */ mtc1 $at, $f2
.L80244258:
/* 164AB8 80244258 3C014316 */ lui $at, 0x4316
/* 164ABC 8024425C 44810000 */ mtc1 $at, $f0
/* 164AC0 80244260 3C130001 */ lui $s3, 1
.L80244264:
/* 164AC4 80244264 36731630 */ ori $s3, $s3, 0x1630
/* 164AC8 80244268 3C15DA38 */ lui $s5, 0xda38
/* 164ACC 8024426C 36B50002 */ ori $s5, $s5, 2
/* 164AD0 80244270 3C16D838 */ lui $s6, 0xd838
/* 164AD4 80244274 36D60002 */ ori $s6, $s6, 2
/* 164AD8 80244278 4600C306 */ mov.s $f12, $f24
/* 164ADC 8024427C 44061000 */ mfc1 $a2, $f2
/* 164AE0 80244280 44070000 */ mfc1 $a3, $f0
/* 164AE4 80244284 0C00A720 */ jal atan2
/* 164AE8 80244288 4600B386 */ mov.s $f14, $f22
/* 164AEC 8024428C 3C08DC08 */ lui $t0, 0xdc08
/* 164AF0 80244290 35080008 */ ori $t0, $t0, 8
/* 164AF4 80244294 27A40020 */ addiu $a0, $sp, 0x20
/* 164AF8 80244298 3C11800A */ lui $s1, %hi(gMasterGfxPos)
/* 164AFC 8024429C 2631A66C */ addiu $s1, $s1, %lo(gMasterGfxPos)
/* 164B00 802442A0 4480A000 */ mtc1 $zero, $f20
/* 164B04 802442A4 8E220000 */ lw $v0, ($s1)
/* 164B08 802442A8 3C0643A0 */ lui $a2, 0x43a0
/* 164B0C 802442AC 3C074370 */ lui $a3, 0x4370
/* 164B10 802442B0 3C01C2C8 */ lui $at, 0xc2c8
/* 164B14 802442B4 44811000 */ mtc1 $at, $f2
/* 164B18 802442B8 3C0142C8 */ lui $at, 0x42c8
/* 164B1C 802442BC 44812000 */ mtc1 $at, $f4
/* 164B20 802442C0 3C013F80 */ lui $at, 0x3f80
/* 164B24 802442C4 4481D000 */ mtc1 $at, $f26
/* 164B28 802442C8 0040182D */ daddu $v1, $v0, $zero
/* 164B2C 802442CC 4405A000 */ mfc1 $a1, $f20
/* 164B30 802442D0 24420008 */ addiu $v0, $v0, 8
/* 164B34 802442D4 AE220000 */ sw $v0, ($s1)
/* 164B38 802442D8 3C028025 */ lui $v0, %hi(D_80249D60)
/* 164B3C 802442DC 24429D60 */ addiu $v0, $v0, %lo(D_80249D60)
/* 164B40 802442E0 AC680000 */ sw $t0, ($v1)
/* 164B44 802442E4 AC620004 */ sw $v0, 4($v1)
/* 164B48 802442E8 E7A20014 */ swc1 $f2, 0x14($sp)
/* 164B4C 802442EC 3C0142B4 */ lui $at, 0x42b4
/* 164B50 802442F0 44811000 */ mtc1 $at, $f2
/* 164B54 802442F4 46000007 */ neg.s $f0, $f0
/* 164B58 802442F8 E7B40010 */ swc1 $f20, 0x10($sp)
/* 164B5C 802442FC E7A40018 */ swc1 $f4, 0x18($sp)
/* 164B60 80244300 E7BA001C */ swc1 $f26, 0x1c($sp)
/* 164B64 80244304 0C018E44 */ jal guOrthoF
/* 164B68 80244308 46020701 */ sub.s $f28, $f0, $f2
/* 164B6C 8024430C 27A40020 */ addiu $a0, $sp, 0x20
/* 164B70 80244310 3C128007 */ lui $s2, %hi(gMatrixListPos)
/* 164B74 80244314 265241F0 */ addiu $s2, $s2, %lo(gMatrixListPos)
/* 164B78 80244318 3C14800A */ lui $s4, %hi(gDisplayContext)
/* 164B7C 8024431C 2694A674 */ addiu $s4, $s4, %lo(gDisplayContext)
/* 164B80 80244320 96450000 */ lhu $a1, ($s2)
/* 164B84 80244324 8E820000 */ lw $v0, ($s4)
/* 164B88 80244328 00052980 */ sll $a1, $a1, 6
/* 164B8C 8024432C 00B32821 */ addu $a1, $a1, $s3
/* 164B90 80244330 0C019D40 */ jal guMtxF2L
/* 164B94 80244334 00452821 */ addu $a1, $v0, $a1
/* 164B98 80244338 3C03DA38 */ lui $v1, 0xda38
/* 164B9C 8024433C 34630007 */ ori $v1, $v1, 7
/* 164BA0 80244340 27A40020 */ addiu $a0, $sp, 0x20
/* 164BA4 80244344 8E280000 */ lw $t0, ($s1)
/* 164BA8 80244348 3C014080 */ lui $at, 0x4080
/* 164BAC 8024434C 44810000 */ mtc1 $at, $f0
/* 164BB0 80244350 4407A000 */ mfc1 $a3, $f20
/* 164BB4 80244354 96420000 */ lhu $v0, ($s2)
/* 164BB8 80244358 3C01BF80 */ lui $at, 0xbf80
/* 164BBC 8024435C 4481F000 */ mtc1 $at, $f30
/* 164BC0 80244360 0100482D */ daddu $t1, $t0, $zero
/* 164BC4 80244364 25080008 */ addiu $t0, $t0, 8
/* 164BC8 80244368 AE280000 */ sw $t0, ($s1)
/* 164BCC 8024436C AD230000 */ sw $v1, ($t1)
/* 164BD0 80244370 24430001 */ addiu $v1, $v0, 1
/* 164BD4 80244374 3042FFFF */ andi $v0, $v0, 0xffff
/* 164BD8 80244378 00021180 */ sll $v0, $v0, 6
/* 164BDC 8024437C 00531021 */ addu $v0, $v0, $s3
/* 164BE0 80244380 4600C180 */ add.s $f6, $f24, $f0
/* 164BE4 80244384 A6430000 */ sh $v1, ($s2)
/* 164BE8 80244388 8E830000 */ lw $v1, ($s4)
/* 164BEC 8024438C 4600B000 */ add.s $f0, $f22, $f0
/* 164BF0 80244390 00621821 */ addu $v1, $v1, $v0
/* 164BF4 80244394 25020008 */ addiu $v0, $t0, 8
/* 164BF8 80244398 AD230004 */ sw $v1, 4($t1)
/* 164BFC 8024439C 3C0BDE00 */ lui $t3, 0xde00
/* 164C00 802443A0 AE220000 */ sw $v0, ($s1)
/* 164C04 802443A4 3C028025 */ lui $v0, %hi(D_8024B600)
/* 164C08 802443A8 2442B600 */ addiu $v0, $v0, %lo(D_8024B600)
/* 164C0C 802443AC AD020004 */ sw $v0, 4($t0)
/* 164C10 802443B0 25020010 */ addiu $v0, $t0, 0x10
/* 164C14 802443B4 AD0B0000 */ sw $t3, ($t0)
/* 164C18 802443B8 3C0BFA00 */ lui $t3, 0xfa00
/* 164C1C 802443BC AE220000 */ sw $v0, ($s1)
/* 164C20 802443C0 24020080 */ addiu $v0, $zero, 0x80
/* 164C24 802443C4 AD02000C */ sw $v0, 0xc($t0)
/* 164C28 802443C8 25020018 */ addiu $v0, $t0, 0x18
/* 164C2C 802443CC AD0B0008 */ sw $t3, 8($t0)
/* 164C30 802443D0 44053000 */ mfc1 $a1, $f6
/* 164C34 802443D4 44060000 */ mfc1 $a2, $f0
/* 164C38 802443D8 3C0BFB00 */ lui $t3, 0xfb00
/* 164C3C 802443DC AE220000 */ sw $v0, ($s1)
/* 164C40 802443E0 AD0B0010 */ sw $t3, 0x10($t0)
/* 164C44 802443E4 0C019E40 */ jal guTranslateF
/* 164C48 802443E8 AD000014 */ sw $zero, 0x14($t0)
/* 164C4C 802443EC 27B00060 */ addiu $s0, $sp, 0x60
/* 164C50 802443F0 4405F000 */ mfc1 $a1, $f30
/* 164C54 802443F4 4406D000 */ mfc1 $a2, $f26
/* 164C58 802443F8 4407D000 */ mfc1 $a3, $f26
/* 164C5C 802443FC 0C019DF0 */ jal guScaleF
/* 164C60 80244400 0200202D */ daddu $a0, $s0, $zero
/* 164C64 80244404 0200202D */ daddu $a0, $s0, $zero
/* 164C68 80244408 27A50020 */ addiu $a1, $sp, 0x20
/* 164C6C 8024440C 0C019D80 */ jal guMtxCatF
/* 164C70 80244410 00A0302D */ daddu $a2, $a1, $zero
/* 164C74 80244414 4405E000 */ mfc1 $a1, $f28
/* 164C78 80244418 4406A000 */ mfc1 $a2, $f20
/* 164C7C 8024441C 4407A000 */ mfc1 $a3, $f20
/* 164C80 80244420 0200202D */ daddu $a0, $s0, $zero
/* 164C84 80244424 0C019EC8 */ jal guRotateF
/* 164C88 80244428 E7BA0010 */ swc1 $f26, 0x10($sp)
/* 164C8C 8024442C 0200202D */ daddu $a0, $s0, $zero
/* 164C90 80244430 27A50020 */ addiu $a1, $sp, 0x20
/* 164C94 80244434 0C019D80 */ jal guMtxCatF
/* 164C98 80244438 00A0302D */ daddu $a2, $a1, $zero
/* 164C9C 8024443C 27A40020 */ addiu $a0, $sp, 0x20
/* 164CA0 80244440 96450000 */ lhu $a1, ($s2)
/* 164CA4 80244444 8E820000 */ lw $v0, ($s4)
/* 164CA8 80244448 00052980 */ sll $a1, $a1, 6
/* 164CAC 8024444C 00B32821 */ addu $a1, $a1, $s3
/* 164CB0 80244450 0C019D40 */ jal guMtxF2L
/* 164CB4 80244454 00452821 */ addu $a1, $v0, $a1
/* 164CB8 80244458 0200202D */ daddu $a0, $s0, $zero
/* 164CBC 8024445C 3C1E8007 */ lui $fp, %hi(gGameStatusPtr)
/* 164CC0 80244460 27DE419C */ addiu $fp, $fp, %lo(gGameStatusPtr)
/* 164CC4 80244464 8E280000 */ lw $t0, ($s1)
/* 164CC8 80244468 4406A000 */ mfc1 $a2, $f20
/* 164CCC 8024446C 4407A000 */ mfc1 $a3, $f20
/* 164CD0 80244470 96450000 */ lhu $a1, ($s2)
/* 164CD4 80244474 0100482D */ daddu $t1, $t0, $zero
/* 164CD8 80244478 25080008 */ addiu $t0, $t0, 8
/* 164CDC 8024447C 30A2FFFF */ andi $v0, $a1, 0xffff
/* 164CE0 80244480 00021180 */ sll $v0, $v0, 6
/* 164CE4 80244484 AE280000 */ sw $t0, ($s1)
/* 164CE8 80244488 AD350000 */ sw $s5, ($t1)
/* 164CEC 8024448C 8E830000 */ lw $v1, ($s4)
/* 164CF0 80244490 00531021 */ addu $v0, $v0, $s3
/* 164CF4 80244494 00621821 */ addu $v1, $v1, $v0
/* 164CF8 80244498 AD230004 */ sw $v1, 4($t1)
/* 164CFC 8024449C 3C0BDE00 */ lui $t3, 0xde00
/* 164D00 802444A0 AD0B0000 */ sw $t3, ($t0)
/* 164D04 802444A4 3C0B8025 */ lui $t3, %hi(D_8024B6F0)
/* 164D08 802444A8 256BB6F0 */ addiu $t3, $t3, %lo(D_8024B6F0)
/* 164D0C 802444AC AD0B0004 */ sw $t3, 4($t0)
/* 164D10 802444B0 AD160008 */ sw $s6, 8($t0)
/* 164D14 802444B4 8FC20000 */ lw $v0, ($fp)
/* 164D18 802444B8 240B0040 */ addiu $t3, $zero, 0x40
/* 164D1C 802444BC AD0B000C */ sw $t3, 0xc($t0)
/* 164D20 802444C0 94430134 */ lhu $v1, 0x134($v0)
/* 164D24 802444C4 3C0B8888 */ lui $t3, 0x8888
/* 164D28 802444C8 356B8889 */ ori $t3, $t3, 0x8889
/* 164D2C 802444CC 006B0019 */ multu $v1, $t3
/* 164D30 802444D0 24A50001 */ addiu $a1, $a1, 1
/* 164D34 802444D4 25020008 */ addiu $v0, $t0, 8
/* 164D38 802444D8 A6450000 */ sh $a1, ($s2)
/* 164D3C 802444DC AE220000 */ sw $v0, ($s1)
/* 164D40 802444E0 00005810 */ mfhi $t3
/* 164D44 802444E4 000B28C2 */ srl $a1, $t3, 3
/* 164D48 802444E8 00051100 */ sll $v0, $a1, 4
/* 164D4C 802444EC 00451023 */ subu $v0, $v0, $a1
/* 164D50 802444F0 00621823 */ subu $v1, $v1, $v0
/* 164D54 802444F4 3063FFFF */ andi $v1, $v1, 0xffff
/* 164D58 802444F8 00031880 */ sll $v1, $v1, 2
/* 164D5C 802444FC 3C058025 */ lui $a1, %hi(D_80249D70)
/* 164D60 80244500 00A32821 */ addu $a1, $a1, $v1
/* 164D64 80244504 8CA59D70 */ lw $a1, %lo(D_80249D70)($a1)
/* 164D68 80244508 25080010 */ addiu $t0, $t0, 0x10
/* 164D6C 8024450C 0C019E40 */ jal guTranslateF
/* 164D70 80244510 AE280000 */ sw $t0, ($s1)
/* 164D74 80244514 0200202D */ daddu $a0, $s0, $zero
/* 164D78 80244518 27A50020 */ addiu $a1, $sp, 0x20
/* 164D7C 8024451C 0C019D80 */ jal guMtxCatF
/* 164D80 80244520 00A0302D */ daddu $a2, $a1, $zero
/* 164D84 80244524 27A40020 */ addiu $a0, $sp, 0x20
/* 164D88 80244528 96450000 */ lhu $a1, ($s2)
/* 164D8C 8024452C 8E820000 */ lw $v0, ($s4)
/* 164D90 80244530 00052980 */ sll $a1, $a1, 6
/* 164D94 80244534 00B32821 */ addu $a1, $a1, $s3
/* 164D98 80244538 0C019D40 */ jal guMtxF2L
/* 164D9C 8024453C 00452821 */ addu $a1, $v0, $a1
/* 164DA0 80244540 3C178025 */ lui $s7, %hi(D_80249D70)
/* 164DA4 80244544 26F79D70 */ addiu $s7, $s7, %lo(D_80249D70)
/* 164DA8 80244548 8E290000 */ lw $t1, ($s1)
/* 164DAC 8024454C 96430000 */ lhu $v1, ($s2)
/* 164DB0 80244550 0120202D */ daddu $a0, $t1, $zero
/* 164DB4 80244554 25290008 */ addiu $t1, $t1, 8
/* 164DB8 80244558 24620001 */ addiu $v0, $v1, 1
/* 164DBC 8024455C 3063FFFF */ andi $v1, $v1, 0xffff
/* 164DC0 80244560 00031980 */ sll $v1, $v1, 6
/* 164DC4 80244564 00731821 */ addu $v1, $v1, $s3
/* 164DC8 80244568 AE290000 */ sw $t1, ($s1)
/* 164DCC 8024456C AC950000 */ sw $s5, ($a0)
/* 164DD0 80244570 A6420000 */ sh $v0, ($s2)
/* 164DD4 80244574 8E820000 */ lw $v0, ($s4)
/* 164DD8 80244578 8FC50000 */ lw $a1, ($fp)
/* 164DDC 8024457C 00431021 */ addu $v0, $v0, $v1
/* 164DE0 80244580 AC820004 */ sw $v0, 4($a0)
/* 164DE4 80244584 94A30134 */ lhu $v1, 0x134($a1)
/* 164DE8 80244588 25220008 */ addiu $v0, $t1, 8
/* 164DEC 8024458C AE220000 */ sw $v0, ($s1)
/* 164DF0 80244590 000318C0 */ sll $v1, $v1, 3
/* 164DF4 80244594 04610002 */ bgez $v1, .L802445A0
/* 164DF8 80244598 0060102D */ daddu $v0, $v1, $zero
/* 164DFC 8024459C 246201FF */ addiu $v0, $v1, 0x1ff
.L802445A0:
/* 164E00 802445A0 00021243 */ sra $v0, $v0, 9
/* 164E04 802445A4 00021240 */ sll $v0, $v0, 9
/* 164E08 802445A8 00621023 */ subu $v0, $v1, $v0
/* 164E0C 802445AC 30420FFF */ andi $v0, $v0, 0xfff
/* 164E10 802445B0 00021300 */ sll $v0, $v0, 0xc
/* 164E14 802445B4 3C0BF200 */ lui $t3, 0xf200
/* 164E18 802445B8 004B1025 */ or $v0, $v0, $t3
/* 164E1C 802445BC AD220000 */ sw $v0, ($t1)
/* 164E20 802445C0 94A20134 */ lhu $v0, 0x134($a1)
/* 164E24 802445C4 000250C0 */ sll $t2, $v0, 3
/* 164E28 802445C8 05410002 */ bgez $t2, .L802445D4
/* 164E2C 802445CC 0140102D */ daddu $v0, $t2, $zero
/* 164E30 802445D0 254201FF */ addiu $v0, $t2, 0x1ff
.L802445D4:
/* 164E34 802445D4 3C03E6E6 */ lui $v1, 0xe6e6
/* 164E38 802445D8 3463E6FF */ ori $v1, $v1, 0xe6ff
/* 164E3C 802445DC 3C08E828 */ lui $t0, 0xe828
/* 164E40 802445E0 3508A000 */ ori $t0, $t0, 0xa000
/* 164E44 802445E4 27A40020 */ addiu $a0, $sp, 0x20
/* 164E48 802445E8 00021243 */ sra $v0, $v0, 9
/* 164E4C 802445EC 00021240 */ sll $v0, $v0, 9
/* 164E50 802445F0 01421023 */ subu $v0, $t2, $v0
/* 164E54 802445F4 2442003C */ addiu $v0, $v0, 0x3c
/* 164E58 802445F8 30420FFF */ andi $v0, $v0, 0xfff
/* 164E5C 802445FC 00021300 */ sll $v0, $v0, 0xc
/* 164E60 80244600 3C0B0100 */ lui $t3, 0x100
/* 164E64 80244604 004B1025 */ or $v0, $v0, $t3
/* 164E68 80244608 AD220004 */ sw $v0, 4($t1)
/* 164E6C 8024460C 25220010 */ addiu $v0, $t1, 0x10
/* 164E70 80244610 3C0BDE00 */ lui $t3, 0xde00
/* 164E74 80244614 AE220000 */ sw $v0, ($s1)
/* 164E78 80244618 AD2B0008 */ sw $t3, 8($t1)
/* 164E7C 8024461C 3C0B8025 */ lui $t3, %hi(D_8024B708)
/* 164E80 80244620 256BB708 */ addiu $t3, $t3, %lo(D_8024B708)
/* 164E84 80244624 4405C000 */ mfc1 $a1, $f24
/* 164E88 80244628 4406B000 */ mfc1 $a2, $f22
/* 164E8C 8024462C 4407A000 */ mfc1 $a3, $f20
/* 164E90 80244630 25220018 */ addiu $v0, $t1, 0x18
/* 164E94 80244634 AD2B000C */ sw $t3, 0xc($t1)
/* 164E98 80244638 240B0040 */ addiu $t3, $zero, 0x40
/* 164E9C 8024463C AE220000 */ sw $v0, ($s1)
/* 164EA0 80244640 25220020 */ addiu $v0, $t1, 0x20
/* 164EA4 80244644 AD2B0014 */ sw $t3, 0x14($t1)
/* 164EA8 80244648 3C0BFA00 */ lui $t3, 0xfa00
/* 164EAC 8024464C AD360010 */ sw $s6, 0x10($t1)
/* 164EB0 80244650 AE220000 */ sw $v0, ($s1)
/* 164EB4 80244654 25220028 */ addiu $v0, $t1, 0x28
/* 164EB8 80244658 AD2B0018 */ sw $t3, 0x18($t1)
/* 164EBC 8024465C 3C0BFB00 */ lui $t3, 0xfb00
/* 164EC0 80244660 AD23001C */ sw $v1, 0x1c($t1)
/* 164EC4 80244664 AE220000 */ sw $v0, ($s1)
/* 164EC8 80244668 AD2B0020 */ sw $t3, 0x20($t1)
/* 164ECC 8024466C 0C019E40 */ jal guTranslateF
/* 164ED0 80244670 AD280024 */ sw $t0, 0x24($t1)
/* 164ED4 80244674 4405F000 */ mfc1 $a1, $f30
/* 164ED8 80244678 4406D000 */ mfc1 $a2, $f26
/* 164EDC 8024467C 4407D000 */ mfc1 $a3, $f26
/* 164EE0 80244680 0C019DF0 */ jal guScaleF
/* 164EE4 80244684 0200202D */ daddu $a0, $s0, $zero
/* 164EE8 80244688 0200202D */ daddu $a0, $s0, $zero
/* 164EEC 8024468C 27A50020 */ addiu $a1, $sp, 0x20
/* 164EF0 80244690 0C019D80 */ jal guMtxCatF
/* 164EF4 80244694 00A0302D */ daddu $a2, $a1, $zero
/* 164EF8 80244698 4405E000 */ mfc1 $a1, $f28
/* 164EFC 8024469C 4406A000 */ mfc1 $a2, $f20
/* 164F00 802446A0 4407A000 */ mfc1 $a3, $f20
/* 164F04 802446A4 0200202D */ daddu $a0, $s0, $zero
/* 164F08 802446A8 0C019EC8 */ jal guRotateF
/* 164F0C 802446AC E7BA0010 */ swc1 $f26, 0x10($sp)
/* 164F10 802446B0 0200202D */ daddu $a0, $s0, $zero
/* 164F14 802446B4 27A50020 */ addiu $a1, $sp, 0x20
/* 164F18 802446B8 0C019D80 */ jal guMtxCatF
/* 164F1C 802446BC 00A0302D */ daddu $a2, $a1, $zero
/* 164F20 802446C0 27A40020 */ addiu $a0, $sp, 0x20
/* 164F24 802446C4 96450000 */ lhu $a1, ($s2)
/* 164F28 802446C8 8E820000 */ lw $v0, ($s4)
/* 164F2C 802446CC 00052980 */ sll $a1, $a1, 6
/* 164F30 802446D0 00B32821 */ addu $a1, $a1, $s3
/* 164F34 802446D4 0C019D40 */ jal guMtxF2L
/* 164F38 802446D8 00452821 */ addu $a1, $v0, $a1
/* 164F3C 802446DC 8E280000 */ lw $t0, ($s1)
/* 164F40 802446E0 4406A000 */ mfc1 $a2, $f20
/* 164F44 802446E4 96450000 */ lhu $a1, ($s2)
/* 164F48 802446E8 00C0382D */ daddu $a3, $a2, $zero
/* 164F4C 802446EC 0100202D */ daddu $a0, $t0, $zero
/* 164F50 802446F0 25080008 */ addiu $t0, $t0, 8
/* 164F54 802446F4 30A3FFFF */ andi $v1, $a1, 0xffff
/* 164F58 802446F8 00031980 */ sll $v1, $v1, 6
/* 164F5C 802446FC 00731821 */ addu $v1, $v1, $s3
/* 164F60 80244700 24A50001 */ addiu $a1, $a1, 1
/* 164F64 80244704 AC950000 */ sw $s5, ($a0)
/* 164F68 80244708 8E820000 */ lw $v0, ($s4)
/* 164F6C 8024470C 8FC90000 */ lw $t1, ($fp)
/* 164F70 80244710 00431021 */ addu $v0, $v0, $v1
/* 164F74 80244714 AC820004 */ sw $v0, 4($a0)
/* 164F78 80244718 3C0BDE00 */ lui $t3, 0xde00
/* 164F7C 8024471C AD0B0000 */ sw $t3, ($t0)
/* 164F80 80244720 3C0B8025 */ lui $t3, %hi(D_8024B6F0)
/* 164F84 80244724 256BB6F0 */ addiu $t3, $t3, %lo(D_8024B6F0)
/* 164F88 80244728 AD0B0004 */ sw $t3, 4($t0)
/* 164F8C 8024472C 240B0040 */ addiu $t3, $zero, 0x40
/* 164F90 80244730 0200202D */ daddu $a0, $s0, $zero
/* 164F94 80244734 AD160008 */ sw $s6, 8($t0)
/* 164F98 80244738 AD0B000C */ sw $t3, 0xc($t0)
/* 164F9C 8024473C 95230134 */ lhu $v1, 0x134($t1)
/* 164FA0 80244740 3C0B8888 */ lui $t3, 0x8888
/* 164FA4 80244744 356B8889 */ ori $t3, $t3, 0x8889
/* 164FA8 80244748 006B0019 */ multu $v1, $t3
/* 164FAC 8024474C 25020008 */ addiu $v0, $t0, 8
/* 164FB0 80244750 AE280000 */ sw $t0, ($s1)
/* 164FB4 80244754 A6450000 */ sh $a1, ($s2)
/* 164FB8 80244758 AE220000 */ sw $v0, ($s1)
/* 164FBC 8024475C 00005810 */ mfhi $t3
/* 164FC0 80244760 000B28C2 */ srl $a1, $t3, 3
/* 164FC4 80244764 00051100 */ sll $v0, $a1, 4
/* 164FC8 80244768 00451023 */ subu $v0, $v0, $a1
/* 164FCC 8024476C 00621823 */ subu $v1, $v1, $v0
/* 164FD0 80244770 3063FFFF */ andi $v1, $v1, 0xffff
/* 164FD4 80244774 00031880 */ sll $v1, $v1, 2
/* 164FD8 80244778 00771821 */ addu $v1, $v1, $s7
/* 164FDC 8024477C 8C650000 */ lw $a1, ($v1)
/* 164FE0 80244780 25080010 */ addiu $t0, $t0, 0x10
/* 164FE4 80244784 0C019E40 */ jal guTranslateF
/* 164FE8 80244788 AE280000 */ sw $t0, ($s1)
/* 164FEC 8024478C 0200202D */ daddu $a0, $s0, $zero
/* 164FF0 80244790 27A50020 */ addiu $a1, $sp, 0x20
/* 164FF4 80244794 0C019D80 */ jal guMtxCatF
/* 164FF8 80244798 00A0302D */ daddu $a2, $a1, $zero
/* 164FFC 8024479C 27A40020 */ addiu $a0, $sp, 0x20
/* 165000 802447A0 96450000 */ lhu $a1, ($s2)
/* 165004 802447A4 8E820000 */ lw $v0, ($s4)
/* 165008 802447A8 00052980 */ sll $a1, $a1, 6
/* 16500C 802447AC 00B32821 */ addu $a1, $a1, $s3
/* 165010 802447B0 0C019D40 */ jal guMtxF2L
/* 165014 802447B4 00452821 */ addu $a1, $v0, $a1
/* 165018 802447B8 8E250000 */ lw $a1, ($s1)
/* 16501C 802447BC 96430000 */ lhu $v1, ($s2)
/* 165020 802447C0 00A0202D */ daddu $a0, $a1, $zero
/* 165024 802447C4 24A50008 */ addiu $a1, $a1, 8
/* 165028 802447C8 24620001 */ addiu $v0, $v1, 1
/* 16502C 802447CC 3063FFFF */ andi $v1, $v1, 0xffff
/* 165030 802447D0 00031980 */ sll $v1, $v1, 6
/* 165034 802447D4 00731821 */ addu $v1, $v1, $s3
/* 165038 802447D8 AE250000 */ sw $a1, ($s1)
/* 16503C 802447DC AC950000 */ sw $s5, ($a0)
/* 165040 802447E0 A6420000 */ sh $v0, ($s2)
/* 165044 802447E4 8E820000 */ lw $v0, ($s4)
/* 165048 802447E8 8FC90000 */ lw $t1, ($fp)
/* 16504C 802447EC 00431021 */ addu $v0, $v0, $v1
/* 165050 802447F0 AC820004 */ sw $v0, 4($a0)
/* 165054 802447F4 95230134 */ lhu $v1, 0x134($t1)
/* 165058 802447F8 24A20008 */ addiu $v0, $a1, 8
/* 16505C 802447FC AE220000 */ sw $v0, ($s1)
/* 165060 80244800 000318C0 */ sll $v1, $v1, 3
/* 165064 80244804 04610002 */ bgez $v1, .L80244810
/* 165068 80244808 0060102D */ daddu $v0, $v1, $zero
/* 16506C 8024480C 246201FF */ addiu $v0, $v1, 0x1ff
.L80244810:
/* 165070 80244810 00021243 */ sra $v0, $v0, 9
/* 165074 80244814 00021240 */ sll $v0, $v0, 9
/* 165078 80244818 00621023 */ subu $v0, $v1, $v0
/* 16507C 8024481C 30420FFF */ andi $v0, $v0, 0xfff
/* 165080 80244820 00021300 */ sll $v0, $v0, 0xc
/* 165084 80244824 3C0BF200 */ lui $t3, 0xf200
/* 165088 80244828 004B1025 */ or $v0, $v0, $t3
/* 16508C 8024482C ACA20000 */ sw $v0, ($a1)
/* 165090 80244830 95220134 */ lhu $v0, 0x134($t1)
/* 165094 80244834 000218C0 */ sll $v1, $v0, 3
/* 165098 80244838 04610002 */ bgez $v1, .L80244844
/* 16509C 8024483C 0060102D */ daddu $v0, $v1, $zero
/* 1650A0 80244840 246201FF */ addiu $v0, $v1, 0x1ff
.L80244844:
/* 1650A4 80244844 00021243 */ sra $v0, $v0, 9
/* 1650A8 80244848 00021240 */ sll $v0, $v0, 9
/* 1650AC 8024484C 00621023 */ subu $v0, $v1, $v0
/* 1650B0 80244850 2442003C */ addiu $v0, $v0, 0x3c
/* 1650B4 80244854 30420FFF */ andi $v0, $v0, 0xfff
/* 1650B8 80244858 00021300 */ sll $v0, $v0, 0xc
/* 1650BC 8024485C 3C0B0100 */ lui $t3, 0x100
/* 1650C0 80244860 004B1025 */ or $v0, $v0, $t3
/* 1650C4 80244864 ACA20004 */ sw $v0, 4($a1)
/* 1650C8 80244868 24A20010 */ addiu $v0, $a1, 0x10
/* 1650CC 8024486C 3C0BDE00 */ lui $t3, 0xde00
/* 1650D0 80244870 AE220000 */ sw $v0, ($s1)
/* 1650D4 80244874 ACAB0008 */ sw $t3, 8($a1)
/* 1650D8 80244878 3C0B8025 */ lui $t3, %hi(D_8024B708)
/* 1650DC 8024487C 256BB708 */ addiu $t3, $t3, %lo(D_8024B708)
/* 1650E0 80244880 24A20018 */ addiu $v0, $a1, 0x18
/* 1650E4 80244884 ACAB000C */ sw $t3, 0xc($a1)
/* 1650E8 80244888 240B0040 */ addiu $t3, $zero, 0x40
/* 1650EC 8024488C AE220000 */ sw $v0, ($s1)
/* 1650F0 80244890 ACB60010 */ sw $s6, 0x10($a1)
/* 1650F4 80244894 ACAB0014 */ sw $t3, 0x14($a1)
.L80244898:
/* 1650F8 80244898 8FBF00C4 */ lw $ra, 0xc4($sp)
/* 1650FC 8024489C 8FBE00C0 */ lw $fp, 0xc0($sp)
/* 165100 802448A0 8FB700BC */ lw $s7, 0xbc($sp)
/* 165104 802448A4 8FB600B8 */ lw $s6, 0xb8($sp)
/* 165108 802448A8 8FB500B4 */ lw $s5, 0xb4($sp)
/* 16510C 802448AC 8FB400B0 */ lw $s4, 0xb0($sp)
/* 165110 802448B0 8FB300AC */ lw $s3, 0xac($sp)
/* 165114 802448B4 8FB200A8 */ lw $s2, 0xa8($sp)
/* 165118 802448B8 8FB100A4 */ lw $s1, 0xa4($sp)
/* 16511C 802448BC 8FB000A0 */ lw $s0, 0xa0($sp)
/* 165120 802448C0 D7BE00F0 */ ldc1 $f30, 0xf0($sp)
/* 165124 802448C4 D7BC00E8 */ ldc1 $f28, 0xe8($sp)
/* 165128 802448C8 D7BA00E0 */ ldc1 $f26, 0xe0($sp)
/* 16512C 802448CC D7B800D8 */ ldc1 $f24, 0xd8($sp)
/* 165130 802448D0 D7B600D0 */ ldc1 $f22, 0xd0($sp)
/* 165134 802448D4 D7B400C8 */ ldc1 $f20, 0xc8($sp)
/* 165138 802448D8 03E00008 */ jr $ra
/* 16513C 802448DC 27BD00F8 */ addiu $sp, $sp, 0xf8

File diff suppressed because it is too large Load Diff

View File

@ -1,511 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel jtbl_8024C060
.word .L80248E34_169694, .L80248E64_1696C4, .L80248E90_1696F0, .L80249034_169894, .L80248ED4_169734, 0, 0, 0
.section .text
glabel filemenu_choose_name_handle_input
/* 169454 80248BF4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 169458 80248BF8 AFB00010 */ sw $s0, 0x10($sp)
/* 16945C 80248BFC 0080802D */ daddu $s0, $a0, $zero
/* 169460 80248C00 3C038025 */ lui $v1, %hi(filemenu_heldButtons)
/* 169464 80248C04 8C63C08C */ lw $v1, %lo(filemenu_heldButtons)($v1)
/* 169468 80248C08 3C020004 */ lui $v0, 4
/* 16946C 80248C0C AFBF0018 */ sw $ra, 0x18($sp)
/* 169470 80248C10 AFB10014 */ sw $s1, 0x14($sp)
/* 169474 80248C14 92050003 */ lbu $a1, 3($s0)
/* 169478 80248C18 00621024 */ and $v0, $v1, $v0
/* 16947C 80248C1C 1040000A */ beqz $v0, .L80248C48
/* 169480 80248C20 3C020008 */ lui $v0, 8
/* 169484 80248C24 92020001 */ lbu $v0, 1($s0)
/* 169488 80248C28 2442FFFF */ addiu $v0, $v0, -1
/* 16948C 80248C2C A2020001 */ sb $v0, 1($s0)
/* 169490 80248C30 00021600 */ sll $v0, $v0, 0x18
/* 169494 80248C34 04410026 */ bgez $v0, .L80248CD0
/* 169498 80248C38 00000000 */ nop
/* 16949C 80248C3C 92020005 */ lbu $v0, 5($s0)
/* 1694A0 80248C40 08092333 */ j .L80248CCC
/* 1694A4 80248C44 2442FFFF */ addiu $v0, $v0, -1
.L80248C48:
/* 1694A8 80248C48 00621024 */ and $v0, $v1, $v0
/* 1694AC 80248C4C 10400020 */ beqz $v0, .L80248CD0
/* 1694B0 80248C50 00000000 */ nop
/* 1694B4 80248C54 92020001 */ lbu $v0, 1($s0)
/* 1694B8 80248C58 82030005 */ lb $v1, 5($s0)
/* 1694BC 80248C5C 24420001 */ addiu $v0, $v0, 1
/* 1694C0 80248C60 A2020001 */ sb $v0, 1($s0)
/* 1694C4 80248C64 00021600 */ sll $v0, $v0, 0x18
/* 1694C8 80248C68 00021603 */ sra $v0, $v0, 0x18
/* 1694CC 80248C6C 0043102A */ slt $v0, $v0, $v1
/* 1694D0 80248C70 50400001 */ beql $v0, $zero, .L80248C78
/* 1694D4 80248C74 A2000001 */ sb $zero, 1($s0)
.L80248C78:
/* 1694D8 80248C78 82020006 */ lb $v0, 6($s0)
/* 1694DC 80248C7C 82030002 */ lb $v1, 2($s0)
/* 1694E0 80248C80 2442FFFF */ addiu $v0, $v0, -1
/* 1694E4 80248C84 14620012 */ bne $v1, $v0, .L80248CD0
/* 1694E8 80248C88 00000000 */ nop
/* 1694EC 80248C8C 82020001 */ lb $v0, 1($s0)
/* 1694F0 80248C90 92030001 */ lbu $v1, 1($s0)
/* 1694F4 80248C94 2842000B */ slti $v0, $v0, 0xb
/* 1694F8 80248C98 14400003 */ bnez $v0, .L80248CA8
/* 1694FC 80248C9C 2462FFF8 */ addiu $v0, $v1, -8
/* 169500 80248CA0 08092334 */ j .L80248CD0
/* 169504 80248CA4 A2000001 */ sb $zero, 1($s0)
.L80248CA8:
/* 169508 80248CA8 304200FF */ andi $v0, $v0, 0xff
/* 16950C 80248CAC 2C420002 */ sltiu $v0, $v0, 2
/* 169510 80248CB0 14400006 */ bnez $v0, .L80248CCC
/* 169514 80248CB4 2402000A */ addiu $v0, $zero, 0xa
/* 169518 80248CB8 2462FFFB */ addiu $v0, $v1, -5
/* 16951C 80248CBC 304200FF */ andi $v0, $v0, 0xff
/* 169520 80248CC0 2C420002 */ sltiu $v0, $v0, 2
/* 169524 80248CC4 10400002 */ beqz $v0, .L80248CD0
/* 169528 80248CC8 24020007 */ addiu $v0, $zero, 7
.L80248CCC:
/* 16952C 80248CCC A2020001 */ sb $v0, 1($s0)
.L80248CD0:
/* 169530 80248CD0 3C038025 */ lui $v1, %hi(filemenu_heldButtons)
/* 169534 80248CD4 8C63C08C */ lw $v1, %lo(filemenu_heldButtons)($v1)
/* 169538 80248CD8 3C020001 */ lui $v0, 1
/* 16953C 80248CDC 00621024 */ and $v0, $v1, $v0
/* 169540 80248CE0 1040000B */ beqz $v0, .L80248D10
/* 169544 80248CE4 3C020002 */ lui $v0, 2
/* 169548 80248CE8 92020002 */ lbu $v0, 2($s0)
/* 16954C 80248CEC 2442FFFF */ addiu $v0, $v0, -1
/* 169550 80248CF0 A2020002 */ sb $v0, 2($s0)
/* 169554 80248CF4 00021600 */ sll $v0, $v0, 0x18
/* 169558 80248CF8 04410011 */ bgez $v0, .L80248D40
/* 16955C 80248CFC 00000000 */ nop
/* 169560 80248D00 92020006 */ lbu $v0, 6($s0)
/* 169564 80248D04 2442FFFF */ addiu $v0, $v0, -1
/* 169568 80248D08 08092350 */ j .L80248D40
/* 16956C 80248D0C A2020002 */ sb $v0, 2($s0)
.L80248D10:
/* 169570 80248D10 00621024 */ and $v0, $v1, $v0
/* 169574 80248D14 1040000A */ beqz $v0, .L80248D40
/* 169578 80248D18 00000000 */ nop
/* 16957C 80248D1C 92020002 */ lbu $v0, 2($s0)
/* 169580 80248D20 82030006 */ lb $v1, 6($s0)
/* 169584 80248D24 24420001 */ addiu $v0, $v0, 1
/* 169588 80248D28 A2020002 */ sb $v0, 2($s0)
/* 16958C 80248D2C 00021600 */ sll $v0, $v0, 0x18
/* 169590 80248D30 00021603 */ sra $v0, $v0, 0x18
/* 169594 80248D34 0043102A */ slt $v0, $v0, $v1
/* 169598 80248D38 50400001 */ beql $v0, $zero, .L80248D40
/* 16959C 80248D3C A2000002 */ sb $zero, 2($s0)
.L80248D40:
/* 1695A0 80248D40 82020006 */ lb $v0, 6($s0)
/* 1695A4 80248D44 82030002 */ lb $v1, 2($s0)
/* 1695A8 80248D48 2442FFFF */ addiu $v0, $v0, -1
/* 1695AC 80248D4C 14620012 */ bne $v1, $v0, .L80248D98
/* 1695B0 80248D50 00000000 */ nop
/* 1695B4 80248D54 82020001 */ lb $v0, 1($s0)
/* 1695B8 80248D58 92030001 */ lbu $v1, 1($s0)
/* 1695BC 80248D5C 2842000B */ slti $v0, $v0, 0xb
/* 1695C0 80248D60 14400003 */ bnez $v0, .L80248D70
/* 1695C4 80248D64 2462FFF8 */ addiu $v0, $v1, -8
/* 1695C8 80248D68 08092365 */ j .L80248D94
/* 1695CC 80248D6C 2402000A */ addiu $v0, $zero, 0xa
.L80248D70:
/* 1695D0 80248D70 304200FF */ andi $v0, $v0, 0xff
/* 1695D4 80248D74 2C420002 */ sltiu $v0, $v0, 2
/* 1695D8 80248D78 14400006 */ bnez $v0, .L80248D94
/* 1695DC 80248D7C 24020007 */ addiu $v0, $zero, 7
/* 1695E0 80248D80 2462FFFB */ addiu $v0, $v1, -5
/* 1695E4 80248D84 304200FF */ andi $v0, $v0, 0xff
/* 1695E8 80248D88 2C420002 */ sltiu $v0, $v0, 2
/* 1695EC 80248D8C 10400002 */ beqz $v0, .L80248D98
/* 1695F0 80248D90 24020004 */ addiu $v0, $zero, 4
.L80248D94:
/* 1695F4 80248D94 A2020001 */ sb $v0, 1($s0)
.L80248D98:
/* 1695F8 80248D98 82020004 */ lb $v0, 4($s0)
/* 1695FC 80248D9C 82030005 */ lb $v1, 5($s0)
/* 169600 80248DA0 00430018 */ mult $v0, $v1
/* 169604 80248DA4 00003812 */ mflo $a3
/* 169608 80248DA8 82020006 */ lb $v0, 6($s0)
/* 16960C 80248DAC 00000000 */ nop
/* 169610 80248DB0 00E20018 */ mult $a3, $v0
/* 169614 80248DB4 00002012 */ mflo $a0
/* 169618 80248DB8 82020002 */ lb $v0, 2($s0)
/* 16961C 80248DBC 00000000 */ nop
/* 169620 80248DC0 00620018 */ mult $v1, $v0
/* 169624 80248DC4 00001012 */ mflo $v0
/* 169628 80248DC8 00821821 */ addu $v1, $a0, $v0
/* 16962C 80248DCC 82040001 */ lb $a0, 1($s0)
/* 169630 80248DD0 8E020008 */ lw $v0, 8($s0)
/* 169634 80248DD4 00641821 */ addu $v1, $v1, $a0
/* 169638 80248DD8 00431021 */ addu $v0, $v0, $v1
/* 16963C 80248DDC 90420000 */ lbu $v0, ($v0)
/* 169640 80248DE0 A2020003 */ sb $v0, 3($s0)
/* 169644 80248DE4 304200FF */ andi $v0, $v0, 0xff
/* 169648 80248DE8 10A20003 */ beq $a1, $v0, .L80248DF8
/* 16964C 80248DEC 00000000 */ nop
/* 169650 80248DF0 0C05272D */ jal sfx_play_sound
/* 169654 80248DF4 24042102 */ addiu $a0, $zero, 0x2102
.L80248DF8:
/* 169658 80248DF8 3C028025 */ lui $v0, %hi(filemenu_pressedButtons)
/* 16965C 80248DFC 8C42C084 */ lw $v0, %lo(filemenu_pressedButtons)($v0)
/* 169660 80248E00 30428000 */ andi $v0, $v0, 0x8000
/* 169664 80248E04 1040009A */ beqz $v0, .L80249070
/* 169668 80248E08 00000000 */ nop
/* 16966C 80248E0C 92020003 */ lbu $v0, 3($s0)
/* 169670 80248E10 2443FF3A */ addiu $v1, $v0, -0xc6
/* 169674 80248E14 2C620005 */ sltiu $v0, $v1, 5
/* 169678 80248E18 1040006D */ beqz $v0, .L80248FD0
/* 16967C 80248E1C 00031080 */ sll $v0, $v1, 2
/* 169680 80248E20 3C018025 */ lui $at, %hi(jtbl_8024C060)
/* 169684 80248E24 00220821 */ addu $at, $at, $v0
/* 169688 80248E28 8C22C060 */ lw $v0, %lo(jtbl_8024C060)($at)
/* 16968C 80248E2C 00400008 */ jr $v0
/* 169690 80248E30 00000000 */ nop
.L80248E34_169694:
/* 169694 80248E34 0C05272D */ jal sfx_play_sound
/* 169698 80248E38 24042103 */ addiu $a0, $zero, 0x2103
/* 16969C 80248E3C 3C048025 */ lui $a0, %hi(D_8024C090)
/* 1696A0 80248E40 2484C090 */ addiu $a0, $a0, %lo(D_8024C090)
/* 1696A4 80248E44 80820000 */ lb $v0, ($a0)
/* 1696A8 80248E48 24050008 */ addiu $a1, $zero, 8
/* 1696AC 80248E4C 14450002 */ bne $v0, $a1, .L80248E58
/* 1696B0 80248E50 24020007 */ addiu $v0, $zero, 7
/* 1696B4 80248E54 A0820000 */ sb $v0, ($a0)
.L80248E58:
/* 1696B8 80248E58 80830000 */ lb $v1, ($a0)
/* 1696BC 80248E5C 08092402 */ j .L80249008
/* 1696C0 80248E60 240200F7 */ addiu $v0, $zero, 0xf7
.L80248E64_1696C4:
/* 1696C4 80248E64 82020004 */ lb $v0, 4($s0)
/* 1696C8 80248E68 24110001 */ addiu $s1, $zero, 1
/* 1696CC 80248E6C 10510071 */ beq $v0, $s1, .L80249034_169894
/* 1696D0 80248E70 00000000 */ nop
/* 1696D4 80248E74 0C05272D */ jal sfx_play_sound
/* 1696D8 80248E78 24042105 */ addiu $a0, $zero, 0x2105
/* 1696DC 80248E7C 82050001 */ lb $a1, 1($s0)
/* 1696E0 80248E80 82060002 */ lb $a2, 2($s0)
/* 1696E4 80248E84 0200202D */ daddu $a0, $s0, $zero
/* 1696E8 80248E88 080923AD */ j .L80248EB4
/* 1696EC 80248E8C A2110004 */ sb $s1, 4($s0)
.L80248E90_1696F0:
/* 1696F0 80248E90 82020004 */ lb $v0, 4($s0)
/* 1696F4 80248E94 10400067 */ beqz $v0, .L80249034_169894
/* 1696F8 80248E98 00000000 */ nop
/* 1696FC 80248E9C 0C05272D */ jal sfx_play_sound
/* 169700 80248EA0 24042105 */ addiu $a0, $zero, 0x2105
/* 169704 80248EA4 82050001 */ lb $a1, 1($s0)
/* 169708 80248EA8 82060002 */ lb $a2, 2($s0)
/* 16970C 80248EAC 0200202D */ daddu $a0, $s0, $zero
/* 169710 80248EB0 A2000004 */ sb $zero, 4($s0)
.L80248EB4:
/* 169714 80248EB4 0C090B65 */ jal filemenu_set_selected
/* 169718 80248EB8 00000000 */ nop
/* 16971C 80248EBC 3C058025 */ lui $a1, %hi(func_80248170)
/* 169720 80248EC0 24A58170 */ addiu $a1, $a1, %lo(func_80248170)
/* 169724 80248EC4 0C051F9F */ jal set_window_update
/* 169728 80248EC8 24040031 */ addiu $a0, $zero, 0x31
/* 16972C 80248ECC 0809240D */ j .L80249034_169894
/* 169730 80248ED0 00000000 */ nop
.L80248ED4_169734:
/* 169734 80248ED4 0000182D */ daddu $v1, $zero, $zero
/* 169738 80248ED8 3C058025 */ lui $a1, %hi(filemenu_8024C110)
/* 16973C 80248EDC 24A5C110 */ addiu $a1, $a1, %lo(filemenu_8024C110)
/* 169740 80248EE0 240400F7 */ addiu $a0, $zero, 0xf7
/* 169744 80248EE4 00651021 */ addu $v0, $v1, $a1
.L80248EE8:
/* 169748 80248EE8 90420000 */ lbu $v0, ($v0)
/* 16974C 80248EEC 14440006 */ bne $v0, $a0, .L80248F08
/* 169750 80248EF0 24020008 */ addiu $v0, $zero, 8
/* 169754 80248EF4 24630001 */ addiu $v1, $v1, 1
/* 169758 80248EF8 28620008 */ slti $v0, $v1, 8
/* 16975C 80248EFC 1440FFFA */ bnez $v0, .L80248EE8
/* 169760 80248F00 00651021 */ addu $v0, $v1, $a1
/* 169764 80248F04 24020008 */ addiu $v0, $zero, 8
.L80248F08:
/* 169768 80248F08 14620005 */ bne $v1, $v0, .L80248F20
/* 16976C 80248F0C 00000000 */ nop
/* 169770 80248F10 0C05272D */ jal sfx_play_sound
/* 169774 80248F14 2404021D */ addiu $a0, $zero, 0x21d
/* 169778 80248F18 0809240D */ j .L80249034_169894
/* 16977C 80248F1C 00000000 */ nop
.L80248F20:
/* 169780 80248F20 0C05272D */ jal sfx_play_sound
/* 169784 80248F24 240400C9 */ addiu $a0, $zero, 0xc9
/* 169788 80248F28 3C058024 */ lui $a1, %hi(filemenu_update_show_name_confirm)
/* 16978C 80248F2C 24A53CCC */ addiu $a1, $a1, %lo(filemenu_update_show_name_confirm)
/* 169790 80248F30 0C051F9F */ jal set_window_update
/* 169794 80248F34 24040032 */ addiu $a0, $zero, 0x32
/* 169798 80248F38 3C048016 */ lui $a0, %hi(gWindows)
/* 16979C 80248F3C 24849D50 */ addiu $a0, $a0, %lo(gWindows)
/* 1697A0 80248F40 24020079 */ addiu $v0, $zero, 0x79
/* 1697A4 80248F44 A482064E */ sh $v0, 0x64e($a0)
/* 1697A8 80248F48 24020045 */ addiu $v0, $zero, 0x45
/* 1697AC 80248F4C A4820650 */ sh $v0, 0x650($a0)
/* 1697B0 80248F50 2402002C */ addiu $v0, $zero, 0x2c
/* 1697B4 80248F54 80830643 */ lb $v1, 0x643($a0)
/* 1697B8 80248F58 A4820652 */ sh $v0, 0x652($a0)
/* 1697BC 80248F5C 2402FFFF */ addiu $v0, $zero, -1
/* 1697C0 80248F60 1062000B */ beq $v1, $v0, .L80248F90
/* 1697C4 80248F64 2485064C */ addiu $a1, $a0, 0x64c
/* 1697C8 80248F68 00031140 */ sll $v0, $v1, 5
/* 1697CC 80248F6C 00441021 */ addu $v0, $v0, $a0
/* 1697D0 80248F70 94420010 */ lhu $v0, 0x10($v0)
/* 1697D4 80248F74 00021400 */ sll $v0, $v0, 0x10
/* 1697D8 80248F78 00021C03 */ sra $v1, $v0, 0x10
/* 1697DC 80248F7C 000217C2 */ srl $v0, $v0, 0x1f
/* 1697E0 80248F80 00621821 */ addu $v1, $v1, $v0
/* 1697E4 80248F84 00031843 */ sra $v1, $v1, 1
/* 1697E8 80248F88 080923E7 */ j .L80248F9C
/* 1697EC 80248F8C 2463FFDE */ addiu $v1, $v1, -0x22
.L80248F90:
/* 1697F0 80248F90 2403007E */ addiu $v1, $zero, 0x7e
/* 1697F4 80248F94 3C048016 */ lui $a0, %hi(gWindows)
/* 1697F8 80248F98 24849D50 */ addiu $a0, $a0, %lo(gWindows)
.L80248F9C:
/* 1697FC 80248F9C 2402FFBA */ addiu $v0, $zero, -0x46
/* 169800 80248FA0 A4A30000 */ sh $v1, ($a1)
/* 169804 80248FA4 A48205CE */ sh $v0, 0x5ce($a0)
/* 169808 80248FA8 240200A4 */ addiu $v0, $zero, 0xa4
/* 16980C 80248FAC A48205D0 */ sh $v0, 0x5d0($a0)
/* 169810 80248FB0 2402003E */ addiu $v0, $zero, 0x3e
/* 169814 80248FB4 808305C3 */ lb $v1, 0x5c3($a0)
/* 169818 80248FB8 A48205D2 */ sh $v0, 0x5d2($a0)
/* 16981C 80248FBC 2402FFFF */ addiu $v0, $zero, -1
/* 169820 80248FC0 146200BD */ bne $v1, $v0, .L802492B8
/* 169824 80248FC4 248705CC */ addiu $a3, $a0, 0x5cc
/* 169828 80248FC8 080924B9 */ j .L802492E4
/* 16982C 80248FCC 2403004E */ addiu $v1, $zero, 0x4e
.L80248FD0:
/* 169830 80248FD0 0C05272D */ jal sfx_play_sound
/* 169834 80248FD4 24042103 */ addiu $a0, $zero, 0x2103
/* 169838 80248FD8 3C048025 */ lui $a0, %hi(D_8024C090)
/* 16983C 80248FDC 2484C090 */ addiu $a0, $a0, %lo(D_8024C090)
/* 169840 80248FE0 80830000 */ lb $v1, ($a0)
/* 169844 80248FE4 24050008 */ addiu $a1, $zero, 8
/* 169848 80248FE8 14650006 */ bne $v1, $a1, .L80249004
/* 16984C 80248FEC 00000000 */ nop
/* 169850 80248FF0 92020003 */ lbu $v0, 3($s0)
/* 169854 80248FF4 3C018025 */ lui $at, %hi(D_8024C117)
/* 169858 80248FF8 A022C117 */ sb $v0, %lo(D_8024C117)($at)
/* 16985C 80248FFC 0809240D */ j .L80249034_169894
/* 169860 80249000 00000000 */ nop
.L80249004:
/* 169864 80249004 92020003 */ lbu $v0, 3($s0)
.L80249008:
/* 169868 80249008 3C018025 */ lui $at, %hi(filemenu_8024C110)
/* 16986C 8024900C 00230821 */ addu $at, $at, $v1
/* 169870 80249010 A022C110 */ sb $v0, %lo(filemenu_8024C110)($at)
/* 169874 80249014 90820000 */ lbu $v0, ($a0)
/* 169878 80249018 24420001 */ addiu $v0, $v0, 1
/* 16987C 8024901C A0820000 */ sb $v0, ($a0)
/* 169880 80249020 00021600 */ sll $v0, $v0, 0x18
/* 169884 80249024 00021603 */ sra $v0, $v0, 0x18
/* 169888 80249028 28420009 */ slti $v0, $v0, 9
/* 16988C 8024902C 50400001 */ beql $v0, $zero, .L80249034_169894
/* 169890 80249030 A0850000 */ sb $a1, ($a0)
.L80249034_169894:
/* 169894 80249034 92020003 */ lbu $v0, 3($s0)
/* 169898 80249038 24420039 */ addiu $v0, $v0, 0x39
/* 16989C 8024903C 304200FF */ andi $v0, $v0, 0xff
/* 1698A0 80249040 2C420003 */ sltiu $v0, $v0, 3
/* 1698A4 80249044 1440000A */ bnez $v0, .L80249070
/* 1698A8 80249048 24020008 */ addiu $v0, $zero, 8
/* 1698AC 8024904C 3C038025 */ lui $v1, %hi(D_8024C090)
/* 1698B0 80249050 8063C090 */ lb $v1, %lo(D_8024C090)($v1)
/* 1698B4 80249054 14620006 */ bne $v1, $v0, .L80249070
/* 1698B8 80249058 0200202D */ daddu $a0, $s0, $zero
/* 1698BC 8024905C 82050005 */ lb $a1, 5($s0)
/* 1698C0 80249060 82060006 */ lb $a2, 6($s0)
/* 1698C4 80249064 24A5FFFD */ addiu $a1, $a1, -3
/* 1698C8 80249068 0C090B65 */ jal filemenu_set_selected
/* 1698CC 8024906C 24C6FFFF */ addiu $a2, $a2, -1
.L80249070:
/* 1698D0 80249070 3C038025 */ lui $v1, %hi(filemenu_pressedButtons)
/* 1698D4 80249074 8C63C084 */ lw $v1, %lo(filemenu_pressedButtons)($v1)
/* 1698D8 80249078 30624000 */ andi $v0, $v1, 0x4000
/* 1698DC 8024907C 14400006 */ bnez $v0, .L80249098
/* 1698E0 80249080 30628000 */ andi $v0, $v1, 0x8000
/* 1698E4 80249084 1040004B */ beqz $v0, .L802491B4
/* 1698E8 80249088 240200C9 */ addiu $v0, $zero, 0xc9
/* 1698EC 8024908C 92030003 */ lbu $v1, 3($s0)
/* 1698F0 80249090 14620048 */ bne $v1, $v0, .L802491B4
/* 1698F4 80249094 00000000 */ nop
.L80249098:
/* 1698F8 80249098 0C05272D */ jal sfx_play_sound
/* 1698FC 8024909C 24042104 */ addiu $a0, $zero, 0x2104
/* 169900 802490A0 3C038025 */ lui $v1, %hi(D_8024C090)
/* 169904 802490A4 2463C090 */ addiu $v1, $v1, %lo(D_8024C090)
/* 169908 802490A8 90620000 */ lbu $v0, ($v1)
/* 16990C 802490AC 2442FFFF */ addiu $v0, $v0, -1
/* 169910 802490B0 A0620000 */ sb $v0, ($v1)
/* 169914 802490B4 00021600 */ sll $v0, $v0, 0x18
/* 169918 802490B8 00021603 */ sra $v0, $v0, 0x18
/* 16991C 802490BC 04430031 */ bgezl $v0, .L80249184
/* 169920 802490C0 0040182D */ daddu $v1, $v0, $zero
/* 169924 802490C4 24040030 */ addiu $a0, $zero, 0x30
/* 169928 802490C8 3C108024 */ lui $s0, %hi(filemenu_update_hidden_name_input)
/* 16992C 802490CC 26103628 */ addiu $s0, $s0, %lo(filemenu_update_hidden_name_input)
/* 169930 802490D0 0200282D */ daddu $a1, $s0, $zero
/* 169934 802490D4 0C051F9F */ jal set_window_update
/* 169938 802490D8 A0600000 */ sb $zero, ($v1)
/* 16993C 802490DC 24040031 */ addiu $a0, $zero, 0x31
/* 169940 802490E0 0C051F9F */ jal set_window_update
/* 169944 802490E4 0200282D */ daddu $a1, $s0, $zero
/* 169948 802490E8 2404002D */ addiu $a0, $zero, 0x2d
/* 16994C 802490EC 3C108024 */ lui $s0, %hi(filemenu_update_show_with_rotation)
/* 169950 802490F0 2610381C */ addiu $s0, $s0, %lo(filemenu_update_show_with_rotation)
/* 169954 802490F4 0C051F9F */ jal set_window_update
/* 169958 802490F8 0200282D */ daddu $a1, $s0, $zero
/* 16995C 802490FC 24040033 */ addiu $a0, $zero, 0x33
/* 169960 80249100 0C051F9F */ jal set_window_update
/* 169964 80249104 0200282D */ daddu $a1, $s0, $zero
/* 169968 80249108 24040034 */ addiu $a0, $zero, 0x34
/* 16996C 8024910C 0C051F9F */ jal set_window_update
/* 169970 80249110 0200282D */ daddu $a1, $s0, $zero
/* 169974 80249114 24040035 */ addiu $a0, $zero, 0x35
/* 169978 80249118 0C051F9F */ jal set_window_update
/* 16997C 8024911C 0200282D */ daddu $a1, $s0, $zero
/* 169980 80249120 24040036 */ addiu $a0, $zero, 0x36
/* 169984 80249124 0C051F9F */ jal set_window_update
/* 169988 80249128 0200282D */ daddu $a1, $s0, $zero
/* 16998C 8024912C 24040037 */ addiu $a0, $zero, 0x37
/* 169990 80249130 0C051F9F */ jal set_window_update
/* 169994 80249134 0200282D */ daddu $a1, $s0, $zero
/* 169998 80249138 24040035 */ addiu $a0, $zero, 0x35
/* 16999C 8024913C 0C051F9F */ jal set_window_update
/* 1699A0 80249140 0200282D */ daddu $a1, $s0, $zero
/* 1699A4 80249144 24040038 */ addiu $a0, $zero, 0x38
/* 1699A8 80249148 0C051F9F */ jal set_window_update
/* 1699AC 8024914C 0200282D */ daddu $a1, $s0, $zero
/* 1699B0 80249150 24040039 */ addiu $a0, $zero, 0x39
/* 1699B4 80249154 0C051F9F */ jal set_window_update
/* 1699B8 80249158 0200282D */ daddu $a1, $s0, $zero
/* 1699BC 8024915C 2404003A */ addiu $a0, $zero, 0x3a
/* 1699C0 80249160 0C051F9F */ jal set_window_update
/* 1699C4 80249164 0200282D */ daddu $a1, $s0, $zero
/* 1699C8 80249168 2404003B */ addiu $a0, $zero, 0x3b
/* 1699CC 8024916C 0C051F9F */ jal set_window_update
/* 1699D0 80249170 0200282D */ daddu $a1, $s0, $zero
/* 1699D4 80249174 3C018025 */ lui $at, %hi(filemenu_8024C098)
/* 1699D8 80249178 A020C098 */ sb $zero, %lo(filemenu_8024C098)($at)
/* 1699DC 8024917C 080924C4 */ j .L80249310
/* 1699E0 80249180 00000000 */ nop
.L80249184:
/* 1699E4 80249184 28620008 */ slti $v0, $v1, 8
/* 1699E8 80249188 1040000A */ beqz $v0, .L802491B4
/* 1699EC 8024918C 00000000 */ nop
/* 1699F0 80249190 3C058025 */ lui $a1, %hi(filemenu_8024C110)
/* 1699F4 80249194 24A5C110 */ addiu $a1, $a1, %lo(filemenu_8024C110)
/* 1699F8 80249198 240400F7 */ addiu $a0, $zero, 0xf7
/* 1699FC 8024919C 00651021 */ addu $v0, $v1, $a1
.L802491A0:
/* 169A00 802491A0 A0440000 */ sb $a0, ($v0)
/* 169A04 802491A4 24630001 */ addiu $v1, $v1, 1
/* 169A08 802491A8 28620008 */ slti $v0, $v1, 8
/* 169A0C 802491AC 1440FFFC */ bnez $v0, .L802491A0
/* 169A10 802491B0 00651021 */ addu $v0, $v1, $a1
.L802491B4:
/* 169A14 802491B4 3C028025 */ lui $v0, %hi(filemenu_pressedButtons)
/* 169A18 802491B8 8C42C084 */ lw $v0, %lo(filemenu_pressedButtons)($v0)
/* 169A1C 802491BC 30421000 */ andi $v0, $v0, 0x1000
/* 169A20 802491C0 10400053 */ beqz $v0, .L80249310
/* 169A24 802491C4 0000182D */ daddu $v1, $zero, $zero
/* 169A28 802491C8 3C058025 */ lui $a1, %hi(filemenu_8024C110)
/* 169A2C 802491CC 24A5C110 */ addiu $a1, $a1, %lo(filemenu_8024C110)
/* 169A30 802491D0 240400F7 */ addiu $a0, $zero, 0xf7
/* 169A34 802491D4 00651021 */ addu $v0, $v1, $a1
.L802491D8:
/* 169A38 802491D8 90420000 */ lbu $v0, ($v0)
/* 169A3C 802491DC 14440006 */ bne $v0, $a0, .L802491F8
/* 169A40 802491E0 24020008 */ addiu $v0, $zero, 8
/* 169A44 802491E4 24630001 */ addiu $v1, $v1, 1
/* 169A48 802491E8 28620008 */ slti $v0, $v1, 8
/* 169A4C 802491EC 1440FFFA */ bnez $v0, .L802491D8
/* 169A50 802491F0 00651021 */ addu $v0, $v1, $a1
/* 169A54 802491F4 24020008 */ addiu $v0, $zero, 8
.L802491F8:
/* 169A58 802491F8 14620005 */ bne $v1, $v0, .L80249210
/* 169A5C 802491FC 00000000 */ nop
/* 169A60 80249200 0C05272D */ jal sfx_play_sound
/* 169A64 80249204 2404021D */ addiu $a0, $zero, 0x21d
/* 169A68 80249208 080924C4 */ j .L80249310
/* 169A6C 8024920C 00000000 */ nop
.L80249210:
/* 169A70 80249210 0C05272D */ jal sfx_play_sound
/* 169A74 80249214 240400C9 */ addiu $a0, $zero, 0xc9
/* 169A78 80249218 3C058024 */ lui $a1, %hi(filemenu_update_show_name_confirm)
/* 169A7C 8024921C 24A53CCC */ addiu $a1, $a1, %lo(filemenu_update_show_name_confirm)
/* 169A80 80249220 0C051F9F */ jal set_window_update
/* 169A84 80249224 24040032 */ addiu $a0, $zero, 0x32
/* 169A88 80249228 3C048016 */ lui $a0, %hi(gWindows)
/* 169A8C 8024922C 24849D50 */ addiu $a0, $a0, %lo(gWindows)
/* 169A90 80249230 24020079 */ addiu $v0, $zero, 0x79
/* 169A94 80249234 A482064E */ sh $v0, 0x64e($a0)
/* 169A98 80249238 24020045 */ addiu $v0, $zero, 0x45
/* 169A9C 8024923C A4820650 */ sh $v0, 0x650($a0)
/* 169AA0 80249240 2402002C */ addiu $v0, $zero, 0x2c
/* 169AA4 80249244 80830643 */ lb $v1, 0x643($a0)
/* 169AA8 80249248 A4820652 */ sh $v0, 0x652($a0)
/* 169AAC 8024924C 2402FFFF */ addiu $v0, $zero, -1
/* 169AB0 80249250 1062000B */ beq $v1, $v0, .L80249280
/* 169AB4 80249254 2485064C */ addiu $a1, $a0, 0x64c
/* 169AB8 80249258 00031140 */ sll $v0, $v1, 5
/* 169ABC 8024925C 00441021 */ addu $v0, $v0, $a0
/* 169AC0 80249260 94420010 */ lhu $v0, 0x10($v0)
/* 169AC4 80249264 00021400 */ sll $v0, $v0, 0x10
/* 169AC8 80249268 00021C03 */ sra $v1, $v0, 0x10
/* 169ACC 8024926C 000217C2 */ srl $v0, $v0, 0x1f
/* 169AD0 80249270 00621821 */ addu $v1, $v1, $v0
/* 169AD4 80249274 00031843 */ sra $v1, $v1, 1
/* 169AD8 80249278 080924A3 */ j .L8024928C
/* 169ADC 8024927C 2463FFDE */ addiu $v1, $v1, -0x22
.L80249280:
/* 169AE0 80249280 2403007E */ addiu $v1, $zero, 0x7e
/* 169AE4 80249284 3C048016 */ lui $a0, %hi(gWindows)
/* 169AE8 80249288 24849D50 */ addiu $a0, $a0, %lo(gWindows)
.L8024928C:
/* 169AEC 8024928C 2402FFBA */ addiu $v0, $zero, -0x46
/* 169AF0 80249290 A4A30000 */ sh $v1, ($a1)
/* 169AF4 80249294 A48205CE */ sh $v0, 0x5ce($a0)
/* 169AF8 80249298 240200A4 */ addiu $v0, $zero, 0xa4
/* 169AFC 8024929C A48205D0 */ sh $v0, 0x5d0($a0)
/* 169B00 802492A0 2402003E */ addiu $v0, $zero, 0x3e
/* 169B04 802492A4 808305C3 */ lb $v1, 0x5c3($a0)
/* 169B08 802492A8 A48205D2 */ sh $v0, 0x5d2($a0)
/* 169B0C 802492AC 2402FFFF */ addiu $v0, $zero, -1
/* 169B10 802492B0 1062000B */ beq $v1, $v0, .L802492E0
/* 169B14 802492B4 248705CC */ addiu $a3, $a0, 0x5cc
.L802492B8:
/* 169B18 802492B8 00031140 */ sll $v0, $v1, 5
/* 169B1C 802492BC 00441021 */ addu $v0, $v0, $a0
/* 169B20 802492C0 94420010 */ lhu $v0, 0x10($v0)
/* 169B24 802492C4 00021400 */ sll $v0, $v0, 0x10
/* 169B28 802492C8 00021C03 */ sra $v1, $v0, 0x10
/* 169B2C 802492CC 000217C2 */ srl $v0, $v0, 0x1f
/* 169B30 802492D0 00621821 */ addu $v1, $v1, $v0
/* 169B34 802492D4 00031843 */ sra $v1, $v1, 1
/* 169B38 802492D8 080924B9 */ j .L802492E4
/* 169B3C 802492DC 2463FFAE */ addiu $v1, $v1, -0x52
.L802492E0:
/* 169B40 802492E0 2403004E */ addiu $v1, $zero, 0x4e
.L802492E4:
/* 169B44 802492E4 0000282D */ daddu $a1, $zero, $zero
/* 169B48 802492E8 00A0302D */ daddu $a2, $a1, $zero
/* 169B4C 802492EC A4E30000 */ sh $v1, ($a3)
/* 169B50 802492F0 3C048025 */ lui $a0, %hi(filemenu_menus + 0x4)
/* 169B54 802492F4 8C849B88 */ lw $a0, %lo(filemenu_menus + 0x4)($a0)
/* 169B58 802492F8 24020001 */ addiu $v0, $zero, 1
/* 169B5C 802492FC 3C018025 */ lui $at, %hi(filemenu_8024C098)
/* 169B60 80249300 A022C098 */ sb $v0, %lo(filemenu_8024C098)($at)
/* 169B64 80249304 24020002 */ addiu $v0, $zero, 2
/* 169B68 80249308 0C090B65 */ jal filemenu_set_selected
/* 169B6C 8024930C A0820004 */ sb $v0, 4($a0)
.L80249310:
/* 169B70 80249310 8FBF0018 */ lw $ra, 0x18($sp)
/* 169B74 80249314 8FB10014 */ lw $s1, 0x14($sp)
/* 169B78 80249318 8FB00010 */ lw $s0, 0x10($sp)
/* 169B7C 8024931C 03E00008 */ jr $ra
/* 169B80 80249320 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,103 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel filemenu_choose_name_init
/* 1692E0 80248A80 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 1692E4 80248A84 AFB3001C */ sw $s3, 0x1c($sp)
/* 1692E8 80248A88 0080982D */ daddu $s3, $a0, $zero
/* 1692EC 80248A8C AFB00010 */ sw $s0, 0x10($sp)
/* 1692F0 80248A90 0000802D */ daddu $s0, $zero, $zero
/* 1692F4 80248A94 AFB20018 */ sw $s2, 0x18($sp)
/* 1692F8 80248A98 3C128025 */ lui $s2, %hi(D_8024C100_C09980)
/* 1692FC 80248A9C 2652C100 */ addiu $s2, $s2, %lo(D_8024C100_C09980)
/* 169300 80248AA0 AFB10014 */ sw $s1, 0x14($sp)
/* 169304 80248AA4 3C118025 */ lui $s1, %hi(D_8024A180)
/* 169308 80248AA8 2631A180 */ addiu $s1, $s1, %lo(D_8024A180)
/* 16930C 80248AAC AFBF0020 */ sw $ra, 0x20($sp)
.L80248AB0:
/* 169310 80248AB0 8E240000 */ lw $a0, ($s1)
/* 169314 80248AB4 26310004 */ addiu $s1, $s1, 4
/* 169318 80248AB8 0C050529 */ jal hud_element_create
/* 16931C 80248ABC 26100001 */ addiu $s0, $s0, 1
/* 169320 80248AC0 0040202D */ daddu $a0, $v0, $zero
/* 169324 80248AC4 24050080 */ addiu $a1, $zero, 0x80
/* 169328 80248AC8 0C051280 */ jal hud_element_set_flags
/* 16932C 80248ACC AE440000 */ sw $a0, ($s2)
/* 169330 80248AD0 2A020003 */ slti $v0, $s0, 3
/* 169334 80248AD4 1440FFF6 */ bnez $v0, .L80248AB0
/* 169338 80248AD8 26520004 */ addiu $s2, $s2, 4
/* 16933C 80248ADC 24100001 */ addiu $s0, $zero, 1
/* 169340 80248AE0 3C028025 */ lui $v0, %hi(D_8024A1B4)
/* 169344 80248AE4 2442A1B4 */ addiu $v0, $v0, %lo(D_8024A1B4)
.L80248AE8:
/* 169348 80248AE8 AC530010 */ sw $s3, 0x10($v0)
/* 16934C 80248AEC 2610FFFF */ addiu $s0, $s0, -1
/* 169350 80248AF0 0601FFFD */ bgez $s0, .L80248AE8
/* 169354 80248AF4 2442FFDC */ addiu $v0, $v0, -0x24
/* 169358 80248AF8 3C048025 */ lui $a0, %hi(D_8024A190)
/* 16935C 80248AFC 2484A190 */ addiu $a0, $a0, %lo(D_8024A190)
/* 169360 80248B00 0C051FCC */ jal setup_pause_menu_tab
/* 169364 80248B04 24050002 */ addiu $a1, $zero, 2
/* 169368 80248B08 3C048016 */ lui $a0, %hi(gWindows)
/* 16936C 80248B0C 24849D50 */ addiu $a0, $a0, %lo(gWindows)
/* 169370 80248B10 94820610 */ lhu $v0, 0x610($a0)
/* 169374 80248B14 00021400 */ sll $v0, $v0, 0x10
/* 169378 80248B18 00021C03 */ sra $v1, $v0, 0x10
/* 16937C 80248B1C 000217C2 */ srl $v0, $v0, 0x1f
/* 169380 80248B20 00621821 */ addu $v1, $v1, $v0
/* 169384 80248B24 00032843 */ sra $a1, $v1, 1
/* 169388 80248B28 80830603 */ lb $v1, 0x603($a0)
/* 16938C 80248B2C 2402FFFF */ addiu $v0, $zero, -1
/* 169390 80248B30 1062000B */ beq $v1, $v0, .L80248B60
/* 169394 80248B34 2486060C */ addiu $a2, $a0, 0x60c
/* 169398 80248B38 00031140 */ sll $v0, $v1, 5
/* 16939C 80248B3C 00441021 */ addu $v0, $v0, $a0
/* 1693A0 80248B40 94420010 */ lhu $v0, 0x10($v0)
/* 1693A4 80248B44 00021400 */ sll $v0, $v0, 0x10
/* 1693A8 80248B48 00021C03 */ sra $v1, $v0, 0x10
/* 1693AC 80248B4C 000217C2 */ srl $v0, $v0, 0x1f
/* 1693B0 80248B50 00621821 */ addu $v1, $v1, $v0
/* 1693B4 80248B54 00031843 */ sra $v1, $v1, 1
/* 1693B8 80248B58 080922DC */ j .L80248B70
/* 1693BC 80248B5C 00651023 */ subu $v0, $v1, $a1
.L80248B60:
/* 1693C0 80248B60 240200A0 */ addiu $v0, $zero, 0xa0
/* 1693C4 80248B64 00451023 */ subu $v0, $v0, $a1
/* 1693C8 80248B68 3C048016 */ lui $a0, %hi(gWindows)
/* 1693CC 80248B6C 24849D50 */ addiu $a0, $a0, %lo(gWindows)
.L80248B70:
/* 1693D0 80248B70 A4C20000 */ sh $v0, ($a2)
/* 1693D4 80248B74 94820630 */ lhu $v0, 0x630($a0)
/* 1693D8 80248B78 00021400 */ sll $v0, $v0, 0x10
/* 1693DC 80248B7C 00021C03 */ sra $v1, $v0, 0x10
/* 1693E0 80248B80 000217C2 */ srl $v0, $v0, 0x1f
/* 1693E4 80248B84 00621821 */ addu $v1, $v1, $v0
/* 1693E8 80248B88 00032843 */ sra $a1, $v1, 1
/* 1693EC 80248B8C 80830623 */ lb $v1, 0x623($a0)
/* 1693F0 80248B90 2402FFFF */ addiu $v0, $zero, -1
/* 1693F4 80248B94 1062000B */ beq $v1, $v0, .L80248BC4
/* 1693F8 80248B98 2486062C */ addiu $a2, $a0, 0x62c
/* 1693FC 80248B9C 00031140 */ sll $v0, $v1, 5
/* 169400 80248BA0 00441021 */ addu $v0, $v0, $a0
/* 169404 80248BA4 94420010 */ lhu $v0, 0x10($v0)
/* 169408 80248BA8 00021400 */ sll $v0, $v0, 0x10
/* 16940C 80248BAC 00021C03 */ sra $v1, $v0, 0x10
/* 169410 80248BB0 000217C2 */ srl $v0, $v0, 0x1f
/* 169414 80248BB4 00621821 */ addu $v1, $v1, $v0
/* 169418 80248BB8 00031843 */ sra $v1, $v1, 1
/* 16941C 80248BBC 080922F3 */ j .L80248BCC
/* 169420 80248BC0 00651023 */ subu $v0, $v1, $a1
.L80248BC4:
/* 169424 80248BC4 240200A0 */ addiu $v0, $zero, 0xa0
/* 169428 80248BC8 00451023 */ subu $v0, $v0, $a1
.L80248BCC:
/* 16942C 80248BCC A4C20000 */ sh $v0, ($a2)
/* 169430 80248BD0 24020001 */ addiu $v0, $zero, 1
/* 169434 80248BD4 A2620000 */ sb $v0, ($s3)
/* 169438 80248BD8 8FBF0020 */ lw $ra, 0x20($sp)
/* 16943C 80248BDC 8FB3001C */ lw $s3, 0x1c($sp)
/* 169440 80248BE0 8FB20018 */ lw $s2, 0x18($sp)
/* 169444 80248BE4 8FB10014 */ lw $s1, 0x14($sp)
/* 169448 80248BE8 8FB00010 */ lw $s0, 0x10($sp)
/* 16944C 80248BEC 03E00008 */ jr $ra
/* 169450 80248BF0 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,101 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fio_deserialize_state
/* 6890 8002B490 3C038011 */ lui $v1, %hi(gPlayerData)
/* 6894 8002B494 2463F290 */ addiu $v1, $v1, %lo(gPlayerData)
/* 6898 8002B498 3C07800E */ lui $a3, %hi(gCurrentSaveFile)
/* 689C 8002B49C 24E7ACC0 */ addiu $a3, $a3, %lo(gCurrentSaveFile)
/* 68A0 8002B4A0 24E20040 */ addiu $v0, $a3, 0x40
/* 68A4 8002B4A4 24E40460 */ addiu $a0, $a3, 0x460
.L8002B4A8:
/* 68A8 8002B4A8 8C490000 */ lw $t1, ($v0)
/* 68AC 8002B4AC 8C4A0004 */ lw $t2, 4($v0)
/* 68B0 8002B4B0 8C4B0008 */ lw $t3, 8($v0)
/* 68B4 8002B4B4 8C4C000C */ lw $t4, 0xc($v0)
/* 68B8 8002B4B8 AC690000 */ sw $t1, ($v1)
/* 68BC 8002B4BC AC6A0004 */ sw $t2, 4($v1)
/* 68C0 8002B4C0 AC6B0008 */ sw $t3, 8($v1)
/* 68C4 8002B4C4 AC6C000C */ sw $t4, 0xc($v1)
/* 68C8 8002B4C8 24420010 */ addiu $v0, $v0, 0x10
/* 68CC 8002B4CC 1444FFF6 */ bne $v0, $a0, .L8002B4A8
/* 68D0 8002B4D0 24630010 */ addiu $v1, $v1, 0x10
/* 68D4 8002B4D4 8C490000 */ lw $t1, ($v0)
/* 68D8 8002B4D8 8C4A0004 */ lw $t2, 4($v0)
/* 68DC 8002B4DC AC690000 */ sw $t1, ($v1)
/* 68E0 8002B4E0 AC6A0004 */ sw $t2, 4($v1)
/* 68E4 8002B4E4 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 68E8 8002B4E8 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 68EC 8002B4EC 94E20468 */ lhu $v0, 0x468($a3)
/* 68F0 8002B4F0 A4620086 */ sh $v0, 0x86($v1)
/* 68F4 8002B4F4 94E2046A */ lhu $v0, 0x46a($a3)
/* 68F8 8002B4F8 A462008C */ sh $v0, 0x8c($v1)
/* 68FC 8002B4FC 94E2046C */ lhu $v0, 0x46c($a3)
/* 6900 8002B500 A462008E */ sh $v0, 0x8e($v1)
/* 6904 8002B504 94E212E6 */ lhu $v0, 0x12e6($a3)
/* 6908 8002B508 A4620160 */ sh $v0, 0x160($v1)
/* 690C 8002B50C 94E212E8 */ lhu $v0, 0x12e8($a3)
/* 6910 8002B510 0000302D */ daddu $a2, $zero, $zero
/* 6914 8002B514 A4620162 */ sh $v0, 0x162($v1)
/* 6918 8002B518 94E212EA */ lhu $v0, 0x12ea($a3)
/* 691C 8002B51C 3C08800B */ lui $t0, %hi(gCurrentEncounter)
/* 6920 8002B520 25080F10 */ addiu $t0, $t0, %lo(gCurrentEncounter)
/* 6924 8002B524 A4620164 */ sh $v0, 0x164($v1)
/* 6928 8002B528 0000282D */ daddu $a1, $zero, $zero
.L8002B52C:
/* 692C 8002B52C 00062080 */ sll $a0, $a2, 2
.L8002B530:
/* 6930 8002B530 00881821 */ addu $v1, $a0, $t0
/* 6934 8002B534 00E41021 */ addu $v0, $a3, $a0
/* 6938 8002B538 8C420470 */ lw $v0, 0x470($v0)
/* 693C 8002B53C 24A50001 */ addiu $a1, $a1, 1
/* 6940 8002B540 AC6200B0 */ sw $v0, 0xb0($v1)
/* 6944 8002B544 28A2003C */ slti $v0, $a1, 0x3c
/* 6948 8002B548 1440FFF9 */ bnez $v0, .L8002B530
/* 694C 8002B54C 24840030 */ addiu $a0, $a0, 0x30
/* 6950 8002B550 24C60001 */ addiu $a2, $a2, 1
/* 6954 8002B554 28C2000C */ slti $v0, $a2, 0xc
/* 6958 8002B558 1440FFF4 */ bnez $v0, .L8002B52C
/* 695C 8002B55C 0000282D */ daddu $a1, $zero, $zero
/* 6960 8002B560 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 6964 8002B564 2463419C */ addiu $v1, $v1, %lo(gGameStatusPtr)
/* 6968 8002B568 8C620000 */ lw $v0, ($v1)
/* 696C 8002B56C A0400074 */ sb $zero, 0x74($v0)
/* 6970 8002B570 8C620000 */ lw $v0, ($v1)
/* 6974 8002B574 A0400076 */ sb $zero, 0x76($v0)
/* 6978 8002B578 8C620000 */ lw $v0, ($v1)
/* 697C 8002B57C A0400077 */ sb $zero, 0x77($v0)
/* 6980 8002B580 8C640000 */ lw $a0, ($v1)
/* 6984 8002B584 24020001 */ addiu $v0, $zero, 1
/* 6988 8002B588 A082007A */ sb $v0, 0x7a($a0)
/* 698C 8002B58C 8C620000 */ lw $v0, ($v1)
/* 6990 8002B590 90430166 */ lbu $v1, 0x166($v0)
/* 6994 8002B594 00031040 */ sll $v0, $v1, 1
/* 6998 8002B598 00431021 */ addu $v0, $v0, $v1
/* 699C 8002B59C 000210C0 */ sll $v0, $v0, 3
/* 69A0 8002B5A0 8CE912EC */ lw $t1, 0x12ec($a3)
/* 69A4 8002B5A4 8CEA12F0 */ lw $t2, 0x12f0($a3)
/* 69A8 8002B5A8 8CEB12F4 */ lw $t3, 0x12f4($a3)
/* 69AC 8002B5AC 8CEC12F8 */ lw $t4, 0x12f8($a3)
/* 69B0 8002B5B0 3C018007 */ lui $at, %hi(gSaveSlotMetadata)
/* 69B4 8002B5B4 00220821 */ addu $at, $at, $v0
/* 69B8 8002B5B8 AC2979C4 */ sw $t1, %lo(gSaveSlotMetadata)($at)
/* 69BC 8002B5BC 3C018007 */ lui $at, %hi(D_800779C8)
/* 69C0 8002B5C0 00220821 */ addu $at, $at, $v0
/* 69C4 8002B5C4 AC2A79C8 */ sw $t2, %lo(D_800779C8)($at)
/* 69C8 8002B5C8 3C018007 */ lui $at, %hi(D_800779CC)
/* 69CC 8002B5CC 00220821 */ addu $at, $at, $v0
/* 69D0 8002B5D0 AC2B79CC */ sw $t3, %lo(D_800779CC)($at)
/* 69D4 8002B5D4 3C018007 */ lui $at, %hi(D_800779D0)
/* 69D8 8002B5D8 00220821 */ addu $at, $at, $v0
/* 69DC 8002B5DC AC2C79D0 */ sw $t4, %lo(D_800779D0)($at)
/* 69E0 8002B5E0 8CE912FC */ lw $t1, 0x12fc($a3)
/* 69E4 8002B5E4 8CEA1300 */ lw $t2, 0x1300($a3)
/* 69E8 8002B5E8 3C018007 */ lui $at, %hi(D_800779D4)
/* 69EC 8002B5EC 00220821 */ addu $at, $at, $v0
/* 69F0 8002B5F0 AC2979D4 */ sw $t1, %lo(D_800779D4)($at)
/* 69F4 8002B5F4 3C018007 */ lui $at, %hi(D_800779D8)
/* 69F8 8002B5F8 00220821 */ addu $at, $at, $v0
/* 69FC 8002B5FC AC2A79D8 */ sw $t2, %lo(D_800779D8)($at)
/* 6A00 8002B600 03E00008 */ jr $ra
/* 6A04 8002B604 00000000 */ nop

View File

@ -1,63 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fio_read_flash
/* 6C68 8002B868 27BDFF90 */ addiu $sp, $sp, -0x70
/* 6C6C 8002B86C AFB40060 */ sw $s4, 0x60($sp)
/* 6C70 8002B870 0080A02D */ daddu $s4, $a0, $zero
/* 6C74 8002B874 AFB10054 */ sw $s1, 0x54($sp)
/* 6C78 8002B878 00C0882D */ daddu $s1, $a2, $zero
/* 6C7C 8002B87C AFB20058 */ sw $s2, 0x58($sp)
/* 6C80 8002B880 00A0902D */ daddu $s2, $a1, $zero
/* 6C84 8002B884 0240202D */ daddu $a0, $s2, $zero
/* 6C88 8002B888 0220282D */ daddu $a1, $s1, $zero
/* 6C8C 8002B88C AFBF006C */ sw $ra, 0x6c($sp)
/* 6C90 8002B890 AFB60068 */ sw $s6, 0x68($sp)
/* 6C94 8002B894 AFB50064 */ sw $s5, 0x64($sp)
/* 6C98 8002B898 AFB3005C */ sw $s3, 0x5c($sp)
/* 6C9C 8002B89C 0C0185C8 */ jal osInvalDCache
/* 6CA0 8002B8A0 AFB00050 */ sw $s0, 0x50($sp)
/* 6CA4 8002B8A4 27B00030 */ addiu $s0, $sp, 0x30
/* 6CA8 8002B8A8 0200202D */ daddu $a0, $s0, $zero
/* 6CAC 8002B8AC 27A50048 */ addiu $a1, $sp, 0x48
/* 6CB0 8002B8B0 0C019560 */ jal osCreateMesgQueue
/* 6CB4 8002B8B4 24060001 */ addiu $a2, $zero, 1
/* 6CB8 8002B8B8 12200018 */ beqz $s1, .L8002B91C
/* 6CBC 8002B8BC 0000982D */ daddu $s3, $zero, $zero
/* 6CC0 8002B8C0 0014A9C0 */ sll $s5, $s4, 7
/* 6CC4 8002B8C4 24160001 */ addiu $s6, $zero, 1
/* 6CC8 8002B8C8 0200A02D */ daddu $s4, $s0, $zero
.L8002B8CC:
/* 6CCC 8002B8CC 2E220081 */ sltiu $v0, $s1, 0x81
/* 6CD0 8002B8D0 14400002 */ bnez $v0, .L8002B8DC
/* 6CD4 8002B8D4 0220802D */ daddu $s0, $s1, $zero
/* 6CD8 8002B8D8 24100080 */ addiu $s0, $zero, 0x80
.L8002B8DC:
/* 6CDC 8002B8DC 27A40018 */ addiu $a0, $sp, 0x18
/* 6CE0 8002B8E0 0000282D */ daddu $a1, $zero, $zero
/* 6CE4 8002B8E4 3266FFFF */ andi $a2, $s3, 0xffff
/* 6CE8 8002B8E8 02A63021 */ addu $a2, $s5, $a2
/* 6CEC 8002B8EC 0240382D */ daddu $a3, $s2, $zero
/* 6CF0 8002B8F0 AFB60010 */ sw $s6, 0x10($sp)
/* 6CF4 8002B8F4 0C01BDD7 */ jal osFlashReadArray
/* 6CF8 8002B8F8 AFB40014 */ sw $s4, 0x14($sp)
/* 6CFC 8002B8FC 0280202D */ daddu $a0, $s4, $zero
/* 6D00 8002B900 0000282D */ daddu $a1, $zero, $zero
/* 6D04 8002B904 0C0195BC */ jal osRecvMesg
/* 6D08 8002B908 24060001 */ addiu $a2, $zero, 1
/* 6D0C 8002B90C 26730001 */ addiu $s3, $s3, 1
/* 6D10 8002B910 02308823 */ subu $s1, $s1, $s0
/* 6D14 8002B914 1620FFED */ bnez $s1, .L8002B8CC
/* 6D18 8002B918 02509021 */ addu $s2, $s2, $s0
.L8002B91C:
/* 6D1C 8002B91C 8FBF006C */ lw $ra, 0x6c($sp)
/* 6D20 8002B920 8FB60068 */ lw $s6, 0x68($sp)
/* 6D24 8002B924 8FB50064 */ lw $s5, 0x64($sp)
/* 6D28 8002B928 8FB40060 */ lw $s4, 0x60($sp)
/* 6D2C 8002B92C 8FB3005C */ lw $s3, 0x5c($sp)
/* 6D30 8002B930 8FB20058 */ lw $s2, 0x58($sp)
/* 6D34 8002B934 8FB10054 */ lw $s1, 0x54($sp)
/* 6D38 8002B938 8FB00050 */ lw $s0, 0x50($sp)
/* 6D3C 8002B93C 24020001 */ addiu $v0, $zero, 1
/* 6D40 8002B940 03E00008 */ jr $ra
/* 6D44 8002B944 27BD0070 */ addiu $sp, $sp, 0x70

View File

@ -1,142 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fio_serialize_state
/* 6A30 8002B630 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 6A34 8002B634 AFB20018 */ sw $s2, 0x18($sp)
/* 6A38 8002B638 3C12800E */ lui $s2, %hi(gCurrentSaveFile)
/* 6A3C 8002B63C 2652ACC0 */ addiu $s2, $s2, %lo(gCurrentSaveFile)
/* 6A40 8002B640 26440040 */ addiu $a0, $s2, 0x40
/* 6A44 8002B644 3C028011 */ lui $v0, %hi(gPlayerData)
/* 6A48 8002B648 2442F290 */ addiu $v0, $v0, %lo(gPlayerData)
/* 6A4C 8002B64C 24430420 */ addiu $v1, $v0, 0x420
/* 6A50 8002B650 AFBF001C */ sw $ra, 0x1c($sp)
/* 6A54 8002B654 AFB10014 */ sw $s1, 0x14($sp)
/* 6A58 8002B658 AFB00010 */ sw $s0, 0x10($sp)
.L8002B65C:
/* 6A5C 8002B65C 8C480000 */ lw $t0, ($v0)
/* 6A60 8002B660 8C490004 */ lw $t1, 4($v0)
/* 6A64 8002B664 8C4A0008 */ lw $t2, 8($v0)
/* 6A68 8002B668 8C4B000C */ lw $t3, 0xc($v0)
/* 6A6C 8002B66C AC880000 */ sw $t0, ($a0)
/* 6A70 8002B670 AC890004 */ sw $t1, 4($a0)
/* 6A74 8002B674 AC8A0008 */ sw $t2, 8($a0)
/* 6A78 8002B678 AC8B000C */ sw $t3, 0xc($a0)
/* 6A7C 8002B67C 24420010 */ addiu $v0, $v0, 0x10
/* 6A80 8002B680 1443FFF6 */ bne $v0, $v1, .L8002B65C
/* 6A84 8002B684 24840010 */ addiu $a0, $a0, 0x10
/* 6A88 8002B688 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 6A8C 8002B68C 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 6A90 8002B690 8C480000 */ lw $t0, ($v0)
/* 6A94 8002B694 8C490004 */ lw $t1, 4($v0)
/* 6A98 8002B698 AC880000 */ sw $t0, ($a0)
/* 6A9C 8002B69C AC890004 */ sw $t1, 4($a0)
/* 6AA0 8002B6A0 94620086 */ lhu $v0, 0x86($v1)
/* 6AA4 8002B6A4 A6420468 */ sh $v0, 0x468($s2)
/* 6AA8 8002B6A8 9462008C */ lhu $v0, 0x8c($v1)
/* 6AAC 8002B6AC A642046A */ sh $v0, 0x46a($s2)
/* 6AB0 8002B6B0 9462008E */ lhu $v0, 0x8e($v1)
/* 6AB4 8002B6B4 A642046C */ sh $v0, 0x46c($s2)
/* 6AB8 8002B6B8 94620160 */ lhu $v0, 0x160($v1)
/* 6ABC 8002B6BC A64212E6 */ sh $v0, 0x12e6($s2)
/* 6AC0 8002B6C0 94620162 */ lhu $v0, 0x162($v1)
/* 6AC4 8002B6C4 0000302D */ daddu $a2, $zero, $zero
/* 6AC8 8002B6C8 A64212E8 */ sh $v0, 0x12e8($s2)
/* 6ACC 8002B6CC 94620164 */ lhu $v0, 0x164($v1)
/* 6AD0 8002B6D0 3C07800B */ lui $a3, %hi(gCurrentEncounter)
/* 6AD4 8002B6D4 24E70F10 */ addiu $a3, $a3, %lo(gCurrentEncounter)
/* 6AD8 8002B6D8 A64212EA */ sh $v0, 0x12ea($s2)
/* 6ADC 8002B6DC 0000282D */ daddu $a1, $zero, $zero
.L8002B6E0:
/* 6AE0 8002B6E0 00062080 */ sll $a0, $a2, 2
.L8002B6E4:
/* 6AE4 8002B6E4 02441821 */ addu $v1, $s2, $a0
/* 6AE8 8002B6E8 00871021 */ addu $v0, $a0, $a3
/* 6AEC 8002B6EC 8C4200B0 */ lw $v0, 0xb0($v0)
/* 6AF0 8002B6F0 24A50001 */ addiu $a1, $a1, 1
/* 6AF4 8002B6F4 AC620470 */ sw $v0, 0x470($v1)
/* 6AF8 8002B6F8 28A2003C */ slti $v0, $a1, 0x3c
/* 6AFC 8002B6FC 1440FFF9 */ bnez $v0, .L8002B6E4
/* 6B00 8002B700 24840030 */ addiu $a0, $a0, 0x30
/* 6B04 8002B704 24C60001 */ addiu $a2, $a2, 1
/* 6B08 8002B708 28C2000C */ slti $v0, $a2, 0xc
/* 6B0C 8002B70C 1440FFF4 */ bnez $v0, .L8002B6E0
/* 6B10 8002B710 0000282D */ daddu $a1, $zero, $zero
/* 6B14 8002B714 3C108007 */ lui $s0, %hi(gGameStatusPtr)
/* 6B18 8002B718 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr)
/* 6B1C 8002B71C 8E020000 */ lw $v0, ($s0)
/* 6B20 8002B720 8E030000 */ lw $v1, ($s0)
/* 6B24 8002B724 90420074 */ lbu $v0, 0x74($v0)
/* 6B28 8002B728 A24212E0 */ sb $v0, 0x12e0($s2)
/* 6B2C 8002B72C 90620076 */ lbu $v0, 0x76($v1)
/* 6B30 8002B730 8E030000 */ lw $v1, ($s0)
/* 6B34 8002B734 A24212E1 */ sb $v0, 0x12e1($s2)
/* 6B38 8002B738 90620077 */ lbu $v0, 0x77($v1)
/* 6B3C 8002B73C 8E030000 */ lw $v1, ($s0)
/* 6B40 8002B740 A24212E2 */ sb $v0, 0x12e2($s2)
/* 6B44 8002B744 9062007A */ lbu $v0, 0x7a($v1)
/* 6B48 8002B748 8E030000 */ lw $v1, ($s0)
/* 6B4C 8002B74C A24212E3 */ sb $v0, 0x12e3($s2)
/* 6B50 8002B750 90630166 */ lbu $v1, 0x166($v1)
/* 6B54 8002B754 3C118011 */ lui $s1, %hi(gPlayerData)
/* 6B58 8002B758 2631F290 */ addiu $s1, $s1, %lo(gPlayerData)
/* 6B5C 8002B75C 00031040 */ sll $v0, $v1, 1
/* 6B60 8002B760 00431021 */ addu $v0, $v0, $v1
/* 6B64 8002B764 92230009 */ lbu $v1, 9($s1)
/* 6B68 8002B768 000210C0 */ sll $v0, $v0, 3
/* 6B6C 8002B76C 3C018007 */ lui $at, %hi(D_800779CA)
/* 6B70 8002B770 00220821 */ addu $at, $at, $v0
/* 6B74 8002B774 A02379CA */ sb $v1, %lo(D_800779CA)($at)
/* 6B78 8002B778 0C00AB90 */ jal get_spirits_rescued
/* 6B7C 8002B77C 00000000 */ nop
/* 6B80 8002B780 8E030000 */ lw $v1, ($s0)
/* 6B84 8002B784 90640166 */ lbu $a0, 0x166($v1)
/* 6B88 8002B788 00041840 */ sll $v1, $a0, 1
/* 6B8C 8002B78C 00641821 */ addu $v1, $v1, $a0
/* 6B90 8002B790 000318C0 */ sll $v1, $v1, 3
/* 6B94 8002B794 3C018007 */ lui $at, %hi(D_800779C8)
/* 6B98 8002B798 00230821 */ addu $at, $at, $v1
/* 6B9C 8002B79C A02279C8 */ sb $v0, %lo(D_800779C8)($at)
/* 6BA0 8002B7A0 8E040000 */ lw $a0, ($s0)
/* 6BA4 8002B7A4 90830166 */ lbu $v1, 0x166($a0)
/* 6BA8 8002B7A8 00031040 */ sll $v0, $v1, 1
/* 6BAC 8002B7AC 00431021 */ addu $v0, $v0, $v1
/* 6BB0 8002B7B0 8E2302BC */ lw $v1, 0x2bc($s1)
/* 6BB4 8002B7B4 000210C0 */ sll $v0, $v0, 3
/* 6BB8 8002B7B8 3C018007 */ lui $at, %hi(gSaveSlotMetadata)
/* 6BBC 8002B7BC 00220821 */ addu $at, $at, $v0
/* 6BC0 8002B7C0 AC2379C4 */ sw $v1, %lo(gSaveSlotMetadata)($at)
/* 6BC4 8002B7C4 90830166 */ lbu $v1, 0x166($a0)
/* 6BC8 8002B7C8 00031040 */ sll $v0, $v1, 1
/* 6BCC 8002B7CC 00431021 */ addu $v0, $v0, $v1
/* 6BD0 8002B7D0 000210C0 */ sll $v0, $v0, 3
/* 6BD4 8002B7D4 3C088007 */ lui $t0, %hi(gSaveSlotMetadata)
/* 6BD8 8002B7D8 01024021 */ addu $t0, $t0, $v0
/* 6BDC 8002B7DC 8D0879C4 */ lw $t0, %lo(gSaveSlotMetadata)($t0)
/* 6BE0 8002B7E0 3C098007 */ lui $t1, %hi(D_800779C8)
/* 6BE4 8002B7E4 01224821 */ addu $t1, $t1, $v0
/* 6BE8 8002B7E8 8D2979C8 */ lw $t1, %lo(D_800779C8)($t1)
/* 6BEC 8002B7EC 3C0A8007 */ lui $t2, %hi(D_800779CC)
/* 6BF0 8002B7F0 01425021 */ addu $t2, $t2, $v0
/* 6BF4 8002B7F4 8D4A79CC */ lw $t2, %lo(D_800779CC)($t2)
/* 6BF8 8002B7F8 3C0B8007 */ lui $t3, %hi(D_800779D0)
/* 6BFC 8002B7FC 01625821 */ addu $t3, $t3, $v0
/* 6C00 8002B800 8D6B79D0 */ lw $t3, %lo(D_800779D0)($t3)
/* 6C04 8002B804 AE4812EC */ sw $t0, 0x12ec($s2)
/* 6C08 8002B808 AE4912F0 */ sw $t1, 0x12f0($s2)
/* 6C0C 8002B80C AE4A12F4 */ sw $t2, 0x12f4($s2)
/* 6C10 8002B810 AE4B12F8 */ sw $t3, 0x12f8($s2)
/* 6C14 8002B814 3C088007 */ lui $t0, %hi(D_800779D4)
/* 6C18 8002B818 01024021 */ addu $t0, $t0, $v0
/* 6C1C 8002B81C 8D0879D4 */ lw $t0, %lo(D_800779D4)($t0)
/* 6C20 8002B820 3C098007 */ lui $t1, %hi(D_800779D8)
/* 6C24 8002B824 01224821 */ addu $t1, $t1, $v0
/* 6C28 8002B828 8D2979D8 */ lw $t1, %lo(D_800779D8)($t1)
/* 6C2C 8002B82C AE4812FC */ sw $t0, 0x12fc($s2)
/* 6C30 8002B830 AE491300 */ sw $t1, 0x1300($s2)
/* 6C34 8002B834 8FBF001C */ lw $ra, 0x1c($sp)
/* 6C38 8002B838 8FB20018 */ lw $s2, 0x18($sp)
/* 6C3C 8002B83C 8FB10014 */ lw $s1, 0x14($sp)
/* 6C40 8002B840 8FB00010 */ lw $s0, 0x10($sp)
/* 6C44 8002B844 03E00008 */ jr $ra
/* 6C48 8002B848 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fio_validate_header_checksums
/* 6370 8002AF70 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 6374 8002AF74 3C02800E */ lui $v0, %hi(D_800D95E8)
/* 6378 8002AF78 244295E8 */ addiu $v0, $v0, %lo(D_800D95E8)
/* 637C 8002AF7C AFB00010 */ sw $s0, 0x10($sp)
/* 6380 8002AF80 0040802D */ daddu $s0, $v0, $zero
/* 6384 8002AF84 3C058007 */ lui $a1, %hi(magicSaveString)
/* 6388 8002AF88 24A545D0 */ addiu $a1, $a1, %lo(magicSaveString)
/* 638C 8002AF8C AFBF0014 */ sw $ra, 0x14($sp)
/* 6390 8002AF90 0C01BB5C */ jal strcmp
/* 6394 8002AF94 0200202D */ daddu $a0, $s0, $zero
/* 6398 8002AF98 1440000B */ bnez $v0, .L8002AFC8
/* 639C 8002AF9C 0000102D */ daddu $v0, $zero, $zero
/* 63A0 8002AFA0 8E020034 */ lw $v0, 0x34($s0)
/* 63A4 8002AFA4 8E030030 */ lw $v1, 0x30($s0)
/* 63A8 8002AFA8 00021027 */ nor $v0, $zero, $v0
/* 63AC 8002AFAC 54620006 */ bnel $v1, $v0, .L8002AFC8
/* 63B0 8002AFB0 0000102D */ daddu $v0, $zero, $zero
/* 63B4 8002AFB4 0C00ABD0 */ jal fio_calc_header_checksum
/* 63B8 8002AFB8 00000000 */ nop
/* 63BC 8002AFBC 8E030030 */ lw $v1, 0x30($s0)
/* 63C0 8002AFC0 00431026 */ xor $v0, $v0, $v1
/* 63C4 8002AFC4 2C420001 */ sltiu $v0, $v0, 1
.L8002AFC8:
/* 63C8 8002AFC8 8FBF0014 */ lw $ra, 0x14($sp)
/* 63CC 8002AFCC 8FB00010 */ lw $s0, 0x10($sp)
/* 63D0 8002AFD0 03E00008 */ jr $ra
/* 63D4 8002AFD4 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,60 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fio_write_flash
/* 6D48 8002B948 27BDFF98 */ addiu $sp, $sp, -0x68
/* 6D4C 8002B94C AFB5005C */ sw $s5, 0x5c($sp)
/* 6D50 8002B950 0080A82D */ daddu $s5, $a0, $zero
/* 6D54 8002B954 AFB20050 */ sw $s2, 0x50($sp)
/* 6D58 8002B958 00A0902D */ daddu $s2, $a1, $zero
/* 6D5C 8002B95C AFB1004C */ sw $s1, 0x4c($sp)
/* 6D60 8002B960 00C0882D */ daddu $s1, $a2, $zero
/* 6D64 8002B964 0240202D */ daddu $a0, $s2, $zero
/* 6D68 8002B968 0220282D */ daddu $a1, $s1, $zero
/* 6D6C 8002B96C AFBF0060 */ sw $ra, 0x60($sp)
/* 6D70 8002B970 AFB40058 */ sw $s4, 0x58($sp)
/* 6D74 8002B974 AFB30054 */ sw $s3, 0x54($sp)
/* 6D78 8002B978 0C018614 */ jal osWritebackDCache
/* 6D7C 8002B97C AFB00048 */ sw $s0, 0x48($sp)
/* 6D80 8002B980 27B00028 */ addiu $s0, $sp, 0x28
/* 6D84 8002B984 0200202D */ daddu $a0, $s0, $zero
/* 6D88 8002B988 27A50040 */ addiu $a1, $sp, 0x40
/* 6D8C 8002B98C 0C019560 */ jal osCreateMesgQueue
/* 6D90 8002B990 24060001 */ addiu $a2, $zero, 1
/* 6D94 8002B994 12200017 */ beqz $s1, .L8002B9F4
/* 6D98 8002B998 0000982D */ daddu $s3, $zero, $zero
/* 6D9C 8002B99C 0200A02D */ daddu $s4, $s0, $zero
/* 6DA0 8002B9A0 0015A9C0 */ sll $s5, $s5, 7
.L8002B9A4:
/* 6DA4 8002B9A4 2E220081 */ sltiu $v0, $s1, 0x81
/* 6DA8 8002B9A8 14400002 */ bnez $v0, .L8002B9B4
/* 6DAC 8002B9AC 0220802D */ daddu $s0, $s1, $zero
/* 6DB0 8002B9B0 24100080 */ addiu $s0, $zero, 0x80
.L8002B9B4:
/* 6DB4 8002B9B4 27A40010 */ addiu $a0, $sp, 0x10
/* 6DB8 8002B9B8 0000282D */ daddu $a1, $zero, $zero
/* 6DBC 8002B9BC 0240302D */ daddu $a2, $s2, $zero
/* 6DC0 8002B9C0 0C01BD54 */ jal osFlashWriteBuffer
/* 6DC4 8002B9C4 0280382D */ daddu $a3, $s4, $zero
/* 6DC8 8002B9C8 3264FFFF */ andi $a0, $s3, 0xffff
/* 6DCC 8002B9CC 0C01BD87 */ jal osFlashWriteArray
/* 6DD0 8002B9D0 02A42021 */ addu $a0, $s5, $a0
/* 6DD4 8002B9D4 0280202D */ daddu $a0, $s4, $zero
/* 6DD8 8002B9D8 0000282D */ daddu $a1, $zero, $zero
/* 6DDC 8002B9DC 0C0195BC */ jal osRecvMesg
/* 6DE0 8002B9E0 24060001 */ addiu $a2, $zero, 1
/* 6DE4 8002B9E4 26730001 */ addiu $s3, $s3, 1
/* 6DE8 8002B9E8 02308823 */ subu $s1, $s1, $s0
/* 6DEC 8002B9EC 1620FFED */ bnez $s1, .L8002B9A4
/* 6DF0 8002B9F0 02509021 */ addu $s2, $s2, $s0
.L8002B9F4:
/* 6DF4 8002B9F4 8FBF0060 */ lw $ra, 0x60($sp)
/* 6DF8 8002B9F8 8FB5005C */ lw $s5, 0x5c($sp)
/* 6DFC 8002B9FC 8FB40058 */ lw $s4, 0x58($sp)
/* 6E00 8002BA00 8FB30054 */ lw $s3, 0x54($sp)
/* 6E04 8002BA04 8FB20050 */ lw $s2, 0x50($sp)
/* 6E08 8002BA08 8FB1004C */ lw $s1, 0x4c($sp)
/* 6E0C 8002BA0C 8FB00048 */ lw $s0, 0x48($sp)
/* 6E10 8002BA10 24020001 */ addiu $v0, $zero, 1
/* 6E14 8002BA14 03E00008 */ jr $ra
/* 6E18 8002BA18 27BD0068 */ addiu $sp, $sp, 0x68

View File

@ -15,8 +15,8 @@ dlabel jtbl_80150438
dlabel jtbl_801504F8 dlabel jtbl_801504F8
.word .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125210_BB910, .L80125600_BBD00, .L80125210_BB910, .L80125204_BB904, .L80125210_BB910, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, 0 .word .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125210_BB910, .L80125600_BBD00, .L80125210_BB910, .L80125204_BB904, .L80125210_BB910, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, .L80125204_BB904, 0
dlabel D_80150538 dlabel jtbl_80150538
.word 0x801252CC, 0x801253D4, 0x801253D4, 0x80125300, 0x80125300, 0x80125300, 0x80125300, 0x80125314, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x80125320 .word .L801252CC, .L801253D4, .L801253D4, .L80125300, .L80125300, .L80125300, .L80125300, .L80125314, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L80125320
.section .text .section .text
@ -952,12 +952,13 @@ glabel msg_copy_to_print_buffer
/* BB9A8 801252A8 2C620010 */ sltiu $v0, $v1, 0x10 /* BB9A8 801252A8 2C620010 */ sltiu $v0, $v1, 0x10
/* BB9AC 801252AC 10400049 */ beqz $v0, .L801253D4 /* BB9AC 801252AC 10400049 */ beqz $v0, .L801253D4
/* BB9B0 801252B0 00031080 */ sll $v0, $v1, 2 /* BB9B0 801252B0 00031080 */ sll $v0, $v1, 2
/* BB9B4 801252B4 3C088015 */ lui $t0, %hi(D_80150538) /* BB9B4 801252B4 3C088015 */ lui $t0, %hi(jtbl_80150538)
/* BB9B8 801252B8 25080538 */ addiu $t0, $t0, %lo(D_80150538) /* BB9B8 801252B8 25080538 */ addiu $t0, $t0, %lo(jtbl_80150538)
/* BB9BC 801252BC 00481021 */ addu $v0, $v0, $t0 /* BB9BC 801252BC 00481021 */ addu $v0, $v0, $t0
/* BB9C0 801252C0 8C420000 */ lw $v0, ($v0) /* BB9C0 801252C0 8C420000 */ lw $v0, ($v0)
/* BB9C4 801252C4 00400008 */ jr $v0 /* BB9C4 801252C4 00400008 */ jr $v0
/* BB9C8 801252C8 00000000 */ nop /* BB9C8 801252C8 00000000 */ nop
.L801252CC:
/* BB9CC 801252CC 96820528 */ lhu $v0, 0x528($s4) /* BB9CC 801252CC 96820528 */ lhu $v0, 0x528($s4)
/* BB9D0 801252D0 3C088015 */ lui $t0, %hi(gMessageMsgVars) /* BB9D0 801252D0 3C088015 */ lui $t0, %hi(gMessageMsgVars)
/* BB9D4 801252D4 25085C38 */ addiu $t0, $t0, %lo(gMessageMsgVars) /* BB9D4 801252D4 25085C38 */ addiu $t0, $t0, %lo(gMessageMsgVars)
@ -972,14 +973,17 @@ glabel msg_copy_to_print_buffer
.L801252F8: .L801252F8:
/* BB9F8 801252F8 080494F5 */ j .L801253D4 /* BB9F8 801252F8 080494F5 */ j .L801253D4
/* BB9FC 801252FC 0000202D */ daddu $a0, $zero, $zero /* BB9FC 801252FC 0000202D */ daddu $a0, $zero, $zero
.L80125300:
/* BBA00 80125300 24A200FE */ addiu $v0, $a1, 0xfe /* BBA00 80125300 24A200FE */ addiu $v0, $a1, 0xfe
/* BBA04 80125304 A3A20010 */ sb $v0, 0x10($sp) /* BBA04 80125304 A3A20010 */ sb $v0, 0x10($sp)
/* BBA08 80125308 24A2010D */ addiu $v0, $a1, 0x10d /* BBA08 80125308 24A2010D */ addiu $v0, $a1, 0x10d
/* BBA0C 8012530C 080494F5 */ j .L801253D4 /* BBA0C 8012530C 080494F5 */ j .L801253D4
/* BBA10 80125310 A2820455 */ sb $v0, 0x455($s4) /* BBA10 80125310 A2820455 */ sb $v0, 0x455($s4)
.L80125314:
/* BBA14 80125314 240200F5 */ addiu $v0, $zero, 0xf5 /* BBA14 80125314 240200F5 */ addiu $v0, $zero, 0xf5
/* BBA18 80125318 080494F5 */ j .L801253D4 /* BBA18 80125318 080494F5 */ j .L801253D4
/* BBA1C 8012531C A3A20010 */ sb $v0, 0x10($sp) /* BBA1C 8012531C A3A20010 */ sb $v0, 0x10($sp)
.L80125320:
/* BBA20 80125320 A3B60010 */ sb $s6, 0x10($sp) /* BBA20 80125320 A3B60010 */ sb $s6, 0x10($sp)
/* BBA24 80125324 96820528 */ lhu $v0, 0x528($s4) /* BBA24 80125324 96820528 */ lhu $v0, 0x528($s4)
/* BBA28 80125328 3C088015 */ lui $t0, %hi(gMessageMsgVars) /* BBA28 80125328 3C088015 */ lui $t0, %hi(gMessageMsgVars)

View File

@ -1,571 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_80098480
.double 0.7142857142857143
dlabel D_80098488
.double 0.7142857142857143
dlabel D_80098490
.double 0.7142857142857143
dlabel D_80098498
.double 0.7142857142857143
dlabel D_800984A0
.double 0.7142857142857143
dlabel D_800984A8
.double 0.7142857142857143
.section .text
glabel appendGfx_npc
/* 153D0 80039FD0 27BDFF48 */ addiu $sp, $sp, -0xb8
/* 153D4 80039FD4 AFB1009C */ sw $s1, 0x9c($sp)
/* 153D8 80039FD8 AFBF00A0 */ sw $ra, 0xa0($sp)
/* 153DC 80039FDC AFB00098 */ sw $s0, 0x98($sp)
/* 153E0 80039FE0 F7B600B0 */ sdc1 $f22, 0xb0($sp)
/* 153E4 80039FE4 F7B400A8 */ sdc1 $f20, 0xa8($sp)
/* 153E8 80039FE8 0C00E769 */ jal npc_get_render_yaw
/* 153EC 80039FEC 0080882D */ daddu $s1, $a0, $zero
/* 153F0 80039FF0 27A40018 */ addiu $a0, $sp, 0x18
/* 153F4 80039FF4 822200AB */ lb $v0, 0xab($s1)
/* 153F8 80039FF8 C624003C */ lwc1 $f4, 0x3c($s1)
/* 153FC 80039FFC 44821000 */ mtc1 $v0, $f2
/* 15400 8003A000 00000000 */ nop
/* 15404 8003A004 468010A0 */ cvt.s.w $f2, $f2
/* 15408 8003A008 46022100 */ add.s $f4, $f4, $f2
/* 1540C 8003A00C 8E250038 */ lw $a1, 0x38($s1)
/* 15410 8003A010 8E270040 */ lw $a3, 0x40($s1)
/* 15414 8003A014 44062000 */ mfc1 $a2, $f4
/* 15418 8003A018 0C019E40 */ jal guTranslateF
/* 1541C 8003A01C 46000586 */ mov.s $f22, $f0
/* 15420 8003A020 8E220000 */ lw $v0, ($s1)
/* 15424 8003A024 30420080 */ andi $v0, $v0, 0x80
/* 15428 8003A028 10400007 */ beqz $v0, .L8003A048
/* 1542C 8003A02C 27B00058 */ addiu $s0, $sp, 0x58
/* 15430 8003A030 0C00E11E */ jal mtx_ident_mirror_y
/* 15434 8003A034 0200202D */ daddu $a0, $s0, $zero
/* 15438 8003A038 0200202D */ daddu $a0, $s0, $zero
/* 1543C 8003A03C 27A50018 */ addiu $a1, $sp, 0x18
/* 15440 8003A040 0C019D80 */ jal guMtxCatF
/* 15444 8003A044 00A0302D */ daddu $a2, $a1, $zero
.L8003A048:
/* 15448 8003A048 C6200050 */ lwc1 $f0, 0x50($s1)
/* 1544C 8003A04C 4480A000 */ mtc1 $zero, $f20
/* 15450 8003A050 00000000 */ nop
/* 15454 8003A054 46140032 */ c.eq.s $f0, $f20
/* 15458 8003A058 00000000 */ nop
/* 1545C 8003A05C 4501000A */ bc1t .L8003A088
/* 15460 8003A060 27B00058 */ addiu $s0, $sp, 0x58
/* 15464 8003A064 4405A000 */ mfc1 $a1, $f20
/* 15468 8003A068 44060000 */ mfc1 $a2, $f0
/* 1546C 8003A06C 4407A000 */ mfc1 $a3, $f20
/* 15470 8003A070 0C019E40 */ jal guTranslateF
/* 15474 8003A074 0200202D */ daddu $a0, $s0, $zero
/* 15478 8003A078 0200202D */ daddu $a0, $s0, $zero
/* 1547C 8003A07C 27A50018 */ addiu $a1, $sp, 0x18
/* 15480 8003A080 0C019D80 */ jal guMtxCatF
/* 15484 8003A084 00A0302D */ daddu $a2, $a1, $zero
.L8003A088:
/* 15488 8003A088 C6200048 */ lwc1 $f0, 0x48($s1)
/* 1548C 8003A08C 46140032 */ c.eq.s $f0, $f20
/* 15490 8003A090 00000000 */ nop
/* 15494 8003A094 4501000B */ bc1t .L8003A0C4
/* 15498 8003A098 27B00058 */ addiu $s0, $sp, 0x58
/* 1549C 8003A09C E7B40010 */ swc1 $f20, 0x10($sp)
/* 154A0 8003A0A0 8E250048 */ lw $a1, 0x48($s1)
/* 154A4 8003A0A4 4406A000 */ mfc1 $a2, $f20
/* 154A8 8003A0A8 3C073F80 */ lui $a3, 0x3f80
/* 154AC 8003A0AC 0C019EC8 */ jal guRotateF
/* 154B0 8003A0B0 0200202D */ daddu $a0, $s0, $zero
/* 154B4 8003A0B4 0200202D */ daddu $a0, $s0, $zero
/* 154B8 8003A0B8 27A50018 */ addiu $a1, $sp, 0x18
/* 154BC 8003A0BC 0C019D80 */ jal guMtxCatF
/* 154C0 8003A0C0 00A0302D */ daddu $a2, $a1, $zero
.L8003A0C4:
/* 154C4 8003A0C4 C6200044 */ lwc1 $f0, 0x44($s1)
/* 154C8 8003A0C8 46140032 */ c.eq.s $f0, $f20
/* 154CC 8003A0CC 00000000 */ nop
/* 154D0 8003A0D0 4501000B */ bc1t .L8003A100
/* 154D4 8003A0D4 27B00058 */ addiu $s0, $sp, 0x58
/* 154D8 8003A0D8 E7B40010 */ swc1 $f20, 0x10($sp)
/* 154DC 8003A0DC 8E250044 */ lw $a1, 0x44($s1)
/* 154E0 8003A0E0 3C063F80 */ lui $a2, 0x3f80
/* 154E4 8003A0E4 4407A000 */ mfc1 $a3, $f20
/* 154E8 8003A0E8 0C019EC8 */ jal guRotateF
/* 154EC 8003A0EC 0200202D */ daddu $a0, $s0, $zero
/* 154F0 8003A0F0 0200202D */ daddu $a0, $s0, $zero
/* 154F4 8003A0F4 27A50018 */ addiu $a1, $sp, 0x18
/* 154F8 8003A0F8 0C019D80 */ jal guMtxCatF
/* 154FC 8003A0FC 00A0302D */ daddu $a2, $a1, $zero
.L8003A100:
/* 15500 8003A100 C620004C */ lwc1 $f0, 0x4c($s1)
/* 15504 8003A104 46140032 */ c.eq.s $f0, $f20
/* 15508 8003A108 00000000 */ nop
/* 1550C 8003A10C 4501000E */ bc1t .L8003A148
/* 15510 8003A110 27B00058 */ addiu $s0, $sp, 0x58
/* 15514 8003A114 4406A000 */ mfc1 $a2, $f20
/* 15518 8003A118 4407A000 */ mfc1 $a3, $f20
/* 1551C 8003A11C 3C013F80 */ lui $at, 0x3f80
/* 15520 8003A120 44810000 */ mtc1 $at, $f0
/* 15524 8003A124 00000000 */ nop
/* 15528 8003A128 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1552C 8003A12C 8E25004C */ lw $a1, 0x4c($s1)
/* 15530 8003A130 0C019EC8 */ jal guRotateF
/* 15534 8003A134 0200202D */ daddu $a0, $s0, $zero
/* 15538 8003A138 0200202D */ daddu $a0, $s0, $zero
/* 1553C 8003A13C 27A50018 */ addiu $a1, $sp, 0x18
/* 15540 8003A140 0C019D80 */ jal guMtxCatF
/* 15544 8003A144 00A0302D */ daddu $a2, $a1, $zero
.L8003A148:
/* 15548 8003A148 C6200050 */ lwc1 $f0, 0x50($s1)
/* 1554C 8003A14C 46140032 */ c.eq.s $f0, $f20
/* 15550 8003A150 00000000 */ nop
/* 15554 8003A154 4501000B */ bc1t .L8003A184
/* 15558 8003A158 27B00058 */ addiu $s0, $sp, 0x58
/* 1555C 8003A15C 46000007 */ neg.s $f0, $f0
/* 15560 8003A160 4405A000 */ mfc1 $a1, $f20
/* 15564 8003A164 4407A000 */ mfc1 $a3, $f20
/* 15568 8003A168 44060000 */ mfc1 $a2, $f0
/* 1556C 8003A16C 0C019E40 */ jal guTranslateF
/* 15570 8003A170 0200202D */ daddu $a0, $s0, $zero
/* 15574 8003A174 0200202D */ daddu $a0, $s0, $zero
/* 15578 8003A178 27A50018 */ addiu $a1, $sp, 0x18
/* 1557C 8003A17C 0C019D80 */ jal guMtxCatF
/* 15580 8003A180 00A0302D */ daddu $a2, $a1, $zero
.L8003A184:
/* 15584 8003A184 C6220318 */ lwc1 $f2, 0x318($s1)
/* 15588 8003A188 46141032 */ c.eq.s $f2, $f20
/* 1558C 8003A18C 00000000 */ nop
/* 15590 8003A190 45000006 */ bc1f .L8003A1AC
/* 15594 8003A194 00000000 */ nop
/* 15598 8003A198 C620031C */ lwc1 $f0, 0x31c($s1)
/* 1559C 8003A19C 46140032 */ c.eq.s $f0, $f20
/* 155A0 8003A1A0 00000000 */ nop
/* 155A4 8003A1A4 4501000A */ bc1t .L8003A1D0
/* 155A8 8003A1A8 00000000 */ nop
.L8003A1AC:
/* 155AC 8003A1AC 44051000 */ mfc1 $a1, $f2
/* 155B0 8003A1B0 8E26031C */ lw $a2, 0x31c($s1)
/* 155B4 8003A1B4 4407A000 */ mfc1 $a3, $f20
/* 155B8 8003A1B8 0C019E40 */ jal guTranslateF
/* 155BC 8003A1BC 27A40018 */ addiu $a0, $sp, 0x18
/* 155C0 8003A1C0 27A40058 */ addiu $a0, $sp, 0x58
/* 155C4 8003A1C4 27A50018 */ addiu $a1, $sp, 0x18
/* 155C8 8003A1C8 0C019D80 */ jal guMtxCatF
/* 155CC 8003A1CC 00A0302D */ daddu $a2, $a1, $zero
.L8003A1D0:
/* 155D0 8003A1D0 C6200054 */ lwc1 $f0, 0x54($s1)
/* 155D4 8003A1D4 3C01800A */ lui $at, %hi(D_80098480)
/* 155D8 8003A1D8 D4268480 */ ldc1 $f6, %lo(D_80098480)($at)
/* 155DC 8003A1DC 46000021 */ cvt.d.s $f0, $f0
/* 155E0 8003A1E0 46260002 */ mul.d $f0, $f0, $f6
/* 155E4 8003A1E4 00000000 */ nop
/* 155E8 8003A1E8 3C013FF0 */ lui $at, 0x3ff0
/* 155EC 8003A1EC 44812800 */ mtc1 $at, $f5
/* 155F0 8003A1F0 44802000 */ mtc1 $zero, $f4
/* 155F4 8003A1F4 00000000 */ nop
/* 155F8 8003A1F8 46240032 */ c.eq.d $f0, $f4
/* 155FC 8003A1FC 00000000 */ nop
/* 15600 8003A200 45000014 */ bc1f .L8003A254
/* 15604 8003A204 00000000 */ nop
/* 15608 8003A208 C6200058 */ lwc1 $f0, 0x58($s1)
/* 1560C 8003A20C C6220320 */ lwc1 $f2, 0x320($s1)
/* 15610 8003A210 46020002 */ mul.s $f0, $f0, $f2
/* 15614 8003A214 00000000 */ nop
/* 15618 8003A218 46000021 */ cvt.d.s $f0, $f0
/* 1561C 8003A21C 46260002 */ mul.d $f0, $f0, $f6
/* 15620 8003A220 00000000 */ nop
/* 15624 8003A224 46240032 */ c.eq.d $f0, $f4
/* 15628 8003A228 00000000 */ nop
/* 1562C 8003A22C 45000009 */ bc1f .L8003A254
/* 15630 8003A230 00000000 */ nop
/* 15634 8003A234 C620005C */ lwc1 $f0, 0x5c($s1)
/* 15638 8003A238 46000021 */ cvt.d.s $f0, $f0
/* 1563C 8003A23C 46260002 */ mul.d $f0, $f0, $f6
/* 15640 8003A240 00000000 */ nop
/* 15644 8003A244 46240032 */ c.eq.d $f0, $f4
/* 15648 8003A248 00000000 */ nop
/* 1564C 8003A24C 4501001F */ bc1t .L8003A2CC
/* 15650 8003A250 00000000 */ nop
.L8003A254:
/* 15654 8003A254 C6260054 */ lwc1 $f6, 0x54($s1)
/* 15658 8003A258 3C01800A */ lui $at, %hi(D_80098488)
/* 1565C 8003A25C D4288488 */ ldc1 $f8, %lo(D_80098488)($at)
/* 15660 8003A260 460031A1 */ cvt.d.s $f6, $f6
/* 15664 8003A264 46283182 */ mul.d $f6, $f6, $f8
/* 15668 8003A268 00000000 */ nop
/* 1566C 8003A26C C622005C */ lwc1 $f2, 0x5c($s1)
/* 15670 8003A270 460010A1 */ cvt.d.s $f2, $f2
/* 15674 8003A274 46281082 */ mul.d $f2, $f2, $f8
/* 15678 8003A278 00000000 */ nop
/* 1567C 8003A27C C6200058 */ lwc1 $f0, 0x58($s1)
/* 15680 8003A280 C6240320 */ lwc1 $f4, 0x320($s1)
/* 15684 8003A284 46040002 */ mul.s $f0, $f0, $f4
/* 15688 8003A288 00000000 */ nop
/* 1568C 8003A28C 46000021 */ cvt.d.s $f0, $f0
/* 15690 8003A290 46280002 */ mul.d $f0, $f0, $f8
/* 15694 8003A294 00000000 */ nop
/* 15698 8003A298 27B00058 */ addiu $s0, $sp, 0x58
/* 1569C 8003A29C 462031A0 */ cvt.s.d $f6, $f6
/* 156A0 8003A2A0 462010A0 */ cvt.s.d $f2, $f2
/* 156A4 8003A2A4 44053000 */ mfc1 $a1, $f6
/* 156A8 8003A2A8 44071000 */ mfc1 $a3, $f2
/* 156AC 8003A2AC 46200020 */ cvt.s.d $f0, $f0
/* 156B0 8003A2B0 44060000 */ mfc1 $a2, $f0
/* 156B4 8003A2B4 0C019DF0 */ jal guScaleF
/* 156B8 8003A2B8 0200202D */ daddu $a0, $s0, $zero
/* 156BC 8003A2BC 0200202D */ daddu $a0, $s0, $zero
/* 156C0 8003A2C0 27A50018 */ addiu $a1, $sp, 0x18
/* 156C4 8003A2C4 0C019D80 */ jal guMtxCatF
/* 156C8 8003A2C8 00A0302D */ daddu $a2, $a1, $zero
.L8003A2CC:
/* 156CC 8003A2CC 8E230000 */ lw $v1, ($s1)
/* 156D0 8003A2D0 3C024000 */ lui $v0, 0x4000
/* 156D4 8003A2D4 00621024 */ and $v0, $v1, $v0
/* 156D8 8003A2D8 14400014 */ bnez $v0, .L8003A32C
/* 156DC 8003A2DC 0220202D */ daddu $a0, $s1, $zero
/* 156E0 8003A2E0 3C020100 */ lui $v0, 0x100
/* 156E4 8003A2E4 00621024 */ and $v0, $v1, $v0
/* 156E8 8003A2E8 14400017 */ bnez $v0, .L8003A348
/* 156EC 8003A2EC 00000000 */ nop
/* 156F0 8003A2F0 8E220028 */ lw $v0, 0x28($s1)
/* 156F4 8003A2F4 10400014 */ beqz $v0, .L8003A348
/* 156F8 8003A2F8 00000000 */ nop
/* 156FC 8003A2FC 8E220024 */ lw $v0, 0x24($s1)
/* 15700 8003A300 04400011 */ bltz $v0, .L8003A348
/* 15704 8003A304 00000000 */ nop
/* 15708 8003A308 4600B28D */ trunc.w.s $f10, $f22
/* 1570C 8003A30C 44055000 */ mfc1 $a1, $f10
/* 15710 8003A310 0C00ED1F */ jal npc_draw_with_palswap
/* 15714 8003A314 27A60018 */ addiu $a2, $sp, 0x18
/* 15718 8003A318 8E240024 */ lw $a0, 0x24($s1)
/* 1571C 8003A31C 0C0B7972 */ jal func_802DE5C8
/* 15720 8003A320 00000000 */ nop
/* 15724 8003A324 0800E8D2 */ j .L8003A348
/* 15728 8003A328 AE22002C */ sw $v0, 0x2c($s1)
.L8003A32C:
/* 1572C 8003A32C 4600B28D */ trunc.w.s $f10, $f22
/* 15730 8003A330 44055000 */ mfc1 $a1, $f10
/* 15734 8003A334 0C00ED1F */ jal npc_draw_with_palswap
/* 15738 8003A338 27A60018 */ addiu $a2, $sp, 0x18
/* 1573C 8003A33C 0C0B77B1 */ jal func_802DDEC4
/* 15740 8003A340 24040001 */ addiu $a0, $zero, 1
/* 15744 8003A344 AE22002C */ sw $v0, 0x2c($s1)
.L8003A348:
/* 15748 8003A348 8E220000 */ lw $v0, ($s1)
/* 1574C 8003A34C 3C030002 */ lui $v1, 2
/* 15750 8003A350 00431024 */ and $v0, $v0, $v1
/* 15754 8003A354 1040008E */ beqz $v0, .L8003A590
/* 15758 8003A358 00000000 */ nop
/* 1575C 8003A35C 822200AB */ lb $v0, 0xab($s1)
/* 15760 8003A360 C622003C */ lwc1 $f2, 0x3c($s1)
/* 15764 8003A364 44820000 */ mtc1 $v0, $f0
/* 15768 8003A368 00000000 */ nop
/* 1576C 8003A36C 46800020 */ cvt.s.w $f0, $f0
/* 15770 8003A370 46001080 */ add.s $f2, $f2, $f0
/* 15774 8003A374 C6200040 */ lwc1 $f0, 0x40($s1)
/* 15778 8003A378 8E250038 */ lw $a1, 0x38($s1)
/* 1577C 8003A37C 46000007 */ neg.s $f0, $f0
/* 15780 8003A380 44070000 */ mfc1 $a3, $f0
/* 15784 8003A384 44061000 */ mfc1 $a2, $f2
/* 15788 8003A388 0C019E40 */ jal guTranslateF
/* 1578C 8003A38C 27A40018 */ addiu $a0, $sp, 0x18
/* 15790 8003A390 8E220000 */ lw $v0, ($s1)
/* 15794 8003A394 30420080 */ andi $v0, $v0, 0x80
/* 15798 8003A398 10400007 */ beqz $v0, .L8003A3B8
/* 1579C 8003A39C 27B00058 */ addiu $s0, $sp, 0x58
/* 157A0 8003A3A0 0C00E11E */ jal mtx_ident_mirror_y
/* 157A4 8003A3A4 0200202D */ daddu $a0, $s0, $zero
/* 157A8 8003A3A8 0200202D */ daddu $a0, $s0, $zero
/* 157AC 8003A3AC 27A50018 */ addiu $a1, $sp, 0x18
/* 157B0 8003A3B0 0C019D80 */ jal guMtxCatF
/* 157B4 8003A3B4 00A0302D */ daddu $a2, $a1, $zero
.L8003A3B8:
/* 157B8 8003A3B8 C6200048 */ lwc1 $f0, 0x48($s1)
/* 157BC 8003A3BC 44801000 */ mtc1 $zero, $f2
/* 157C0 8003A3C0 00000000 */ nop
/* 157C4 8003A3C4 46020032 */ c.eq.s $f0, $f2
/* 157C8 8003A3C8 00000000 */ nop
/* 157CC 8003A3CC 4500000B */ bc1f .L8003A3FC
/* 157D0 8003A3D0 27B00058 */ addiu $s0, $sp, 0x58
/* 157D4 8003A3D4 C6200044 */ lwc1 $f0, 0x44($s1)
/* 157D8 8003A3D8 46020032 */ c.eq.s $f0, $f2
/* 157DC 8003A3DC 00000000 */ nop
/* 157E0 8003A3E0 45000006 */ bc1f .L8003A3FC
/* 157E4 8003A3E4 00000000 */ nop
/* 157E8 8003A3E8 C620004C */ lwc1 $f0, 0x4c($s1)
/* 157EC 8003A3EC 46020032 */ c.eq.s $f0, $f2
/* 157F0 8003A3F0 00000000 */ nop
/* 157F4 8003A3F4 4501000A */ bc1t .L8003A420
/* 157F8 8003A3F8 00000000 */ nop
.L8003A3FC:
/* 157FC 8003A3FC 8E250044 */ lw $a1, 0x44($s1)
/* 15800 8003A400 8E260048 */ lw $a2, 0x48($s1)
/* 15804 8003A404 8E27004C */ lw $a3, 0x4c($s1)
/* 15808 8003A408 0C0190B4 */ jal guRotateRPYF
/* 1580C 8003A40C 0200202D */ daddu $a0, $s0, $zero
/* 15810 8003A410 0200202D */ daddu $a0, $s0, $zero
/* 15814 8003A414 27A50018 */ addiu $a1, $sp, 0x18
/* 15818 8003A418 0C019D80 */ jal guMtxCatF
/* 1581C 8003A41C 00A0302D */ daddu $a2, $a1, $zero
.L8003A420:
/* 15820 8003A420 C6200054 */ lwc1 $f0, 0x54($s1)
/* 15824 8003A424 3C01800A */ lui $at, %hi(D_80098490)
/* 15828 8003A428 D4268490 */ ldc1 $f6, %lo(D_80098490)($at)
/* 1582C 8003A42C 46000021 */ cvt.d.s $f0, $f0
/* 15830 8003A430 46260002 */ mul.d $f0, $f0, $f6
/* 15834 8003A434 00000000 */ nop
/* 15838 8003A438 3C013FF0 */ lui $at, 0x3ff0
/* 1583C 8003A43C 44812800 */ mtc1 $at, $f5
/* 15840 8003A440 44802000 */ mtc1 $zero, $f4
/* 15844 8003A444 00000000 */ nop
/* 15848 8003A448 46240032 */ c.eq.d $f0, $f4
/* 1584C 8003A44C 00000000 */ nop
/* 15850 8003A450 45000014 */ bc1f .L8003A4A4
/* 15854 8003A454 00000000 */ nop
/* 15858 8003A458 C6200058 */ lwc1 $f0, 0x58($s1)
/* 1585C 8003A45C C6220320 */ lwc1 $f2, 0x320($s1)
/* 15860 8003A460 46020002 */ mul.s $f0, $f0, $f2
/* 15864 8003A464 00000000 */ nop
/* 15868 8003A468 46000021 */ cvt.d.s $f0, $f0
/* 1586C 8003A46C 46260002 */ mul.d $f0, $f0, $f6
/* 15870 8003A470 00000000 */ nop
/* 15874 8003A474 46240032 */ c.eq.d $f0, $f4
/* 15878 8003A478 00000000 */ nop
/* 1587C 8003A47C 45000009 */ bc1f .L8003A4A4
/* 15880 8003A480 00000000 */ nop
/* 15884 8003A484 C620005C */ lwc1 $f0, 0x5c($s1)
/* 15888 8003A488 46000021 */ cvt.d.s $f0, $f0
/* 1588C 8003A48C 46260002 */ mul.d $f0, $f0, $f6
/* 15890 8003A490 00000000 */ nop
/* 15894 8003A494 46240032 */ c.eq.d $f0, $f4
/* 15898 8003A498 00000000 */ nop
/* 1589C 8003A49C 4501001F */ bc1t .L8003A51C
/* 158A0 8003A4A0 00000000 */ nop
.L8003A4A4:
/* 158A4 8003A4A4 C6260054 */ lwc1 $f6, 0x54($s1)
/* 158A8 8003A4A8 3C01800A */ lui $at, %hi(D_80098498)
/* 158AC 8003A4AC D4288498 */ ldc1 $f8, %lo(D_80098498)($at)
/* 158B0 8003A4B0 460031A1 */ cvt.d.s $f6, $f6
/* 158B4 8003A4B4 46283182 */ mul.d $f6, $f6, $f8
/* 158B8 8003A4B8 00000000 */ nop
/* 158BC 8003A4BC C624005C */ lwc1 $f4, 0x5c($s1)
/* 158C0 8003A4C0 46002121 */ cvt.d.s $f4, $f4
/* 158C4 8003A4C4 46282102 */ mul.d $f4, $f4, $f8
/* 158C8 8003A4C8 00000000 */ nop
/* 158CC 8003A4CC C6200058 */ lwc1 $f0, 0x58($s1)
/* 158D0 8003A4D0 C6220320 */ lwc1 $f2, 0x320($s1)
/* 158D4 8003A4D4 46020002 */ mul.s $f0, $f0, $f2
/* 158D8 8003A4D8 00000000 */ nop
/* 158DC 8003A4DC 46000021 */ cvt.d.s $f0, $f0
/* 158E0 8003A4E0 46280002 */ mul.d $f0, $f0, $f8
/* 158E4 8003A4E4 00000000 */ nop
/* 158E8 8003A4E8 27B00058 */ addiu $s0, $sp, 0x58
/* 158EC 8003A4EC 462031A0 */ cvt.s.d $f6, $f6
/* 158F0 8003A4F0 46202120 */ cvt.s.d $f4, $f4
/* 158F4 8003A4F4 44053000 */ mfc1 $a1, $f6
/* 158F8 8003A4F8 44072000 */ mfc1 $a3, $f4
/* 158FC 8003A4FC 46200020 */ cvt.s.d $f0, $f0
/* 15900 8003A500 44060000 */ mfc1 $a2, $f0
/* 15904 8003A504 0C019DF0 */ jal guScaleF
/* 15908 8003A508 0200202D */ daddu $a0, $s0, $zero
/* 1590C 8003A50C 0200202D */ daddu $a0, $s0, $zero
/* 15910 8003A510 27A50018 */ addiu $a1, $sp, 0x18
/* 15914 8003A514 0C019D80 */ jal guMtxCatF
/* 15918 8003A518 00A0302D */ daddu $a2, $a1, $zero
.L8003A51C:
/* 1591C 8003A51C 8E230000 */ lw $v1, ($s1)
/* 15920 8003A520 3C024000 */ lui $v0, 0x4000
/* 15924 8003A524 00621024 */ and $v0, $v1, $v0
/* 15928 8003A528 14400011 */ bnez $v0, .L8003A570
/* 1592C 8003A52C 27A20018 */ addiu $v0, $sp, 0x18
/* 15930 8003A530 3C020100 */ lui $v0, 0x100
/* 15934 8003A534 00621024 */ and $v0, $v1, $v0
/* 15938 8003A538 14400015 */ bnez $v0, .L8003A590
/* 1593C 8003A53C 00000000 */ nop
/* 15940 8003A540 8E220028 */ lw $v0, 0x28($s1)
/* 15944 8003A544 10400012 */ beqz $v0, .L8003A590
/* 15948 8003A548 0000302D */ daddu $a2, $zero, $zero
/* 1594C 8003A54C 4600B28D */ trunc.w.s $f10, $f22
/* 15950 8003A550 44055000 */ mfc1 $a1, $f10
/* 15954 8003A554 27A20018 */ addiu $v0, $sp, 0x18
/* 15958 8003A558 AFA20010 */ sw $v0, 0x10($sp)
/* 1595C 8003A55C 8E240024 */ lw $a0, 0x24($s1)
/* 15960 8003A560 0C0B78F6 */ jal spr_draw_npc_sprite
/* 15964 8003A564 00C0382D */ daddu $a3, $a2, $zero
/* 15968 8003A568 0800E964 */ j .L8003A590
/* 1596C 8003A56C 00000000 */ nop
.L8003A570:
/* 15970 8003A570 AFA20010 */ sw $v0, 0x10($sp)
/* 15974 8003A574 3C044000 */ lui $a0, 0x4000
/* 15978 8003A578 34840001 */ ori $a0, $a0, 1
/* 1597C 8003A57C 4600B28D */ trunc.w.s $f10, $f22
/* 15980 8003A580 44055000 */ mfc1 $a1, $f10
/* 15984 8003A584 0000302D */ daddu $a2, $zero, $zero
/* 15988 8003A588 0C0B7710 */ jal spr_draw_player_sprite
/* 1598C 8003A58C 00C0382D */ daddu $a3, $a2, $zero
.L8003A590:
/* 15990 8003A590 8E220000 */ lw $v0, ($s1)
/* 15994 8003A594 3C030008 */ lui $v1, 8
/* 15998 8003A598 00431024 */ and $v0, $v0, $v1
/* 1599C 8003A59C 1040008A */ beqz $v0, .L8003A7C8
/* 159A0 8003A5A0 00000000 */ nop
/* 159A4 8003A5A4 822200AB */ lb $v0, 0xab($s1)
/* 159A8 8003A5A8 C622003C */ lwc1 $f2, 0x3c($s1)
/* 159AC 8003A5AC 44820000 */ mtc1 $v0, $f0
/* 159B0 8003A5B0 00000000 */ nop
/* 159B4 8003A5B4 46800020 */ cvt.s.w $f0, $f0
/* 159B8 8003A5B8 46001080 */ add.s $f2, $f2, $f0
/* 159BC 8003A5BC 8E250038 */ lw $a1, 0x38($s1)
/* 159C0 8003A5C0 8E270040 */ lw $a3, 0x40($s1)
/* 159C4 8003A5C4 46001087 */ neg.s $f2, $f2
/* 159C8 8003A5C8 44061000 */ mfc1 $a2, $f2
/* 159CC 8003A5CC 0C019E40 */ jal guTranslateF
/* 159D0 8003A5D0 27A40018 */ addiu $a0, $sp, 0x18
/* 159D4 8003A5D4 27B00058 */ addiu $s0, $sp, 0x58
/* 159D8 8003A5D8 0C00E11E */ jal mtx_ident_mirror_y
/* 159DC 8003A5DC 0200202D */ daddu $a0, $s0, $zero
/* 159E0 8003A5E0 0200202D */ daddu $a0, $s0, $zero
/* 159E4 8003A5E4 27A50018 */ addiu $a1, $sp, 0x18
/* 159E8 8003A5E8 0C019D80 */ jal guMtxCatF
/* 159EC 8003A5EC 00A0302D */ daddu $a2, $a1, $zero
/* 159F0 8003A5F0 C6200048 */ lwc1 $f0, 0x48($s1)
/* 159F4 8003A5F4 44801000 */ mtc1 $zero, $f2
/* 159F8 8003A5F8 00000000 */ nop
/* 159FC 8003A5FC 46020032 */ c.eq.s $f0, $f2
/* 15A00 8003A600 00000000 */ nop
/* 15A04 8003A604 4500000B */ bc1f .L8003A634
/* 15A08 8003A608 27B00058 */ addiu $s0, $sp, 0x58
/* 15A0C 8003A60C C6200044 */ lwc1 $f0, 0x44($s1)
/* 15A10 8003A610 46020032 */ c.eq.s $f0, $f2
/* 15A14 8003A614 00000000 */ nop
/* 15A18 8003A618 45000006 */ bc1f .L8003A634
/* 15A1C 8003A61C 00000000 */ nop
/* 15A20 8003A620 C620004C */ lwc1 $f0, 0x4c($s1)
/* 15A24 8003A624 46020032 */ c.eq.s $f0, $f2
/* 15A28 8003A628 00000000 */ nop
/* 15A2C 8003A62C 4501000A */ bc1t .L8003A658
/* 15A30 8003A630 00000000 */ nop
.L8003A634:
/* 15A34 8003A634 8E250044 */ lw $a1, 0x44($s1)
/* 15A38 8003A638 8E260048 */ lw $a2, 0x48($s1)
/* 15A3C 8003A63C 8E27004C */ lw $a3, 0x4c($s1)
/* 15A40 8003A640 0C0190B4 */ jal guRotateRPYF
/* 15A44 8003A644 0200202D */ daddu $a0, $s0, $zero
/* 15A48 8003A648 0200202D */ daddu $a0, $s0, $zero
/* 15A4C 8003A64C 27A50018 */ addiu $a1, $sp, 0x18
/* 15A50 8003A650 0C019D80 */ jal guMtxCatF
/* 15A54 8003A654 00A0302D */ daddu $a2, $a1, $zero
.L8003A658:
/* 15A58 8003A658 C6200054 */ lwc1 $f0, 0x54($s1)
/* 15A5C 8003A65C 3C01800A */ lui $at, %hi(D_800984A0)
/* 15A60 8003A660 D42684A0 */ ldc1 $f6, %lo(D_800984A0)($at)
/* 15A64 8003A664 46000021 */ cvt.d.s $f0, $f0
/* 15A68 8003A668 46260002 */ mul.d $f0, $f0, $f6
/* 15A6C 8003A66C 00000000 */ nop
/* 15A70 8003A670 3C013FF0 */ lui $at, 0x3ff0
/* 15A74 8003A674 44812800 */ mtc1 $at, $f5
/* 15A78 8003A678 44802000 */ mtc1 $zero, $f4
/* 15A7C 8003A67C 00000000 */ nop
/* 15A80 8003A680 46240032 */ c.eq.d $f0, $f4
/* 15A84 8003A684 00000000 */ nop
/* 15A88 8003A688 45000014 */ bc1f .L8003A6DC
/* 15A8C 8003A68C 00000000 */ nop
/* 15A90 8003A690 C6200058 */ lwc1 $f0, 0x58($s1)
/* 15A94 8003A694 C6220320 */ lwc1 $f2, 0x320($s1)
/* 15A98 8003A698 46020002 */ mul.s $f0, $f0, $f2
/* 15A9C 8003A69C 00000000 */ nop
/* 15AA0 8003A6A0 46000021 */ cvt.d.s $f0, $f0
/* 15AA4 8003A6A4 46260002 */ mul.d $f0, $f0, $f6
/* 15AA8 8003A6A8 00000000 */ nop
/* 15AAC 8003A6AC 46240032 */ c.eq.d $f0, $f4
/* 15AB0 8003A6B0 00000000 */ nop
/* 15AB4 8003A6B4 45000009 */ bc1f .L8003A6DC
/* 15AB8 8003A6B8 00000000 */ nop
/* 15ABC 8003A6BC C620005C */ lwc1 $f0, 0x5c($s1)
/* 15AC0 8003A6C0 46000021 */ cvt.d.s $f0, $f0
/* 15AC4 8003A6C4 46260002 */ mul.d $f0, $f0, $f6
/* 15AC8 8003A6C8 00000000 */ nop
/* 15ACC 8003A6CC 46240032 */ c.eq.d $f0, $f4
/* 15AD0 8003A6D0 00000000 */ nop
/* 15AD4 8003A6D4 4501001F */ bc1t .L8003A754
/* 15AD8 8003A6D8 00000000 */ nop
.L8003A6DC:
/* 15ADC 8003A6DC C6260054 */ lwc1 $f6, 0x54($s1)
/* 15AE0 8003A6E0 3C01800A */ lui $at, %hi(D_800984A8)
/* 15AE4 8003A6E4 D42884A8 */ ldc1 $f8, %lo(D_800984A8)($at)
/* 15AE8 8003A6E8 460031A1 */ cvt.d.s $f6, $f6
/* 15AEC 8003A6EC 46283182 */ mul.d $f6, $f6, $f8
/* 15AF0 8003A6F0 00000000 */ nop
/* 15AF4 8003A6F4 C624005C */ lwc1 $f4, 0x5c($s1)
/* 15AF8 8003A6F8 46002121 */ cvt.d.s $f4, $f4
/* 15AFC 8003A6FC 46282102 */ mul.d $f4, $f4, $f8
/* 15B00 8003A700 00000000 */ nop
/* 15B04 8003A704 C6200058 */ lwc1 $f0, 0x58($s1)
/* 15B08 8003A708 C6220320 */ lwc1 $f2, 0x320($s1)
/* 15B0C 8003A70C 46020002 */ mul.s $f0, $f0, $f2
/* 15B10 8003A710 00000000 */ nop
/* 15B14 8003A714 46000021 */ cvt.d.s $f0, $f0
/* 15B18 8003A718 46280002 */ mul.d $f0, $f0, $f8
/* 15B1C 8003A71C 00000000 */ nop
/* 15B20 8003A720 27B00058 */ addiu $s0, $sp, 0x58
/* 15B24 8003A724 462031A0 */ cvt.s.d $f6, $f6
/* 15B28 8003A728 46202120 */ cvt.s.d $f4, $f4
/* 15B2C 8003A72C 44053000 */ mfc1 $a1, $f6
/* 15B30 8003A730 44072000 */ mfc1 $a3, $f4
/* 15B34 8003A734 46200020 */ cvt.s.d $f0, $f0
/* 15B38 8003A738 44060000 */ mfc1 $a2, $f0
/* 15B3C 8003A73C 0C019DF0 */ jal guScaleF
/* 15B40 8003A740 0200202D */ daddu $a0, $s0, $zero
/* 15B44 8003A744 0200202D */ daddu $a0, $s0, $zero
/* 15B48 8003A748 27A50018 */ addiu $a1, $sp, 0x18
/* 15B4C 8003A74C 0C019D80 */ jal guMtxCatF
/* 15B50 8003A750 00A0302D */ daddu $a2, $a1, $zero
.L8003A754:
/* 15B54 8003A754 8E230000 */ lw $v1, ($s1)
/* 15B58 8003A758 3C024000 */ lui $v0, 0x4000
/* 15B5C 8003A75C 00621024 */ and $v0, $v1, $v0
/* 15B60 8003A760 14400011 */ bnez $v0, .L8003A7A8
/* 15B64 8003A764 27A20018 */ addiu $v0, $sp, 0x18
/* 15B68 8003A768 3C020100 */ lui $v0, 0x100
/* 15B6C 8003A76C 00621024 */ and $v0, $v1, $v0
/* 15B70 8003A770 14400015 */ bnez $v0, .L8003A7C8
/* 15B74 8003A774 00000000 */ nop
/* 15B78 8003A778 8E220028 */ lw $v0, 0x28($s1)
/* 15B7C 8003A77C 10400012 */ beqz $v0, .L8003A7C8
/* 15B80 8003A780 0000302D */ daddu $a2, $zero, $zero
/* 15B84 8003A784 4600B28D */ trunc.w.s $f10, $f22
/* 15B88 8003A788 44055000 */ mfc1 $a1, $f10
/* 15B8C 8003A78C 27A20018 */ addiu $v0, $sp, 0x18
/* 15B90 8003A790 AFA20010 */ sw $v0, 0x10($sp)
/* 15B94 8003A794 8E240024 */ lw $a0, 0x24($s1)
/* 15B98 8003A798 0C0B78F6 */ jal spr_draw_npc_sprite
/* 15B9C 8003A79C 00C0382D */ daddu $a3, $a2, $zero
/* 15BA0 8003A7A0 0800E9F2 */ j .L8003A7C8
/* 15BA4 8003A7A4 00000000 */ nop
.L8003A7A8:
/* 15BA8 8003A7A8 AFA20010 */ sw $v0, 0x10($sp)
/* 15BAC 8003A7AC 3C044000 */ lui $a0, 0x4000
/* 15BB0 8003A7B0 34840001 */ ori $a0, $a0, 1
/* 15BB4 8003A7B4 4600B28D */ trunc.w.s $f10, $f22
/* 15BB8 8003A7B8 44055000 */ mfc1 $a1, $f10
/* 15BBC 8003A7BC 0000302D */ daddu $a2, $zero, $zero
/* 15BC0 8003A7C0 0C0B7710 */ jal spr_draw_player_sprite
/* 15BC4 8003A7C4 00C0382D */ daddu $a3, $a2, $zero
.L8003A7C8:
/* 15BC8 8003A7C8 8E220008 */ lw $v0, 8($s1)
/* 15BCC 8003A7CC 0040F809 */ jalr $v0
/* 15BD0 8003A7D0 0220202D */ daddu $a0, $s1, $zero
/* 15BD4 8003A7D4 8FBF00A0 */ lw $ra, 0xa0($sp)
/* 15BD8 8003A7D8 8FB1009C */ lw $s1, 0x9c($sp)
/* 15BDC 8003A7DC 8FB00098 */ lw $s0, 0x98($sp)
/* 15BE0 8003A7E0 D7B600B0 */ ldc1 $f22, 0xb0($sp)
/* 15BE4 8003A7E4 D7B400A8 */ ldc1 $f20, 0xa8($sp)
/* 15BE8 8003A7E8 03E00008 */ jr $ra
/* 15BEC 8003A7EC 27BD00B8 */ addiu $sp, $sp, 0xb8

View File

@ -1,182 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel jtbl_80098548
.word .L8003D43C_1883C, .L8003D46C_1886C, .L8003D464_18864, .L8003D464_18864, .L8003D48C_1888C, .L8003D54C_1894C, .L8003D4A8_188A8, .L8003D4C8_188C8, .L8003D4F4_188F4, .L8003D510_18910, .L8003D530_18930, .L8003D5FC_189FC, .L8003D5FC_189FC, .L8003D568_18968, .L8003D584_18984, .L8003D5A4_189A4, .L8003D5D0_189D0, 0
.section .text
glabel func_8003D3BC
/* 187BC 8003D3BC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 187C0 8003D3C0 AFB10024 */ sw $s1, 0x24($sp)
/* 187C4 8003D3C4 0080882D */ daddu $s1, $a0, $zero
/* 187C8 8003D3C8 0000282D */ daddu $a1, $zero, $zero
/* 187CC 8003D3CC AFBF003C */ sw $ra, 0x3c($sp)
/* 187D0 8003D3D0 AFB60038 */ sw $s6, 0x38($sp)
/* 187D4 8003D3D4 AFB50034 */ sw $s5, 0x34($sp)
/* 187D8 8003D3D8 AFB40030 */ sw $s4, 0x30($sp)
/* 187DC 8003D3DC AFB3002C */ sw $s3, 0x2c($sp)
/* 187E0 8003D3E0 AFB20028 */ sw $s2, 0x28($sp)
/* 187E4 8003D3E4 AFB00020 */ sw $s0, 0x20($sp)
/* 187E8 8003D3E8 86340098 */ lh $s4, 0x98($s1)
/* 187EC 8003D3EC 8630009A */ lh $s0, 0x9a($s1)
/* 187F0 8003D3F0 8635009C */ lh $s5, 0x9c($s1)
/* 187F4 8003D3F4 8632009E */ lh $s2, 0x9e($s1)
/* 187F8 8003D3F8 863600A0 */ lh $s6, 0xa0($s1)
/* 187FC 8003D3FC 963300A2 */ lhu $s3, 0xa2($s1)
/* 18800 8003D400 00A0302D */ daddu $a2, $a1, $zero
/* 18804 8003D404 AFA00010 */ sw $zero, 0x10($sp)
/* 18808 8003D408 AFA00014 */ sw $zero, 0x14($sp)
/* 1880C 8003D40C AFA00018 */ sw $zero, 0x18($sp)
/* 18810 8003D410 8E240024 */ lw $a0, 0x24($s1)
/* 18814 8003D414 0C0B7A25 */ jal func_802DE894
/* 18818 8003D418 00A0382D */ daddu $a3, $a1, $zero
/* 1881C 8003D41C 2E820011 */ sltiu $v0, $s4, 0x11
/* 18820 8003D420 10400076 */ beqz $v0, .L8003D5FC_189FC
/* 18824 8003D424 00141080 */ sll $v0, $s4, 2
/* 18828 8003D428 3C01800A */ lui $at, %hi(jtbl_80098548)
/* 1882C 8003D42C 00220821 */ addu $at, $at, $v0
/* 18830 8003D430 8C228548 */ lw $v0, %lo(jtbl_80098548)($at)
/* 18834 8003D434 00400008 */ jr $v0
/* 18838 8003D438 00000000 */ nop
.L8003D43C_1883C:
/* 1883C 8003D43C 0000282D */ daddu $a1, $zero, $zero
/* 18840 8003D440 00A0302D */ daddu $a2, $a1, $zero
/* 18844 8003D444 2402000D */ addiu $v0, $zero, 0xd
/* 18848 8003D448 A22200AA */ sb $v0, 0xaa($s1)
/* 1884C 8003D44C AFA00010 */ sw $zero, 0x10($sp)
/* 18850 8003D450 AFA00014 */ sw $zero, 0x14($sp)
/* 18854 8003D454 AFB30018 */ sw $s3, 0x18($sp)
/* 18858 8003D458 8E240024 */ lw $a0, 0x24($s1)
/* 1885C 8003D45C 0800F57D */ j .L8003D5F4
/* 18860 8003D460 00A0382D */ daddu $a3, $a1, $zero
.L8003D464_18864:
/* 18864 8003D464 2402000D */ addiu $v0, $zero, 0xd
/* 18868 8003D468 A22200AA */ sb $v0, 0xaa($s1)
.L8003D46C_1886C:
/* 1886C 8003D46C 0280282D */ daddu $a1, $s4, $zero
/* 18870 8003D470 0000302D */ daddu $a2, $zero, $zero
/* 18874 8003D474 AFA00010 */ sw $zero, 0x10($sp)
/* 18878 8003D478 AFA00014 */ sw $zero, 0x14($sp)
/* 1887C 8003D47C AFB30018 */ sw $s3, 0x18($sp)
/* 18880 8003D480 8E240024 */ lw $a0, 0x24($s1)
/* 18884 8003D484 0800F57D */ j .L8003D5F4
/* 18888 8003D488 00C0382D */ daddu $a3, $a2, $zero
.L8003D48C_1888C:
/* 1888C 8003D48C 24050004 */ addiu $a1, $zero, 4
/* 18890 8003D490 0200302D */ daddu $a2, $s0, $zero
/* 18894 8003D494 2402000D */ addiu $v0, $zero, 0xd
/* 18898 8003D498 A22200AA */ sb $v0, 0xaa($s1)
/* 1889C 8003D49C AFB20010 */ sw $s2, 0x10($sp)
/* 188A0 8003D4A0 0800F57A */ j .L8003D5E8
/* 188A4 8003D4A4 AFA00014 */ sw $zero, 0x14($sp)
.L8003D4A8_188A8:
/* 188A8 8003D4A8 24050006 */ addiu $a1, $zero, 6
/* 188AC 8003D4AC 0200302D */ daddu $a2, $s0, $zero
/* 188B0 8003D4B0 2402000D */ addiu $v0, $zero, 0xd
/* 188B4 8003D4B4 A22200AA */ sb $v0, 0xaa($s1)
/* 188B8 8003D4B8 240200FF */ addiu $v0, $zero, 0xff
/* 188BC 8003D4BC AFB20010 */ sw $s2, 0x10($sp)
/* 188C0 8003D4C0 0800F57A */ j .L8003D5E8
/* 188C4 8003D4C4 AFA20014 */ sw $v0, 0x14($sp)
.L8003D4C8_188C8:
/* 188C8 8003D4C8 24050007 */ addiu $a1, $zero, 7
/* 188CC 8003D4CC 240600FF */ addiu $a2, $zero, 0xff
/* 188D0 8003D4D0 24020016 */ addiu $v0, $zero, 0x16
/* 188D4 8003D4D4 A22200AA */ sb $v0, 0xaa($s1)
/* 188D8 8003D4D8 00C0102D */ daddu $v0, $a2, $zero
/* 188DC 8003D4DC AFA20010 */ sw $v0, 0x10($sp)
/* 188E0 8003D4E0 AFB00014 */ sw $s0, 0x14($sp)
/* 188E4 8003D4E4 AFB30018 */ sw $s3, 0x18($sp)
/* 188E8 8003D4E8 8E240024 */ lw $a0, 0x24($s1)
/* 188EC 8003D4EC 0800F57D */ j .L8003D5F4
/* 188F0 8003D4F0 00C0382D */ daddu $a3, $a2, $zero
.L8003D4F4_188F4:
/* 188F4 8003D4F4 24050008 */ addiu $a1, $zero, 8
/* 188F8 8003D4F8 0200302D */ daddu $a2, $s0, $zero
/* 188FC 8003D4FC 24020016 */ addiu $v0, $zero, 0x16
/* 18900 8003D500 A22200AA */ sb $v0, 0xaa($s1)
/* 18904 8003D504 AFB20010 */ sw $s2, 0x10($sp)
/* 18908 8003D508 0800F57A */ j .L8003D5E8
/* 1890C 8003D50C AFB60014 */ sw $s6, 0x14($sp)
.L8003D510_18910:
/* 18910 8003D510 24050009 */ addiu $a1, $zero, 9
/* 18914 8003D514 0200302D */ daddu $a2, $s0, $zero
/* 18918 8003D518 2402000D */ addiu $v0, $zero, 0xd
/* 1891C 8003D51C A22200AA */ sb $v0, 0xaa($s1)
/* 18920 8003D520 240200FF */ addiu $v0, $zero, 0xff
/* 18924 8003D524 AFB20010 */ sw $s2, 0x10($sp)
/* 18928 8003D528 0800F57A */ j .L8003D5E8
/* 1892C 8003D52C AFA20014 */ sw $v0, 0x14($sp)
.L8003D530_18930:
/* 18930 8003D530 2405000A */ addiu $a1, $zero, 0xa
/* 18934 8003D534 0200302D */ daddu $a2, $s0, $zero
/* 18938 8003D538 24020016 */ addiu $v0, $zero, 0x16
/* 1893C 8003D53C A22200AA */ sb $v0, 0xaa($s1)
/* 18940 8003D540 AFB20010 */ sw $s2, 0x10($sp)
/* 18944 8003D544 0800F57A */ j .L8003D5E8
/* 18948 8003D548 AFB60014 */ sw $s6, 0x14($sp)
.L8003D54C_1894C:
/* 1894C 8003D54C 24050005 */ addiu $a1, $zero, 5
/* 18950 8003D550 0200302D */ daddu $a2, $s0, $zero
/* 18954 8003D554 2402000D */ addiu $v0, $zero, 0xd
/* 18958 8003D558 A22200AA */ sb $v0, 0xaa($s1)
/* 1895C 8003D55C AFB20010 */ sw $s2, 0x10($sp)
/* 18960 8003D560 0800F57A */ j .L8003D5E8
/* 18964 8003D564 AFA00014 */ sw $zero, 0x14($sp)
.L8003D568_18968:
/* 18968 8003D568 2405000D */ addiu $a1, $zero, 0xd
/* 1896C 8003D56C 0200302D */ daddu $a2, $s0, $zero
/* 18970 8003D570 24020016 */ addiu $v0, $zero, 0x16
/* 18974 8003D574 A22200AA */ sb $v0, 0xaa($s1)
/* 18978 8003D578 AFB20010 */ sw $s2, 0x10($sp)
/* 1897C 8003D57C 0800F57A */ j .L8003D5E8
/* 18980 8003D580 AFB60014 */ sw $s6, 0x14($sp)
.L8003D584_18984:
/* 18984 8003D584 2405000E */ addiu $a1, $zero, 0xe
/* 18988 8003D588 0200302D */ daddu $a2, $s0, $zero
/* 1898C 8003D58C 2402000D */ addiu $v0, $zero, 0xd
/* 18990 8003D590 A22200AA */ sb $v0, 0xaa($s1)
/* 18994 8003D594 240200FF */ addiu $v0, $zero, 0xff
/* 18998 8003D598 AFB20010 */ sw $s2, 0x10($sp)
/* 1899C 8003D59C 0800F57A */ j .L8003D5E8
/* 189A0 8003D5A0 AFA20014 */ sw $v0, 0x14($sp)
.L8003D5A4_189A4:
/* 189A4 8003D5A4 2405000F */ addiu $a1, $zero, 0xf
/* 189A8 8003D5A8 0200302D */ daddu $a2, $s0, $zero
/* 189AC 8003D5AC 2402000D */ addiu $v0, $zero, 0xd
/* 189B0 8003D5B0 A22200AA */ sb $v0, 0xaa($s1)
/* 189B4 8003D5B4 240200FF */ addiu $v0, $zero, 0xff
/* 189B8 8003D5B8 AFA00010 */ sw $zero, 0x10($sp)
/* 189BC 8003D5BC AFA20014 */ sw $v0, 0x14($sp)
/* 189C0 8003D5C0 AFB30018 */ sw $s3, 0x18($sp)
/* 189C4 8003D5C4 8E240024 */ lw $a0, 0x24($s1)
/* 189C8 8003D5C8 0800F57D */ j .L8003D5F4
/* 189CC 8003D5CC 0040382D */ daddu $a3, $v0, $zero
.L8003D5D0_189D0:
/* 189D0 8003D5D0 2405000F */ addiu $a1, $zero, 0xf
/* 189D4 8003D5D4 0200302D */ daddu $a2, $s0, $zero
/* 189D8 8003D5D8 24020016 */ addiu $v0, $zero, 0x16
/* 189DC 8003D5DC A22200AA */ sb $v0, 0xaa($s1)
/* 189E0 8003D5E0 AFA00010 */ sw $zero, 0x10($sp)
/* 189E4 8003D5E4 AFB50014 */ sw $s5, 0x14($sp)
.L8003D5E8:
/* 189E8 8003D5E8 AFB30018 */ sw $s3, 0x18($sp)
/* 189EC 8003D5EC 8E240024 */ lw $a0, 0x24($s1)
/* 189F0 8003D5F0 02A0382D */ daddu $a3, $s5, $zero
.L8003D5F4:
/* 189F4 8003D5F4 0C0B7A25 */ jal func_802DE894
/* 189F8 8003D5F8 00000000 */ nop
.L8003D5FC_189FC:
/* 189FC 8003D5FC 8FBF003C */ lw $ra, 0x3c($sp)
/* 18A00 8003D600 8FB60038 */ lw $s6, 0x38($sp)
/* 18A04 8003D604 8FB50034 */ lw $s5, 0x34($sp)
/* 18A08 8003D608 8FB40030 */ lw $s4, 0x30($sp)
/* 18A0C 8003D60C 8FB3002C */ lw $s3, 0x2c($sp)
/* 18A10 8003D610 8FB20028 */ lw $s2, 0x28($sp)
/* 18A14 8003D614 8FB10024 */ lw $s1, 0x24($sp)
/* 18A18 8003D618 8FB00020 */ lw $s0, 0x20($sp)
/* 18A1C 8003D61C 03E00008 */ jr $ra
/* 18A20 8003D620 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,65 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_blend_palette_colors
/* 16D6C 8003B96C 3084FFFF */ andi $a0, $a0, 0xffff
/* 16D70 8003B970 000412C2 */ srl $v0, $a0, 0xb
/* 16D74 8003B974 240700FF */ addiu $a3, $zero, 0xff
/* 16D78 8003B978 00E63823 */ subu $a3, $a3, $a2
/* 16D7C 8003B97C 00470018 */ mult $v0, $a3
/* 16D80 8003B980 00004012 */ mflo $t0
/* 16D84 8003B984 30A3FFFF */ andi $v1, $a1, 0xffff
/* 16D88 8003B988 000312C2 */ srl $v0, $v1, 0xb
/* 16D8C 8003B98C 00460018 */ mult $v0, $a2
/* 16D90 8003B990 3C098080 */ lui $t1, 0x8080
/* 16D94 8003B994 00005012 */ mflo $t2
/* 16D98 8003B998 35298081 */ ori $t1, $t1, 0x8081
/* 16D9C 8003B99C 010A4021 */ addu $t0, $t0, $t2
/* 16DA0 8003B9A0 01090018 */ mult $t0, $t1
/* 16DA4 8003B9A4 00006010 */ mfhi $t4
/* 16DA8 8003B9A8 00041182 */ srl $v0, $a0, 6
/* 16DAC 8003B9AC 3042001F */ andi $v0, $v0, 0x1f
/* 16DB0 8003B9B0 00470018 */ mult $v0, $a3
/* 16DB4 8003B9B4 00005012 */ mflo $t2
/* 16DB8 8003B9B8 00031182 */ srl $v0, $v1, 6
/* 16DBC 8003B9BC 3042001F */ andi $v0, $v0, 0x1f
/* 16DC0 8003B9C0 00460018 */ mult $v0, $a2
/* 16DC4 8003B9C4 00001012 */ mflo $v0
/* 16DC8 8003B9C8 00042042 */ srl $a0, $a0, 1
/* 16DCC 8003B9CC 3084001F */ andi $a0, $a0, 0x1f
/* 16DD0 8003B9D0 00870018 */ mult $a0, $a3
/* 16DD4 8003B9D4 00003812 */ mflo $a3
/* 16DD8 8003B9D8 00031842 */ srl $v1, $v1, 1
/* 16DDC 8003B9DC 3063001F */ andi $v1, $v1, 0x1f
/* 16DE0 8003B9E0 00660018 */ mult $v1, $a2
/* 16DE4 8003B9E4 30A50001 */ andi $a1, $a1, 1
/* 16DE8 8003B9E8 01882021 */ addu $a0, $t4, $t0
/* 16DEC 8003B9EC 01421021 */ addu $v0, $t2, $v0
/* 16DF0 8003B9F0 00006812 */ mflo $t5
/* 16DF4 8003B9F4 000421C3 */ sra $a0, $a0, 7
/* 16DF8 8003B9F8 000847C3 */ sra $t0, $t0, 0x1f
/* 16DFC 8003B9FC 00490018 */ mult $v0, $t1
/* 16E00 8003BA00 00882023 */ subu $a0, $a0, $t0
/* 16E04 8003BA04 308400FF */ andi $a0, $a0, 0xff
/* 16E08 8003BA08 000422C0 */ sll $a0, $a0, 0xb
/* 16E0C 8003BA0C 00ED3021 */ addu $a2, $a3, $t5
/* 16E10 8003BA10 00001810 */ mfhi $v1
/* 16E14 8003BA14 00621821 */ addu $v1, $v1, $v0
/* 16E18 8003BA18 000319C3 */ sra $v1, $v1, 7
/* 16E1C 8003BA1C 000217C3 */ sra $v0, $v0, 0x1f
/* 16E20 8003BA20 00C90018 */ mult $a2, $t1
/* 16E24 8003BA24 00621823 */ subu $v1, $v1, $v0
/* 16E28 8003BA28 306300FF */ andi $v1, $v1, 0xff
/* 16E2C 8003BA2C 00031980 */ sll $v1, $v1, 6
/* 16E30 8003BA30 00832025 */ or $a0, $a0, $v1
/* 16E34 8003BA34 00003810 */ mfhi $a3
/* 16E38 8003BA38 00E61021 */ addu $v0, $a3, $a2
/* 16E3C 8003BA3C 000211C3 */ sra $v0, $v0, 7
/* 16E40 8003BA40 000637C3 */ sra $a2, $a2, 0x1f
/* 16E44 8003BA44 00461023 */ subu $v0, $v0, $a2
/* 16E48 8003BA48 304200FF */ andi $v0, $v0, 0xff
/* 16E4C 8003BA4C 00021040 */ sll $v0, $v0, 1
/* 16E50 8003BA50 00822025 */ or $a0, $a0, $v0
/* 16E54 8003BA54 00A42825 */ or $a1, $a1, $a0
/* 16E58 8003BA58 03E00008 */ jr $ra
/* 16E5C 8003BA5C 30A2FFFF */ andi $v0, $a1, 0xffff

View File

@ -1,309 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel update_npcs
/* 14D30 80039930 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 14D34 80039934 3C02FFFF */ lui $v0, 0xffff
/* 14D38 80039938 34427FFF */ ori $v0, $v0, 0x7fff
/* 14D3C 8003993C AFB3003C */ sw $s3, 0x3c($sp)
/* 14D40 80039940 3C138011 */ lui $s3, %hi(gPlayerStatus)
/* 14D44 80039944 2673EFC8 */ addiu $s3, $s3, %lo(gPlayerStatus)
/* 14D48 80039948 AFBF0040 */ sw $ra, 0x40($sp)
/* 14D4C 8003994C AFB20038 */ sw $s2, 0x38($sp)
/* 14D50 80039950 AFB10034 */ sw $s1, 0x34($sp)
/* 14D54 80039954 AFB00030 */ sw $s0, 0x30($sp)
/* 14D58 80039958 F7B40048 */ sdc1 $f20, 0x48($sp)
/* 14D5C 8003995C 8E630004 */ lw $v1, 4($s3)
/* 14D60 80039960 3C04800A */ lui $a0, %hi(gOverrideFlags)
/* 14D64 80039964 8C84A650 */ lw $a0, %lo(gOverrideFlags)($a0)
/* 14D68 80039968 00621824 */ and $v1, $v1, $v0
/* 14D6C 8003996C 30840C00 */ andi $a0, $a0, 0xc00
/* 14D70 80039970 14800104 */ bnez $a0, .L80039D84
/* 14D74 80039974 AE630004 */ sw $v1, 4($s3)
/* 14D78 80039978 0000902D */ daddu $s2, $zero, $zero
/* 14D7C 8003997C 4480A000 */ mtc1 $zero, $f20
.L80039980:
/* 14D80 80039980 3C03800A */ lui $v1, %hi(gCurrentNpcListPtr)
/* 14D84 80039984 8C630B90 */ lw $v1, %lo(gCurrentNpcListPtr)($v1)
/* 14D88 80039988 00121080 */ sll $v0, $s2, 2
/* 14D8C 8003998C 00431021 */ addu $v0, $v0, $v1
/* 14D90 80039990 8C500000 */ lw $s0, ($v0)
/* 14D94 80039994 520000F8 */ beql $s0, $zero, .L80039D78
/* 14D98 80039998 26520001 */ addiu $s2, $s2, 1
/* 14D9C 8003999C 8E030000 */ lw $v1, ($s0)
/* 14DA0 800399A0 506000F5 */ beql $v1, $zero, .L80039D78
/* 14DA4 800399A4 26520001 */ addiu $s2, $s2, 1
/* 14DA8 800399A8 3C028000 */ lui $v0, 0x8000
/* 14DAC 800399AC 34420004 */ ori $v0, $v0, 4
/* 14DB0 800399B0 00621024 */ and $v0, $v1, $v0
/* 14DB4 800399B4 10400005 */ beqz $v0, .L800399CC
/* 14DB8 800399B8 00000000 */ nop
/* 14DBC 800399BC 0C00E2BF */ jal npc_do_world_collision
/* 14DC0 800399C0 0200202D */ daddu $a0, $s0, $zero
/* 14DC4 800399C4 0800E75E */ j .L80039D78
/* 14DC8 800399C8 26520001 */ addiu $s2, $s2, 1
.L800399CC:
/* 14DCC 800399CC 8E020004 */ lw $v0, 4($s0)
/* 14DD0 800399D0 0040F809 */ jalr $v0
/* 14DD4 800399D4 0200202D */ daddu $a0, $s0, $zero
/* 14DD8 800399D8 8E020000 */ lw $v0, ($s0)
/* 14DDC 800399DC 30428000 */ andi $v0, $v0, 0x8000
/* 14DE0 800399E0 10400004 */ beqz $v0, .L800399F4
/* 14DE4 800399E4 3C030004 */ lui $v1, 4
/* 14DE8 800399E8 8E020080 */ lw $v0, 0x80($s0)
/* 14DEC 800399EC 0800E681 */ j .L80039A04
/* 14DF0 800399F0 00431025 */ or $v0, $v0, $v1
.L800399F4:
/* 14DF4 800399F4 3C03FFFB */ lui $v1, 0xfffb
/* 14DF8 800399F8 8E020080 */ lw $v0, 0x80($s0)
/* 14DFC 800399FC 3463FFFF */ ori $v1, $v1, 0xffff
/* 14E00 80039A00 00431024 */ and $v0, $v0, $v1
.L80039A04:
/* 14E04 80039A04 AE020080 */ sw $v0, 0x80($s0)
/* 14E08 80039A08 0200202D */ daddu $a0, $s0, $zero
/* 14E0C 80039A0C 2402FFFF */ addiu $v0, $zero, -1
/* 14E10 80039A10 A6020084 */ sh $v0, 0x84($s0)
/* 14E14 80039A14 A6020086 */ sh $v0, 0x86($s0)
/* 14E18 80039A18 8E020000 */ lw $v0, ($s0)
/* 14E1C 80039A1C 24039FFF */ addiu $v1, $zero, -0x6001
/* 14E20 80039A20 00431024 */ and $v0, $v0, $v1
/* 14E24 80039A24 0C00E2BF */ jal npc_do_world_collision
/* 14E28 80039A28 AE020000 */ sw $v0, ($s0)
/* 14E2C 80039A2C 0C00E5A2 */ jal npc_do_gravity
/* 14E30 80039A30 0200202D */ daddu $a0, $s0, $zero
/* 14E34 80039A34 4405A000 */ mfc1 $a1, $f20
/* 14E38 80039A38 0C00E5FA */ jal func_800397E8
/* 14E3C 80039A3C 0200202D */ daddu $a0, $s0, $zero
/* 14E40 80039A40 0C00E4B6 */ jal npc_do_player_collision
/* 14E44 80039A44 0200202D */ daddu $a0, $s0, $zero
/* 14E48 80039A48 0C00E403 */ jal npc_do_other_npc_collision
/* 14E4C 80039A4C 0200202D */ daddu $a0, $s0, $zero
/* 14E50 80039A50 8E020000 */ lw $v0, ($s0)
/* 14E54 80039A54 3C030010 */ lui $v1, 0x10
/* 14E58 80039A58 00431024 */ and $v0, $v0, $v1
/* 14E5C 80039A5C 10400003 */ beqz $v0, .L80039A6C
/* 14E60 80039A60 00000000 */ nop
/* 14E64 80039A64 0C00EB7E */ jal update_npc_blur
/* 14E68 80039A68 0200202D */ daddu $a0, $s0, $zero
.L80039A6C:
/* 14E6C 80039A6C C602003C */ lwc1 $f2, 0x3c($s0)
/* 14E70 80039A70 3C01C4FA */ lui $at, 0xc4fa
/* 14E74 80039A74 44810000 */ mtc1 $at, $f0
/* 14E78 80039A78 00000000 */ nop
/* 14E7C 80039A7C 4600103C */ c.lt.s $f2, $f0
/* 14E80 80039A80 00000000 */ nop
/* 14E84 80039A84 4500000D */ bc1f .L80039ABC
/* 14E88 80039A88 3C030400 */ lui $v1, 0x400
/* 14E8C 80039A8C 8E020000 */ lw $v0, ($s0)
/* 14E90 80039A90 00431024 */ and $v0, $v0, $v1
/* 14E94 80039A94 14400009 */ bnez $v0, .L80039ABC
/* 14E98 80039A98 2403F7FF */ addiu $v1, $zero, -0x801
/* 14E9C 80039A9C C660002C */ lwc1 $f0, 0x2c($s3)
/* 14EA0 80039AA0 8E020000 */ lw $v0, ($s0)
/* 14EA4 80039AA4 E614001C */ swc1 $f20, 0x1c($s0)
/* 14EA8 80039AA8 E6140018 */ swc1 $f20, 0x18($s0)
/* 14EAC 80039AAC E6140014 */ swc1 $f20, 0x14($s0)
/* 14EB0 80039AB0 00431024 */ and $v0, $v0, $v1
/* 14EB4 80039AB4 E600003C */ swc1 $f0, 0x3c($s0)
/* 14EB8 80039AB8 AE020000 */ sw $v0, ($s0)
.L80039ABC:
/* 14EBC 80039ABC 8E030000 */ lw $v1, ($s0)
/* 14EC0 80039AC0 3C024000 */ lui $v0, 0x4000
/* 14EC4 80039AC4 00621024 */ and $v0, $v1, $v0
/* 14EC8 80039AC8 1440000E */ bnez $v0, .L80039B04
/* 14ECC 80039ACC 3C020100 */ lui $v0, 0x100
/* 14ED0 80039AD0 00621024 */ and $v0, $v1, $v0
/* 14ED4 80039AD4 1440000F */ bnez $v0, .L80039B14
/* 14ED8 80039AD8 00000000 */ nop
/* 14EDC 80039ADC 8E050028 */ lw $a1, 0x28($s0)
/* 14EE0 80039AE0 10A0000C */ beqz $a1, .L80039B14
/* 14EE4 80039AE4 00000000 */ nop
/* 14EE8 80039AE8 8E040024 */ lw $a0, 0x24($s0)
/* 14EEC 80039AEC 04800009 */ bltz $a0, .L80039B14
/* 14EF0 80039AF0 00000000 */ nop
/* 14EF4 80039AF4 0C0B78AB */ jal spr_update_sprite
/* 14EF8 80039AF8 8E060030 */ lw $a2, 0x30($s0)
/* 14EFC 80039AFC 0800E6C5 */ j .L80039B14
/* 14F00 80039B00 00000000 */ nop
.L80039B04:
/* 14F04 80039B04 8E050028 */ lw $a1, 0x28($s0)
/* 14F08 80039B08 8E060030 */ lw $a2, 0x30($s0)
/* 14F0C 80039B0C 0C0B76A3 */ jal spr_update_player_sprite
/* 14F10 80039B10 24040001 */ addiu $a0, $zero, 1
.L80039B14:
/* 14F14 80039B14 8E020000 */ lw $v0, ($s0)
/* 14F18 80039B18 30420010 */ andi $v0, $v0, 0x10
/* 14F1C 80039B1C 10400072 */ beqz $v0, .L80039CE8
/* 14F20 80039B20 00000000 */ nop
/* 14F24 80039B24 0C044181 */ jal get_shadow_by_index
/* 14F28 80039B28 8E040078 */ lw $a0, 0x78($s0)
/* 14F2C 80039B2C 84440008 */ lh $a0, 8($v0)
/* 14F30 80039B30 0C048B77 */ jal get_entity_model
/* 14F34 80039B34 0040882D */ daddu $s1, $v0, $zero
/* 14F38 80039B38 0040202D */ daddu $a0, $v0, $zero
/* 14F3C 80039B3C 8C430000 */ lw $v1, ($v0)
/* 14F40 80039B40 2402FDFF */ addiu $v0, $zero, -0x201
/* 14F44 80039B44 00622824 */ and $a1, $v1, $v0
/* 14F48 80039B48 AC850000 */ sw $a1, ($a0)
/* 14F4C 80039B4C 8E020000 */ lw $v0, ($s0)
/* 14F50 80039B50 3C030002 */ lui $v1, 2
/* 14F54 80039B54 00431024 */ and $v0, $v0, $v1
/* 14F58 80039B58 10400002 */ beqz $v0, .L80039B64
/* 14F5C 80039B5C 34A20200 */ ori $v0, $a1, 0x200
/* 14F60 80039B60 AC820000 */ sw $v0, ($a0)
.L80039B64:
/* 14F64 80039B64 C6020038 */ lwc1 $f2, 0x38($s0)
/* 14F68 80039B68 C604003C */ lwc1 $f4, 0x3c($s0)
/* 14F6C 80039B6C 8E030000 */ lw $v1, ($s0)
/* 14F70 80039B70 C6060040 */ lwc1 $f6, 0x40($s0)
/* 14F74 80039B74 30620020 */ andi $v0, $v1, 0x20
/* 14F78 80039B78 E7A20018 */ swc1 $f2, 0x18($sp)
/* 14F7C 80039B7C E7A4001C */ swc1 $f4, 0x1c($sp)
/* 14F80 80039B80 1440004D */ bnez $v0, .L80039CB8
/* 14F84 80039B84 E7A60020 */ swc1 $f6, 0x20($sp)
/* 14F88 80039B88 C600006C */ lwc1 $f0, 0x6c($s0)
/* 14F8C 80039B8C 46001032 */ c.eq.s $f2, $f0
/* 14F90 80039B90 00000000 */ nop
/* 14F94 80039B94 4500000E */ bc1f .L80039BD0
/* 14F98 80039B98 27A40018 */ addiu $a0, $sp, 0x18
/* 14F9C 80039B9C C6000070 */ lwc1 $f0, 0x70($s0)
/* 14FA0 80039BA0 46002032 */ c.eq.s $f4, $f0
/* 14FA4 80039BA4 00000000 */ nop
/* 14FA8 80039BA8 4502000A */ bc1fl .L80039BD4
/* 14FAC 80039BAC 27A5001C */ addiu $a1, $sp, 0x1c
/* 14FB0 80039BB0 C6000074 */ lwc1 $f0, 0x74($s0)
/* 14FB4 80039BB4 46003032 */ c.eq.s $f6, $f0
/* 14FB8 80039BB8 00000000 */ nop
/* 14FBC 80039BBC 45000004 */ bc1f .L80039BD0
/* 14FC0 80039BC0 3C020001 */ lui $v0, 1
/* 14FC4 80039BC4 00621024 */ and $v0, $v1, $v0
/* 14FC8 80039BC8 10400047 */ beqz $v0, .L80039CE8
/* 14FCC 80039BCC 00000000 */ nop
.L80039BD0:
/* 14FD0 80039BD0 27A5001C */ addiu $a1, $sp, 0x1c
.L80039BD4:
/* 14FD4 80039BD4 27A60020 */ addiu $a2, $sp, 0x20
/* 14FD8 80039BD8 27A70024 */ addiu $a3, $sp, 0x24
/* 14FDC 80039BDC C6000038 */ lwc1 $f0, 0x38($s0)
/* 14FE0 80039BE0 960300A8 */ lhu $v1, 0xa8($s0)
/* 14FE4 80039BE4 3C01447A */ lui $at, 0x447a
/* 14FE8 80039BE8 44812000 */ mtc1 $at, $f4
/* 14FEC 80039BEC 00031C00 */ sll $v1, $v1, 0x10
/* 14FF0 80039BF0 00031403 */ sra $v0, $v1, 0x10
/* 14FF4 80039BF4 00031FC2 */ srl $v1, $v1, 0x1f
/* 14FF8 80039BF8 00431021 */ addu $v0, $v0, $v1
/* 14FFC 80039BFC 00021043 */ sra $v0, $v0, 1
/* 15000 80039C00 44823000 */ mtc1 $v0, $f6
/* 15004 80039C04 00000000 */ nop
/* 15008 80039C08 468031A0 */ cvt.s.w $f6, $f6
/* 1500C 80039C0C 27A20028 */ addiu $v0, $sp, 0x28
/* 15010 80039C10 E7A00018 */ swc1 $f0, 0x18($sp)
/* 15014 80039C14 C600003C */ lwc1 $f0, 0x3c($s0)
/* 15018 80039C18 C6020040 */ lwc1 $f2, 0x40($s0)
/* 1501C 80039C1C 46060000 */ add.s $f0, $f0, $f6
/* 15020 80039C20 E7A4002C */ swc1 $f4, 0x2c($sp)
/* 15024 80039C24 E7A20020 */ swc1 $f2, 0x20($sp)
/* 15028 80039C28 E7A0001C */ swc1 $f0, 0x1c($sp)
/* 1502C 80039C2C AFA20010 */ sw $v0, 0x10($sp)
/* 15030 80039C30 27A2002C */ addiu $v0, $sp, 0x2c
/* 15034 80039C34 0C04497A */ jal entity_raycast_down
/* 15038 80039C38 AFA20014 */ sw $v0, 0x14($sp)
/* 1503C 80039C3C 860200A6 */ lh $v0, 0xa6($s0)
/* 15040 80039C40 8FA5002C */ lw $a1, 0x2c($sp)
/* 15044 80039C44 44824000 */ mtc1 $v0, $f8
/* 15048 80039C48 00000000 */ nop
/* 1504C 80039C4C 46804220 */ cvt.s.w $f8, $f8
/* 15050 80039C50 44064000 */ mfc1 $a2, $f8
/* 15054 80039C54 0C044A40 */ jal set_npc_shadow_scale
/* 15058 80039C58 0220202D */ daddu $a0, $s1, $zero
/* 1505C 80039C5C C7A00018 */ lwc1 $f0, 0x18($sp)
/* 15060 80039C60 C7A2001C */ lwc1 $f2, 0x1c($sp)
/* 15064 80039C64 C7A40020 */ lwc1 $f4, 0x20($sp)
/* 15068 80039C68 C7A60024 */ lwc1 $f6, 0x24($sp)
/* 1506C 80039C6C E6200010 */ swc1 $f0, 0x10($s1)
/* 15070 80039C70 E6220014 */ swc1 $f2, 0x14($s1)
/* 15074 80039C74 E6240018 */ swc1 $f4, 0x18($s1)
/* 15078 80039C78 E6260028 */ swc1 $f6, 0x28($s1)
/* 1507C 80039C7C C6020034 */ lwc1 $f2, 0x34($s0)
/* 15080 80039C80 C7A00028 */ lwc1 $f0, 0x28($sp)
/* 15084 80039C84 E622002C */ swc1 $f2, 0x2c($s1)
/* 15088 80039C88 C622001C */ lwc1 $f2, 0x1c($s1)
/* 1508C 80039C8C E6200030 */ swc1 $f0, 0x30($s1)
/* 15090 80039C90 C600007C */ lwc1 $f0, 0x7c($s0)
/* 15094 80039C94 46001082 */ mul.s $f2, $f2, $f0
/* 15098 80039C98 00000000 */ nop
/* 1509C 80039C9C 3C03FFFE */ lui $v1, 0xfffe
/* 150A0 80039CA0 E622001C */ swc1 $f2, 0x1c($s1)
/* 150A4 80039CA4 8E020000 */ lw $v0, ($s0)
/* 150A8 80039CA8 3463FFFF */ ori $v1, $v1, 0xffff
/* 150AC 80039CAC 00431024 */ and $v0, $v0, $v1
/* 150B0 80039CB0 0800E73A */ j .L80039CE8
/* 150B4 80039CB4 AE020000 */ sw $v0, ($s0)
.L80039CB8:
/* 150B8 80039CB8 30620400 */ andi $v0, $v1, 0x400
/* 150BC 80039CBC 10400004 */ beqz $v0, .L80039CD0
/* 150C0 80039CC0 00000000 */ nop
/* 150C4 80039CC4 C6000038 */ lwc1 $f0, 0x38($s0)
/* 150C8 80039CC8 0800E738 */ j .L80039CE0
/* 150CC 80039CCC E6200010 */ swc1 $f0, 0x10($s1)
.L80039CD0:
/* 150D0 80039CD0 C6000038 */ lwc1 $f0, 0x38($s0)
/* 150D4 80039CD4 E6200010 */ swc1 $f0, 0x10($s1)
/* 150D8 80039CD8 C600003C */ lwc1 $f0, 0x3c($s0)
/* 150DC 80039CDC E6200014 */ swc1 $f0, 0x14($s1)
.L80039CE0:
/* 150E0 80039CE0 C6000040 */ lwc1 $f0, 0x40($s0)
/* 150E4 80039CE4 E6200018 */ swc1 $f0, 0x18($s1)
.L80039CE8:
/* 150E8 80039CE8 C6000038 */ lwc1 $f0, 0x38($s0)
/* 150EC 80039CEC C602003C */ lwc1 $f2, 0x3c($s0)
/* 150F0 80039CF0 C6040040 */ lwc1 $f4, 0x40($s0)
/* 150F4 80039CF4 0200202D */ daddu $a0, $s0, $zero
/* 150F8 80039CF8 E600006C */ swc1 $f0, 0x6c($s0)
/* 150FC 80039CFC E6020070 */ swc1 $f2, 0x70($s0)
/* 15100 80039D00 0C00F111 */ jal npc_update_decorations
/* 15104 80039D04 E6040074 */ swc1 $f4, 0x74($s0)
/* 15108 80039D08 8E030000 */ lw $v1, ($s0)
/* 1510C 80039D0C 3C024000 */ lui $v0, 0x4000
/* 15110 80039D10 00621024 */ and $v0, $v1, $v0
/* 15114 80039D14 54400018 */ bnel $v0, $zero, .L80039D78
/* 15118 80039D18 26520001 */ addiu $s2, $s2, 1
/* 1511C 80039D1C 3C020100 */ lui $v0, 0x100
/* 15120 80039D20 00621024 */ and $v0, $v1, $v0
/* 15124 80039D24 54400014 */ bnel $v0, $zero, .L80039D78
/* 15128 80039D28 26520001 */ addiu $s2, $s2, 1
/* 1512C 80039D2C 8E030024 */ lw $v1, 0x24($s0)
/* 15130 80039D30 04630011 */ bgezl $v1, .L80039D78
/* 15134 80039D34 26520001 */ addiu $s2, $s2, 1
/* 15138 80039D38 24630001 */ addiu $v1, $v1, 1
/* 1513C 80039D3C 2402FFFF */ addiu $v0, $zero, -1
/* 15140 80039D40 1462000C */ bne $v1, $v0, .L80039D74
/* 15144 80039D44 AE030024 */ sw $v1, 0x24($s0)
/* 15148 80039D48 8E040028 */ lw $a0, 0x28($s0)
/* 1514C 80039D4C 0C0B783B */ jal spr_load_npc_sprite
/* 15150 80039D50 8E0500B0 */ lw $a1, 0xb0($s0)
/* 15154 80039D54 04410003 */ bgez $v0, .L80039D64
/* 15158 80039D58 AE020024 */ sw $v0, 0x24($s0)
.L80039D5C:
/* 1515C 80039D5C 0800E757 */ j .L80039D5C
/* 15160 80039D60 00000000 */ nop
.L80039D64:
/* 15164 80039D64 8E040024 */ lw $a0, 0x24($s0)
/* 15168 80039D68 8E050028 */ lw $a1, 0x28($s0)
/* 1516C 80039D6C 0C0B78AB */ jal spr_update_sprite
/* 15170 80039D70 8E060030 */ lw $a2, 0x30($s0)
.L80039D74:
/* 15174 80039D74 26520001 */ addiu $s2, $s2, 1
.L80039D78:
/* 15178 80039D78 2A420040 */ slti $v0, $s2, 0x40
/* 1517C 80039D7C 1440FF00 */ bnez $v0, .L80039980
/* 15180 80039D80 00000000 */ nop
.L80039D84:
/* 15184 80039D84 8FBF0040 */ lw $ra, 0x40($sp)
/* 15188 80039D88 8FB3003C */ lw $s3, 0x3c($sp)
/* 1518C 80039D8C 8FB20038 */ lw $s2, 0x38($sp)
/* 15190 80039D90 8FB10034 */ lw $s1, 0x34($sp)
/* 15194 80039D94 8FB00030 */ lw $s0, 0x30($sp)
/* 15198 80039D98 D7B40048 */ ldc1 $f20, 0x48($sp)
/* 1519C 80039D9C 03E00008 */ jr $ra
/* 151A0 80039DA0 27BD0050 */ addiu $sp, $sp, 0x50

File diff suppressed because it is too large Load Diff

View File

@ -1194,7 +1194,6 @@ D_802312E0_battle_area_omo2 = 0x802312E0;
D_802312F8_battle_area_omo2 = 0x802312F8; D_802312F8_battle_area_omo2 = 0x802312F8;
some_80241FBC = 0x80241FBC; some_80241FBC = 0x80241FBC;
D_80246558_kkj_19 = 0x80246558; D_80246558_kkj_19 = 0x80246558;
D_80077A40 = 0x80077A40; D_80077A40 = 0x80077A40;
// mgm_01 scripts (unsplit in E141D0.data.s) // mgm_01 scripts (unsplit in E141D0.data.s)