Misc decomp and rodata migration (#198)

* misc decomp...2

* re-run disasm

* more shtuff

* rodata stuff

* more rodata stuff

* more rodata migration

* rodata stuff 🐱

* meowp

* git subrepo pull tools/splat

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

* git subrepo pull tools/splat

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

* git subrepo pull tools/splat

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

* git subrepo pull tools/splat

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

* OK

* symbol_addrs script update

* PR comments

* fake gross match
This commit is contained in:
Ethan Roseman 2021-03-07 13:32:24 -05:00 committed by GitHub
parent ab79244991
commit b7a2673672
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
205 changed files with 1369 additions and 1506 deletions

View File

@ -1734,4 +1734,18 @@ typedef struct Temp8010F250 {
/* 0x0C */ s32 unk_0C;
} Temp8010F250;
typedef struct Temp8010EBB0 {
/* 0x000 */ s8 unk_00;
/* 0x001 */ s8 unk_01;
/* 0x002 */ s8 unk_02;
/* 0x003 */ s8 unk_03;
/* 0x004 */ char unk_04[0x4];
/* 0x008 */ s32 unk_08;
/* 0x009 */ char unk_0C[0x8];
/* 0x014 */ s8 unk_14;
/* 0x015 */ char unk_15[0x343];
/* 0x358 */ s32 unk_358;
/* 0x35C */ char unk_35C[0x4];
} Temp8010EBB0; // size = 0x360
#endif

View File

@ -132,6 +132,8 @@ s32 func_80055464(s32, s32);
void func_800561A4(s32);
s32 osGetId();
void mem_clear(s8* data, s32 numBytes);
s32* create_icon(s32 iconIndex);
void set_icon_render_pos(s32 iconIndex, s32 posX, s32 posY);
@ -144,7 +146,7 @@ void fx_emote(s32, Npc*, f32, f32, f32, f32, f32, s32, s32*);
f32 func_800E0088(f32, f32);
void func_800E06C0(s32);
void close_status_menu(void);
s32 func_800EB168(s32);
void func_800EB168(s32);
Shadow* create_shadow_type(s32 type, f32 x, f32 y, f32 z);
@ -199,10 +201,13 @@ ItemEntity* get_item_entity(s32 itemEntityIndex);
s32 make_item_entity_nodelay(s32 itemID, f32 x, f32 y, f32 z, ItemSpawnMode itemSpawnMode, s32 pickupVar);
void set_item_entity_flags(s32 itemEntityIndex, s32 flag);
s32 bind_dynamic_entity_7(s32* updateFunc, s32* drawFunc);
void set_cam_viewport(s16 id, s16 x, s16 y, s16 width, s16 height);
void disable_player_shadow(void);
void move_player(s32 duration, f32 heading, f32 speed);
s32 enable_player_input(void);
Npc* get_npc_safe(NpcId npcId);
Npc* get_npc_unsafe(NpcId npcId);

View File

@ -162,7 +162,7 @@ ApiStatus SwitchMessage(ScriptInstance* script, s32 isInitialCall);
ApiStatus ShowChoice(ScriptInstance* script, s32 isInitialCall);
ApiStatus CloseChoice(ScriptInstance* script, s32 isInitialCall);
ApiStatus CancelMessage(ScriptInstance* script, s32 isInitialCall);
ApiStatus CancelMessageAndBlock(ScriptInstance* script, s32 isInitialCall);
ApiStatus CancelMessageAndBlock(); // ???
ApiStatus SetMessageImages(ScriptInstance* script, s32 isInitialCall);
ApiStatus SetMessageString(ScriptInstance* script, s32 isInitialCall);
ApiStatus SetMessageValue(ScriptInstance* script, s32 isInitialCall);

View File

@ -85,7 +85,6 @@ extern s16 D_8010CD00;
extern s16 D_8010CD10;
extern s16 D_8010CD12;
extern s32 D_8010CD20;
extern s32 D_8010EF08;
extern s32 D_801595A0;
extern BackgroundHeader gBackgroundImage;
@ -229,8 +228,8 @@ extern s32 D_801086AC;
extern s32 D_801083D8;
extern s32 D_80108068;
extern s32 D_80104BEC;
extern Temp8010EBB0 D_8010EBB0; // something with partners
extern Temp8010F250 D_8010F250; // play_sound state struct?
extern s8 D_8010EBB0[];
// Effects
extern EffectTableEntry gEffectTable[135];

View File

@ -30,13 +30,13 @@ void func_802E10F4(Entity* entity) {
}
void func_802E114C(void) {
func_80027088(TRUE);
func_80027088(1);
disable_player_input();
gPlayerStatusPtr->currentSpeed = 0.0f;
}
void func_802E117C(void) {
func_80027088(FALSE);
func_80027088(0);
enable_player_input();
}

View File

@ -80,7 +80,7 @@ void func_802E1614(Entity* entity) {
void func_802E1660(Entity* entity) {
struct802E1400* temp = entity->dataBuf;
PlayerStatus* playerStatus = &gPlayerStatus;
s8* temp2 = D_8010EBB0;
Temp8010EBB0* temp2 = &D_8010EBB0;
func_802E153C(entity);
@ -104,7 +104,7 @@ void func_802E1660(Entity* entity) {
return;
}
if ((temp2[3] == 4) && (temp2[0] != 0)) {
if (temp2->unk_03 == 4 && temp2->unk_00 != 0) {
return;
}

View File

@ -15,21 +15,21 @@ void func_80025CC0(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&func_80025D74, NULL, fmt, args);
_Printf(func_80025D74, NULL, fmt, args);
}
void func_80025CFC(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&func_80025D74, NULL, fmt, args);
_Printf(func_80025D74, NULL, fmt, args);
}
void func_80025D38(const char* fmt, ...) {
va_list args;
va_start(args, fmt);
_Printf(&func_80025D74, NULL, fmt, args);
_Printf(func_80025D74, NULL, fmt, args);
}
u32 func_80025D74(void* arg0, const unsigned char* str, s32 count) {
@ -79,8 +79,8 @@ u32 func_80025D74(void* arg0, const unsigned char* str, s32 count) {
return 1;
}
extern const char D_80097D30[]; // "File:%s Line:%d %s \n\0\0\0"
extern const char D_80097D30[];
//const char D_80097D30[] = "File:%s Line:%d %s \n\0\0\0";
void func_80025F44(char* arg0, char* file, s32 line, char* arg3) {
func_80025CFC(D_80097D30, file, line, arg0);
PANIC();

View File

@ -477,7 +477,7 @@ ApiStatus GetSelfAnimationFromTable(ScriptInstance* script, s32 isInitialCall) {
}
ApiStatus func_80045798(ScriptInstance* script, s32 isInitialCall) {
D_8010EF08 = get_variable(script, *script->ptrReadPos);
D_8010EBB0.unk_358 = get_variable(script, *script->ptrReadPos);
return ApiStatus_DONE2;
}

View File

@ -202,8 +202,10 @@ void func_800DFC74(void) {
}
s32 func_800DFCF4(void) {
if (D_8010EBB0[0] == 1 && (D_8010EBB0[3] == 6 || D_8010EBB0[3] == 9 || D_8010EBB0[3] == 7 || D_8010EBB0[3] == 4
|| D_8010EBB0[3] == 8)) {
if (D_8010EBB0.unk_00 == 1 &&
(D_8010EBB0.unk_03 == 6 || D_8010EBB0.unk_03 == 9 || D_8010EBB0.unk_03 == 7 || D_8010EBB0.unk_03 == 4 ||
D_8010EBB0.unk_03 == 8))
{
return 0;
}
return 1;
@ -307,7 +309,7 @@ s32 func_800E0208(void) {
s32 ret = 0;
if (gameStatus->disableScripts && (gameStatus->currentButtons & 0x10)) {
if (D_8010EBB0[0] == 0) {
if (D_8010EBB0.unk_00 == 0) {
set_action_state(ActionState_IDLE);
}
ret = 1;

View File

@ -17,7 +17,7 @@ s32 func_800E26C4(void) {
PlayerStatus* playerStatus = gPlayerStatusPtr;
PlayerData* playerData = &gPlayerData;
s32 actionState = playerStatus->actionState;
s8* temp_8010EBB0 = &D_8010EBB0;
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
if (actionState == ActionState_IDLE ||
actionState == ActionState_WALK ||
@ -30,17 +30,17 @@ s32 func_800E26C4(void) {
if (actionState == ActionState_RIDE) {
if (playerData->currentPartner == PartnerID_LAKILESTER || playerData->currentPartner == PartnerID_BOW) {
if (temp_8010EBB0[0] != 0) {
if (temp_8010EBB0->unk_00 != 0) {
return 1;
} else {
playerStatus->animFlags |= 4;
return 0;
}
} else {
if (temp_8010EBB0[3] == 6 || temp_8010EBB0[3] == 7) {
return temp_8010EBB0[0] != 0;
if (temp_8010EBB0->unk_03 == 6 || temp_8010EBB0->unk_03 == 7) {
return temp_8010EBB0->unk_00 != 0;
}
if (temp_8010EBB0[3] == 4) {
if (temp_8010EBB0->unk_03 == 4) {
playerStatus->animFlags |= 4;
return 0;
}
@ -381,7 +381,7 @@ void set_action_state(s32 actionState) {
partner = playerData->currentPartner;
if (partner == PartnerID_SUSHIE || partner == PartnerID_LAKILESTER || partner == PartnerID_PARAKARRY) {
if (D_8010EBB0[0]) {
if (D_8010EBB0.unk_00 != 0) {
playerStatus->animFlags |= 0x4;
playerStatus->flags |= 0x800;
return;
@ -468,7 +468,7 @@ s32 check_input_hammer(void) {
if (playerStatus->pressedButtons & Button_B) {
if (!(playerStatus->flags & 4)) {
if (D_8010EBB0[0] != 1 || playerData->currentPartner != PartnerID_WATT) {
if (D_8010EBB0.unk_00 != 1 || playerData->currentPartner != PartnerID_WATT) {
if (playerData->hammerLevel != -1) {
set_action_state(ActionState_HAMMER);
return TRUE;

View File

@ -3,7 +3,7 @@
void func_800E6860(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
if ((D_8010EBB0[0] != 0) && (D_8010EBB0[3] == 9)) {
if (D_8010EBB0.unk_00 != 0 && D_8010EBB0.unk_03 == 9) {
Npc* partner = get_npc_unsafe(NpcId_PARTNER);
func_802DDEE4(0, -1, 7, 0, 0, 0, playerStatus->unk_0E, 0);
@ -15,25 +15,25 @@ void func_800E6860(void) {
// playerStatus getting coppied to a0 - how? inlining?
#ifdef NON_MATCHING
s32 func_800E6904(void) {
s8* temp_8010EBB0 = D_8010EBB0;
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
PlayerStatus* playerStatus = &gPlayerStatus;
s32 actionState = playerStatus->actionState;
if (!(playerStatus->animFlags & 0x100000)) {
if (temp_8010EBB0[0] == 0) {
if (temp_8010EBB0.unk_00 == 0) {
if (!(playerStatus->flags & 0x1000)) {
if (actionState == ActionState_IDLE || actionState == ActionState_WALK || actionState == ActionState_RUN) {
return 1;
}
}
} else if (partner_player_can_pause()) {
if (temp_8010EBB0[3] == 6) {
if (temp_8010EBB0.unk_03 == 6) {
return 1;
} else if (temp_8010EBB0[3] == 9) {
} else if (temp_8010EBB0.unk_03 == 9) {
if (actionState == ActionState_RIDE) {
return 1;
}
} else if (temp_8010EBB0[3] == 8) {
} else if (temp_8010EBB0.unk_03 == 8) {
if (actionState != ActionState_RIDE) {
play_sound(0x21D);
} else {

View File

@ -1,11 +1,11 @@
#include "common.h"
s32 func_802B7000_2(void) {
s8* something = &D_8010EBB0;
Temp8010EBB0* something = &D_8010EBB0;
ActionState* actionState = gPlayerActionState;
if (actionState != ActionState_USE_TWEESTER) {
if (something[0] != 1 || (something[3] != 9 && something[3] != 4)) {
if (something->unk_00 != 1 || (something->unk_03 != 9 && something->unk_03 != 4)) {
return 0;
}
}

View File

@ -382,7 +382,7 @@ ApiStatus GetCurrentPartner(ScriptInstance* script, s32 isInitialCall) {
PlayerData* playerData = &gPlayerData;
s32 currentPartner = 0;
if (D_8010EBB0[0] != 0) {
if (D_8010EBB0.unk_00 != 0) {
currentPartner = playerData->currentPartner;
}

View File

@ -112,7 +112,7 @@ void init_dynamic_entity_list(void) {
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", bind_dynamic_entity_3);
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", bind_dynamic_entity_7);
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", bind_dynamic_entity_7, s32* updateFunc, s32* drawFunc);
INCLUDE_ASM(s32, "code_b72b0_len_15ed0", bind_dynamic_entity_B);

View File

@ -68,7 +68,7 @@ ApiStatus CancelMessage(ScriptInstance* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus CancelMessageAndBlock(ScriptInstance* script, s32 isInitialCall) {
ApiStatus CancelMessageAndBlock() {
cancel_message(gCurrentPrintContext);
return ApiStatus_BLOCK;
}

View File

@ -1,7 +1,71 @@
#include "common.h"
s32 D_802DF390[] = { 0xFFF00038, 0x00000000, 0x00000000, 0xF0F0F0FF, 0x00100038, 0x00000000, 0x04000000, 0x787878FF,
0x00100000, 0x00000000, 0x04000700, 0x000000FF, 0xFFF00000, 0x00000000, 0x00000700, 0x787878FF, };
s32 D_802DF3D0[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000, };
s32 D_802DF3E0[] = { 0x028001E0, 0x01FF0000, 0x028001E0, 0x02000000, };
Gfx D_802DF3F0[] = {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM), AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
};
Gfx D_802DF428[] = {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsDPSetCombineLERP(0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
};
Gfx D_802DF460[] = {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | G_RM_PASS, AA_EN | Z_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
};
Gfx D_802DF490[] = {
gsSPClearGeometryMode(G_CULL_BOTH | G_LIGHTING),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_CLD_SURF2),
gsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 18, G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_RGBA16 | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE),
gsSPEndDisplayList(),
};
f32 D_802DF4C0 = 1.0f;
s32 D_802DF4C4[] = { 0x00000006, 0x00000700, 0x000003C6, 0x00000012, 0x00000700, 0x000003C6, 0x0000000A, 0x00000900, 0x00003FC6, 0x00000003, 0x00000700, 0x00000006, 0x00000006, 0x00000900, 0x00003C00, 0x00000006, 0x00000700, 0x0000003E, 0x00000006, 0x00000900, 0x00003C00, 0x00000000, 0x00000000, };
INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DBD40);
// extern s32* gSpriteHeapPtr;
// extern s32** D_802DFE44;
// extern s32* D_802DFE9C;
// void func_802DBD40(void) {
// s32 i;
// s32* phi_v0;
// D_802DFE44 = _heap_malloc(&gSpriteHeapPtr, 0x580);
// for (i = 21; i >= 0; i--) {
// D_802DFE44[i] = -1;
// }
// }
INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DBD8C);
INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DBDBC);
@ -14,7 +78,36 @@ INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DC008);
INCLUDE_ASM(s32, "code_fee30_len_2d60", spr_appendMDL_component);
INCLUDE_ASM(s32, "code_fee30_len_2d60", spr_transform_point);
void spr_transform_point(s32 rotX, s32 rotY, s32 rotZ, f32 inX, f32 inY, f32 inZ, f32* outX, f32* outY, f32* outZ) {
if (rotX == 0 && rotY == 0 && rotZ == 0) {
*outX = inX;
*outY = inY;
*outZ = inZ;
} else {
Matrix4f mtx, mtx2;
f32 f1, f2, f3, f4, f5, f6, f7, f8, f9;
guRotateF(&mtx, rotY, 0.0f, 1.0f, 0.0f);
guRotateF(&mtx2, rotZ, 0.0f, 0.0f, 1.0f);
guMtxCatF(&mtx2, &mtx, &mtx);
guRotateF(&mtx2, rotX, 1.0f, 0.0f, 0.0f);
guMtxCatF(&mtx2, &mtx, &mtx);
f1 = (mtx[0][0] * inX);
f2 = (mtx[1][0] * inY);
f3 = (mtx[2][0] * inZ);
f4 = (mtx[0][1] * inX);
f5 = (mtx[1][1] * inY);
f6 = (mtx[2][1] * inZ);
f7 = (mtx[0][2] * inX);
f8 = (mtx[1][2] * inY);
f9 = (mtx[2][2] * inZ);
*outX = f1 + f2 + f3;
*outY = f4 + f5 + f6;
*outZ = f7 + f8 + f9;
}
}
INCLUDE_ASM(s32, "code_fee30_len_2d60", spr_draw_component);
@ -48,7 +141,9 @@ INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DD7B0);
INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DD820);
INCLUDE_ASM(s32, "code_fee30_len_2d60", set_anim_timescale);
void set_anim_timescale(f32 arg0) {
D_802DF4C0 = arg0 * 2.0f;
}
INCLUDE_ASM(s32, "code_fee30_len_2d60", func_802DD89C);

View File

@ -20,7 +20,7 @@ INCLUDE_ASM(s32, "world/partner/bombette", func_802BD6DC_31842C);
INCLUDE_ASM(s32, "world/partner/bombette", func_802BD720_318470);
s32 func_802BD748(void) {
return D_8010EBB0[0] == 0;
return D_8010EBB0.unk_00 == 0;
}
INCLUDE_ASM(s32, "world/partner/bombette", func_802BD758_3184A8);

View File

@ -29,7 +29,7 @@ INCLUDE_ASM(s32, "world/partner/goombario", func_802BD564_317484);
// Compiler is generating more efficient code than the original asm, using xori and sltiu instead of beq
#ifdef NON_MATCHING
s32 world_goombario_can_pause(Npc* partner) {
if (D_8010EBB0[0]) {
if (D_8010EBB0.unk_00) {
return FALSE;
}
@ -59,23 +59,23 @@ ApiStatus func_802BDB84(ScriptInstance* script, s32 isInitialCall) {
return func_800EE9B8(unk) != 0;
}
// Something is up with D_8010EBB0 I think. It might be a struct or something
#ifdef NON_MATCHING
void world_goombario_pre_battle(Npc* partner) {
if (D_8010EBB0[0] != 0) {
// TODO fake match nonsense
s8* new_var = &D_8010EBB0.unk_00;
s8* new_var2 = &D_8010EBB0.unk_00;
new_var = new_var2;
if (*new_var != 0) {
func_80027088(0);
enable_player_input();
CancelMessageAndBlock();
clear_partner_move_history(partner);
D_8010EBB0[0] = 0;
D_8010EBB0[3] = 0;
D_8010EBB0.unk_00 = 0;
D_8010EBB0.unk_03 = 0;
disable_npc_blur(partner);
}
D_8010EBB0[3] = 1;
D_8010EBB0.unk_03 = 1;
}
#else
INCLUDE_ASM(void, "world/partner/goombario", world_goombario_pre_battle, Npc* partner);
#endif
s32 D_802BDC40_317B60[] = {
0x00000015, 0x001B0000, 0x00000018, 0x001B0000, 0x00000016, 0x001B0001, 0x00000019, 0x001B0001,

View File

@ -55,7 +55,7 @@ s32 D_800F7FF4 = 4;
s32 D_800F7FF8 = 5;
s32 D_800F7FFC = 7;
s32 D_800F8000[] = { 8, 0, 0, 0 };
s32 D_800F8010[] = { 0x003251D0, 0x00325AD0, (s32)&D_802C05CC, 0x00000000 };
s32 D_800F8010[] = { &code_code_3251D0_ROM_START, &code_code_3251D0_ROM_END, (s32)&D_802C05CC, 0x00000000 };
s32 D_800F8020 = 0;
s32 D_800F8024 = 0;
s32 D_800F8028 = 0;
@ -245,10 +245,30 @@ WorldPartner wPartners[12] = {
},
};
f32 D_800F833C = 0;
f32 D_800F8340 = 0;
f32 D_800F8344 = 0;
NpcId create_basic_npc(NpcBlueprint* blueprint);
extern s32 D_802C0000;
// Some weird ordering issues, probably a macro at play
#ifdef NON_MATCHING
s32 use_consumable(s32 arg0) {
ScriptInstance* script;
s32 temp_s1;
temp_s1 = gPlayerData.invItems[arg0];
D_8010CD20 = arg0;
dma_copy(D_800F8010[0], D_800F8010[1], &D_802C0000);
script = start_script(D_800F8010[2], 1, 0);
script->varTable[10] = temp_s1;
return script->id;
}
#else
INCLUDE_ASM(s32, "world/partners", use_consumable);
#endif
void remove_consumable(void) {
gPlayerData.invItems[D_8010CD20] = 0;
@ -258,7 +278,7 @@ void remove_consumable(void) {
INCLUDE_ASM(s32, "world/partners", func_800EA4B0);
s32 world_partner_can_use_ability_default(Npc* partner) {
return D_8010EBB0[0] == 0;
return D_8010EBB0.unk_00 == 0;
}
s32 world_partner_can_player_pause_default(Npc* partner) {
@ -268,7 +288,7 @@ s32 world_partner_can_player_pause_default(Npc* partner) {
INCLUDE_ASM(s32, "world/partners", func_800EA52C);
s32 is_current_partner_flying(void) {
return !D_8010CFEC->isFlying;
return !wPartner->isFlying;
}
void func_800EA5B8(s32* arg0) {
@ -277,8 +297,8 @@ void func_800EA5B8(s32* arg0) {
void load_partner_npc(void) {
WorldPartner* partnerEntry = &wPartners[D_8010CFD8];
Npc** partnerNpcPtr = &D_8010C930;
WorldPartner** partner = &D_8010CFEC;
Npc** partnerNpcPtr = &wPartnerNpc;
WorldPartner** partner = &wPartner;
NpcId npcIndex;
NpcBlueprint blueprint;
NpcBlueprint* blueprintPtr;
@ -321,26 +341,132 @@ void func_800EA6A8(void) {
INCLUDE_ASM(s32, "world/partners", _use_partner_ability);
INCLUDE_ASM(s32, "world/partners", func_800EB168, s32 arg0);
void func_800EB168(s32 arg0) {
PlayerStatus* playerStatus = &gPlayerStatus;
INCLUDE_ASM(s32, "world/partners", func_800EB200);
if (D_8010CFD8 != arg0) {
D_8010CFE0 = 1;
D_8010CFE4 = arg0;
INCLUDE_ASM(s32, "world/partners", func_800EB2A4);
if (D_8010CFD8 != 0 && arg0 != 0) {
D_8010CFE8 = 3;
} else if (arg0 == 0) {
D_8010CFE8 = 4;
} else {
D_8010CFE8 = 6;
D_800F833C = playerStatus->position.x;
D_800F8340 = playerStatus->position.y;
D_800F8344 = playerStatus->position.z;
}
}
}
INCLUDE_ASM(s32, "world/partners", partner_use_ability);
void func_800EB200(s32 arg0) {
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
INCLUDE_ASM(s32, "world/partners", partner_player_can_pause, void);
if (D_8010CFD8 != arg0) {
D_8010CFE0 = 1;
D_8010CFE4 = arg0;
temp8010EBB0->unk_00 = 0;
temp8010EBB0->unk_01 = 0;
INCLUDE_ASM(s32, "world/partners", partner_can_use_ability);
if (D_8010CFD8 != 0 && arg0 != 0) {
D_8010CFE8 = 2;
} else if (arg0 == 0) {
D_8010CFE8 = 4;
} else {
D_8010CFE8 = 6;
D_800F833C = playerStatus->position.x;
D_800F8340 = playerStatus->position.y;
D_800F8344 = playerStatus->position.z;
}
}
}
void func_800EB2A4(s32 arg0) {
if (D_8010CFD8 != arg0) {
D_8010CFE0 = 1;
D_8010CFE4 = arg0;
if (D_8010CFD8 != 0 && arg0 != 0) {
D_8010CFE8 = 3;
} else if (arg0 == 0) {
D_8010CFE8 = 5;
} else {
D_8010CFE8 = 7;
}
}
}
s32 partner_use_ability(void) {
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
if (!is_starting_conversation() &&
wPartner != NULL &&
(wPartner->canUseAbility == NULL || wPartner->canUseAbility(wPartnerNpc)))
{
if (((*gGameStatusPtr)->unk_81 != 0) && (temp8010EBB0->unk_08 & 0x4000)) {
play_sound(0x21D);
} else if (D_8010CFD8 != 0) {
D_8010CFE0 = 1;
D_8010CFE8 = 8;
_use_partner_ability();
return TRUE;
}
}
return FALSE;
}
// needless v0 to v1 thing. functionally equivalent
#ifdef NON_MATCHING
s32 partner_player_can_pause(void) {
if (wPartner == NULL || wPartner->canPlayerPause == NULL || wPartner->canPlayerPause(wPartnerNpc)) {
return TRUE;
}
return FALSE;
}
#else
INCLUDE_ASM(s32, "world/partners", partner_player_can_pause, void)
#endif
s32 partner_can_use_ability(void) {
if (wPartner->canUseAbility != NULL && !wPartner->canUseAbility(wPartnerNpc)) {
return TRUE;
}
return FALSE;
}
INCLUDE_ASM(s32, "world/partners", partner_reset_data);
INCLUDE_ASM(s32, "world/partners", partner_initialize_data);
void partner_initialize_data(void) {
Temp8010EBB0* unk8010EBB0 = &D_8010EBB0;
INCLUDE_ASM(s32, "world/partners", partner_test_enemy_collision);
D_8010CFD8 = 0;
D_8010CFE0 = 0;
D_8010CFE8 = 0;
D_8010CFC4 = 0;
unk8010EBB0->unk_03 = 0;
unk8010EBB0->unk_14 = 0;
unk8010EBB0->unk_01 = 0;
unk8010EBB0->unk_00 = 0;
unk8010EBB0->unk_358 = 0;
unk8010EBB0->unk_02 = 0;
wPartner = NULL;
D_800F833C = 0;
D_800F8340 = 0;
D_800F8344 = 0;
}
s32 partner_test_enemy_collision(s32 arg0) {
if (D_8010CFD8 != 0 && wPartner->testFirstStrike != NULL) {
return wPartner->testFirstStrike(wPartnerNpc, arg0);
}
return FALSE;
}
Bytecode* partner_get_ride_script(void) {
WorldPartner* partner = D_8010CFEC;
WorldPartner* partner = wPartner;
if (partner == NULL) {
return NULL;
@ -348,15 +474,78 @@ Bytecode* partner_get_ride_script(void) {
return partner->whileRiding;
}
INCLUDE_ASM(s32, "world/partners", partner_handle_before_battle);
void partner_handle_before_battle(void) {
if (D_8010CFD8 != 0) {
ScriptID* scriptID = &D_8010CFDC;
INCLUDE_ASM(s32, "world/partners", partner_handle_after_battle);
if (does_script_exist(*scriptID)) {
kill_script_by_ID(*scriptID);
}
INCLUDE_ASM(s32, "world/partners", partner_kill_ability_script);
if (wPartner->preBattle != NULL) {
wPartner->preBattle(wPartnerNpc);
}
}
}
INCLUDE_ASM(s32, "world/partners", partner_suspend_ability_script);
void partner_handle_after_battle(void) {
s8* temp8010EBB0 = &D_8010EBB0;
INCLUDE_ASM(s32, "world/partners", partner_resume_ability_script);
if (D_8010CFD8 != 0) {
ScriptID* scriptID = &D_8010CFDC;
PlayerData* playerData = &gPlayerData;
if (does_script_exist(*scriptID) != 0) {
kill_script_by_ID(*scriptID);
}
D_8010CFD4 = start_script(wPartner->update, 20, 0x20);
D_8010CFD4->owner2.npc = wPartnerNpc;
*scriptID = D_8010CFD4->id;
D_8010CFD4->groupFlags = 0xA;
D_8010CFE8 = 1;
if (playerData->currentPartner != PartnerID_WATT && temp8010EBB0[3] == 6) {
gPlayerStatusPtr->animFlags &= ~1;
gPlayerStatusPtr->animFlags &= ~2;
temp8010EBB0[3] = 0;
}
if (wPartner->postBattle != NULL) {
wPartner->postBattle(wPartnerNpc);
}
}
}
void partner_kill_ability_script(void) {
ScriptID* scriptID = &D_8010CFDC;
D_8010CFE8 = 10;
if (does_script_exist(*scriptID)) {
kill_script_by_ID(*scriptID);
}
}
void partner_suspend_ability_script(void) {
if (D_8010CFD8 != NULL) {
ScriptID* scriptID = &D_8010CFDC;
if (does_script_exist(*scriptID)) {
suspend_all_script(*scriptID);
}
}
}
void partner_resume_ability_script(void) {
if (D_8010CFD8 != NULL) {
ScriptID* scriptID = &D_8010CFDC;
if (does_script_exist(*scriptID)) {
resume_all_script(*scriptID);
}
}
}
INCLUDE_ASM(void, "world/partners", enable_partner_walking, Npc* partner, s32 val);
@ -405,7 +594,18 @@ void func_800EF314(void) {
D_8010CFC8 = 50;
}
INCLUDE_ASM(void, "world/partners", enable_partner_ai, void);
void enable_partner_ai(void) {
WorldPartner** partner = &wPartnerNpc;
D_8010CFC8 = 0;
clear_partner_move_history(*partner);
if (!wPartner->isFlying) {
enable_partner_walking(*partner, FALSE);
} else {
enable_partner_flying(*partner, FALSE);
}
}
void set_parter_tether_distance(f32 arg0) {
D_8010CFC0 = arg0;
@ -447,18 +647,18 @@ INCLUDE_ASM(void, "world/partners", clear_partner_move_history, Npc* partner);
INCLUDE_ASM(s32, "world/partners", func_800EF4E0);
void func_800EF600(void) {
s8* temp_8010EBB0 = D_8010EBB0;
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
temp_8010EBB0[20]--;
if (temp_8010EBB0[20] < 0) {
temp_8010EBB0[20] = 0;
temp_8010EBB0->unk_14--;
if (temp_8010EBB0->unk_14 < 0) {
temp_8010EBB0->unk_14 = 0;
}
}
void func_800EF628(void) {
s8* temp_8010EBB0 = D_8010EBB0;
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
temp_8010EBB0[20]++;
temp_8010EBB0->unk_14++;
}
INCLUDE_ASM(s32, "world/partners", func_800EF640);

View File

@ -3,31 +3,41 @@
#include "common.h"
typedef void (*PartnerFunc)(Npc* partner);
typedef s32 (*PartnerBoolFunc)(Npc* partner);
typedef s32 (*PartnerUnkFunc)(Npc* partner, s32 arg1);
typedef struct WorldPartner {
/* 0x00 */ void* dmaStart;
/* 0x04 */ void* dmaEnd;
/* 0x08 */ void* dmaDest; ///< Always `0x802BD100`
/* 0x0C */ s32 isFlying;
/* 0x10 */ void (*init)(Npc* partner);
/* 0x10 */ PartnerFunc init;
/* 0x14 */ Bytecode* takeOut;
/* 0x18 */ Bytecode* update;
/* 0x1C */ Bytecode* useAbility;
/* 0x20 */ Bytecode* putAway;
/* 0x24 */ NpcAnimID idle;
/* 0x28 */ UNK_FUN_PTR(testFirstStrike);
/* 0x2C */ s32 (*canUseAbility)(Npc* partner);
/* 0x30 */ s32 (*canPlayerPause)(Npc* partner);
/* 0x34 */ void (*preBattle)(Npc* partner);
/* 0x38 */ UNK_FUN_PTR(postBattle);
/* 0x28 */ PartnerUnkFunc testFirstStrike;
/* 0x2C */ PartnerBoolFunc canUseAbility;
/* 0x30 */ PartnerBoolFunc canPlayerPause;
/* 0x34 */ PartnerFunc preBattle;
/* 0x38 */ PartnerFunc postBattle;
/* 0x3C */ Bytecode* whileRiding;
} WorldPartner; // size = 0x40
/// Set to 0 when partner NPC loaded
extern s32 D_8010C954;
extern s32 D_8010CFC4;
extern ScriptInstance* D_8010CFD4;
extern s32 D_8010CFD8;
extern WorldPartner wPartners[12]; // wPartners
extern WorldPartner* D_8010CFEC; // wPartner
extern ScriptID D_8010CFDC;
extern s32 D_8010CFE0;
extern s32 D_8010CFE4;
extern s32 D_8010CFE8;
extern WorldPartner wPartners[12];
extern WorldPartner* wPartner;
extern NpcId D_8010CFD0; // wPartnerNpcIndex
extern Npc* D_8010C930; // wPartnerNpc
extern Npc* wPartnerNpc; // wPartnerNpc
#endif

View File

@ -6,7 +6,7 @@ ApiStatus func_80283810(ScriptInstance* script, s32 isInitialCall) {
script->varTable[10] = 0;
if (partner_get_ride_script() != NULL) {
if (D_8010EBB0[0] == 0) {
if (D_8010EBB0.unk_00 == 0) {
script->varTable[10] = 0;
} else {
script->varTable[10] = 1;

View File

@ -18,9 +18,9 @@ static const s32 rodata_73DA0[] = {
};
// These string literals belong to load_map_by_IDs
static const char D_80098A10[] = "%s_shape";
static const char D_80098A1C[] = "%s_hit";
static const char D_80098A24[] = "%s_tex";
// static const char D_80098A10[] = "%s_shape";
// static const char D_80098A1C[] = "%s_hit";
// static const char D_80098A24[] = "%s_tex";
INCLUDE_ASM(s32, "world/world", load_map_by_IDs);

View File

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

View File

@ -6,7 +6,7 @@
[subrepo]
remote = https://github.com/ethteck/splat.git
branch = master
commit = 97e51bdf2124a90a856fcb0c695f01fa15360e5d
parent = 1af3672136ec6d609d9ce31f23fb472cf1e359f0
commit = 53370e3217fb075e196c9ad4ecfdecfeac52bceb
parent = 0488245e2733bcca986dc68c5abeeeb04de3b50f
method = merge
cmdver = 0.4.3

View File

@ -12,5 +12,4 @@ class N64SegCi4(N64SegCi8):
return img_data
def max_length(self):
if self.compressed: return None
return self.width * self.height // 2

View File

@ -15,8 +15,6 @@ class N64SegCi8(N64SegRgba16):
self.path = os.path.join(out_dir, os.path.basename(self.name) + ".png")
data = rom_bytes[self.rom_start: self.rom_end]
if self.compressed:
data = Yay0decompress.decompress_yay0(data)
self.image = self.parse_image(data, self.width, self.height)
@ -57,6 +55,4 @@ class N64SegCi8(N64SegRgba16):
return data
def max_length(self):
if self.compressed:
return None
return self.width * self.height

View File

@ -1,19 +1,16 @@
from capstone import *
from capstone.mips import *
from collections import OrderedDict
from segtypes.n64.segment import N64Segment
from segtypes.segment import Segment
from segtypes.n64.palette import N64SegPalette
from segtypes.n64.ci4 import N64SegCi4
from segtypes.n64.rgba32 import N64SegRgba32
import json
import png
import os
from pathlib import Path, PurePath
import re
import sys
from collections import OrderedDict
from pathlib import Path, PurePath
import png
from capstone import *
from capstone.mips import *
from segtypes.n64.ci4 import N64SegCi4
from segtypes.n64.palette import N64SegPalette
from segtypes.n64.segment import N64Segment
from segtypes.segment import Segment
from util import floats
from util.symbol import Symbol
@ -24,7 +21,7 @@ short_mnemonics = ["addiu", "lh", "sh", "lhu"]
byte_mnemonics = ["lb", "sb", "lbu"]
class Subsegment():
def __init__(self, start, end, name, type, vram, args):
def __init__(self, start, end, name, type, vram, args, parent):
self.rom_start = start
self.rom_end = end
self.size = self.rom_end - self.rom_start
@ -33,19 +30,18 @@ class Subsegment():
self.vram_end = vram + self.size
self.type = type
self.args = args
# TODO maybe move to a better place
if self.type in [".bss", "bss"]:
self.rom_start = 0
self.rom_end = 0
self.size = self.args[0]
self.vram_end = self.vram_start + self.size
self.parent = parent
def contains_vram(self, addr):
return self.vram_start <= addr < self.vram_end
def get_out_subdir(self, options):
if self.type in ["c", ".data", ".rodata", ".bss"]:
if self.type.startswith("."):
if self.parent:
return self.parent.get_out_subdir(options)
else:
return options.get("src_path", "src")
elif self.type in ["c"]:
return options.get("src_path", "src")
elif self.type in ["asm", "hasm", "header"]:
return "asm"
@ -67,7 +63,12 @@ class Subsegment():
return section_name
def get_ext(self):
if self.type in ["c", ".data", ".rodata", ".bss"]:
if self.type.startswith("."):
if self.parent:
return self.parent.get_ext()
else:
return "c"
elif self.type in ["c"]:
return "c"
elif self.type in ["asm", "hasm", "header"]:
return "s"
@ -89,6 +90,13 @@ class Subsegment():
self.name + "." + self.get_ext()
)
def scan_inner(self, segment, rom_bytes):
pass
def scan(self, segment, rom_bytes):
if self.should_run(segment.options) and not self.name.startswith("."):
self.scan_inner(segment, rom_bytes)
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
pass
@ -145,7 +153,7 @@ class CodeSubsegment(Subsegment):
return set(m.group(2) for m in CodeSubsegment.C_FUNC_RE.finditer(text))
@staticmethod
def get_asm_header():
def get_standalone_asm_header():
ret = []
ret.append(".include \"macro.inc\"")
@ -160,15 +168,11 @@ class CodeSubsegment(Subsegment):
return ret
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
def scan_inner(self, segment, rom_bytes):
if not self.rom_start == self.rom_end:
asm_out_dir = Segment.create_split_dir(base_path, "asm")
rom_addr = self.rom_start
insns = [insn for insn in CodeSubsegment.md.disasm(rom_bytes[self.rom_start : self.rom_end], self.vram_start)]
funcs = segment.process_insns(insns, rom_addr)
funcs = segment.process_insns(insns, self.rom_start)
# TODO: someday make func a subclass of symbol and store this disasm info there too
for func in funcs:
@ -176,29 +180,31 @@ class CodeSubsegment(Subsegment):
funcs = segment.determine_symbols(funcs)
segment.gather_jumptable_labels(rom_bytes)
funcs_text = segment.add_labels(funcs)
self.funcs_text = segment.add_labels(funcs)
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
if not self.rom_start == self.rom_end:
if self.type == "c":
defined_funcs = set()
if segment.options.get("do_c_func_detection", True) and os.path.exists(generic_out_path):
defined_funcs = CodeSubsegment.get_funcs_defined_in_c(generic_out_path)
segment.mark_c_funcs_as_defined(defined_funcs)
asm_out_dir = Segment.create_split_dir(base_path, os.path.join("asm", "nonmatchings"))
for func in funcs_text:
for func in self.funcs_text:
func_name = segment.get_symbol(func, type="func", local_only=True).name
if func_name not in defined_funcs:
segment.create_c_asm_file(funcs_text, func, asm_out_dir, self, func_name)
segment.create_c_asm_file(self.funcs_text, func, asm_out_dir, self, func_name)
if not os.path.exists(generic_out_path) and segment.options.get("create_new_c_files", True):
segment.create_c_file(funcs_text, self, asm_out_dir, base_path, generic_out_path)
segment.create_c_file(self.funcs_text, self, asm_out_dir, base_path, generic_out_path)
else:
out_lines = self.get_asm_header()
for func in funcs_text:
out_lines.extend(funcs_text[func][0])
asm_out_dir = Segment.create_split_dir(base_path, "asm")
out_lines = self.get_standalone_asm_header()
for func in self.funcs_text:
out_lines.extend(self.funcs_text[func][0])
out_lines.append("")
outpath = Path(os.path.join(asm_out_dir, self.name + ".s"))
@ -208,6 +214,10 @@ class CodeSubsegment(Subsegment):
f.write("\n".join(out_lines))
class DataSubsegment(Subsegment):
def scan_inner(self, segment, rom_bytes):
if not self.type.startswith(".") or self.type == ".rodata":
self.file_text = segment.disassemble_data(self, rom_bytes)
def split_inner(self, segment, rom_bytes, base_path, generic_out_path):
if not self.type.startswith("."):
asm_out_dir = Segment.create_split_dir(base_path, os.path.join("asm", "data"))
@ -215,14 +225,15 @@ class DataSubsegment(Subsegment):
outpath = Path(os.path.join(asm_out_dir, self.name + f".{self.type}.s"))
outpath.parent.mkdir(parents=True, exist_ok=True)
file_text = segment.disassemble_data(self, rom_bytes)
if file_text:
if self.file_text:
with open(outpath, "w", newline="\n") as f:
f.write(file_text)
f.write(self.file_text)
class BssSubsegment(DataSubsegment):
def __init__(self, start, end, name, type, vram, args):
super().__init__(start, end, name, type, vram, args)
def __init__(self, start, end, name, type, vram, args, parent):
super().__init__(start, end, name, type, vram, args, parent)
self.rom_start = 0
self.rom_end = 0
self.size = self.args[0]
self.vram_end = self.vram_start + self.size
@ -268,6 +279,7 @@ class N64SegCode(N64Segment):
def parse_subsegments(self, segment_yaml):
prefix = self.name if self.name.endswith("/") else f"{self.name}_"
base_segments = {}
ret = []
prev_start = -1
@ -302,13 +314,32 @@ class N64SegCode(N64Segment):
subsegment_class = Subsegment.get_subclass(typ)
ret.append(subsegment_class(start, end, name, typ, vram, args))
if self.rodata_vram_start == -1 and "rodata" in typ:
self.rodata_vram_start = vram
if self.rodata_vram_end == -1 and "bss" in typ:
self.rodata_vram_end = vram
parent = None
if name in base_segments:
parent = base_segments[name]
new_segment = subsegment_class(start, end, name, typ, vram, args, parent)
ret.append(new_segment)
if typ in ["c", "asm", "hasm"]:
base_segments[name] = new_segment
prev_start = start
if self.rodata_vram_start != -1 and self.rodata_vram_end == -1:
self.rodata_vram_end = self.vram_end
return ret
def __init__(self, segment, next_segment, options):
super().__init__(segment, next_segment, options)
self.rodata_vram_start = -1
self.rodata_vram_end = -1
self.subsegments = self.parse_subsegments(segment)
self.is_overlay = segment.get("overlay", False)
self.all_symbols = ()
@ -322,6 +353,8 @@ class N64SegCode(N64Segment):
self.jtbl_jumps = {}
self.jumptables = {}
self.rodata_syms = {}
@staticmethod
def get_default_name(addr):
return f"code_{addr:X}"
@ -626,6 +659,12 @@ class N64SegCode(N64Segment):
if offset != 0:
offset_str = f"+0x{offset:X}"
if self.rodata_vram_start != -1 and self.rodata_vram_end != -1:
if self.rodata_vram_start <= sym.vram_start < self.rodata_vram_end:
if func_addr not in self.rodata_syms:
self.rodata_syms[func_addr] = []
self.rodata_syms[func_addr].append(sym)
self.update_access_mnemonic(sym, s_insn.mnemonic)
sym_label = sym.name + offset_str
@ -875,6 +914,7 @@ class N64SegCode(N64Segment):
ret += "\n\n\n.section .rodata"
sym_str += self.disassemble_symbol(sym_bytes, stype)
sym.disasm_str = sym_str
ret += sym_str
ret += "\n"
@ -927,6 +967,22 @@ class N64SegCode(N64Segment):
out_lines = self.get_gcc_inc_header()
else:
out_lines = []
if func in self.rodata_syms:
func_rodata = list({s for s in self.rodata_syms[func] if s.disasm_str})
func_rodata.sort(key=lambda s:s.vram_start)
if self.get_file_for_addr(func_rodata[0].vram_start).type != "rodata":
out_lines.append(".section .rodata")
for sym in func_rodata:
if sym.disasm_str:
out_lines.extend(sym.disasm_str.replace("\n\n", "\n").split("\n"))
out_lines.append("")
out_lines.append(".section .text")
out_lines.append("")
out_lines.extend(funcs_text[func][0])
out_lines.append("")
@ -956,6 +1012,9 @@ class N64SegCode(N64Segment):
print(f"Wrote {sub.name} to {c_path}")
def split(self, rom_bytes, base_path):
for sub in self.subsegments:
sub.scan(self, rom_bytes)
for sub in self.subsegments:
sub.split(self, rom_bytes, base_path)

View File

@ -23,5 +23,4 @@ class N64SegI4(N64SegRgba16):
return img
def max_length(self):
if self.compressed: return None
return self.width * self.height // 2

View File

@ -6,5 +6,4 @@ class N64SegI8(N64SegI4):
return data
def max_length(self):
if self.compressed: return None
return self.width * self.height

View File

@ -5,5 +5,4 @@ class N64SegIa8(N64SegIa4):
return data
def max_length(self):
if self.compressed: return None
return self.width * self.height * 2

View File

@ -28,5 +28,4 @@ class N64SegIa4(N64SegRgba16):
return img
def max_length(self):
if self.compressed: return None
return self.width * self.height // 2

View File

@ -19,5 +19,4 @@ class N64SegIa8(N64SegIa4):
return img
def max_length(self):
if self.compressed: return None
return self.width * self.height

View File

@ -18,9 +18,6 @@ class N64SegPalette(N64Segment):
self.image_name = segment.get("image_name", self.name.split(
".")[0]) if type(segment) is dict else self.name.split(".")[0]
self.compressed = segment.get("compressed", False) if type(
segment) is dict else False
if self.max_length():
expected_len = int(self.max_length())
actual_len = self.rom_end - self.rom_start
@ -46,8 +43,6 @@ class N64SegPalette(N64Segment):
out_dir, os.path.basename(self.name) + ".png")
data = rom_bytes[self.rom_start: self.rom_end]
if self.compressed:
data = Yay0decompress.decompress_yay0(data)
self.palette = N64SegPalette.parse_palette(data)
@ -61,13 +56,9 @@ class N64SegPalette(N64Segment):
return palette
def max_length(self):
if self.compressed:
return None
return 256 * 2
def get_ld_files(self):
ext = f".{self.type}.png"
if self.compressed:
ext += ".Yay0"
return [(self.options.get("assets_dir", "img"), f"{self.name}{ext}", ".data", self.rom_start)]

View File

@ -11,14 +11,12 @@ class N64SegRgba16(N64Segment):
super().__init__(segment, next_segment, options)
if type(segment) is dict:
self.compressed = segment.get("compressed", False)
self.width = segment["width"]
self.height = segment["height"]
self.flip = segment.get("flip", "noflip")
elif len(segment) < 5:
self.error("missing parameters")
else:
self.compressed = False
self.width = segment[3]
self.height = segment[4]
self.flip = "noflip"
@ -59,8 +57,6 @@ class N64SegRgba16(N64Segment):
path = os.path.join(out_dir, os.path.basename(self.name) + ".png")
data = rom_bytes[self.rom_start: self.rom_end]
if self.compressed:
data = Yay0decompress.decompress_yay0(data)
w = self.png_writer()
with open(path, "wb") as f:
@ -80,13 +76,9 @@ class N64SegRgba16(N64Segment):
return img
def max_length(self):
if self.compressed:
return None
return self.width * self.height * 2
def get_ld_files(self):
ext = f".{self.type}.png"
if self.compressed:
ext += ".Yay0"
return [(self.options.get("assets_dir", "img"), f"{self.name}{ext}", ".data", self.rom_start)]

View File

@ -5,5 +5,4 @@ class N64SegRgba32(N64SegRgba16):
return data
def max_length(self):
if self.compressed: return None
return self.width * self.height * 4

View File

@ -47,3 +47,4 @@ class Symbol:
self.size = size
self.given_name = given_name
self.access_mnemonic = None
self.disasm_str = None

View File

@ -7,11 +7,13 @@ import sys
script_dir = os.path.dirname(os.path.realpath(__file__))
root_dir = script_dir + "/../"
current_ver_dir = script_dir + "/../ver/current/"
asm_dir = root_dir + "asm/nonmatchings/"
symbol_addrs_path = os.path.join(script_dir, "symbol_addrs.txt")
elf_path = os.path.join(root_dir, "build", "papermario.elf")
map_path = os.path.join(root_dir, "build", "papermario.map")
symbol_addrs_path = os.path.join(current_ver_dir, "symbol_addrs.txt")
elf_path = os.path.join(current_ver_dir, "build", "papermario.elf")
map_path = os.path.join(current_ver_dir, "build", "papermario.map")
ignores_path = os.path.join(root_dir, "tools", "ignored_funcs.txt")
map_symbols = {}

View File

@ -1,225 +0,0 @@
.include "macro.inc"
.section .rodata
glabel D_80097E00
.double 0.1
glabel D_80097E08
.double 0.03
glabel D_80097E10
.double 1.9
glabel D_80097E18
.double 0.01
glabel D_80097E20
.byte 0x3F, 0xB9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x68, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x57, 0x61, 0x74, 0x63, 0x68, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x46, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x68, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x2E, 0x00, 0x00, 0x54, 0x72, 0x61, 0x70, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x65, 0x74, 0x69, 0x63, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x43, 0x6F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x75, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x42, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x42, 0x75, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x42, 0x75, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x2E, 0x00, 0x00, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x65, 0x78, 0x61, 0x63, 0x74, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x4F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x00, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00
glabel D_80098034
.ascii "F%02d:%+.3e\0"
glabel D_80098040
.ascii "F%02d:---------\0"
glabel D_80098050
.ascii "FPCSR:%08XH\0"
glabel D_8009805C
.word 0x28257329, 0x00000000
glabel D_80098064
.ascii "THREAD:%d (%s)\0"
glabel D_80098074
.ascii "PC:%08XH SR:%08XH VA:%08XH\0\0"
glabel D_80098094
.ascii "AT:%08XH V0:%08XH V1:%08XH\0\0"
glabel D_800980B4
.ascii "A0:%08XH A1:%08XH A2:%08XH\0\0"
glabel D_800980D4
.ascii "A3:%08XH T0:%08XH T1:%08XH\0\0"
glabel D_800980F4
.ascii "T2:%08XH T3:%08XH T4:%08XH\0\0"
glabel D_80098114
.ascii "T5:%08XH T6:%08XH T7:%08XH\0\0"
glabel D_80098134
.ascii "S0:%08XH S1:%08XH S2:%08XH\0\0"
glabel D_80098154
.ascii "S3:%08XH S4:%08XH S5:%08XH\0\0"
glabel D_80098174
.ascii "S6:%08XH S7:%08XH T8:%08XH\0\0"
glabel D_80098194
.ascii "T9:%08XH GP:%08XH SP:%08XH\0\0"
glabel D_800981B4
.ascii "S8:%08XH RA:%08XH\0"
glabel D_800981C8
.word 0x4D4D3A25, 0x30385848, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel jtbl_800981E0
.word L8002D4A8_88A8, L8002D4B8_88B8, L8002D4C8_88C8, L8002D498_8898, L8002D4D8_88D8, L8002D4E8_88E8, L8002D4F8_88F8, 0
glabel D_80098200
.double 0.01
glabel D_80098208
.double -0.01
glabel jtbl_80098210
.word L800305B0_B9B0, L80030768_BB68, L80030868_BC68, L80030874_BC74, L80030880_BC80, L80030868_BC68, L80030644_BA44, 0
glabel jtbl_80098230
.word L800308D0_BCD0, L80030BFC_BFFC, L80030E54_C254, L80031210_C610, L80031220_C620, L8003106C_C46C, L800309CC_BDCC, 0
glabel D_80098250
.double 1.01
glabel D_80098258
.double 0.3
glabel D_80098260
.double 0.2
glabel D_80098268
.double 3.141592
glabel D_80098270
.double 0.5001
glabel D_80098278
.double 0.01
glabel D_80098280
.double 0.1
glabel D_80098288
.double -0.1
glabel jtbl_80098290
.word L800341F8_F5F8, L8003411C_F51C, L80034150_F550, L80034170_F570, L800341A8_F5A8, L800341D8_F5D8, L800341F8_F5F8, L80034230_F630, L80034278_F678, L800342D4_F6D4, L800342FC_F6FC, L8003432C_F72C
glabel jtbl_800982C0
.word L800344A8_F8A8, L800344A8_F8A8, L800344A8_F8A8, L80034628_FA28, L80034628_FA28, L80034628_FA28, L800347A8_FBA8, L800347A8_FBA8, L800347A8_FBA8, L800347A8_FBA8
glabel jtbl_800982E8
.word L80035740_10B40, L800357A4_10BA4, L80035814_10C14, L80035A68_10E68, L80035AE0_10EE0, 0
glabel jtbl_80098300
.word L80035B7C_10F7C, L80035BDC_10FDC, L80035C10_11010, L80035C2C_1102C, L80035C80_11080, L80035CCC_110CC, L80035D00_11100, 0
glabel jtbl_80098320
.word L800361B4_115B4, L80036208_11608, L80036244_11644, L800362F8_116F8, L8003637C_1177C, 0
glabel jtbl_80098338
.word L8003696C_11D6C, L80036A20_11E20, L80036AA0_11EA0, L80036C40_12040, L80036D04_12104, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036A5C_11E5C
glabel D_80098390
.ascii "title_data\0\0"
glabel D_8009839C
.word 0x7469746C, 0x655F6267, 0x00000000
glabel jtbl_800983A8
.word L80037130_12530, L80037184_12584, L80037204_12604, L8003756C_1296C, L800372DC_126DC, L8003733C_1273C, L80037450_12850, 0
glabel jtbl_800983C8
.word L800375D8_129D8, L80037624_12A24, L800375F4_129F4, L8003762C_12A2C, L80037624_12A24, L80037624_12A24
glabel jtbl_800983E0
.word L80037718_12B18, L8003768C_12A8C, L800376BC_12ABC, L80037718_12B18, L800376C8_12AC8, L800376D4_12AD4, 0x656E6400, 0x6B6B6A5F, 0x32360000, 0x61726E5F, 0x30380000, 0x6B6B6A5F, 0x31310000, 0x6E6F6B5F, 0x30320000, 0x6D61635F, 0x30330000, 0x6B7A6E5F, 0x30320000, 0x6D61635F, 0x30300000, 0x6A616E5F, 0x30340000, 0x7472645F, 0x30390000, 0x74696B5F, 0x30330000, 0x69736B5F, 0x30340000, 0x6E6F6B5F, 0x31320000, 0
glabel jtbl_80098460
.word L80038320_13720, L8003836C_1376C, L8003840C_1380C, L8003817C_1357C, L800381C8_135C8, 0, 0, 0
glabel D_80098480
.double 0.7142857142857143
glabel D_80098488
.double 0.7142857142857143
glabel D_80098490
.double 0.7142857142857143
glabel D_80098498
.double 0.7142857142857143
glabel D_800984A0
.double 0.7142857142857143
glabel D_800984A8
.double 0.7142857142857143
glabel D_800984B0
.double 0.01
glabel D_800984B8
.double -0.01
glabel D_800984C0
.double 0.7142857142857143
glabel jtbl_800984C8
.word L8003B4AC_168AC, L8003B4BC_168BC, L8003B4CC_168CC, L8003B4DC_168DC, L8003B4EC_168EC, 0
glabel D_800984E0
.word 0x8003C490, 0x8003C4A4, 0x8003C4B8, 0x8003C4CC, 0x8003C4E0, 0x8003C4F4, 0x8003C508, 0x00000000
glabel jtbl_80098500
.word L8003C57C_1797C, L8003C590_17990, L8003C5A4_179A4, L8003C5B8_179B8, L8003C5CC_179CC, L8003C5E0_179E0, L8003C5F4_179F4, 0
glabel D_80098520
.double 0.01
glabel D_80098528
.double 0.8
glabel D_80098530
.double 0.20000000298023224
glabel D_80098538
.double 0.8
glabel D_80098540
.double 0.20000000298023224
glabel 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
glabel jtbl_80098590
.word L8003D750_18B50, L8003D764_18B64, L8003D764_18B64, L8003D764_18B64, L8003D764_18B64, L8003D6E8_18AE8, L8003D6FC_18AFC, L8003D710_18B10, L8003D73C_18B3C, 0, 0, 0
glabel jtbl_800985C0
.word L8003E59C_1999C, L8003E554_19954, L8003E564_19964, L8003E574_19974, L8003E584_19984, L8003E594_19994
glabel jtbl_800985D8
.word L8003E628_19A28, L8003E5E0_199E0, L8003E5F0_199F0, L8003E600_19A00, L8003E610_19A10, L8003E620_19A20
glabel D_800985F0
.double 0.35
glabel jtbl_800985F8
.word L80040320_1B720, L80040320_1B720, L80040594_1B994, L80040594_1B994, L80040594_1B994, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040594_1B994, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040594_1B994, L8003FFA0_1B3A0
glabel jtbl_80098638
.word L80040540_1B940, L80040540_1B940, L8004055C_1B95C, L8004055C_1B95C, L8004055C_1B95C, L80040540_1B940, L80040540_1B940, L80040540_1B940, L80040540_1B940, L8004055C_1B95C, L80040548_1B948, L80040548_1B948, L80040554_1B954, L80040554_1B954
glabel D_80098670
.double 0.8
glabel jtbl_80098678
.word L80041314_1C714, L80040918_1BD18, L80040BF4_1BFF4, L80040ABC_1BEBC, L80040E34_1C234, L800410BC_1C4BC, L8004115C_1C55C, 0
glabel jtbl_80098698
.word L80042198_1D598, L800421AC_1D5AC, L800421C0_1D5C0, L800421E8_1D5E8, L800421D4_1D5D4, 0

View File

@ -1,108 +0,0 @@
.include "macro.inc"
.section .rodata
glabel D_80099AA0
.short 0x0555, 0x0556, 0x0559, 0x055A, 0x0565, 0x0566, 0x0569, 0x056A, 0x0595, 0x0596, 0x0599, 0x059A, 0x05A5, 0x05A6, 0x05A9, 0x05AA, 0x0655, 0x0656, 0x0659, 0x065A, 0x0665, 0x0666, 0x0669, 0x066A, 0x0695, 0x0696, 0x0699, 0x069A, 0x06A5, 0x06A6, 0x06A9, 0x06AA, 0x0955, 0x0956, 0x0959, 0x095A, 0x0965, 0x0966, 0x0969, 0x096A, 0x0995, 0x0996, 0x0999, 0x099A, 0x09A5, 0x09A6, 0x09A9, 0x09AA, 0x0A55, 0x0A56, 0x0A59, 0x0A5A, 0x0A65, 0x0A66, 0x0A69, 0x0A6A, 0x0A95, 0x0A96, 0x0A99, 0x0A9A, 0x0AA5, 0x0AA6, 0x0AA9, 0x0AAA
glabel jtbl_80099B20
.word L800613D4_3C7D4, L800612F4_3C6F4, L80061328_3C728, L800613E4_3C7E4, L800613E4_3C7E4, L8006135C_3C75C, L80061398_3C798, 0
glabel D_80099B40
.double 4294967296.0, 0.0
glabel D_80099B50
.double -1.0
glabel D_80099B58
.word 0x3FF00000, 0x00000000
glabel D_80099B60
.double -1.0
glabel D_80099B68
.word 0x3FF00000, 0x00000000
glabel D_80099B70
.double -1.0
glabel D_80099B78
.double 1.0
glabel D_80099B80
.double 0.1
glabel D_80099B88
.double 1.0
glabel D_80099B90
.double 0.1, 0.0
glabel D_80099BA0
.double -1.0
glabel D_80099BA8
.word 0x3FF00000, 0x00000000
glabel D_80099BB0
.double 0.017453292222222222
glabel D_80099BB8
.double 2.0
glabel D_80099BC0
.double 131072.0
glabel D_80099BC8
.double 2147483648.0
glabel D_80099BD0
.double 0.017453292222222222
glabel D_80099BD8
.double 2.0
glabel D_80099BE0
.double 131072.0
glabel D_80099BE8
.double 2147483648.0
glabel D_80099BF0
.word 0x202B2D23, 0x30000000
glabel D_80099BF8
.word 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000000
glabel D_80099C10
.word 0x686C4C00, 0x00000000
glabel jtbl_80099C18
.word L800654B0_408B0, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800652CC_406CC, L800654CC_408CC, L800652CC_406CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800651B4_405B4, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L80065080_40480, L800650B4_404B4, L800652CC_406CC, L800652CC_406CC, L800652CC_406CC, L800654CC_408CC, L800650B4_404B4, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L80065380_40780, L800651B4_405B4, L80065420_40820, L800654CC_408CC, L800654CC_408CC, L8006546C_4086C, L800654CC_408CC, L800651B4_405B4, L800654CC_408CC, L800654CC_408CC, L800651B4_405B4, 0, 0
glabel D_80099D70
.double 4294967296.0, 0.0
glabel jtbl_80099D80
.word 0x141818, 0x1C1C1C1C, 0x20202020, 0x20202020, 0x40808, 0xC0C0C0C, 0x10101010, 0x10101010
glabel jtbl_80099DA0
.word L8006AF00_46300, L8006AEC4_462C4, L8006AEA0_462A0, L8006ACC8_460C8, L8006AC80_46080, L8006AE3C_4623C, L8006AC44_46044, L8006AC50_46050, L8006AC5C_4605C, 0, 0, 0
glabel D_80099DD0
.word 0x40240000, 0x00000000, 0x40590000, 0x00000000, 0x40C38800, 0x00000000, 0x4197D784, 0x00000000, 0x4341C379, 0x37E08000, 0x4693B8B5, 0xB5056E17, 0x4D384F03, 0xE93FF9F5, 0x5A827748, 0xF9301D32, 0x75154FDD, 0x7F73BF3C
glabel D_80099E18
.word 0x4E614E00
glabel D_80099E1C
.word 0x496E6600
glabel D_80099E20
.double 1.0
glabel D_80099E28
.double 100000000.0
glabel D_80099E30
.word 0x30000000, 0x00000000, 0x00000000, 0x00000000

View File

@ -2,15 +2,6 @@
.section .data
glabel D_800F833C
.word 0x00000000
glabel D_800F8340
.word 0x00000000
glabel D_800F8344
.word 0x00000000
glabel gPartnerAnimations
.word 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00010002, 0x00010004, 0x00010005, 0x00010001, 0x00010001, 0x00010003, 0x00010008, 0x00010007, 0x00020000, 0x00020004, 0x00020006, 0x00020007, 0x00020000, 0x00020003, 0x00020005, 0x0002000D, 0x0002000C, 0x00030000, 0x00030005, 0x00030009, 0x0003000A, 0x00030000, 0x00030003, 0x00030007, 0x0003000E, 0x0003000D, 0x00040000, 0x00040002, 0x00040008, 0x00040002, 0x00040002, 0x00040001, 0x00040003, 0x00040006, 0x00040005, 0x009D0000, 0x009D0002, 0x009D0004, 0x009D0005, 0x009D0001, 0x009D0001, 0x009D0003, 0x009D0008, 0x009D0001, 0x00060000, 0x00060002, 0x00060002, 0x00060002, 0x00060000, 0x00060001, 0x00060003, 0x00060004, 0x00060007, 0x00070000, 0x00070002, 0x00070002, 0x00070002, 0x00070000, 0x00070001, 0x00070003, 0x00070004, 0x00070008, 0x00080000, 0x00080005, 0x00080005, 0x00080005, 0x00080000, 0x00080001, 0x00080007, 0x00080009, 0x0008000A, 0x00050000, 0x00050002, 0x00050002, 0x00050002, 0x00050000, 0x00050001, 0x00050003, 0x00050004, 0x0005000C, 0x009E0000, 0x009E0005, 0x009E0012, 0x009E0013, 0x009E0001, 0x009E0001, 0x009E0007, 0x009E000B, 0x009E0001, 0x00200000, 0x00200001, 0x00200001, 0x00200001, 0x00200001, 0x00200001, 0x00200001, 0x00200009, 0x00200020

View File

@ -1,30 +0,0 @@
.include "macro.inc"
.section .data
glabel D_802DF390
.word 0xFFF00038, 0x00000000, 0x00000000, 0xF0F0F0FF, 0x00100038, 0x00000000, 0x04000000, 0x787878FF, 0x00100000, 0x00000000, 0x04000700, 0x000000FF, 0xFFF00000, 0x00000000, 0x00000700, 0x787878FF
glabel D_802DF3D0
.word 0x028001E0, 0x01FF0000, 0x028001E0, 0x01FF0000
glabel D_802DF3E0
.word 0x028001E0, 0x01FF0000, 0x028001E0, 0x02000000
glabel D_802DF3F0
.word 0xD9FDF9FF, 0x00000000, 0xFCFFFFFF, 0xFFFCF279, 0xD7000002, 0xFFFFFFFF, 0xD9FFFFFF, 0x00200005, 0xE200001C, 0x00551238, 0xE3000A11, 0x0008ACF0, 0xDF000000, 0x00000000
glabel D_802DF428
.word 0xD9FDF9FF, 0x00000000, 0xFCFF97FF, 0xFF2CFE7F, 0xD7000002, 0xFFFFFFFF, 0xD9FFFFFF, 0x00200005, 0xE200001C, 0x00504B50, 0xE3000A11, 0x0008ACF0, 0xDF000000, 0x00000000
glabel D_802DF460
.word 0xD9FDF9FF, 0x00000000, 0xD7000002, 0xFFFFFFFF, 0xD9FFFFFF, 0x00200005, 0xE200001C, 0x0C191238, 0xE3000A11, 0x0018ACF0, 0xDF000000, 0x00000000
glabel D_802DF490
.word 0xD9FDF9FF, 0x00000000, 0xD7000002, 0xFFFFFFFF, 0xD9FFFFFF, 0x00200005, 0xE200001C, 0x0C184B50, 0xE3000A11, 0x0018ACF0, 0xDF000000, 0x00000000
glabel D_802DF4C0
.float 1.0
glabel D_802DF4C4
.word 0x00000006, 0x00000700, 0x000003C6, 0x00000012, 0x00000700, 0x000003C6, 0x0000000A, 0x00000900, 0x00003FC6, 0x00000003, 0x00000700, 0x00000006, 0x00000006, 0x00000900, 0x00003C00, 0x00000006, 0x00000700, 0x0000003E, 0x00000006, 0x00000900, 0x00003C00, 0x00000000, 0x00000000

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800982E8
.word L80035740_10B40, L800357A4_10BA4, L80035814_10C14, L80035A68_10E68, L80035AE0_10EE0, 0
.section .text
glabel func_80035704
/* 10B04 80035704 3C03800A */ lui $v1, %hi(D_800A0931)
/* 10B08 80035708 80630931 */ lb $v1, %lo(D_800A0931)($v1)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098300
.word L80035B7C_10F7C, L80035BDC_10FDC, L80035C10_11010, L80035C2C_1102C, L80035C80_11080, L80035CCC_110CC, L80035D00_11100, 0
.section .text
glabel func_80035B40
/* 10F40 80035B40 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 10F44 80035B44 AFBF0014 */ sw $ra, 0x14($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098320
.word L800361B4_115B4, L80036208_11608, L80036244_11644, L800362F8_116F8, L8003637C_1177C, 0
.section .text
glabel func_8003617C
/* 1157C 8003617C 3C03800A */ lui $v1, %hi(D_800A0944)
/* 11580 80036180 84630944 */ lh $v1, %lo(D_800A0944)($v1)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098338
.word L8003696C_11D6C, L80036A20_11E20, L80036AA0_11EA0, L80036C40_12040, L80036D04_12104, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036D78_12178, L80036A5C_11E5C
.section .text
glabel step_intro
/* 11C54 80036854 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 11C58 80036858 AFB10014 */ sw $s1, 0x14($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098390
.ascii "title_data\0\0"
glabel D_8009839C
.word 0x7469746C, 0x655F6267, 0x00000000
.section .text
glabel begin_state_title_screen
/* 121F0 80036DF0 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 121F4 80036DF4 AFB20028 */ sw $s2, 0x28($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800983C8
.word L800375D8_129D8, L80037624_12A24, L800375F4_129F4, L8003762C_12A2C, L80037624_12A24, L80037624_12A24
.section .text
glabel func_800375A4
/* 129A4 800375A4 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 129A8 800375A8 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800983A8
.word L80037130_12530, L80037184_12584, L80037204_12604, L8003756C_1296C, L800372DC_126DC, L8003733C_1273C, L80037450_12850, 0
.section .text
glabel step_title_screen
/* 124B4 800370B4 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 124B8 800370B8 AFB00018 */ sw $s0, 0x18($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800983E0
.word L80037718_12B18, L8003768C_12A8C, L800376BC_12ABC, L80037718_12B18, L800376C8_12AC8, L800376D4_12AD4, 0x656E6400, 0x6B6B6A5F, 0x32360000, 0x61726E5F, 0x30380000, 0x6B6B6A5F, 0x31310000, 0x6E6F6B5F, 0x30320000, 0x6D61635F, 0x30330000, 0x6B7A6E5F, 0x30320000, 0x6D61635F, 0x30300000, 0x6A616E5F, 0x30340000, 0x7472645F, 0x30390000, 0x74696B5F, 0x30330000, 0x69736B5F, 0x30340000, 0x6E6F6B5F, 0x31320000, 0
.section .text
glabel title_append_gfx
/* 12A38 80037638 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 12A3C 8003763C 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098460
.word L80038320_13720, L8003836C_1376C, L8003840C_1380C, L8003817C_1357C, L800381C8_135C8, 0, 0, 0
.section .text
glabel next_demo_scene
/* 134F4 800380F4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 134F8 800380F8 3C058007 */ lui $a1, %hi(gGameStatusPtr)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_800984C0
.double 0.7142857142857143
.section .text
glabel appedGfx_npc_blur
/* 16238 8003AE38 27BDFF08 */ addiu $sp, $sp, -0xf8
/* 1623C 8003AE3C F7BC00E8 */ sdc1 $f28, 0xe8($sp)

View File

@ -1,6 +1,28 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098480
.double 0.7142857142857143
glabel D_80098488
.double 0.7142857142857143
glabel D_80098490
.double 0.7142857142857143
glabel D_80098498
.double 0.7142857142857143
glabel D_800984A0
.double 0.7142857142857143
glabel D_800984A8
.double 0.7142857142857143
.section .text
glabel appendGfx_npc
/* 153D0 80039FD0 27BDFF48 */ addiu $sp, $sp, -0xb8
/* 153D4 80039FD4 AFB1009C */ sw $s1, 0x9c($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800985D8
.word L8003E628_19A28, L8003E5E0_199E0, L8003E5F0_199F0, L8003E600_19A00, L8003E610_19A10, L8003E620_19A20
.section .text
glabel draw_encounter_ui
/* 199B0 8003E5B0 3C03800A */ lui $v1, %hi(gGameState)
/* 199B4 8003E5B4 8C63A600 */ lw $v1, %lo(gGameState)($v1)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800984C8
.word L8003B4AC_168AC, L8003B4BC_168BC, L8003B4CC_168CC, L8003B4DC_168DC, L8003B4EC_168EC, 0
.section .text
glabel func_8003B47C
/* 1687C 8003B47C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 16880 8003B480 AFBF0010 */ sw $ra, 0x10($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_800984E0
.word 0x8003C490, 0x8003C4A4, 0x8003C4B8, 0x8003C4CC, 0x8003C4E0, 0x8003C4F4, 0x8003C508, 0x00000000
.section .text
glabel func_8003C444
/* 17844 8003C444 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 17848 8003C448 AFB10014 */ sw $s1, 0x14($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098500
.word L8003C57C_1797C, L8003C590_17990, L8003C5A4_179A4, L8003C5B8_179B8, L8003C5CC_179CC, L8003C5E0_179E0, L8003C5F4_179F4, 0
.section .text
glabel func_8003C53C
/* 1793C 8003C53C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 17940 8003C540 AFB00010 */ sw $s0, 0x10($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098520
.double 0.01
.section .text
glabel func_8003C668
/* 17A68 8003C668 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 17A6C 8003C66C AFB00018 */ sw $s0, 0x18($sp)

View File

@ -1,6 +1,22 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098528
.double 0.8
glabel D_80098530
.double 0.20000000298023224
glabel D_80098538
.double 0.8
glabel D_80098540
.double 0.20000000298023224
.section .text
glabel func_8003C9A8
/* 17DA8 8003C9A8 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 17DAC 8003C9AC AFB00018 */ sw $s0, 0x18($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel 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)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098590
.word L8003D750_18B50, L8003D764_18B64, L8003D764_18B64, L8003D764_18B64, L8003D764_18B64, L8003D6E8_18AE8, L8003D6FC_18AFC, L8003D710_18B10, L8003D73C_18B3C, 0, 0, 0
.section .text
glabel func_8003D660
/* 18A60 8003D660 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 18A64 8003D664 AFB00010 */ sw $s0, 0x10($sp)

View File

@ -156,8 +156,8 @@ glabel npc_do_player_collision
/* 14924 80039524 C6020028 */ lwc1 $f2, 0x28($s0)
/* 14928 80039528 46161081 */ sub.s $f2, $f2, $f22
/* 1492C 8003952C C6000030 */ lwc1 $f0, 0x30($s0)
/* 14930 80039530 3C028011 */ lui $v0, %hi(D_8010C930)
/* 14934 80039534 8C42C930 */ lw $v0, %lo(D_8010C930)($v0)
/* 14930 80039530 3C028011 */ lui $v0, %hi(wPartnerNpc)
/* 14934 80039534 8C42C930 */ lw $v0, %lo(wPartnerNpc)($v0)
/* 14938 80039538 46140001 */ sub.s $f0, $f0, $f20
/* 1493C 8003953C E6020028 */ swc1 $f2, 0x28($s0)
/* 14940 80039540 E6000030 */ swc1 $f0, 0x30($s0)
@ -177,8 +177,8 @@ glabel npc_do_player_collision
/* 14974 80039574 C6020028 */ lwc1 $f2, 0x28($s0)
/* 14978 80039578 46061081 */ sub.s $f2, $f2, $f6
/* 1497C 8003957C C6000030 */ lwc1 $f0, 0x30($s0)
/* 14980 80039580 3C028011 */ lui $v0, %hi(D_8010C930)
/* 14984 80039584 8C42C930 */ lw $v0, %lo(D_8010C930)($v0)
/* 14980 80039580 3C028011 */ lui $v0, %hi(wPartnerNpc)
/* 14984 80039584 8C42C930 */ lw $v0, %lo(wPartnerNpc)($v0)
/* 14988 80039588 46040001 */ sub.s $f0, $f0, $f4
/* 1498C 8003958C E6020028 */ swc1 $f2, 0x28($s0)
/* 14990 80039590 E6000030 */ swc1 $f0, 0x30($s0)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_800984B0
.double 0.01
glabel D_800984B8
.double -0.01
.section .text
glabel render_npcs
/* 15BF0 8003A7F0 27BDFF78 */ addiu $sp, $sp, -0x88
/* 15BF4 8003A7F4 F7BA0080 */ sdc1 $f26, 0x80($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800985C0
.word L8003E59C_1999C, L8003E554_19954, L8003E564_19964, L8003E574_19974, L8003E584_19984, L8003E594_19994
.section .text
glabel update_counters
/* 19924 8003E524 3C03800A */ lui $v1, %hi(gGameState)
/* 19928 8003E528 8C63A600 */ lw $v1, %lo(gGameState)($v1)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_800985F0
.double 0.35
.section .text
glabel MerleeUpdateFX
/* 1A4C4 8003F0C4 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 1A4C8 8003F0C8 AFB20020 */ sw $s2, 0x20($sp)

View File

@ -1,6 +1,22 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800985F8
.word L80040320_1B720, L80040320_1B720, L80040594_1B994, L80040594_1B994, L80040594_1B994, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040594_1B994, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040320_1B720, L80040594_1B994, L8003FFA0_1B3A0
glabel jtbl_80098638
.word L80040540_1B940, L80040540_1B940, L8004055C_1B95C, L8004055C_1B95C, L8004055C_1B95C, L80040540_1B940, L80040540_1B940, L80040540_1B940, L80040540_1B940, L8004055C_1B95C, L80040548_1B948, L80040548_1B948, L80040554_1B954, L80040554_1B954
glabel D_80098670
.double 0.8
glabel jtbl_80098678
.word L80041314_1C714, L80040918_1BD18, L80040BF4_1BFF4, L80040ABC_1BEBC, L80040E34_1C234, L800410BC_1C4BC, L8004115C_1C55C, 0
.section .text
glabel update_encounters_neutral
/* 1ABCC 8003F7CC 27BDFF40 */ addiu $sp, $sp, -0xc0
/* 1ABD0 8003F7D0 AFB30074 */ sw $s3, 0x74($sp)
@ -420,8 +436,8 @@ glabel update_encounters_neutral
/* 1B1E8 8003FDE8 30820040 */ andi $v0, $a0, 0x40
/* 1B1EC 8003FDEC 144002B6 */ bnez $v0, .L800408C8
/* 1B1F0 8003FDF0 24020009 */ addiu $v0, $zero, 9
/* 1B1F4 8003FDF4 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* 1B1F8 8003FDF8 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* 1B1F4 8003FDF4 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 1B1F8 8003FDF8 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 1B1FC 8003FDFC 106202B2 */ beq $v1, $v0, .L800408C8
/* 1B200 8003FE00 00000000 */ nop
/* 1B204 8003FE04 8E220000 */ lw $v0, ($s1)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098698
.word L80042198_1D598, L800421AC_1D5AC, L800421C0_1D5C0, L800421E8_1D5E8, L800421D4_1D5D4, 0
.section .text
glabel update_encounters_post_battle
/* 1D310 80041F10 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 1D314 80041F14 AFB60028 */ sw $s6, 0x28($sp)

View File

@ -104,7 +104,7 @@ glabel DoBasicAI
.L8004A5D8:
/* 259D8 8004A5D8 8E430070 */ lw $v1, 0x70($s2)
/* 259DC 8004A5DC 2C620064 */ sltiu $v0, $v1, 0x64
/* 259E0 8004A5E0 10400038 */ beqz $v0, .L8004A6C4
/* 259E0 8004A5E0 10400038 */ beqz $v0, L8004A6C4_25AC4
/* 259E4 8004A5E4 00031080 */ sll $v0, $v1, 2
/* 259E8 8004A5E8 3C01800A */ lui $at, %hi(jtbl_80098728)
/* 259EC 8004A5EC 00220821 */ addu $at, $at, $v0
@ -159,7 +159,7 @@ glabel L8004A684_25A84
/* 25A90 8004A690 0280302D */ daddu $a2, $s4, $zero
/* 25A94 8004A694 8E430070 */ lw $v1, 0x70($s2)
/* 25A98 8004A698 2402000E */ addiu $v0, $zero, 0xe
/* 25A9C 8004A69C 14620009 */ bne $v1, $v0, .L8004A6C4
/* 25A9C 8004A69C 14620009 */ bne $v1, $v0, L8004A6C4_25AC4
/* 25AA0 8004A6A0 00000000 */ nop
glabel L8004A6A4_25AA4
/* 25AA4 8004A6A4 0240202D */ daddu $a0, $s2, $zero
@ -171,7 +171,6 @@ glabel L8004A6A4_25AA4
glabel L8004A6BC_25ABC
/* 25ABC 8004A6BC 0C0129CF */ jal func_8004A73C
/* 25AC0 8004A6C0 0240202D */ daddu $a0, $s2, $zero
.L8004A6C4:
glabel L8004A6C4_25AC4
/* 25AC4 8004A6C4 8FBF0048 */ lw $ra, 0x48($sp)
/* 25AC8 8004A6C8 8FB50044 */ lw $s5, 0x44($sp)

View File

@ -1,6 +1,25 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80097E00
.double 0.1
glabel D_80097E08
.double 0.03
glabel D_80097E10
.double 1.9
glabel D_80097E18
.double 0.01
glabel D_80097E20
.byte 0x3F, 0xB9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x68, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x57, 0x61, 0x74, 0x63, 0x68, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x46, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x68, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x2E, 0x00, 0x00, 0x54, 0x72, 0x61, 0x70, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x65, 0x74, 0x69, 0x63, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x43, 0x6F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x75, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x00, 0x00, 0x00, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x42, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x42, 0x75, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x42, 0x75, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x2E, 0x00, 0x00, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x42, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x65, 0x78, 0x61, 0x63, 0x74, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x4F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x00, 0x00, 0x00, 0x00, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x00, 0x55, 0x6E, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00
.section .text
glabel render_curtains
/* 6E80 8002BA80 3C01800A */ lui $at, %hi(gCurtainScaleGoal)
/* 6E84 8002BA84 C420BA94 */ lwc1 $f0, %lo(gCurtainScaleGoal)($at)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098034
.ascii "F%02d:%+.3e\0"
glabel D_80098040
.ascii "F%02d:---------\0"
.section .text
glabel crash_print_fpr
/* 76B8 8002C2B8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 76BC 8002C2BC AFBF0018 */ sw $ra, 0x18($sp)

View File

@ -1,6 +1,49 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098064
.ascii "THREAD:%d (%s)\0"
glabel D_80098074
.ascii "PC:%08XH SR:%08XH VA:%08XH\0\0"
glabel D_80098094
.ascii "AT:%08XH V0:%08XH V1:%08XH\0\0"
glabel D_800980B4
.ascii "A0:%08XH A1:%08XH A2:%08XH\0\0"
glabel D_800980D4
.ascii "A3:%08XH T0:%08XH T1:%08XH\0\0"
glabel D_800980F4
.ascii "T2:%08XH T3:%08XH T4:%08XH\0\0"
glabel D_80098114
.ascii "T5:%08XH T6:%08XH T7:%08XH\0\0"
glabel D_80098134
.ascii "S0:%08XH S1:%08XH S2:%08XH\0\0"
glabel D_80098154
.ascii "S3:%08XH S4:%08XH S5:%08XH\0\0"
glabel D_80098174
.ascii "S6:%08XH S7:%08XH T8:%08XH\0\0"
glabel D_80098194
.ascii "T9:%08XH GP:%08XH SP:%08XH\0\0"
glabel D_800981B4
.ascii "S8:%08XH RA:%08XH\0"
glabel D_800981C8
.word 0x4D4D3A25, 0x30385848, 0x00000000, 0x00000000, 0x00000000, 0x00000000
.section .text
glabel crash_show_handler
/* 77B0 8002C3B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 77B4 8002C3B4 AFB1001C */ sw $s1, 0x1c($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098050
.ascii "FPCSR:%08XH\0"
glabel D_8009805C
.word 0x28257329, 0x00000000
.section .text
glabel func_8002C324
/* 7724 8002C324 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7728 8002C328 AFB10014 */ sw $s1, 0x14($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098200
.double 0.01
glabel D_80098208
.double -0.01
.section .text
glabel get_screen_coords
/* 9938 8002E538 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 993C 8002E53C AFB20040 */ sw $s2, 0x40($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800981E0
.word L8002D4A8_88A8, L8002D4B8_88B8, L8002D4C8_88C8, L8002D498_8898, L8002D4D8_88D8, L8002D4E8_88E8, L8002D4F8_88F8, 0
.section .text
glabel update_cameras
/* 8800 8002D400 27BDFF90 */ addiu $sp, $sp, -0x70
/* 8804 8002D404 F7B60068 */ sdc1 $f22, 0x68($sp)

View File

@ -1,6 +1,28 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098250
.double 1.01
glabel D_80098258
.double 0.3
glabel D_80098260
.double 0.2
glabel D_80098268
.double 3.141592
glabel D_80098270
.double 0.5001
glabel D_80098278
.double 0.01
.section .text
glabel do_camera_type_3
/* C894 80031494 27BDFF80 */ addiu $sp, $sp, -0x80
/* C898 80031498 AFB10044 */ sw $s1, 0x44($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098210
.word L800305B0_B9B0, L80030768_BB68, L80030868_BC68, L80030874_BC74, L80030880_BC80, L80030868_BC68, L80030644_BA44, 0
glabel jtbl_80098230
.word L800308D0_BCD0, L80030BFC_BFFC, L80030E54_C254, L80031210_C610, L80031220_C620, L8003106C_C46C, L800309CC_BDCC, 0
.section .text
glabel update_camera_from_zone
/* B8FC 800304FC 27BDFF80 */ addiu $sp, $sp, -0x80
/* B900 80030500 AFB20030 */ sw $s2, 0x30($sp)

View File

@ -197,8 +197,8 @@ glabel func_802B6000_E2A340
.L802B62E4:
/* E2A624 802B62E4 0C038039 */ jal disable_player_shadow
/* E2A628 802B62E8 00000000 */ nop
/* E2A62C 802B62EC 3C048011 */ lui $a0, %hi(D_8010C930)
/* E2A630 802B62F0 8C84C930 */ lw $a0, %lo(D_8010C930)($a0)
/* E2A62C 802B62EC 3C048011 */ lui $a0, %hi(wPartnerNpc)
/* E2A630 802B62F0 8C84C930 */ lw $a0, %lo(wPartnerNpc)($a0)
/* E2A634 802B62F4 0C00EAFF */ jal disable_npc_shadow
/* E2A638 802B62F8 00000000 */ nop
/* E2A63C 802B62FC 24020032 */ addiu $v0, $zero, 0x32

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098280
.double 0.1
glabel D_80098288
.double -0.1
.section .text
glabel func_80032970
/* DD70 80032970 44853000 */ mtc1 $a1, $f6
/* DD74 80032974 94820000 */ lhu $v0, ($a0)
@ -30,8 +40,8 @@ glabel func_80032970
/* DDCC 800329CC 00431024 */ and $v0, $v0, $v1
/* DDD0 800329D0 10400007 */ beqz $v0, .L800329F0
/* DDD4 800329D4 00000000 */ nop
/* DDD8 800329D8 3C028011 */ lui $v0, %hi(D_8010EBB4)
/* DDDC 800329DC 8442EBB4 */ lh $v0, %lo(D_8010EBB4)($v0)
/* DDD8 800329D8 3C028011 */ lui $v0, %hi(D_8010EBB0+0x4)
/* DDDC 800329DC 8442EBB4 */ lh $v0, %lo(D_8010EBB0+0x4)($v0)
/* DDE0 800329E0 44824000 */ mtc1 $v0, $f8
/* DDE4 800329E4 00000000 */ nop
/* DDE8 800329E8 0800CA7E */ j .L800329F8

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_800982C0
.word L800344A8_F8A8, L800344A8_F8A8, L800344A8_F8A8, L80034628_FA28, L80034628_FA28, L80034628_FA28, L800347A8_FBA8, L800347A8_FBA8, L800347A8_FBA8, L800347A8_FBA8
.section .text
glabel func_800343A4
/* F7A4 800343A4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* F7A8 800343A8 3C05E200 */ lui $a1, 0xe200

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80098290
.word L800341F8_F5F8, L8003411C_F51C, L80034150_F550, L80034170_F570, L800341A8_F5A8, L800341D8_F5D8, L800341F8_F5F8, L80034230_F630, L80034278_F678, L800342D4_F6D4, L800342FC_F6FC, L8003432C_F72C
.section .text
glabel step_logos
/* F4A4 800340A4 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* F4A8 800340A8 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)

View File

@ -1,8 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel set_anim_timescale
/* 10097C 802DD88C 460C6300 */ add.s $f12, $f12, $f12
/* 100980 802DD890 3C01802E */ lui $at, %hi(D_802DF4C0)
/* 100984 802DD894 03E00008 */ jr $ra
/* 100988 802DD898 E42CF4C0 */ swc1 $f12, %lo(D_802DF4C0)($at)

View File

@ -1,125 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel spr_transform_point
/* FFDF0 802DCD00 27BDFF20 */ addiu $sp, $sp, -0xe0
/* FFDF4 802DCD04 F7B800C8 */ sdc1 $f24, 0xc8($sp)
/* FFDF8 802DCD08 4487C000 */ mtc1 $a3, $f24
/* FFDFC 802DCD0C F7BA00D0 */ sdc1 $f26, 0xd0($sp)
/* FFE00 802DCD10 C7BA00F0 */ lwc1 $f26, 0xf0($sp)
/* FFE04 802DCD14 F7BC00D8 */ sdc1 $f28, 0xd8($sp)
/* FFE08 802DCD18 C7BC00F4 */ lwc1 $f28, 0xf4($sp)
/* FFE0C 802DCD1C AFB300A4 */ sw $s3, 0xa4($sp)
/* FFE10 802DCD20 8FB300F8 */ lw $s3, 0xf8($sp)
/* FFE14 802DCD24 AFB400A8 */ sw $s4, 0xa8($sp)
/* FFE18 802DCD28 8FB400FC */ lw $s4, 0xfc($sp)
/* FFE1C 802DCD2C AFB500AC */ sw $s5, 0xac($sp)
/* FFE20 802DCD30 8FB50100 */ lw $s5, 0x100($sp)
/* FFE24 802DCD34 AFB200A0 */ sw $s2, 0xa0($sp)
/* FFE28 802DCD38 0080902D */ daddu $s2, $a0, $zero
/* FFE2C 802DCD3C AFB1009C */ sw $s1, 0x9c($sp)
/* FFE30 802DCD40 AFBF00B0 */ sw $ra, 0xb0($sp)
/* FFE34 802DCD44 AFB00098 */ sw $s0, 0x98($sp)
/* FFE38 802DCD48 F7B600C0 */ sdc1 $f22, 0xc0($sp)
/* FFE3C 802DCD4C F7B400B8 */ sdc1 $f20, 0xb8($sp)
/* FFE40 802DCD50 16400009 */ bnez $s2, .L802DCD78
/* FFE44 802DCD54 00C0882D */ daddu $s1, $a2, $zero
/* FFE48 802DCD58 14A00007 */ bnez $a1, .L802DCD78
/* FFE4C 802DCD5C 00000000 */ nop
/* FFE50 802DCD60 16200005 */ bnez $s1, .L802DCD78
/* FFE54 802DCD64 00000000 */ nop
/* FFE58 802DCD68 E6780000 */ swc1 $f24, ($s3)
/* FFE5C 802DCD6C E69A0000 */ swc1 $f26, ($s4)
/* FFE60 802DCD70 080B73A9 */ j .L802DCEA4
/* FFE64 802DCD74 E6BC0000 */ swc1 $f28, ($s5)
.L802DCD78:
/* FFE68 802DCD78 44859000 */ mtc1 $a1, $f18
/* FFE6C 802DCD7C 00000000 */ nop
/* FFE70 802DCD80 468094A0 */ cvt.s.w $f18, $f18
/* FFE74 802DCD84 4480A000 */ mtc1 $zero, $f20
/* FFE78 802DCD88 3C013F80 */ lui $at, 0x3f80
/* FFE7C 802DCD8C 4481B000 */ mtc1 $at, $f22
/* FFE80 802DCD90 44059000 */ mfc1 $a1, $f18
/* FFE84 802DCD94 4406A000 */ mfc1 $a2, $f20
/* FFE88 802DCD98 4407B000 */ mfc1 $a3, $f22
/* FFE8C 802DCD9C 27A40018 */ addiu $a0, $sp, 0x18
/* FFE90 802DCDA0 0C019EC8 */ jal guRotateF
/* FFE94 802DCDA4 E7B40010 */ swc1 $f20, 0x10($sp)
/* FFE98 802DCDA8 27B00058 */ addiu $s0, $sp, 0x58
/* FFE9C 802DCDAC 44919000 */ mtc1 $s1, $f18
/* FFEA0 802DCDB0 00000000 */ nop
/* FFEA4 802DCDB4 468094A0 */ cvt.s.w $f18, $f18
/* FFEA8 802DCDB8 4406A000 */ mfc1 $a2, $f20
/* FFEAC 802DCDBC 4407A000 */ mfc1 $a3, $f20
/* FFEB0 802DCDC0 44059000 */ mfc1 $a1, $f18
/* FFEB4 802DCDC4 0200202D */ daddu $a0, $s0, $zero
/* FFEB8 802DCDC8 0C019EC8 */ jal guRotateF
/* FFEBC 802DCDCC E7B60010 */ swc1 $f22, 0x10($sp)
/* FFEC0 802DCDD0 0200202D */ daddu $a0, $s0, $zero
/* FFEC4 802DCDD4 27A50018 */ addiu $a1, $sp, 0x18
/* FFEC8 802DCDD8 0C019D80 */ jal guMtxCatF
/* FFECC 802DCDDC 00A0302D */ daddu $a2, $a1, $zero
/* FFED0 802DCDE0 44929000 */ mtc1 $s2, $f18
/* FFED4 802DCDE4 00000000 */ nop
/* FFED8 802DCDE8 468094A0 */ cvt.s.w $f18, $f18
/* FFEDC 802DCDEC 4406B000 */ mfc1 $a2, $f22
/* FFEE0 802DCDF0 4407A000 */ mfc1 $a3, $f20
/* FFEE4 802DCDF4 44059000 */ mfc1 $a1, $f18
/* FFEE8 802DCDF8 0200202D */ daddu $a0, $s0, $zero
/* FFEEC 802DCDFC 0C019EC8 */ jal guRotateF
/* FFEF0 802DCE00 AFA70010 */ sw $a3, 0x10($sp)
/* FFEF4 802DCE04 0200202D */ daddu $a0, $s0, $zero
/* FFEF8 802DCE08 27A50018 */ addiu $a1, $sp, 0x18
/* FFEFC 802DCE0C 0C019D80 */ jal guMtxCatF
/* FFF00 802DCE10 00A0302D */ daddu $a2, $a1, $zero
/* FFF04 802DCE14 C7A80018 */ lwc1 $f8, 0x18($sp)
/* FFF08 802DCE18 46184202 */ mul.s $f8, $f8, $f24
/* FFF0C 802DCE1C 00000000 */ nop
/* FFF10 802DCE20 C7B00028 */ lwc1 $f16, 0x28($sp)
/* FFF14 802DCE24 461A8402 */ mul.s $f16, $f16, $f26
/* FFF18 802DCE28 00000000 */ nop
/* FFF1C 802DCE2C C7AE0038 */ lwc1 $f14, 0x38($sp)
/* FFF20 802DCE30 461C7382 */ mul.s $f14, $f14, $f28
/* FFF24 802DCE34 00000000 */ nop
/* FFF28 802DCE38 C7A2001C */ lwc1 $f2, 0x1c($sp)
/* FFF2C 802DCE3C 46181082 */ mul.s $f2, $f2, $f24
/* FFF30 802DCE40 00000000 */ nop
/* FFF34 802DCE44 C7AA002C */ lwc1 $f10, 0x2c($sp)
/* FFF38 802DCE48 461A5282 */ mul.s $f10, $f10, $f26
/* FFF3C 802DCE4C 00000000 */ nop
/* FFF40 802DCE50 C7AC003C */ lwc1 $f12, 0x3c($sp)
/* FFF44 802DCE54 461C6302 */ mul.s $f12, $f12, $f28
/* FFF48 802DCE58 00000000 */ nop
/* FFF4C 802DCE5C C7A00020 */ lwc1 $f0, 0x20($sp)
/* FFF50 802DCE60 46180002 */ mul.s $f0, $f0, $f24
/* FFF54 802DCE64 00000000 */ nop
/* FFF58 802DCE68 C7A40030 */ lwc1 $f4, 0x30($sp)
/* FFF5C 802DCE6C 461A2102 */ mul.s $f4, $f4, $f26
/* FFF60 802DCE70 00000000 */ nop
/* FFF64 802DCE74 C7A60040 */ lwc1 $f6, 0x40($sp)
/* FFF68 802DCE78 461C3182 */ mul.s $f6, $f6, $f28
/* FFF6C 802DCE7C 00000000 */ nop
/* FFF70 802DCE80 46104200 */ add.s $f8, $f8, $f16
/* FFF74 802DCE84 460A1080 */ add.s $f2, $f2, $f10
/* FFF78 802DCE88 46040000 */ add.s $f0, $f0, $f4
/* FFF7C 802DCE8C 460E4200 */ add.s $f8, $f8, $f14
/* FFF80 802DCE90 460C1080 */ add.s $f2, $f2, $f12
/* FFF84 802DCE94 46060000 */ add.s $f0, $f0, $f6
/* FFF88 802DCE98 E6680000 */ swc1 $f8, ($s3)
/* FFF8C 802DCE9C E6820000 */ swc1 $f2, ($s4)
/* FFF90 802DCEA0 E6A00000 */ swc1 $f0, ($s5)
.L802DCEA4:
/* FFF94 802DCEA4 8FBF00B0 */ lw $ra, 0xb0($sp)
/* FFF98 802DCEA8 8FB500AC */ lw $s5, 0xac($sp)
/* FFF9C 802DCEAC 8FB400A8 */ lw $s4, 0xa8($sp)
/* FFFA0 802DCEB0 8FB300A4 */ lw $s3, 0xa4($sp)
/* FFFA4 802DCEB4 8FB200A0 */ lw $s2, 0xa0($sp)
/* FFFA8 802DCEB8 8FB1009C */ lw $s1, 0x9c($sp)
/* FFFAC 802DCEBC 8FB00098 */ lw $s0, 0x98($sp)
/* FFFB0 802DCEC0 D7BC00D8 */ ldc1 $f28, 0xd8($sp)
/* FFFB4 802DCEC4 D7BA00D0 */ ldc1 $f26, 0xd0($sp)
/* FFFB8 802DCEC8 D7B800C8 */ ldc1 $f24, 0xc8($sp)
/* FFFBC 802DCECC D7B600C0 */ ldc1 $f22, 0xc0($sp)
/* FFFC0 802DCED0 D7B400B8 */ ldc1 $f20, 0xb8($sp)
/* FFFC4 802DCED4 03E00008 */ jr $ra
/* FFFC8 802DCED8 27BD00E0 */ addiu $sp, $sp, 0xe0

View File

@ -1,6 +1,19 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099BF0
.word 0x202B2D23, 0x30000000
glabel D_80099BF8
.word 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000000
glabel D_80099C10
.word 0x686C4C00, 0x00000000
.section .text
glabel _Printf
/* 3FEA0 80064AA0 27BDFF50 */ addiu $sp, $sp, -0xb0
/* 3FEA4 80064AA4 AFB400A0 */ sw $s4, 0xa0($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80099C18
.word L800654B0_408B0, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800652CC_406CC, L800654CC_408CC, L800652CC_406CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800651B4_405B4, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L80065080_40480, L800650B4_404B4, L800652CC_406CC, L800652CC_406CC, L800652CC_406CC, L800654CC_408CC, L800650B4_404B4, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L800654CC_408CC, L80065380_40780, L800651B4_405B4, L80065420_40820, L800654CC_408CC, L800654CC_408CC, L8006546C_4086C, L800654CC_408CC, L800651B4_405B4, L800654CC_408CC, L800654CC_408CC, L800651B4_405B4, 0, 0
.section .text
glabel _Putfld
/* 40420 80065020 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 40424 80065024 AFB00010 */ sw $s0, 0x10($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_80099B20
.word L800613D4_3C7D4, L800612F4_3C6F4, L80061328_3C728, L800613E4_3C7E4, L800613E4_3C7E4, L8006135C_3C75C, L80061398_3C798, 0
.section .text
glabel osDevMgrMain
/* 3C490 80061090 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 3C494 80061094 AFB20030 */ sw $s2, 0x30($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099B40
.double 4294967296.0, 0.0
.section .text
glabel osAiSetFrequency
/* 3C960 80061560 44841000 */ mtc1 $a0, $f2
/* 3C964 80061564 00000000 */ nop

View File

@ -1,6 +1,25 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099B70
.double -1.0
glabel D_80099B78
.double 1.0
glabel D_80099B80
.double 0.1
glabel D_80099B88
.double 1.0
glabel D_80099B90
.double 0.1, 0.0
.section .text
glabel guLookAtHiliteF
/* 3DCC0 800628C0 27BDFF88 */ addiu $sp, $sp, -0x78
/* 3DCC4 800628C4 F7BE0070 */ sdc1 $f30, 0x70($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099BA0
.double -1.0
glabel D_80099BA8
.word 0x3FF00000, 0x00000000
.section .text
glabel guLookAtReflectF
/* 3E720 80063320 27BDFF98 */ addiu $sp, $sp, -0x68
/* 3E724 80063324 F7BC0058 */ sdc1 $f28, 0x58($sp)

View File

@ -1,6 +1,22 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099BD0
.double 0.017453292222222222
glabel D_80099BD8
.double 2.0
glabel D_80099BE0
.double 131072.0
glabel D_80099BE8
.double 2147483648.0
.section .text
glabel guPerspective
/* 3F140 80063D40 27BDFF78 */ addiu $sp, $sp, -0x88
/* 3F144 80063D44 F7B80070 */ sdc1 $f24, 0x70($sp)

View File

@ -1,6 +1,22 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099BB0
.double 0.017453292222222222
glabel D_80099BB8
.double 2.0
glabel D_80099BC0
.double 131072.0
glabel D_80099BC8
.double 2147483648.0
.section .text
glabel guPerspectiveF
/* 3EF90 80063B90 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 3EF94 80063B94 F7BA0038 */ sdc1 $f26, 0x38($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099D70
.double 4294967296.0, 0.0
.section .text
glabel osViSwapContext
/* 42470 80067070 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 42474 80067074 AFB00010 */ sw $s0, 0x10($sp)

View File

@ -1,6 +1,13 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099E30
.word 0x30000000, 0x00000000, 0x00000000, 0x00000000
.section .text
glabel _Genld
/* 474B4 8006C0B4 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 474B8 8006C0B8 AFB20018 */ sw $s2, 0x18($sp)

View File

@ -1,6 +1,25 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099DD0
.word 0x40240000, 0x00000000, 0x40590000, 0x00000000, 0x40C38800, 0x00000000, 0x4197D784, 0x00000000, 0x4341C379, 0x37E08000, 0x4693B8B5, 0xB5056E17, 0x4D384F03, 0xE93FF9F5, 0x5A827748, 0xF9301D32, 0x75154FDD, 0x7F73BF3C
glabel D_80099E18
.word 0x4E614E00
glabel D_80099E1C
.word 0x496E6600
glabel D_80099E20
.double 1.0
glabel D_80099E28
.double 100000000.0
.section .text
glabel _Ldtob
/* 46FD0 8006BBD0 27BDFF80 */ addiu $sp, $sp, -0x80
/* 46FD4 8006BBD4 AFB30054 */ sw $s3, 0x54($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099B60
.double -1.0
glabel D_80099B68
.word 0x3FF00000, 0x00000000
.section .text
glabel guLookAt
/* 3D930 80062530 27BDFF48 */ addiu $sp, $sp, -0xb8
/* 3D934 80062534 AFB20068 */ sw $s2, 0x68($sp)

View File

@ -1,6 +1,16 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80099B50
.double -1.0
glabel D_80099B58
.word 0x3FF00000, 0x00000000
.section .text
glabel guLookAtF
/* 3D5B0 800621B0 27BDFF90 */ addiu $sp, $sp, -0x70
/* 3D5B4 800621B4 AFB30024 */ sw $s3, 0x24($sp)

View File

@ -80,8 +80,8 @@ glabel func_80240000_BDD1B0
/* BDD2D4 80240124 45030001 */ bc1tl .L8024012C
/* BDD2D8 80240128 0000802D */ daddu $s0, $zero, $zero
.L8024012C:
/* BDD2DC 8024012C 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* BDD2E0 80240130 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* BDD2DC 8024012C 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* BDD2E0 80240130 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* BDD2E4 80240134 24020009 */ addiu $v0, $zero, 9
/* BDD2E8 80240138 50620001 */ beql $v1, $v0, .L80240140
/* BDD2EC 8024013C 0000802D */ daddu $s0, $zero, $zero

View File

@ -80,8 +80,8 @@ glabel func_80242388_BE5B38
/* BE5C5C 802424AC 45030001 */ bc1tl .L802424B4
/* BE5C60 802424B0 0000802D */ daddu $s0, $zero, $zero
.L802424B4:
/* BE5C64 802424B4 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* BE5C68 802424B8 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* BE5C64 802424B4 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* BE5C68 802424B8 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* BE5C6C 802424BC 24020009 */ addiu $v0, $zero, 9
/* BE5C70 802424C0 50620001 */ beql $v1, $v0, .L802424C8
/* BE5C74 802424C4 0000802D */ daddu $s0, $zero, $zero

View File

@ -34,8 +34,8 @@ glabel func_8024019C_BF493C
/* BF49A4 80240204 0809009C */ j .L80240270
/* BF49A8 80240208 AC820000 */ sw $v0, ($a0)
.L8024020C:
/* BF49AC 8024020C 3C108011 */ lui $s0, %hi(D_8010C930)
/* BF49B0 80240210 2610C930 */ addiu $s0, $s0, %lo(D_8010C930)
/* BF49AC 8024020C 3C108011 */ lui $s0, %hi(wPartnerNpc)
/* BF49B0 80240210 2610C930 */ addiu $s0, $s0, %lo(wPartnerNpc)
/* BF49B4 80240214 0C03BD17 */ jal clear_partner_move_history
/* BF49B8 80240218 8E040000 */ lw $a0, ($s0)
/* BF49BC 8024021C C6200028 */ lwc1 $f0, 0x28($s1)

View File

@ -150,8 +150,8 @@ glabel func_80241954_BFF1D4
/* BFF40C 80241B8C AE400048 */ sw $zero, 0x48($s2)
/* BFF410 80241B90 00431024 */ and $v0, $v0, $v1
/* BFF414 80241B94 AE420000 */ sw $v0, ($s2)
/* BFF418 80241B98 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* BFF41C 80241B9C 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* BFF418 80241B98 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* BFF41C 80241B9C 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* BFF420 80241BA0 24020009 */ addiu $v0, $zero, 9
/* BFF424 80241BA4 10620009 */ beq $v1, $v0, .L80241BCC
/* BFF428 80241BA8 24020010 */ addiu $v0, $zero, 0x10

View File

@ -18,8 +18,8 @@ glabel func_80241E70_BFF6F0
/* BFF724 80241EA4 28420003 */ slti $v0, $v0, 3
/* BFF728 80241EA8 1440000D */ bnez $v0, .L80241EE0
/* BFF72C 80241EAC 24020009 */ addiu $v0, $zero, 9
/* BFF730 80241EB0 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* BFF734 80241EB4 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* BFF730 80241EB0 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* BFF734 80241EB4 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* BFF738 80241EB8 10620003 */ beq $v1, $v0, .L80241EC8
/* BFF73C 80241EBC 24020064 */ addiu $v0, $zero, 0x64
/* BFF740 80241EC0 080907B7 */ j .L80241EDC

View File

@ -97,8 +97,8 @@ glabel func_80240208_C2EDA8
/* C2EF0C 8024036C 45030001 */ bc1tl .L80240374
/* C2EF10 80240370 0000882D */ daddu $s1, $zero, $zero
.L80240374:
/* C2EF14 80240374 3C038011 */ lui $v1, %hi(D_8010EBB3)
/* C2EF18 80240378 8063EBB3 */ lb $v1, %lo(D_8010EBB3)($v1)
/* C2EF14 80240374 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* C2EF18 80240378 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* C2EF1C 8024037C 24020009 */ addiu $v0, $zero, 9
/* C2EF20 80240380 50620001 */ beql $v1, $v0, .L80240388
/* C2EF24 80240384 0000882D */ daddu $s1, $zero, $zero

Some files were not shown because too many files have changed in this diff Show More