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 */
/* 0x33C */ u16 smashGameRecord;
/* 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 {
struct {
@ -2152,32 +2155,51 @@ typedef struct EncounterStatus {
/* 0xFB4 */ char unk_FB4[4];
} 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 {
/* 0x0000 */ char magicString[16]; /* "Mario Story 006" string */
/* 0x0010 */ s8 pad[32]; /* always zero */
/* 0x0030 */ s32 crc1;
/* 0x0034 */ s32 crc2;
/* 0x0038 */ s32 saveSlot;
/* 0x003C */ u32 saveCount;
/* 0x003C */ s32 saveCount;
/* 0x0040 */ PlayerData player;
/* 0x0380 */ char unk_380[0xE0];
/* 0x0460 */ s32 starPoints;
/* 0x0464 */ char unk_464[4];
/* 0x0468 */ s16 areaID;
/* 0x046A */ s16 mapID;
/* 0x046C */ s16 entryID;
/* 0x046E */ char unk_46E[2];
/* 0x0470 */ s32 enemyDefeatFlags[720];
/* 0x0470 */ s32 enemyDefeatFlags[60][12];
/* 0x0FB0 */ s32 globalFlags[64];
/* 0x10B0 */ s8 globalBytes[512];
/* 0x12B0 */ s32 areaFlags[8];
/* 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;
/* 0x12EC */ s32 unk_12EC;
/* 0x12F0 */ s8 unk_12F0[12]; /* player name starts at 4th char */
/* 0x12FC */ s32 unk_12FC;
/* 0x1300 */ s32 unk_1300;
/* 0x12EC */ SaveMetadata unk_12EC;
/* 0x1304 */ char unk_1304[0x7C];
} SaveData; // size = 0x1380
@ -2455,17 +2477,6 @@ typedef struct Struct8015A578 {
/* 0x0C */ char unk_0C[0x4];
} 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 {
/* 0x00 */ s8 flags;
/* 0x01 */ Color_RGB8 rgb;

View File

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

View File

@ -100,6 +100,7 @@ void pause_handle_input(s32 buttonsPressed, s32 buttonsHeld);
void pause_cleanup(void);
// file menu stuff
void func_80248170(s32 idx);
void filemenu_set_selected(MenuPanel* menu, s32 col, s32 row);
void filemenu_set_cursor_alpha(s32 arg0);
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);
f32 get_player_normal_yaw(void);
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);
s32 is_block_on_ground(Entity* block);
void set_animation(s32 actorID, s32, s32 animationIndex);

View File

@ -328,7 +328,7 @@ s32 func_800397E8(Npc* npc, f32 arg1);
/// Updates all NPCs.
void update_npcs(void);
f32 npc_get_render_yaw(void);
f32 npc_get_render_yaw(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_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);

View File

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

View File

@ -20,14 +20,14 @@ extern s32 D_8024BA98;
s32* D_80249B80[] = { &D_80241ECC };
MenuPanel* filemenu_menus[4] = { &D_8024A098, &D_8024A114, &D_8024A158, &D_8024A1D8 };
s32 D_80249B94 = 160;
s32 D_80249B98 = -120;
s32 D_80249B94 = SCREEN_WIDTH / 2;
s32 D_80249B98 = -SCREEN_HEIGHT / 2;
s32 D_80249B9C = 0;
s32 D_80249BA0 = 160;
s32 D_80249BA4 = -120;
s32 D_80249BA0 = SCREEN_WIDTH / 2;
s32 D_80249BA4 = -SCREEN_HEIGHT / 2;
s32 filemenu_cursorGoalAlpha = 0;
s32 filemenu_cursorGoalAlpha2 = 0;
s32 D_80249BB0[] = { 0x00000001, 0x00000000 };
s32 D_80249BB0[] = { TRUE, FALSE };
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_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_80249D48[10] = { 0, 5, 17, 37, 60, 85, 110, 135, 160, 185};
s32 D_80249D4C = 0; // padding?
s32 D_80249D60[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000, };
s32 D_80249D70[] = { 0x40E00000, 0x41480000, 0x41500000, 0x41680000, 0x41600000, 0x41500000, 0x41380000, 0x41180000,
0x40F00000, 0x40B00000, 0x40600000, 0x40000000, 0x3F800000, 0x3F000000, 0x00000000, };
Vp D_80249D60 = {
.vp = {
.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_80249DCC[] = { &D_8024BA60, 0x18000000, 0x00000120, 0x00C00000, filemenu_draw_contents_copy_arrow, 0x00000000,
0x2C000000, 0x00000001, 0x00000000, &D_8024BA98, 0x17000000, 0x00000140, 0x00F00000,
filemenu_draw_cursor, 0x00000000, 0xFF000000, 0x00000001, 0x00000000, &D_8024BA98, 0x00000000,
0x00000000, };
extern Gfx D_8024B600[];
extern Gfx D_8024B6F0[];
extern Gfx D_8024B708[];
BSS s32 filemenu_iterFileIdx;
BSS s32 filemenu_pressedButtons;
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) {
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_LANGUAGE_SELECT) {
if (D_80249BB0[0] != 0) {
if (D_80249BB0[0]) {
s32 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)) {
D_80249BB0[0] = 0;
D_80249BB0[0] = FALSE;
}
}
D_80249BA0 = posX;
@ -164,7 +172,7 @@ void filemenu_update_cursor(void) {
}
if (i >= ARRAY_COUNT(gWindows)) {
if (filemenu_cursorGoalAlpha2 == 0xFF) {
if (filemenu_cursorGoalAlpha2 == 255) {
if (D_80249BB8 != 0) {
D_80249BB8--;
if (D_80249BB8 == 0) {
@ -180,7 +188,7 @@ void filemenu_update_cursor(void) {
D_80249BB8 = 1;
}
filemenu_cursorGoalAlpha2 = 0xFF;
filemenu_cursorGoalAlpha2 = 255;
}
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);

View File

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

View File

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

View File

@ -3,14 +3,15 @@
#include "hud_element.h"
extern MenuWindowBP D_8024A134[1];
extern HudScript* D_8024A180[3];
extern MenuWindowBP D_8024A190[2];
extern s32 D_8024A1B4;
extern s8 D_8024C090;
extern s32 D_8024C100_C09980[3];
extern u8 D_8024C117;
void filemenu_info_draw_message_contents(MenuPanel* menu, s32 baseX, s32 baseY) {
s8 page = menu->page;
switch (page) {
switch (menu->page) {
case 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);
@ -30,7 +31,7 @@ void filemenu_info_draw_message_contents(MenuPanel* menu, s32 baseX, s32 baseY)
break;
case 3:
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);
break;
}
@ -51,12 +52,10 @@ void filemenu_info_init(MenuPanel* tab) {
void filemenu_info_handle_input(void) {
if (filemenu_pressedButtons & (BUTTON_A | BUTTON_B)) {
MenuPanel* menu = filemenu_menus[0];
s32 page;
filemenu_8024C098 = 0;
page = menu->page;
switch(page) {
switch(menu->page) {
case 1:
menu->page = 0;
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);
break;
case 2:
menu->page = page;
menu->page = 2;
filemenu_set_selected(menu, 1, 2);
break;
}
@ -121,7 +120,7 @@ void filemenu_draw_contents_file_create_header(MenuPanel* menu, s32 baseX, s32 b
s32 phi_v0 = 122;
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_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_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) {
}

View File

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

189
src/fio.c
View File

@ -1,7 +1,19 @@
#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";
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 storyProgress = evt_get_variable(NULL, EVT_STORY_PROGRESS);
s32 ret = 7;
@ -27,36 +39,35 @@ s32 get_spirits_rescued(void) {
s32 fio_calc_header_checksum(void) {
u32 sum = 0;
s32* it = &D_800D95E8;
s32* it = (s32*)&D_800D95E8;
u32 i;
for (i = 0; i < 0x20; i++, it++) {
for (i = 0; i < sizeof(D_800D95E8) / sizeof(*it); i++, it++) {
sum += *it;
}
return sum;
}
#ifdef NON_EQUIVALENT
s32 fio_validate_header_checksums(void) {
SaveData* saveData = D_800D95E8;
SaveDataHeader* header = &D_800D95E8;
if (!strcmp(saveData->magicString, magicSaveString) && saveData->crc1 == ~saveData->crc2) {
return fio_calc_header_checksum() == saveData->crc1;
if (strcmp(header->magicString, magicSaveString)) {
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) {
fio_read_flash(6, &D_800D95E8, 0x80);
fio_read_flash(6, &D_800D95E8, sizeof(D_800D95E8));
if (fio_validate_header_checksums() == FALSE) {
fio_read_flash(7, &D_800D95E8, 0x80);
if (!fio_validate_header_checksums()) {
fio_read_flash(7, &D_800D95E8, sizeof(D_800D95E8));
if (fio_validate_header_checksums() == FALSE) {
bzero(&D_800D95E8, 0x80);
if (!fio_validate_header_checksums()) {
bzero(&D_800D95E8, sizeof(D_800D95E8));
return FALSE;
}
}
@ -66,22 +77,22 @@ s32 fio_has_valid_backup(void) {
s32 fio_flush_backups(void) {
s32 checksum;
strcpy(D_800D95E8.magicString, &magicSaveString);
strcpy(D_800D95E8.magicString, magicSaveString);
D_800D95E8.crc1 = 0;
D_800D95E8.crc2 = -1;
checksum = fio_calc_header_checksum();
D_800D95E8.crc1 = checksum;
D_800D95E8.crc2 = ~checksum;
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_write_flash(7, &D_800D95E8, 0x80);
fio_write_flash(7, (s8*)&D_800D95E8, sizeof(D_800D95E8));
return 1;
}
s32 fio_calc_file_checksum(SaveData* saveData) {
u32 sum = 0;
s32* it = saveData;
s32* it = (s32*)saveData;
u32 i;
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* buffer = D_8009A6B0;
void* bufferPtr = (void*)buffer;
SaveData* buffer = &D_8009A6B0; // temps required to match
SaveData* buffer2 = buffer;
s32 i, j, savePage;
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++) {
fio_read_flash(i, bufferPtr, sizeof(SaveData));
if (fio_validate_file_checksum(bufferPtr) != 0) {
physicalSaveInfo[i][0] = buffer[14];
physicalSaveInfo[i][1] = buffer[15];
if (logicalSaveInfo[buffer[14]][1] < buffer[15]) {
logicalSaveInfo[buffer[14]][0] = i;
logicalSaveInfo[buffer[14]][1] = buffer[15];
fio_read_flash(i, buffer, sizeof(SaveData));
if (fio_validate_file_checksum(buffer)) {
physicalSaveInfo[i][0] = buffer2->saveSlot;
physicalSaveInfo[i][1] = buffer2->saveCount;
if (logicalSaveInfo[buffer2->saveSlot][1] < buffer2->saveCount) {
logicalSaveInfo[buffer2->saveSlot][0] = i;
logicalSaveInfo[buffer2->saveSlot][1] = buffer2->saveCount;
}
}
}
@ -134,8 +145,7 @@ s32 fio_fetch_saved_file_info(void) {
}
}
}
return 1;
return TRUE;
}
s32 fio_load_game(s32 saveSlot) {
@ -173,7 +183,7 @@ void fio_save_game(s32 saveSlot) {
gCurrentSaveFile.crc2 = ~gCurrentSaveFile.crc1;
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) {
@ -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) {
gGameStatusPtr->entryID = 10;
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) {
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) {
osFlashSectorErase(pageNum * 128);
osFlashSectorErase(pageNum * sizeof(SaveDataHeader));
}

View File

@ -3,56 +3,14 @@
#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_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);
void fio_save_game(s32 saveSlot);
void fio_erase_game(s32 saveSlot);
//fio_deserialize_state;
void func_8002B608(void);
//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[];
extern SaveMetadata gSaveSlotMetadata[4];
extern u8 gSaveSlotHasData[4];
extern SaveDataHeader D_800D95E8;
#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);
#endif
INCLUDE_ASM(s32, "npc", npc_do_player_collision, Npc* npc);
@ -435,127 +502,319 @@ s32 func_800397E8(Npc* npc, f32 arg1) {
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);
#endif
#ifdef NON_EQUIVALENT
// float regalloc
void appendGfx_npc(Npc* npc) {
Matrix4f subroutine_arg6;
Matrix4f subroutine_arg16;
f32 temp_f22 = npc_get_render_yaw();
Matrix4f mtx1, mtx2;
f32 renderYaw = npc_get_render_yaw(npc);
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) {
mtx_ident_mirror_y(subroutine_arg16);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
mtx_ident_mirror_y(mtx2);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (npc->rotationVerticalPivotOffset != 0.0f) {
guTranslateF(subroutine_arg16, 0.0f, npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guTranslateF(mtx2, 0.0f, npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (npc->rotation.y != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guRotateF(mtx2, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (npc->rotation.x != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.x, 1.0f, 0.0f, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guRotateF(mtx2, npc->rotation.x, 1.0f, 0.0f, 0.0f);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (npc->rotation.z != 0.0f) {
guRotateF(subroutine_arg16, npc->rotation.z, 0.0f, 0.0f, 1.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guRotateF(mtx2, npc->rotation.z, 0.0f, 0.0f, 1.0f);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (npc->rotationVerticalPivotOffset != 0.0f) {
guTranslateF(subroutine_arg16, 0.0f, -npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guTranslateF(mtx2, 0.0f, -npc->rotationVerticalPivotOffset, 0.0f);
guMtxCatF(mtx2, mtx1, mtx1);
}
if ((npc->screenSpaceOffset2D[0] != 0.0f) || (npc->screenSpaceOffset2D[1] != 0.0f)) {
guTranslateF(subroutine_arg6, npc->screenSpaceOffset2D[0], npc->screenSpaceOffset2D[1], 0.0f);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guTranslateF(mtx1, npc->screenSpaceOffset2D[0], npc->screenSpaceOffset2D[1], 0.0f);
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)) {
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7),
npc->scale.z * (5.0 / 7));
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
|| (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f)) {
guScaleF(mtx2, npc->scale.x * SPRITE_PIXEL_SCALE, (npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE,
npc->scale.z * SPRITE_PIXEL_SCALE);
guMtxCatF(mtx2, mtx1, mtx1);
}
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_100000) && (npc->currentAnim.w != 0) && (npc->spriteInstanceID >= 0)) {
npc_draw_with_palswap(npc, temp_f22, subroutine_arg6);
if (!(npc->flags & NPC_FLAG_1000000) && (npc->currentAnim.w != 0) && (npc->spriteInstanceID >= 0)) {
npc_draw_with_palswap(npc, renderYaw, mtx1);
npc->unk_2C = func_802DE5C8(npc->spriteInstanceID);
}
} else {
npc_draw_with_palswap(npc, temp_f22, subroutine_arg6);
npc_draw_with_palswap(npc, renderYaw, mtx1);
npc->unk_2C = func_802DDEC4(1);
}
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) {
mtx_ident_mirror_y(subroutine_arg16);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
mtx_ident_mirror_y(mtx2);
guMtxCatF(mtx2, mtx1, mtx1);
}
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);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guRotateRPYF(mtx2, npc->rotation.x, npc->rotation.y, npc->rotation.z);
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)) {
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7),
npc->scale.z * (5.0 / 7));
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
|| (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f))
{
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_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 {
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) {
guTranslateF(subroutine_arg6, npc->pos.x, -(npc->pos.y + npc->unk_AB), npc->pos.z);
mtx_ident_mirror_y(subroutine_arg16);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guTranslateF(mtx1, npc->pos.x, -(npc->pos.y + npc->unk_AB), npc->pos.z);
mtx_ident_mirror_y(mtx2);
guMtxCatF(mtx2, mtx1, mtx1);
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);
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
guRotateRPYF(mtx2, npc->rotation.x, npc->rotation.y, npc->rotation.z);
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)) {
guScaleF(subroutine_arg16, npc->scale.x * (5.0 / 7), (npc->scale.y * npc->verticalStretch) * (5.0 / 7),
npc->scale.z * (5.0 / 7));
guMtxCatF(subroutine_arg16, subroutine_arg6, subroutine_arg6);
}
if ((npc->scale.x * SPRITE_PIXEL_SCALE != 1.0f) || ((npc->scale.y * npc->verticalStretch) * SPRITE_PIXEL_SCALE != 1.0f)
|| (npc->scale.z * SPRITE_PIXEL_SCALE != 1.0f))
{
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_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 {
spr_draw_player_sprite(0x40000001, temp_f22, 0, 0, subroutine_arg6);
spr_draw_player_sprite(0x40000001, renderYaw, 0, 0, mtx1);
}
}
npc->onRender(npc);
}
#else
INCLUDE_ASM(void, "npc", appendGfx_npc, Npc* npc);
#endif
void render_npcs(void) {
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;
}
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) {
case 0:
npc_draw_palswap_mode_0(npc, arg1, arg2);
npc_draw_palswap_mode_0(npc, arg1, mtx);
break;
case 1:
npc_draw_palswap_mode_1(npc, arg1, arg2);
npc_draw_palswap_mode_1(npc, arg1, mtx);
break;
case 2:
npc_draw_palswap_mode_2(npc, arg1, 0, arg2);
npc_draw_palswap_mode_2(npc, arg1, 0, mtx);
break;
case 3:
npc_draw_palswap_mode_2(npc, arg1, 1, arg2);
npc_draw_palswap_mode_2(npc, arg1, 1, mtx);
break;
case 4:
npc_draw_palswap_mode_4(npc, arg1, arg2);
npc_draw_palswap_mode_4(npc, arg1, mtx);
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) {
npc->screenSpaceOffset2D[0] = 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)) {
s32 temp_a2 = (npc->alpha * npc->alpha2 / 255);
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 {
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_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);
@ -1259,8 +1524,6 @@ s32 npc_get_collider_below(Npc* npc) {
return 0;
}
#ifdef NON_EQUIVALENT
// Rodata issue. Most likely the last function in the TU with a jumptable.
void func_8003D3BC(Npc* npc) {
s32 temp_s4 = npc->unk_98;
s32 temp_s0 = npc->unk_9A;
@ -1279,6 +1542,7 @@ void func_8003D3BC(Npc* npc) {
case 2:
case 3:
npc->renderMode = 13;
// fallthrough
case 1:
func_802DE894(npc->spriteInstanceID, temp_s4, 0, 0, 0, 0, temp_s3);
break;
@ -1328,9 +1592,6 @@ void func_8003D3BC(Npc* npc) {
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) {
npc->unk_98 = arg1;

View File

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

View File

@ -51,7 +51,7 @@ HudScript* gPauseStatsSPIncElements[] = { HudScript_StatusSPIncrement1, HudScrip
HudScript* gPauseStatsStarElements[] = { HudScript_StatusStar1, HudScript_StatusStar3, HudScript_StatusStar2,
HudScript_StatusStar4, HudScript_StatusStar5, HudScript_StatusStar6,
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_8024F470 = 1;
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)
s16 D_800779C0[2] = {0, 0};
s32 gSaveSlotMetadata = 0;
s8 D_800779C8[2] = {0, 0};
s8 D_800779CA = 0;
s8 D_800779CB = 0x45;
s32 D_800779CC = 0x52524F52;
s32 D_800779D0 = 0xF7F7F700;
s32 D_800779D4 = 0;
s32 D_800779D8[] = { 0x00000000, 0x00000000, 0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000,
0x00000045, 0x52524F52, 0xF7F7F700, 0x00000000, 0x00000000, 0x00000000, 0x00000045, 0x52524F52,
0xF7F7F700, 0x00000000, 0x00000000,
};
s32 gSaveSlotHasData = 0x01010101;
SaveMetadata gSaveSlotMetadata[4] = {
{ .filename = {"ERROR\xf7\xf7\xf7"}, },
{ .filename = {"ERROR\xf7\xf7\xf7"}, },
{ .filename = {"ERROR\xf7\xf7\xf7"}, },
{ .filename = {"ERROR\xf7\xf7\xf7"}, },
};
u8 gSaveSlotHasData[4] = {TRUE, TRUE, TRUE, TRUE};
s32 D_80077A28 = 0;
s32 D_80077A2C = 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
.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
.word 0x801252CC, 0x801253D4, 0x801253D4, 0x80125300, 0x80125300, 0x80125300, 0x80125300, 0x80125314, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x801253D4, 0x80125320
dlabel jtbl_80150538
.word .L801252CC, .L801253D4, .L801253D4, .L80125300, .L80125300, .L80125300, .L80125300, .L80125314, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L801253D4, .L80125320
.section .text
@ -952,12 +952,13 @@ glabel msg_copy_to_print_buffer
/* BB9A8 801252A8 2C620010 */ sltiu $v0, $v1, 0x10
/* BB9AC 801252AC 10400049 */ beqz $v0, .L801253D4
/* BB9B0 801252B0 00031080 */ sll $v0, $v1, 2
/* BB9B4 801252B4 3C088015 */ lui $t0, %hi(D_80150538)
/* BB9B8 801252B8 25080538 */ addiu $t0, $t0, %lo(D_80150538)
/* BB9B4 801252B4 3C088015 */ lui $t0, %hi(jtbl_80150538)
/* BB9B8 801252B8 25080538 */ addiu $t0, $t0, %lo(jtbl_80150538)
/* BB9BC 801252BC 00481021 */ addu $v0, $v0, $t0
/* BB9C0 801252C0 8C420000 */ lw $v0, ($v0)
/* BB9C4 801252C4 00400008 */ jr $v0
/* BB9C8 801252C8 00000000 */ nop
.L801252CC:
/* BB9CC 801252CC 96820528 */ lhu $v0, 0x528($s4)
/* BB9D0 801252D0 3C088015 */ lui $t0, %hi(gMessageMsgVars)
/* BB9D4 801252D4 25085C38 */ addiu $t0, $t0, %lo(gMessageMsgVars)
@ -972,14 +973,17 @@ glabel msg_copy_to_print_buffer
.L801252F8:
/* BB9F8 801252F8 080494F5 */ j .L801253D4
/* BB9FC 801252FC 0000202D */ daddu $a0, $zero, $zero
.L80125300:
/* BBA00 80125300 24A200FE */ addiu $v0, $a1, 0xfe
/* BBA04 80125304 A3A20010 */ sb $v0, 0x10($sp)
/* BBA08 80125308 24A2010D */ addiu $v0, $a1, 0x10d
/* BBA0C 8012530C 080494F5 */ j .L801253D4
/* BBA10 80125310 A2820455 */ sb $v0, 0x455($s4)
.L80125314:
/* BBA14 80125314 240200F5 */ addiu $v0, $zero, 0xf5
/* BBA18 80125318 080494F5 */ j .L801253D4
/* BBA1C 8012531C A3A20010 */ sb $v0, 0x10($sp)
.L80125320:
/* BBA20 80125320 A3B60010 */ sb $s6, 0x10($sp)
/* BBA24 80125324 96820528 */ lhu $v0, 0x528($s4)
/* 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;
some_80241FBC = 0x80241FBC;
D_80246558_kkj_19 = 0x80246558;
D_80077A40 = 0x80077A40;
// mgm_01 scripts (unsplit in E141D0.data.s)