diff --git a/diff_settings.py b/diff_settings.py index 48aad93d95..04b9263cdc 100644 --- a/diff_settings.py +++ b/diff_settings.py @@ -8,3 +8,4 @@ def apply(config, args): config['source_directories'] = ['src', f'{ver_dir}asm', 'include', f'{ver_dir}assets'] config['make_command'] = ['ninja'] config['objdump_flags'] = ['-M','reg-names=32'] + config['expected_directory'] = f'{ver_dir}/expected/' diff --git a/include/common_structs.h b/include/common_structs.h index 1c4873c36e..0131c16c2f 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -2120,8 +2120,10 @@ typedef struct MenuPanel { typedef struct WindowBackground { /* 0x00 */ IMG_PTR imgData; /* 0x04 */ s8 packedTileFormat; // upper = fmt, lower = depth; e.g., 31 = CI-8 - /* 0x05 */ s8 width; - /* 0x06 */ s8 height; +// /* 0x04 */ u8 packedTileFormatHigh : 4; +// /* 0x04 */ u8 packedTileFormatLow : 4; + /* 0x05 */ u8 width; + /* 0x06 */ u8 height; /* 0x07 */ char unk_07[4]; /* 0x0B */ s8 size; } WindowBackground; // size = 0xC @@ -2129,6 +2131,8 @@ typedef struct WindowBackground { typedef struct WindowCorners { /* 0x00 */ IMG_PTR imgData; /* 0x04 */ s8 packedTileFormat; // upper = fmt, lower = depth; e.g., 31 = CI-8 +// /* 0x04 */ u8 packedTileFormatHigh : 4; +// /* 0x04 */ u8 packedTileFormatLow : 4; /* 0x05 */ Vec2b size1; /* 0x07 */ Vec2b size2; /* 0x09 */ Vec2b size3; diff --git a/include/enums.h b/include/enums.h index a30cf51382..3544489bda 100644 --- a/include/enums.h +++ b/include/enums.h @@ -864,6 +864,7 @@ enum SoundIDs { SOUND_BOW_SPOOK = 0x00000291, SOUND_292 = 0x00000292, SOUND_293 = 0x00000293, + SOUND_294 = 0x00000294, SOUND_295 = 0x00000295, SOUND_297 = 0x00000297, SOUND_298 = 0x00000298, @@ -1128,6 +1129,7 @@ enum SoundIDs { SOUND_62B = 0x0000062B, SOUND_648 = 0x00000648, SOUND_649 = 0x00000649, + SOUND_694 = 0x00000694, SOUND_6A2 = 0x000006A2, SOUND_749 = 0x00000749, SOUND_759 = 0x00000759, @@ -1150,6 +1152,9 @@ enum SoundIDs { SOUND_2010 = 0x00002010, SOUND_WATT_REPEL_DARKNESS = 0x00002011, SOUND_WATT_RESUME_DARKNESS = 0x00002012, + SOUND_2013 = 0x00002013, + SOUND_2014 = 0x00002014, + SOUND_2015 = 0x00002015, SOUND_CANNON1 = 0x00002016, SOUND_CANNON2 = 0x00002017, SOUND_CANNON3 = 0x00002018, diff --git a/include/functions.h b/include/functions.h index 5e1a8b09ec..e50f498471 100644 --- a/include/functions.h +++ b/include/functions.h @@ -16,7 +16,7 @@ s32 strcmp(const char* str1, const char* str2); void nuBoot(void); void boot_idle(void* data); -void boot_main(void); +void boot_main(void* data); void is_debug_init(void); @@ -406,6 +406,7 @@ PlayerData* get_player_data(void); s32 npc_raycast_down_around(s32, f32*, f32*, f32*, f32*, f32, f32); s32 npc_raycast_down_sides(s32 ignoreFlags, f32* posX, f32* posY, f32* posZ, f32* hitDepth); s32 npc_raycast_up(s32, f32*, f32*, f32*, f32*); +s32 npc_raycast_up_corners(s32 ignoreFlags, f32* posX, f32* posY, f32* posZ, f32* hitDepth, f32 yaw, f32 radius); s32 player_raycast_up_corners(PlayerStatus*, f32*, f32*, f32*, f32*, f32); s32 player_raycast_below_cam_relative(PlayerStatus* playerStatus, f32* outX, f32* outY, f32* outZ, f32* outLength, f32* hitRx, f32* hitRz, f32* hitDirX, f32* hitDirZ); diff --git a/include/macros.h b/include/macros.h index 1ea95ec35b..731bb4ee7b 100644 --- a/include/macros.h +++ b/include/macros.h @@ -23,6 +23,8 @@ #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) +#define NOP_FIX __asm__(".set nogpopt"); + #define PTR_LIST_END ((void*) -1) #define API_CALLABLE(name) ApiStatus name(Evt* script, s32 isInitialCall) diff --git a/include/variables.h b/include/variables.h index 6288eac5b6..b1e2424aeb 100644 --- a/include/variables.h +++ b/include/variables.h @@ -191,8 +191,8 @@ extern EvtScript ShakeCamX; extern MusicSettings gMusicSettings[4]; // OS -extern OSThread D_800A4270; // idle thread, id 1 -extern OSThread D_800A4420; // id 3 +extern OSThread IdleThread; // idle thread, id 1 +extern OSThread MainThread; // id 3 extern OSDevMgr __osPiDevMgr; // gfx diff --git a/src/16c8e0.c b/src/16c8e0.c index 92b4c63fed..a8e3274032 100644 --- a/src/16c8e0.c +++ b/src/16c8e0.c @@ -13,17 +13,14 @@ s16 D_802809F6 = -1; s16 D_802809F8 = 0; u16 gTattleBgTextureYOffset = 0; -BSS s32 bSavedPartner = 0; -BSS s32 bSavedOverrideFlags = 0; -BSS s32 D_8029DA38 = 0; // unused? -BSS s32 D_8029DA3C = 0; // unused? -BSS s32 D_8029DA40 = 0; -BSS s32 D_8029DA44 = 0; -BSS s32 D_8029DA48 = 0; -// The following var has a nop issue, and the only way to fix it is by initializing it. -// However, this puts it at the beginning of the BSS section, so all preceeding BSS needs to be initialized as well. -BSS s32 D_8029DA4C = 0; - +BSS s32 bSavedPartner; +BSS s32 bSavedOverrideFlags; +BSS s32 D_8029DA38; // unused? +BSS s32 D_8029DA3C; // unused? +BSS s32 D_8029DA40; +BSS s32 D_8029DA44; +BSS s32 D_8029DA48; +BSS s32 D_8029DA4C; BSS Camera D_8029DA50[ARRAY_COUNT(gCameras)]; BSS f32 D_8029EFB0; BSS f32 D_8029EFB4; @@ -118,19 +115,19 @@ void get_dpad_input_radial(f32* angle, f32* magnitude) { u16 currentButtonsDown = battleStatus->currentButtonsDown; f32 mag; - if (currentButtonsDown & 0xF00) { + if (currentButtonsDown & (BUTTON_D_UP | BUTTON_D_DOWN | BUTTON_D_LEFT | BUTTON_D_RIGHT)) { stickY = 0.0f; stickX = 0.0f; - if (currentButtonsDown & 0x800) { + if (currentButtonsDown & BUTTON_D_UP) { stickY = maxMagnitude; } - if (currentButtonsDown & 0x400) { + if (currentButtonsDown & BUTTON_D_DOWN) { stickY = -maxMagnitude; } - if (currentButtonsDown & 0x200) { + if (currentButtonsDown & BUTTON_D_LEFT) { stickX = -maxMagnitude; } - if (currentButtonsDown & 0x100) { + if (currentButtonsDown & BUTTON_D_RIGHT) { stickX = maxMagnitude; } } @@ -939,6 +936,8 @@ void btl_draw_enemy_health_bars(void) { } } +NOP_FIX + void btl_update_starpoints_display(void) { BattleStatus* battleStatus = &gBattleStatus; s32 cond; diff --git a/src/8e790_len_2850.c b/src/8e790_len_2850.c index b85e6382c9..9bdc8f5ed9 100644 --- a/src/8e790_len_2850.c +++ b/src/8e790_len_2850.c @@ -1,4 +1,6 @@ #include "common.h" +#include "nu/nusys.h" + typedef struct DefaultWindowStyle { /* 0x00 */ u8 bgIndex; /* 0x01 */ u8 cornersIndex; @@ -330,8 +332,520 @@ Mtx D_8010BC08 = { } }; +// ordering and stack +#ifdef NON_MATCHING +#define _INTEGER_LOG2(x) ( \ + (x) <= 1 ? 0 : \ + (x) <= 2 ? 1 : \ + (x) <= 4 ? 2 : \ + (x) <= 8 ? 3 : \ + (x) <= 16 ? 4 : \ + (x) <= 32 ? 5 : \ + (x) <= 64 ? 6 : \ + (x) <= 128 ? 7 : \ + (x) <= 256 ? 8 : \ + (x) <= 512 ? 9 : 10) + +s32 draw_box(s32 flags, WindowStyleCustom* windowStyle, s32 posX, s32 posY, s32 posZ, s32 width, s32 height, u8 opacity, + u8 darkening, f32 scaleX, f32 scaleY, f32 rotX, f32 rotY, f32 rotZ, + void (*fpDrawContents)(s32, s32, s32, s32, s32, s32, s32), s32 drawContentsArg0, + Matrix4f rotScaleMtx, s32 translateX, s32 translateY, Matrix4f outMtx) +{ + Matrix4f sp20; + Matrix4f sp60; + Matrix4f spA0; + + u8 spF7; + u8 spFF; + u8 sp107; + u8 sp10F; + u8 sp117; + u8 sp11F; + u8 sp127; + u8 sp12F; + + u8* backgroundImageData; + u8* sp13C; + s32 sp140; + s32 sp144; + Vec2bu* sp148; + u32 sp14C; + u32 packedTileFormat; + Mtx* sp154; + + WindowCorners* corners; + WindowBackground* background; + u32 bgWidth, bgHeight; + u32 cornerWidth, cornerHeight; + s32 a3; + s32 t0; + s32 s6; + Vtx* fp; + s32 i, j, k; + Gfx* combineMode; + s32 tmem = 0x100; + u32 bgScrollOffset; + DefaultWindowStyle* defaultStyle = NULL; + WindowStyleCustom* customStyle = NULL; + s32 alpha = opacity; + s32 new_var; + + if ((u32)windowStyle < 23) { + defaultStyle = &D_801098E0[(u32)windowStyle]; + + spF7 = defaultStyle->color1.r; + spFF = defaultStyle->color1.g; + sp107 = defaultStyle->color1.b; + sp10F = defaultStyle->color1.a * alpha / 255; + sp117 = defaultStyle->color2.r; + sp11F = defaultStyle->color2.g; + sp127 = defaultStyle->color2.b; + sp12F = defaultStyle->color2.a; + + background = &D_8010BAE8[defaultStyle->bgIndex]; + corners = &D_8010BB00[defaultStyle->cornersIndex]; + } else { + spF7 = windowStyle->color1.r; + spFF = windowStyle->color1.g; + sp107 = windowStyle->color1.b; + sp10F = windowStyle->color1.a * alpha / 255; + sp117 = windowStyle->color2.r; + sp11F = windowStyle->color2.g; + sp127 = windowStyle->color2.b; + sp12F = windowStyle->color2.a; + + customStyle = windowStyle; + background = &windowStyle->background; + corners = &windowStyle->corners; + } + + backgroundImageData = background->imgData; + + bgWidth = background->width; + bgHeight = background->height; + sp13C = corners->imgData; + sp140 = background->packedTileFormatHigh; + new_var = 1; // TODO hack + sp144 = _INTEGER_LOG2(bgWidth); + s6 = _INTEGER_LOG2(bgHeight); + + fp = NULL; + sp154 = NULL; + sp148 = (Vec2bu*)&corners->size1; + sp14C = corners->packedTileFormatHigh; + packedTileFormat = corners->packedTileFormatLow; + + if (width <= 0 || height <= 0 || opacity == 0 || posX <= -768 || posY <= -768) { + return TRUE; + } + + if (posX >= SCREEN_WIDTH || posY >= SCREEN_HEIGHT) { + return TRUE; + } + + if (posX + width >= 768 || posY + height >= 768 || posX + width <= 0 || posY + height <= 0) { + return TRUE; + } + + if (flags & DRAW_FLAGS_ROTSCALE) { + fp = D_8010D6B0[D_8010BBB0++].vert; + if (D_8010BBB0 > 20) { + D_8010BBB0 = 0; + } + } + + gDPPipeSync(gMasterGfxPos++); + gDPSetCycleType(gMasterGfxPos++, G_CYC_2CYCLE); + gDPSetBlendColor(gMasterGfxPos++, 0, 0, 0, 0); + gDPSetFogColor(gMasterGfxPos++, 0, 0, 0, darkening); + gDPSetRenderMode(gMasterGfxPos++, GBL_c1(G_BL_CLR_BL, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA), G_RM_XLU_SURF2); + if (!(flags & DRAW_FLAGS_CLIP)) { + gDPSetScissor(gMasterGfxPos++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + } + + if (defaultStyle != NULL) { + Gfx* gfxPos = gMasterGfxPos; + *gfxPos = D_8010BB90[defaultStyle->unk_2 + (sp10F != 255 ? 2 : 0)]; + } else { + Gfx* gfxPos = gMasterGfxPos; + if (sp10F != 255) { + *gfxPos = customStyle->transparentCombineMode; + } else { + *gfxPos = customStyle->opaqueCombineMode; + } + } + + gMasterGfxPos++; + gDPSetTextureFilter(gMasterGfxPos++, G_TF_POINT); + + if (fp) { + gSPViewport(gMasterGfxPos++, &D_8010BBB8); + guFrustumF(sp20, -80.0f, 80.0f, 60.0f, -60.0f, 160.0f, 480.0f, 1.0f); + guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); + sp154 = &gDisplayContext->matrixStack[gMatrixListPos]; + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + guPositionF(sp20, rotX, rotY, rotZ, 1.0f, posX + width / 2, posY + height / 2, posZ); + if ((scaleX != 1.0f) || (scaleY != 1.0f)) { + guScaleF(sp60, scaleX, scaleY, 1.0f); + guMtxCatF(sp60, sp20, sp20); + } + if (rotScaleMtx != 0) { + guTranslateF(sp60, -translateX / 2, -translateY / 2, 0.0f); + guMtxCatF(sp20, sp60, sp60); + guMtxCatF(sp60, rotScaleMtx, sp20); + } + if (outMtx) { + for (k = 0; k < 4; k++) { + for (j = 0; j < 4; j++) { + outMtx[k][j] = sp20[k][j]; + } + } + } + guTranslateF(sp60, -160.0f, -120.0f, -320.0f); + guMtxCatF(sp20, sp60, sp20); + gSPClearGeometryMode(gMasterGfxPos++, G_CULL_BOTH | G_LIGHTING); + if (flags & DRAW_FLAGS_CULL_BACK) { + gSPSetGeometryMode(gMasterGfxPos++, G_CULL_BACK); + } + guMtxF2L(sp20, &gDisplayContext->matrixStack[gMatrixListPos]); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP); + gSPPerspNormalize(gMasterGfxPos++, 20); + } else { + gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE); + } + + gSPTexture(gMasterGfxPos++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPSetTextureLUT(gMasterGfxPos++, G_TT_NONE); + gDPSetTextureDetail(gMasterGfxPos++, G_TD_CLAMP); + gDPSetTextureLOD(gMasterGfxPos++, G_TL_TILE); + gDPSetPrimColor(gMasterGfxPos++, 0, 0, spF7, spFF, sp107, sp10F); + gDPSetEnvColor(gMasterGfxPos++, sp117, sp11F, sp127, sp12F); + if (backgroundImageData) { + switch (background->packedTileFormatLow) { + case G_IM_SIZ_4b: + gDPLoadTextureTile_4b(gMasterGfxPos++, backgroundImageData, sp140, bgWidth, bgHeight, 0, 0, bgWidth - 1, bgHeight - 1, 0, G_TX_WRAP, G_TX_WRAP, sp144, s6, G_TX_NOLOD, G_TX_NOLOD); + break; + case G_IM_SIZ_8b: + gDPLoadTextureTile(gMasterGfxPos++, backgroundImageData, sp140, G_IM_SIZ_8b, bgWidth, bgHeight, 0, 0, bgWidth - 1, bgHeight - 1, 0, G_TX_WRAP, G_TX_WRAP, sp144, s6, G_TX_NOLOD, G_TX_NOLOD); + break; + case G_IM_SIZ_16b: + gDPLoadTextureTile(gMasterGfxPos++, backgroundImageData, sp140, G_IM_SIZ_16b, bgWidth, bgHeight, 0, 0, bgWidth - 1, bgHeight - 1, 0, G_TX_WRAP, G_TX_WRAP, sp144, s6, G_TX_NOLOD, G_TX_NOLOD); + break; + case G_IM_SIZ_32b: + gDPLoadTextureTile(gMasterGfxPos++, backgroundImageData, sp140, G_IM_SIZ_32b, bgWidth, bgHeight, 0, 0, bgWidth - 1, bgHeight - 1, 0, G_TX_WRAP, G_TX_WRAP, sp144, s6, G_TX_NOLOD, G_TX_NOLOD); + break; + } + + if (flags & DRAW_FLAGS_2) { + bgScrollOffset = 511 - ((gGameStatusPtr->frameCounter * 4) & 0x1FF); + gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, + (width / 2 * 4) + (bgScrollOffset), + (height / 2 * 4) + (bgScrollOffset), + (width / 2 + bgWidth - 1) * 4 + (bgScrollOffset), + (height / 2 + bgHeight - 1) * 4 + (bgScrollOffset)); + } else { + gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, (width / 2 * 4), (height / 2 * 4), (width / 2 + bgWidth - new_var) * 4, (height / 2 + bgHeight - 1)* 4); + } + } + + if (sp13C != NULL) { + for (i = 0; i < 4; i++) { + cornerWidth = sp148[i].x; + cornerHeight = sp148[i].y; + a3 = _INTEGER_LOG2(cornerWidth); + t0 = _INTEGER_LOG2(cornerHeight); + + + switch (packedTileFormat) { + case G_IM_SIZ_4b: + gDPLoadMultiTile_4b(gMasterGfxPos++, sp13C, tmem, 1, sp14C, cornerWidth, cornerHeight, 0, 0, cornerWidth - 1, cornerHeight - 1, 0, G_TX_CLAMP, G_TX_CLAMP, a3, t0, G_TX_NOLOD, G_TX_NOLOD); + sp13C += cornerWidth * cornerHeight / 2; + break; + case G_IM_SIZ_8b: + gDPLoadMultiTile(gMasterGfxPos++, sp13C, tmem, 1, sp14C, G_IM_SIZ_8b, cornerWidth, cornerHeight, 0, 0, cornerWidth - 1, cornerHeight - 1, 0, G_TX_CLAMP, G_TX_CLAMP, a3, t0, G_TX_NOLOD, G_TX_NOLOD); + sp13C += cornerWidth * cornerHeight; + break; + case G_IM_SIZ_16b: + gDPLoadMultiTile(gMasterGfxPos++, sp13C, tmem, 1, sp14C, G_IM_SIZ_16b, cornerWidth, cornerHeight, 0, 0, cornerWidth - 1, cornerHeight - 1, 0, G_TX_CLAMP, G_TX_CLAMP, a3, t0, G_TX_NOLOD, G_TX_NOLOD); + sp13C += cornerWidth * cornerHeight * 2; + break; + case G_IM_SIZ_32b: + gDPLoadMultiTile(gMasterGfxPos++, sp13C, tmem, 1, sp14C, G_IM_SIZ_32b, cornerWidth, cornerHeight, 0, 0, cornerWidth - 1, cornerHeight - 1, 0, G_TX_CLAMP, G_TX_CLAMP, a3, t0, G_TX_NOLOD, G_TX_NOLOD); + sp13C += cornerWidth * cornerHeight * 4; + break; + } + + switch (i) { + case 1: + gDPSetTileSize(gMasterGfxPos++, 1, (width - cornerWidth) * 4, 0, (width - 1) * 4, (cornerHeight - 1) * 4); + break; + case 2: + gDPSetTileSize(gMasterGfxPos++, 1, 0, (height - cornerHeight) * 4, (cornerWidth - 1) * 4, (height - 1) * 4); + break; + case 3: + gDPSetTileSize(gMasterGfxPos++, 1, (width - cornerWidth) * 4, (height - cornerHeight) * 4, (width - 1) * 4, (height - 1) * 4); + break; + } + + if (fp) { + switch (i) { + case 0: + fp[0].v.ob[0] = -width / 2; + fp[0].v.ob[1] = -height / 2; + fp[0].v.ob[2] = 0; + + fp[1].v.ob[0] = 0; + fp[1].v.ob[1] = -height / 2; + fp[1].v.ob[2] = 0; + + fp[2].v.ob[0] = -width / 2; + fp[2].v.ob[1] = 0; + fp[2].v.ob[2] = 0; + + fp[3].v.ob[0] = 0; + fp[3].v.ob[1] = 0; + fp[3].v.ob[2] = 0; + + fp[0].v.tc[0] = 0; + fp[0].v.tc[1] = 0; + + fp[1].v.tc[0] = (width / 2) * 32; + fp[1].v.tc[1] = 0; + + fp[2].v.tc[0] = 0; + fp[2].v.tc[1] = (height / 2) * 32; + + fp[3].v.tc[0] = (width / 2) * 32; + fp[3].v.tc[1] = (height / 2) * 32; + break; + case 1: + fp[4].v.ob[0] = 0; + fp[4].v.ob[1] = -height / 2; + fp[4].v.ob[2] = 0; + + fp[5].v.ob[0] = (-width / 2) + width; + fp[5].v.ob[1] = -height / 2; + fp[5].v.ob[2] = 0; + + fp[6].v.ob[0] = 0; + fp[6].v.ob[1] = 0; + fp[6].v.ob[2] = 0; + + fp[7].v.ob[0] = (-width / 2) + width; + fp[7].v.ob[1] = 0; + fp[7].v.ob[2] = 0; + + fp[4].v.tc[0] = (width / 2) * 32; + fp[4].v.tc[1] = 0; + + fp[5].v.tc[0] = width * 32; + fp[5].v.tc[1] = 0; + + fp[6].v.tc[0] = (width / 2) * 32; + fp[6].v.tc[1] = (height / 2) * 32; + + fp[7].v.tc[0] = width * 32; + fp[7].v.tc[1] = (height / 2) * 32; + + fp += 4; + break; + case 2: + fp[8].v.ob[0] = -width / 2; + fp[8].v.ob[1] = 0; + fp[8].v.ob[2] = 0; + + fp[9].v.ob[0] = 0; + fp[9].v.ob[1] = 0; + fp[9].v.ob[2] = 0; + + fp[10].v.ob[0] = -width / 2; + fp[10].v.ob[1] = height / 2; + fp[10].v.ob[2] = 0; + + fp[11].v.ob[0] = 0; + fp[11].v.ob[1] = height / 2; + fp[11].v.ob[2] = 0; + + fp[8].v.tc[0] = 0; + fp[8].v.tc[1] = (height / 2) * 32; + + fp[9].v.tc[0] = (width / 2) * 32; + fp[9].v.tc[1] = (height / 2) * 32; + + fp[10].v.tc[0] = 0; + fp[10].v.tc[1] = height * 32; + + fp[11].v.tc[0] = (width / 2) * 32; + fp[11].v.tc[1] = height * 32; + + fp += 8; + break; + case 3: + fp[12].v.ob[0] = 0; + fp[12].v.ob[1] = 0; + fp[12].v.ob[2] = 0; + + fp[13].v.ob[0] = (-width / 2) + width; + fp[13].v.ob[1] = 0; + fp[13].v.ob[2] = 0; + + fp[14].v.ob[0] = 0; + fp[14].v.ob[1] = height / 2; + fp[14].v.ob[2] = 0; + + fp[15].v.ob[0] = (-width / 2) + width; + fp[15].v.ob[1] = height / 2; + fp[15].v.ob[2] = 0; + + fp[12].v.tc[0] = (width / 2) * 32; + fp[12].v.tc[1] = (height / 2) * 32; + + fp[13].v.tc[0] = width * 32; + fp[13].v.tc[1] = (height / 2) * 32; + + fp[14].v.tc[0] = (width / 2) * 32; + fp[14].v.tc[1] = height * 32; + + fp[15].v.tc[0] = width * 32; + fp[15].v.tc[1] = height * 32; + + fp += 12; + break; + } + gSPVertex(gMasterGfxPos++, fp, 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 3, 1, 0, 0, 2, 3, 0); + } else { + switch (i) { + case 0: + gSPScisTextureRectangle(gMasterGfxPos++, posX * 4, posY * 4, (posX + width / 2) * 4, (posY + height / 2) * 4, G_TX_RENDERTILE, 0, 0, 0x400, 0x400); + break; + case 1: + gSPScisTextureRectangle(gMasterGfxPos++, (posX + width / 2) * 4, posY * 4, (posX + width) * 4, (posY + height / 2) * 4, G_TX_RENDERTILE, (width / 2) * 32, 0, 0x400, 0x400); + break; + case 2: + gSPScisTextureRectangle(gMasterGfxPos++, posX * 4, (posY + height / 2) * 4, (posX + width / 2) * 4, (posY + height) * 4, G_TX_RENDERTILE, 0, (height / 2) * 32, 0x400, 0x400); + break; + case 3: + gSPScisTextureRectangle(gMasterGfxPos++, (posX + width / 2) * 4, (posY + height / 2) * 4, (posX + width) * 4, (posY + height) * 4, G_TX_RENDERTILE, (width / 2) * 32, (height / 2) * 32, 0x400, 0x400); + break; + } + + } + gDPPipeSync(gMasterGfxPos++); + } + } else if (backgroundImageData != NULL) { + if (fp != NULL) { + fp[0].v.ob[0] = -width / 2; + fp[0].v.ob[1] = -height / 2; + fp[0].v.ob[2] = 0; + + fp[1].v.ob[0] = (-width / 2) + width; + fp[1].v.ob[1] = -height / 2; + fp[1].v.ob[2] = 0; + + fp[2].v.ob[0] = -width / 2; + fp[2].v.ob[1] = height / 2; + fp[2].v.ob[2] = 0; + + fp[3].v.ob[0] = (-width / 2) + width; + fp[3].v.ob[1] = height / 2; + fp[3].v.ob[2] = 0; + + + fp[0].v.tc[0] = 0; + fp[0].v.tc[1] = 0; + + fp[1].v.tc[1] = 0; + fp[1].v.tc[0] = width * 32; + + fp[2].v.tc[0] = 0; + fp[2].v.tc[1] = height * 32; + + fp[3].v.tc[0] = width * 32; + fp[3].v.tc[1] = height * 32; + + gSPVertex(gMasterGfxPos++, &fp[0], 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 3, 1, 0, 0, 2, 3, 0); + } else { + gSPScisTextureRectangle(gMasterGfxPos++, posX * 4, posY * 4, (posX + width) * 4, (posY + height) * 4, + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + } + gDPPipeSync(gMasterGfxPos++); + } + + gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE); + gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE); + if (fpDrawContents != NULL) { + if (fp != NULL) { + s32 mdl_address = mdl_get_next_texture_address(width * height * 2); + if (mdl_address != 0) { + gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, width, OS_K0_TO_PHYSICAL(mdl_address)); + gDPSetScissorFrac(gMasterGfxPos++, G_SC_NON_INTERLACE, 0, 0, width * 4.0f, height * 4.0f); + gDPSetCycleType(gMasterGfxPos++, G_CYC_FILL); + gDPSetFillColor(gMasterGfxPos++, PACK_FILL_COLOR(spF7, spFF, sp107, 0)); + gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2); + gDPFillRectangle(gMasterGfxPos++, 0, 0, width - 1, height - 1); + gDPPipeSync(gMasterGfxPos++); + gDPSetScissorFrac(gMasterGfxPos++, G_SC_NON_INTERLACE, 4, 4, (width - 1) * 4.0f, (height - 1) * 4.0f); + gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE); + + fpDrawContents(drawContentsArg0, 0, 0, width, height, opacity, darkening); + + gDPPipeSync(gMasterGfxPos++); + gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, OS_K0_TO_PHYSICAL(nuGfxCfb_ptr)); + gDPSetScissor(gMasterGfxPos++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + gSPViewport(gMasterGfxPos++, &D_8010BBB8); + gSPMatrix(gMasterGfxPos++, sp154, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPTexture(gMasterGfxPos++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE); + gDPSetTextureLUT(gMasterGfxPos++, G_TT_NONE); + gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA); + gDPSetRenderMode(gMasterGfxPos++, G_RM_CLD_SURF, G_RM_NOOP2); + gDPSetTexturePersp(gMasterGfxPos++, G_TP_PERSP); + gDPSetTextureFilter(gMasterGfxPos++, G_TF_BILERP); + guTranslateF(spA0, 0.0f, 6.0f, 0.0f); + guMtxF2L(spA0, &D_8010BC08); + guTranslateF(spA0, 0.0f, -height / 2, 0.0f); + guMtxF2L(spA0, &gDisplayContext->matrixStack[gMatrixListPos]); + gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], + G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + for (i = 0; i < height / 6; i++) { + s32 v0, a2; + if (i == height / 6 - 1) { + v0 = 0; + if (height % 6 != 0) { + v0 = 1; + } + } else { + v0 = 1; + } + a2 = v0 + 5; + gDPLoadTextureTile(gMasterGfxPos++, OS_K0_TO_PHYSICAL(mdl_address), G_IM_FMT_RGBA, G_IM_SIZ_16b, width, 0, + 0, i * 6, width - 1, i * 6 + a2, 0, + G_TX_CLAMP, G_TX_CLAMP, 9, 3, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, (160 - width / 2) * 4, 0, ((160 - width / 2) + width - 1) * 4, a2 * 4); + gSPVertex(gMasterGfxPos++, &vtx_drawbox1, 4, 0); + gSP2Triangles(gMasterGfxPos++, 0, 3, 1, 0, 0, 2, 3, 0); + gDPPipeSync(gMasterGfxPos++); + gSPMatrix(gMasterGfxPos++, &D_8010BC08, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + } + } + } + else { + fpDrawContents(drawContentsArg0, posX, posY, width, height, opacity, darkening); + } + } + if (fp != NULL) { + gSPPopMatrix(gMasterGfxPos++, G_MTX_MODELVIEW); + gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE); + gDPPipeSync(gMasterGfxPos++); + } + return FALSE; +} +#else INCLUDE_ASM(void, "8e790_len_2850", draw_box, s32 flags, WindowStyle windowStyle, s32 posX, s32 posY, s32 posZ, s32 width, s32 height, s32 opacity, s32 darkening, f32 scaleX, f32 scaleY, f32 rotX, f32 rotY, f32 rotZ, void (*fpDrawContents)(s32),s32 drawContentsArg0, Matrix4f rotScaleMtx, s32 translateX, s32 translateY, f32 (*outMtx)[4]); - +#endif diff --git a/src/audio/25f00_len_940.c b/src/audio/25f00_len_940.c index 4d364d124a..63d29bd429 100644 --- a/src/audio/25f00_len_940.c +++ b/src/audio/25f00_len_940.c @@ -3,6 +3,8 @@ #include "nu/nualsgi.h" #include "audio.h" +NOP_FIX + u8 nuAuPreNMI = 0; NUAuPreNMIFunc nuAuPreNMIFunc = NULL; s32 nuAuDmaNext = 0; @@ -293,10 +295,7 @@ void nuAuCleanDMABuffers(void) { } while (0); } -// Nop issue -// try again when bss is figured out up until this file // rename: default_nuAuPreNMIFunc -#ifdef NON_MATCHING void func_8004B328(NUScMsg mesg_type, u32 frameCounter) { s16 temp; s32 temp2; @@ -323,9 +322,6 @@ void func_8004B328(NUScMsg mesg_type, u32 frameCounter) { break; } } -#else -INCLUDE_ASM(s32, "audio/25f00_len_940", func_8004B328); -#endif void alLink(ALLink* element, ALLink* after) { element->next = after->next; diff --git a/src/crash_screen.c b/src/crash_screen.c index e87c0e04a5..866d4f0a81 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -1,6 +1,7 @@ #include "common.h" #include "stdlib/stdarg.h" #include "PR/os_internal_thread.h" +#include "libc/xstdio.h" typedef struct { /* 0x000 */ OSThread thread; @@ -142,7 +143,7 @@ void crash_screen_draw_glyph(s32 x, s32 y, s32 glyph) { } } -void* crash_screen_copy_to_buf(void* dest, const char* src, u32 size) { +char* crash_screen_copy_to_buf(char* dest, const char* src, size_t size) { memcpy(dest, src, size); return dest + size; } diff --git a/src/main.c b/src/main.c index f282ead5e0..fcc49a7ca9 100644 --- a/src/main.c +++ b/src/main.c @@ -26,7 +26,7 @@ extern s16 D_80073E0A; extern s32 D_80073E10[]; extern u16* D_8009A680; -void boot_main(void) { +void boot_main(void* data) { #ifdef VERSION_JP if (osTvType == OS_TV_NTSC) { nuGfxDisplayOff(); diff --git a/src/npc.c b/src/npc.c index 0769fbe295..5b89fb2eb1 100644 --- a/src/npc.c +++ b/src/npc.c @@ -805,7 +805,7 @@ void appendGfx_npc(void* data) { spr_draw_npc_sprite(npc->spriteInstanceID, renderYaw, 0, 0, mtx1); } } else { - spr_draw_player_sprite(0x40000001, renderYaw, 0, 0, mtx1); + spr_draw_player_sprite(1 | DRAW_SPRITE_OVERRIDE_YAW, renderYaw, 0, 0, mtx1); } } @@ -835,7 +835,7 @@ void appendGfx_npc(void* data) { spr_draw_npc_sprite(npc->spriteInstanceID, renderYaw, 0, 0, mtx1); } } else { - spr_draw_player_sprite(0x40000001, renderYaw, 0, 0, mtx1); + spr_draw_player_sprite(1 | DRAW_SPRITE_OVERRIDE_YAW, renderYaw, 0, 0, mtx1); } } npc->onRender(npc); @@ -1095,7 +1095,7 @@ void appendGfx_npc_blur(Npc* npc) { spr_draw_npc_sprite(npc->spriteInstanceID, (s32) yaw, 0, 0, sp20); } } else { - spr_draw_player_sprite(0x40000001, (s32) yaw, 0, 0, sp20); + spr_draw_player_sprite(1 | DRAW_SPRITE_OVERRIDE_YAW, (s32) yaw, 0, 0, sp20); } } } @@ -1244,7 +1244,7 @@ void npc_draw_palswap_mode_0(Npc* npc, s32 arg1, Matrix4f mtx) { } spr_draw_npc_sprite(npc->spriteInstanceID | mask, arg1, alpha, NULL, mtx); } else { - spr_draw_player_sprite(0x40000001, arg1, 0, 0, mtx); + spr_draw_player_sprite(1 | DRAW_SPRITE_OVERRIDE_YAW, arg1, 0, 0, mtx); } } diff --git a/src/os/39cb0_len_100.c b/src/os/nusys/nuboot.c similarity index 60% rename from src/os/39cb0_len_100.c rename to src/os/nusys/nuboot.c index abcf63a16f..9289ba851a 100644 --- a/src/os/39cb0_len_100.c +++ b/src/os/nusys/nuboot.c @@ -3,25 +3,25 @@ #include "functions.h" #include "variables.h" -// TODO: create src/os/nusys/nuSched.h? +NOP_FIX + extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; void nuBoot(void) { osInitialize(); - osCreateThread(&D_800A4270, NU_IDLE_THREAD_ID, boot_idle, NULL, &nuScStack, 10); - osStartThread(&D_800A4270); + osCreateThread(&IdleThread, NU_IDLE_THREAD_ID, boot_idle, NULL, &nuScStack, 10); + osStartThread(&IdleThread); } -#ifdef NON_EQUIVALENT void boot_idle(void* data) { nuIdleFunc = NULL; nuPiInit(); nuScCreateScheduler(OS_VI_NTSC_LAN1, 1); osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF | OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON); - osCreateThread(&D_800A4420, NU_MAIN_THREAD_ID, boot_main, NULL, &nuYieldBuf, NU_MAIN_THREAD_PRI); - osStartThread(&D_800A4420); - osSetThreadPri(&D_800A4270, NU_IDLE_THREAD_PRI); + osCreateThread(&MainThread, NU_MAIN_THREAD_ID, boot_main, NULL, &nuYieldBuf, NU_MAIN_THREAD_PRI); + osStartThread(&MainThread); + osSetThreadPri(&IdleThread, NU_IDLE_THREAD_PRI); while (1) { if (nuIdleFunc != NULL) { @@ -29,6 +29,3 @@ void boot_idle(void* data) { } } } -#else -INCLUDE_ASM(void, "os/39cb0_len_100", boot_idle, void); -#endif diff --git a/src/os/nusys/nuContDataGet.c b/src/os/nusys/nucontdataget.c similarity index 100% rename from src/os/nusys/nuContDataGet.c rename to src/os/nusys/nucontdataget.c diff --git a/src/os/nusys/nuContDataLock.c b/src/os/nusys/nucontdatalock.c similarity index 100% rename from src/os/nusys/nuContDataLock.c rename to src/os/nusys/nucontdatalock.c diff --git a/src/os/nusys/nuContInit.c b/src/os/nusys/nucontinit.c similarity index 100% rename from src/os/nusys/nuContInit.c rename to src/os/nusys/nucontinit.c diff --git a/src/os/nusys/nuContMgr.c b/src/os/nusys/nucontmgr.c similarity index 75% rename from src/os/nusys/nuContMgr.c rename to src/os/nusys/nucontmgr.c index 38b35b65d8..145eff3bf4 100644 --- a/src/os/nusys/nuContMgr.c +++ b/src/os/nusys/nucontmgr.c @@ -1,15 +1,17 @@ #include "common.h" #include "nu/nusys.h" -s32 contRetrace(void); -s32 contReadData(s32* arg0); +NOP_FIX + +s32 contRetrace(NUSiCommonMesg* mesg); +s32 contReadData(OSContPad* pad, u32 lockflag); s32 contReadNW(void); s32 contQuery(void); -u32 D_80093D20 = 0; +NUContReadFunc nuContReadFunc = NULL; s32(*D_80093D24[4])(void) = { - contRetrace, + (s32 (*) (void)) contRetrace, (s32 (*) (void)) contReadData, contReadNW, contQuery, @@ -24,9 +26,9 @@ NUCallBackList nuContCallBack = { 0, }; -OSMesg nuContWaitMesgBuf; -OSMesg nuContDataMutexBuf; -OSMesgQueue nuContDataMutexQ; +extern OSMesg nuContWaitMesgBuf; +extern OSMesg nuContDataMutexBuf; +extern OSMesgQueue nuContDataMutexQ; u8 nuContMgrInit(void) { s32 i; @@ -64,21 +66,18 @@ void nuContMgrRemove(void) { void nuContDataClose(void) { osSendMesg(&nuContDataMutexQ, NULL, OS_MESG_BLOCK); - } void nuContDataOpen(void) { osRecvMesg(&nuContDataMutexQ, NULL, OS_MESG_BLOCK); } -INCLUDE_ASM(s32, "os/nusys/nuContMgr", contRetrace); +INCLUDE_ASM(s32, "os/nusys/nucontmgr", contRetrace); -INCLUDE_ASM(s32, "os/nusys/nuContMgr", contReadData); +INCLUDE_ASM(s32, "os/nusys/nucontmgr", contReadData); -INCLUDE_ASM(s32, "os/nusys/nuContMgr", contReadNW); +INCLUDE_ASM(s32, "os/nusys/nucontmgr", contReadNW); -// nuContStatus needs to be declared in this file. -#ifdef NON_MATCHING s32 contQuery(void) { s32 ret = osContStartQuery(&nuSiMesgQ); @@ -91,6 +90,3 @@ s32 contQuery(void) { return ret; } -#else -INCLUDE_ASM(s32, "os/nusys/nuContMgr", contQuery); -#endif diff --git a/src/os/nusys/nuContPakMgr.c b/src/os/nusys/nucontpakmgr.c similarity index 100% rename from src/os/nusys/nuContPakMgr.c rename to src/os/nusys/nucontpakmgr.c diff --git a/src/os/nusys/nuContQueryRead.c b/src/os/nusys/nucontqueryread.c similarity index 100% rename from src/os/nusys/nuContQueryRead.c rename to src/os/nusys/nucontqueryread.c diff --git a/src/os/nusys/nuContRmbCheck.c b/src/os/nusys/nucontrmbcheck.c similarity index 100% rename from src/os/nusys/nuContRmbCheck.c rename to src/os/nusys/nucontrmbcheck.c diff --git a/src/os/nusys/nuContRmbForceStop.c b/src/os/nusys/nucontrmbforcestop.c similarity index 100% rename from src/os/nusys/nuContRmbForceStop.c rename to src/os/nusys/nucontrmbforcestop.c diff --git a/src/os/nusys/nuContRmbForceStopEnd.c b/src/os/nusys/nucontrmbforcestopend.c similarity index 100% rename from src/os/nusys/nuContRmbForceStopEnd.c rename to src/os/nusys/nucontrmbforcestopend.c diff --git a/src/os/nusys/nuContRmbMgr.c b/src/os/nusys/nucontrmbmgr.c similarity index 100% rename from src/os/nusys/nuContRmbMgr.c rename to src/os/nusys/nucontrmbmgr.c diff --git a/src/os/nusys/nuContRmbModeSet.c b/src/os/nusys/nucontrmbmodeset.c similarity index 100% rename from src/os/nusys/nuContRmbModeSet.c rename to src/os/nusys/nucontrmbmodeset.c diff --git a/src/os/nusys/nuContRmbStart.c b/src/os/nusys/nucontrmbstart.c similarity index 100% rename from src/os/nusys/nuContRmbStart.c rename to src/os/nusys/nucontrmbstart.c diff --git a/src/os/nusys/nuGfxDisplayOff.c b/src/os/nusys/nugfxdisplayoff.c similarity index 100% rename from src/os/nusys/nuGfxDisplayOff.c rename to src/os/nusys/nugfxdisplayoff.c diff --git a/src/os/nusys/nuGfxDisplayOn.c b/src/os/nusys/nugfxdisplayon.c similarity index 100% rename from src/os/nusys/nuGfxDisplayOn.c rename to src/os/nusys/nugfxdisplayon.c diff --git a/src/os/nusys/nuGfxFuncSet.c b/src/os/nusys/nugfxfuncset.c similarity index 100% rename from src/os/nusys/nuGfxFuncSet.c rename to src/os/nusys/nugfxfuncset.c diff --git a/src/os/nusys/nuGfxInit.c b/src/os/nusys/nugfxinit.c similarity index 100% rename from src/os/nusys/nuGfxInit.c rename to src/os/nusys/nugfxinit.c diff --git a/src/os/nusys/nuGfxPreNMIFuncSet.c b/src/os/nusys/nugfxprenmifuncset.c similarity index 100% rename from src/os/nusys/nuGfxPreNMIFuncSet.c rename to src/os/nusys/nugfxprenmifuncset.c diff --git a/src/os/nusys/nuGfxRetraceWait.c b/src/os/nusys/nugfxretracewait.c similarity index 100% rename from src/os/nusys/nuGfxRetraceWait.c rename to src/os/nusys/nugfxretracewait.c diff --git a/src/os/nusys/nuGfxSetCfb.c b/src/os/nusys/nugfxsetcfb.c similarity index 100% rename from src/os/nusys/nuGfxSetCfb.c rename to src/os/nusys/nugfxsetcfb.c diff --git a/src/os/nusys/nuGfxSwapCfb.c b/src/os/nusys/nugfxswapcfb.c similarity index 100% rename from src/os/nusys/nuGfxSwapCfb.c rename to src/os/nusys/nugfxswapcfb.c diff --git a/src/os/nusys/nuGfxSwapCfbFuncSet.c b/src/os/nusys/nugfxswapcfbfuncset.c similarity index 100% rename from src/os/nusys/nuGfxSwapCfbFuncSet.c rename to src/os/nusys/nugfxswapcfbfuncset.c diff --git a/src/os/nusys/nuGfxTaskAllEndWait.c b/src/os/nusys/nugfxtaskallendwait.c similarity index 100% rename from src/os/nusys/nuGfxTaskAllEndWait.c rename to src/os/nusys/nugfxtaskallendwait.c diff --git a/src/os/nusys/nuGfxTaskMgr.c b/src/os/nusys/nugfxtaskmgr.c similarity index 100% rename from src/os/nusys/nuGfxTaskMgr.c rename to src/os/nusys/nugfxtaskmgr.c diff --git a/src/os/nusys/nuGfxThread.c b/src/os/nusys/nugfxthread.c similarity index 100% rename from src/os/nusys/nuGfxThread.c rename to src/os/nusys/nugfxthread.c diff --git a/src/os/nusys/nuPiInit.c b/src/os/nusys/nupiinit.c similarity index 100% rename from src/os/nusys/nuPiInit.c rename to src/os/nusys/nupiinit.c diff --git a/src/os/nusys/nuPiReadRom.c b/src/os/nusys/nupireadrom.c similarity index 100% rename from src/os/nusys/nuPiReadRom.c rename to src/os/nusys/nupireadrom.c diff --git a/src/os/nusys/nuPiReadRomOverlay.c b/src/os/nusys/nupireadromoverlay.c similarity index 100% rename from src/os/nusys/nuPiReadRomOverlay.c rename to src/os/nusys/nupireadromoverlay.c diff --git a/src/os/nusys/nuSched.c b/src/os/nusys/nusched.c similarity index 90% rename from src/os/nusys/nuSched.c rename to src/os/nusys/nusched.c index 74c84f8384..252792cf96 100644 --- a/src/os/nusys/nuSched.c +++ b/src/os/nusys/nusched.c @@ -1,17 +1,18 @@ #include "common.h" #include "nu/nusys.h" -s32 D_80093B80 = 0; +NOP_FIX -s32 D_80093B84[] = { - 0x4E755379, 0x7374656D, 0x322E3035, 0x00000000 -}; +NUScPreNMIFunc nuScPreNMIFunc = NULL; -s32* D_80093B94 = D_80093B84; +char nusys_version[] = "NuSystem2.05"; + +u32 nuScRetraceCounter = (u32) nusys_version; // wtf? void nuScEventHandler(void); void nuScExecuteAudio(void); void nuScExecuteGraphics(void); +void nuScEventBroadcast(NUScMsg* msg); void nuScWaitTaskReady(NUScTask* task); extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; @@ -204,43 +205,22 @@ void nuScResetClientMesgType(NUScClient* client, NUScMsg msgType) { osSetIntMask(mask); } -#ifdef NON_MATCHING -// This should match when data is decompiled. OSMesgQueue* nuScGetGfxMQ(void) { return &nusched.graphicsRequestMQ; } -#else -INCLUDE_ASM(OSMesgQueue*, "os/nusys/nuSched", nuScGetGfxMQ, void); -#endif -#ifdef NON_MATCHING -// This should match when data is decompiled. OSMesgQueue* nuScGetAudioMQ(void) { return &nusched.audioRequestMQ; } -#else -INCLUDE_ASM(OSMesgQueue*, "os/nusys/nuSched", nuScGetAudioMQ, void); -#endif -#ifdef NON_MATCHING -// This should match when data is decompiled. void nuScSetFrameBufferNum(u8 frameBufferNum) { nusched.frameBufferNum = frameBufferNum; } -#else -INCLUDE_ASM(void, "os/nusys/nuSched", nuScSetFrameBufferNum, u8 frameBufferNum); -#endif -#ifdef NON_MATCHING -// This should match when data is decompiled. s32 nuScGetFrameRate(void) { return nusched.frameRate; } -#else -INCLUDE_ASM(s32, "os/nusys/nuSched", nuScGetFrameRate, void); -#endif -#ifdef NON_MATCHING void nuScEventHandler(void) { OSMesg msg; s32 beforeResetFrame; @@ -282,9 +262,6 @@ void nuScEventHandler(void) { } } } -#else -INCLUDE_ASM(s32, "os/nusys/nuSched", nuScEventHandler, void); -#endif void nuScEventBroadcast(NUScMsg* msg) { NUScClient* clientList = nusched.clientList; @@ -297,4 +274,4 @@ void nuScEventBroadcast(NUScMsg* msg) { } } -INCLUDE_ASM(void, "os/nusys/nuSched", nuScWaitTaskReady); +INCLUDE_ASM(void, "os/nusys/nusched", nuScWaitTaskReady); diff --git a/src/os/nusys/nuSiCallBackAdd.c b/src/os/nusys/nusicallbackadd.c similarity index 100% rename from src/os/nusys/nuSiCallBackAdd.c rename to src/os/nusys/nusicallbackadd.c diff --git a/src/os/nusys/nuSiCallBackRemove.c b/src/os/nusys/nusicallbackremove.c similarity index 100% rename from src/os/nusys/nuSiCallBackRemove.c rename to src/os/nusys/nusicallbackremove.c diff --git a/src/os/nusys/nuSiMgr.c b/src/os/nusys/nusimgr.c similarity index 100% rename from src/os/nusys/nuSiMgr.c rename to src/os/nusys/nusimgr.c diff --git a/src/world/area_jan/jan_03/func_80240350_BDAB00.s b/src/world/area_jan/jan_03/func_80240350_BDAB00.s index 4cde28caf9..65b508f73c 100644 --- a/src/world/area_jan/jan_03/func_80240350_BDAB00.s +++ b/src/world/area_jan/jan_03/func_80240350_BDAB00.s @@ -8,7 +8,7 @@ dlabel D_802429E8_BDD198 .section .text -glabel func_80240350_BDAB00 +glabel obk_09_LoadPartyImage /* BDAB00 80240350 27BDFFD8 */ addiu $sp, $sp, -0x28 /* BDAB04 80240354 3C048024 */ lui $a0, %hi(D_802429E8_BDD198) /* BDAB08 80240358 248429E8 */ addiu $a0, $a0, %lo(D_802429E8_BDD198) diff --git a/src/world/area_jan/jan_04/B45150.c b/src/world/area_jan/jan_04/B45150.c index 5d743f692c..ae08332912 100644 --- a/src/world/area_jan/jan_04/B45150.c +++ b/src/world/area_jan/jan_04/B45150.c @@ -1,6 +1,26 @@ #include "jan_04.h" -// TODO(data) -//#define PARTY_IMAGE "party_opuku" -//#include "world/common/todo/LoadPartyImage.inc.c" -INCLUDE_ASM(s32, "world/area_jan/jan_04/B45150", func_802409E0_B45150); +#define PARTY_IMAGE "party_opuku" +// #include "world/common/todo/LoadPartyImage.inc.c" +API_CALLABLE(N(LoadPartyImage)) { + static PAL_BIN palette[256]; + static IMG_BIN raster[0x3DA0]; // similar to LoadPartyImage include but with 0x10 bytes added for padding + static MessageImageData image; + + u32 decompressedSize; + void* compressed = load_asset_by_name(PARTY_IMAGE, &decompressedSize); + + decode_yay0(compressed, &palette); + general_heap_free(compressed); + + image.raster = raster; + image.palette = palette; + image.width = 150; + image.height = 105; + image.format = G_IM_FMT_CI; + image.bitDepth = G_IM_SIZ_8b; + set_message_images(&image); + return ApiStatus_DONE2; +} + +const char* N(exit_str_2) = "flo_00\0\0\0\0\0\0\0"; diff --git a/src/world/area_kmr/kmr_02/8B37D0.c b/src/world/area_kmr/kmr_02/8B37D0.c index c8a6c0be7a..ca86c074d3 100644 --- a/src/world/area_kmr/kmr_02/8B37D0.c +++ b/src/world/area_kmr/kmr_02/8B37D0.c @@ -1,4 +1,3 @@ #include "kmr_02.h" #include "common/foliage.inc.c" - diff --git a/src/world/area_kmr/kmr_02/8B3A10.c b/src/world/area_kmr/kmr_02/8B3A10.c index 09bcdde105..19cda03d69 100644 --- a/src/world/area_kmr/kmr_02/8B3A10.c +++ b/src/world/area_kmr/kmr_02/8B3A10.c @@ -1,3 +1,8 @@ #include "kmr_02.h" -INCLUDE_ASM(s32, "world/area_kmr/kmr_02/8B3A10", func_802439A0_8B3A10); +INCLUDE_ASM(s32, "world/area_kmr/kmr_02/8B3A10", kmr_02_LoadPartyImage); + +// #define PARTY_IMAGE "party_kurio" +// #include "world/common/todo/LoadPartyImage.inc.c" + +// const char padding[0x220] = {0}; diff --git a/src/world/area_nok/nok_01/9C53E0.c b/src/world/area_nok/nok_01/9C53E0.c index 855261421c..d457e5737b 100644 --- a/src/world/area_nok/nok_01/9C53E0.c +++ b/src/world/area_nok/nok_01/9C53E0.c @@ -163,20 +163,14 @@ ApiStatus func_802428B8_9C7C98(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -// Requires BSS -#ifdef NON_MATCHING ApiStatus func_802428D8_9C7CB8(Evt* script, s32 isInitialCall) { - static s16 D_80250810_9D5BF0[] = { 0, 2, 1, 4 }; - Bytecode* args = script->ptrReadPos; s32 index = evt_get_variable(script, *args++); + NOP_FIX // TODO: REMOVE WHEN DATA (D_80250810_9D5BF0) IS MIGRATED snd_ambient_80055848(D_80250810_9D5BF0[index]); return ApiStatus_DONE2; } -#else -INCLUDE_ASM(s32, "world/area_nok/nok_01/9C53E0", func_802428D8_9C7CB8); -#endif ApiStatus func_80242910_9C7CF0(Evt* script, s32 isInitialCall) { gPlayerData.tradeEventStartTime = gPlayerData.frameCounter; diff --git a/src/world/area_nok/nok_02/9D7AA0.c b/src/world/area_nok/nok_02/9D7AA0.c index 52995dba5b..9d1aca4ec8 100644 --- a/src/world/area_nok/nok_02/9D7AA0.c +++ b/src/world/area_nok/nok_02/9D7AA0.c @@ -75,13 +75,11 @@ ApiStatus func_80243010_9DA030(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -// float regalloc -#ifdef NON_MATCHING ApiStatus func_802430CC_9DA0EC(Evt* script, s32 isInitialCall) { PlayerStatus* playerStatus = &gPlayerStatus; Bytecode* args = script->ptrReadPos; - Npc* npc1 = evt_get_variable(script, *args++); - Npc* npc2 = evt_get_variable(script, *args++); + Npc* npc1 = (Npc*) evt_get_variable(script, *args++); + Npc* npc2 = (Npc*) evt_get_variable(script, *args++); s32 outVal = FALSE; f32 xDiff, zDiff; @@ -94,24 +92,25 @@ ApiStatus func_802430CC_9DA0EC(Evt* script, s32 isInitialCall) { script->varTable[2] = 0; } - xDiff = npc1->pos.x - playerStatus->position.x; - zDiff = npc1->pos.z - playerStatus->position.z; - if ((SQ(xDiff) + SQ(zDiff) < 6400.0f) && (script->varTable[2] >= 2)) { - outVal = TRUE; - } + do { + xDiff = npc1->pos.x - playerStatus->position.x; + zDiff = npc1->pos.z - playerStatus->position.z; + if ((SQ(xDiff) + SQ(zDiff) < 6400.0f) && (script->varTable[2] >= 2)) { + do { + outVal = TRUE; + } while (0); // TODO required to match + } - xDiff = npc1->pos.x - npc2->pos.x; - zDiff = npc1->pos.z - npc2->pos.z; - if (SQ(xDiff) + SQ(zDiff) < 1600.0f) { - outVal = TRUE; - } + xDiff = npc1->pos.x - npc2->pos.x; + zDiff = npc1->pos.z - npc2->pos.z; + if (SQ(xDiff) + SQ(zDiff) < 1600.0f) { + outVal = TRUE; + } + } while (0); // TODO required to match script->varTable[0] = outVal; return ApiStatus_DONE2; } -#else -INCLUDE_ASM(s32, "world/area_nok/nok_02/9D7AA0", func_802430CC_9DA0EC); -#endif ApiStatus func_80243214_9DA234(Evt* script, s32 isInitialCall) { PlayerStatus* playerStatus = &gPlayerStatus; diff --git a/src/world/area_nok/nok_02/9DA8F0.c b/src/world/area_nok/nok_02/9DA8F0.c index 2122823456..fa38ecc891 100644 --- a/src/world/area_nok/nok_02/9DA8F0.c +++ b/src/world/area_nok/nok_02/9DA8F0.c @@ -109,12 +109,51 @@ ApiStatus func_80243EC8_9DAEE8(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } +typedef struct UnkNok02 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ char unk_0C[0x4]; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; +} UnkNok02; // size = 0x1C + +extern UnkNok02 D_80252784_9E97A4[20]; +extern s32 D_802529B4_9E99D4; + +ApiStatus func_80243F10_9DAF30(Evt* script, s32 isInitialCall); INCLUDE_ASM(s32, "world/area_nok/nok_02/9DA8F0", func_80243F10_9DAF30); +ApiStatus func_80244078_9DB098(Evt* script, s32 isInitialCall); INCLUDE_ASM(s32, "world/area_nok/nok_02/9DA8F0", func_80244078_9DB098); -INCLUDE_ASM(s32, "world/area_nok/nok_02/9DA8F0", func_80244224_9DB244); +ApiStatus func_80244224_9DB244(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *args++) - 1; + UnkNok02* temp_v1 = &D_80252784_9E97A4[idx]; -INCLUDE_ASM(s32, "world/area_nok/nok_02/9DA8F0", func_80244288_9DB2A8); + script->varTable[0] = temp_v1->unk_00; + script->varTable[1] = temp_v1->unk_04; + script->varTable[2] = temp_v1->unk_08; + return ApiStatus_DONE2; +} -INCLUDE_ASM(s32, "world/area_nok/nok_02/9DA8F0", func_802442E0_9DB300); +ApiStatus func_80244288_9DB2A8(Evt* script, s32 isInitialCall) { + Bytecode* args = script->ptrReadPos; + + evt_set_variable(script, D_80252784_9E97A4[evt_get_variable(script, *args++) - 1].unk_14, 1); + return ApiStatus_DONE2; +} + +ApiStatus func_802442E0_9DB300(Evt* script, s32 isInitialCall) { + Bytecode *args = script->ptrReadPos; + s32 idx = evt_get_variable(script, *(args++)) - 1; + s32 val = D_80252784_9E97A4[idx].unk_18; + s16* typeFlags = &gItemTable[val].typeFlags; + + D_802529B4_9E99D4 = val; + script->varTable[0] = (*typeFlags & ITEM_TYPE_FLAG_CONSUMABLE) > 0; + script->varTable[1] = val; + return ApiStatus_DONE2; +} diff --git a/src/world/area_nok/nok_04/9EEA80.c b/src/world/area_nok/nok_04/9EEA80.c index 49211569fb..2a41e2588a 100644 --- a/src/world/area_nok/nok_04/9EEA80.c +++ b/src/world/area_nok/nok_04/9EEA80.c @@ -1,6 +1,4 @@ #include "nok_04.h" -// TODO(data) -//#define PARTY_IMAGE "party_kameki" -//#include "world/common/todo/LoadPartyImage.inc.c" -INCLUDE_ASM(s32, "world/area_nok/nok_04/9EEA80", func_80240E90_9EEA80); +#define PARTY_IMAGE "party_kameki" +#include "world/common/todo/LoadPartyImage.inc.c" diff --git a/src/world/area_obk/obk_01/BBD1A0.c b/src/world/area_obk/obk_01/BBD1A0.c index 110808449d..c9761f10c2 100644 --- a/src/world/area_obk/obk_01/BBD1A0.c +++ b/src/world/area_obk/obk_01/BBD1A0.c @@ -18,7 +18,19 @@ ApiStatus func_80240038_BBD1D8(Evt* script, s32 isInitialCall) { return ApiStatus_DONE2; } -INCLUDE_ASM(s32, "world/area_obk/obk_01/BBD1A0", func_8024007C_BBD21C); +ApiStatus func_8024007C_BBD21C(Evt* script, s32 isInitialCall) { + u32 pressedButtons = gGameStatusPtr->pressedButtons[0]; + s32 val; + + if (pressedButtons & BUTTON_A) { + val = TRUE; + } else { + val = FALSE; + } + script->varTable[6] = val; + return ApiStatus_DONE2; +} + INCLUDE_ASM(s32, "world/area_obk/obk_01/BBD1A0", func_80240098_BBD238); diff --git a/src/world/area_obk/obk_09/BDAB00.c b/src/world/area_obk/obk_09/BDAB00.c index 3baad94dd2..d83806025b 100644 --- a/src/world/area_obk/obk_09/BDAB00.c +++ b/src/world/area_obk/obk_09/BDAB00.c @@ -2,4 +2,7 @@ static char* N(exit_str_0) = "obk_01\0"; -INCLUDE_ASM(s32, "world/area_obk/obk_09/BDAB00", func_80240350_BDAB00); +#define PARTY_IMAGE "party_resa" +#include "world/common/todo/LoadPartyImage.inc.c" + +static char* N(exit_str_1) = "omo_03"; diff --git a/src/world/area_omo/omo_12/DDF310.c b/src/world/area_omo/omo_12/DDF310.c index 59bf62b3b6..24d1605889 100644 --- a/src/world/area_omo/omo_12/DDF310.c +++ b/src/world/area_omo/omo_12/DDF310.c @@ -26,3 +26,5 @@ ApiStatus func_802403D8_DDF6E8(Evt* script, s32 isInitialCall) { set_screen_overlay_params_back(0xB, 0.0f); return ApiStatus_DONE2; } + +BSS char N(bss_80241380)[0x10]; diff --git a/src/world/area_omo/omo_12/DDF730.c b/src/world/area_omo/omo_12/DDF730.c index ff841480dd..4ea8adab16 100644 --- a/src/world/area_omo/omo_12/DDF730.c +++ b/src/world/area_omo/omo_12/DDF730.c @@ -2,7 +2,5 @@ static char* N(exit_str_0) = "omo_11\0"; -// TODO(data) -//#define PARTY_IMAGE "party_akari" -//#include "world/common/todo/LoadPartyImage.inc.c" -INCLUDE_ASM(s32, "world/area_omo/omo_12/DDF730", func_80240420_DDF730); +#define PARTY_IMAGE "party_akari" +#include "world/common/todo/LoadPartyImage.inc.c" diff --git a/src/world/partner/bombette.c b/src/world/partner/bombette.c index 17c1f00571..ec01fa19fc 100644 --- a/src/world/partner/bombette.c +++ b/src/world/partner/bombette.c @@ -208,8 +208,6 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { f32* xPtr; f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_5; s32 var_v0_5; f32 temp1; @@ -285,32 +283,31 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { evt->functionTemp[1] = 10; } case 1: - if (!(playerStatus->actionState == 0x15 || playerStatus->actionState == 0x16)) { - npc->pos.y = playerStatus->position.y + playerStatus->colliderHeight; - npc->yaw = playerStatus->targetYaw; - if (evt->functionTemp[1] == 1) { - suggest_player_anim_clearUnkFlag(ANIM_Mario_60006); - } - - if (evt->functionTemp[1] != 0) { - evt->functionTemp[1]--; - break; - } - - sfx_play_sound_at_npc(SOUND_80000000, 0, -4); - D_802BE924 = 1; - add_vec2D_polar(&npc->pos.x, &npc->pos.z, 0.0f, npc->yaw); - npc->currentAnim = ANIM_WorldBombette_WalkLit; - npc->jumpVelocity = 0.0f; - D_802BE938 = 0; - npc->flags = (npc->flags | 0x200) & ~0x100; - npc->moveSpeed = 1.0f; - evt->functionTemp[0] = 2; - evt->functionTemp[1] = 50; - } else { + if (playerStatus->actionState == 0x15 || playerStatus->actionState == 0x16) { evt->functionTemp[1] = 7; break; } + npc->pos.y = playerStatus->position.y + playerStatus->colliderHeight; + npc->yaw = playerStatus->targetYaw; + if (evt->functionTemp[1] == 1) { + suggest_player_anim_clearUnkFlag(ANIM_Mario_60006); + } + + if (evt->functionTemp[1] != 0) { + evt->functionTemp[1]--; + break; + } + + sfx_play_sound_at_npc(SOUND_80000000, 0, -4); + D_802BE924 = 1; + add_vec2D_polar(&npc->pos.x, &npc->pos.z, 0.0f, npc->yaw); + npc->currentAnim = ANIM_WorldBombette_WalkLit; + npc->jumpVelocity = 0.0f; + D_802BE938 = 0; + npc->flags = (npc->flags | 0x200) & ~0x100; + npc->moveSpeed = 1.0f; + evt->functionTemp[0] = 2; + evt->functionTemp[1] = 50; case 2: if ((playerStatus->animFlags & 4) || (playerStatus->actionState == 0x15 || playerStatus->actionState == 0x16)) { evt->functionTemp[0] = 7; @@ -345,9 +342,9 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { } else { if (!(evt->functionTemp[1] & 3)) { if (gGameStatusPtr->frameCounter & 1) { - sfx_play_sound_at_npc(SOUND_141, 0, -4); + sfx_play_sound_at_npc(SOUND_STEP_NORMAL1, 0, -4); } else { - sfx_play_sound_at_npc(SOUND_142, 0, -4); + sfx_play_sound_at_npc(SOUND_STEP_NORMAL2, 0, -4); } } if (evt->functionTemp[1] == 40) { @@ -397,13 +394,13 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { switch (gPlayerData.partners[gPlayerData.currentPartner].level) { case 0: - sfx_play_sound_at_npc(SOUND_2016, 0, -4); + sfx_play_sound_at_npc(SOUND_CANNON1, 0, -4); break; case 1: - sfx_play_sound_at_npc(SOUND_2017, 0, -4); + sfx_play_sound_at_npc(SOUND_CANNON2, 0, -4); break; case 2: - sfx_play_sound_at_npc(SOUND_2018, 0, -4); + sfx_play_sound_at_npc(SOUND_CANNON3, 0, -4); break; } @@ -512,8 +509,8 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { if (D_802BE924 == 0) { return ApiStatus_DONE2; } + sfx_stop_sound(SOUND_80000000); // TODO swapping these causes tail merging that we don't want D_802BE924 = 0; - sfx_stop_sound(SOUND_80000000); return ApiStatus_DONE2; case 8: if (D_802BE92C != 0) { @@ -535,12 +532,11 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { xPtr = &npc->pos.x; zPtr = &npc->pos.z; if (D_802BE920 == 0) { - temp_f0_5 = clamp_angle(playerStatus->targetYaw + 90.0f); + add_vec2D_polar(xPtr, zPtr, playerStatus->colliderDiameter / 4, clamp_angle(playerStatus->targetYaw + 90.0f)); } else { - temp_f0_5 = clamp_angle(playerStatus->targetYaw - 90.0f); + add_vec2D_polar(xPtr, zPtr, playerStatus->colliderDiameter / 4, clamp_angle(playerStatus->targetYaw - 90.0f)); } - add_vec2D_polar(xPtr, zPtr, playerStatus->colliderDiameter / 4, temp_f0_5); npc->jumpVelocity = 0.0f; partner_clear_player_tracking(npc); if (D_802BE924 == 0) { @@ -548,7 +544,7 @@ ApiStatus func_802BD758_3184A8(Evt* evt, s32 isInitialCall) { } D_802BE924 = 0; sfx_stop_sound(SOUND_80000000); - break; + return ApiStatus_DONE2; } return ApiStatus_BLOCK; diff --git a/src/world/partner/goombario.c b/src/world/partner/goombario.c index b8475fa957..1804172de4 100644 --- a/src/world/partner/goombario.c +++ b/src/world/partner/goombario.c @@ -221,28 +221,25 @@ s32 world_goombario_can_pause(Npc* goombario) { return TRUE; } -// get message for tattle routine -#ifdef NON_MATCHING ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { PlayerStatus* playerStatus = &gPlayerStatus; Npc* goombario = script->owner2.npc; s32 msgID; - s32 entityType; - s32 triggerSomething; + s32 temp; // TODO required to match (this temp needs to be used in two places for different things) s32 v1; - s32 i; s32 v0; + s32 i; if (isInitialCall) { func_802BD564_317484(goombario); D_802BDF64 = 0; D_802BDF30 = 0; D_802BDF34 = 0; - if (playerStatus->animFlags & 0x20) { + if (playerStatus->animFlags & PA_FLAGS_SPEECH_PROMPT_AVAILABLE) { D_802BDF30 = 1; D_802BDF38 = D_802B79A8_E21858->unk_00; } - if (playerStatus->animFlags & 0x10) { + if (playerStatus->animFlags & PA_FLAGS_INTERACT_PROMPT_AVAILABLE) { D_802BDF34 = 1; } script->functionTemp[0] = 40; @@ -250,7 +247,7 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { switch (script->functionTemp[0]) { case 40: - if (!(goombario->flags & 0x1000) || playerStatus->inputEnabledCounter != 0) { + if (!(goombario->flags & NPC_FLAG_1000) || playerStatus->inputEnabledCounter != 0) { script->varTable[0] = -1; return ApiStatus_DONE2; } @@ -275,7 +272,7 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { break; case 0: set_time_freeze_mode(1); - playerStatus->flags &= ~0x2000000; + playerStatus->flags &= ~PS_FLAGS_HAS_CONVERSATION_NPC; goombario->currentAnim = 0x010001; goombario->yaw = clamp_angle(gCameras[CAM_DEFAULT].currentYaw + playerStatus->spriteFacingAngle - 90.0f); gPartnerActionStatus.partnerActionState = 1; @@ -289,58 +286,58 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { /* fallthrough */ case 1: if (GoombarioGetTattleID >= 0 && (GoombarioGetTattleID & 0x4000)) { - entityType = get_entity_type(GoombarioGetTattleID); + temp = get_entity_type(GoombarioGetTattleID); msgID = -1; do {} while (0); for (i = 0; EntityTattles[2 * i] != -1; i++) { - if (EntityTattles[2 * i] != entityType) { + if (EntityTattles[2 * i] != temp) { continue; } - switch (entityType) { + switch (temp) { case 22: case 25: if (gPlayerData.hammerLevel >= 1) { - msgID = 0x1B0002; + msgID = MSG_EntityTattle_HammerBlock2_CanBreak; } break; case 23: case 26: if (gPlayerData.hammerLevel >= 2) { - msgID = 0x1B0004; + msgID = MSG_EntityTattle_HammerBlock3_CanBreak; } break; case 36: if (gPlayerData.bootsLevel == 1) { - msgID = 0x1B0018; + msgID = MSG_EntityTattle_WoodenCrate_SpinJump; } else if (gPlayerData.bootsLevel == 2) { - msgID = 0x1B0019; + msgID = MSG_EntityTattle_WoodenCrate_TornadoJump; } break; case 37: if (gPlayerData.bootsLevel == 1) { - msgID = 0x1B001B; + msgID = MSG_EntityTattle_BoardedFloor_SpinJump; } else if (gPlayerData.bootsLevel == 2) { - msgID = 0x1B001C; + msgID = MSG_EntityTattle_BoardedFloor_TornadoJump; } break; case 9: if (gPlayerData.bootsLevel >= 2) { - msgID = 0x1B000D; + msgID = MSG_EntityTattle_BigSwitch_TornadoJump; } break; case 10: if (gPlayerData.bootsLevel >= 2) { - msgID = 0x1B000F; + msgID = MSG_EntityTattle_FloorSwitch_TornadoJump; } break; case 49: if (gPlayerData.bootsLevel >= 2) { - msgID = 0x1B001E; + msgID = MSG_EntityTattle_JackInTheBox_TornadoJump; } break; case 50: if (get_entity_by_index(GoombarioGetTattleID & 0x3FFF)->dataBuf.chest->itemID == -1) { - msgID = 0x1B0016; + msgID = MSG_EntityTattle_EmptyChest; } break; } @@ -359,7 +356,7 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { v0 = get_enemy(D_802BDF38->npcID)->tattleMsg; if (v0 != 0) { msgID = v0; - if (msgID < -270000000) { + if (msgID < EVT_LIMIT) { script->varTable[0] = ((s32(*)(void))msgID)(); } else { script->varTable[0] = msgID; @@ -370,21 +367,22 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { } if (D_802BDF34 != 0) { - script->varTable[0] = 0x1B0025; + script->varTable[0] = MSG_EntityTattle_25; script->varTable[1] = 0; return ApiStatus_DONE2; } + temp = 0; if (GoombarioGetTattleID >= 0) { - v1 = func_802BD100_317020(GoombarioGetTattleID); + temp = func_802BD100_317020(GoombarioGetTattleID); } else { - v1 = 0; + temp = 0; } - if (v1 == 0) { + if (temp == 0) { msgID = get_current_map_settings()->tattle.msgID; if (msgID != 0) { - if (msgID < -270000000) { + if (msgID < EVT_LIMIT) { script->varTable[0] = ((s32(*)(void))msgID)(); } else { script->varTable[0] = msgID; @@ -392,7 +390,7 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { } } } else { - script->varTable[0] = v1; + script->varTable[0] = temp; script->varTable[1] = 1; } return ApiStatus_DONE2; @@ -402,7 +400,7 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { case 10: msgID = get_current_map_settings()->tattle.msgID; if (msgID != 0) { - if (msgID < -270000000) { + if (msgID < EVT_LIMIT) { script->varTable[0] = ((s32(*)(void))msgID)(); } else { script->varTable[0] = msgID; @@ -422,10 +420,6 @@ ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall) { } return ApiStatus_BLOCK; } -#else -ApiStatus func_802BD5D8_3174F8(Evt* script, s32 isInitialCall); -INCLUDE_ASM(ApiStatus, "world/partner/goombario", func_802BD5D8_3174F8, Evt* script, s32 isInitialCall); -#endif ApiStatus func_802BDB30_317A50(Evt* script, s32 isInitialCall) { PartnerActionStatus* goombarioActionStatus = &gPartnerActionStatus; diff --git a/src/world/partner/sushie.c b/src/world/partner/sushie.c index c60838af02..e6bdc309c8 100644 --- a/src/world/partner/sushie.c +++ b/src/world/partner/sushie.c @@ -3,34 +3,35 @@ #include "npc.h" #include "effects.h" #include "sprite/npc/WorldSushie.h" +#include "sprite.h" extern s16 D_8010C97A; BSS f32 OriginalPlayerY; BSS s32 bss_802BFEE4; BSS s32 bss_802BFEE8; -BSS s32 D_802BFEEC; +BSS s32 bss_802BFEEC; BSS s32 bss_802BFEF0; BSS s32 bss_802BFEF4; -BSS s32 D_802BFEF8; +BSS f32 bss_802BFEF8; BSS f32 bss_802BFEFC; -BSS s32 bss_802BFF00; -BSS s32 bss_802BFF04; -BSS s32 bss_802BFF08; +BSS f32 bss_802BFF00; +BSS f32 bss_802BFF04; +BSS f32 bss_802BFF08; BSS s32 bss_802BFF0C; BSS TweesterPhysics SushieTweesterPhysics; - f32 D_802BFDB0_320B20 = 0.0f; f32 D_802BFDB4_320B24 = 0.0f; f32 D_802BFDB8_320B28 = 0.0f; f32 D_802BFDBC_320B2C = 0.0f; +void func_802BF920_320690(Npc* sushie); void func_802BD100_31DE70(void) { Npc* partnerNPC = get_npc_unsafe(NPC_PARTNER); PlayerStatus* playerStatus = &gPlayerStatus; - Camera* cam = &gCameras[CAM_DEFAULT]; + Camera* camera = &gCameras[CAM_DEFAULT]; s32 phi_v1; playerStatus->position.x = partnerNPC->pos.x; @@ -45,18 +46,18 @@ void func_802BD100_31DE70(void) { } playerStatus->position.z -= cos_rad(DEG_TO_RAD( - cam->currentYaw + playerStatus->spriteFacingAngle - 90.0f + phi_v1)) * -4.0f; + camera->currentYaw + playerStatus->spriteFacingAngle - 90.0f + phi_v1)) * -4.0f; } void func_802BD20C_31DF7C(f32* arg0, f32* arg1) { f32 temp_f22; f32 phi_f20; - f32 temp_f2 = gPartnerActionStatus.stickY; - f32 temp_f0 = gPartnerActionStatus.stickX; + f32 stickY = gPartnerActionStatus.stickY; + f32 stickX = gPartnerActionStatus.stickX; - D_802BFDB0_320B20 = temp_f0; - D_802BFDB4_320B24 = temp_f2; - temp_f22 = clamp_angle(atan2(0.0f, 0.0f, temp_f0, -temp_f2) + gCameras[CAM_DEFAULT].currentYaw); + D_802BFDB0_320B20 = stickX; + D_802BFDB4_320B24 = stickY; + temp_f22 = clamp_angle(atan2(0.0f, 0.0f, stickX, -stickY) + gCameras[CAM_DEFAULT].currentYaw); phi_f20 = 0.0f; if (dist2D(0.0f, 0.0f, D_802BFDB0_320B20, -D_802BFDB4_320B24) >= 1.0) { @@ -90,7 +91,223 @@ void func_802BD368_31E0D8(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 } } -INCLUDE_ASM(s32, "world/partner/sushie", func_802BD414_31E184); +// void func_802BD414_31E184(Npc*); +// INCLUDE_ASM(s32, "world/partner/sushie", func_802BD414_31E184); +void func_802BD414_31E184(Npc* npc) { + PlayerStatus* playerStatus = &gPlayerStatus; + PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus; + CollisionStatus* collisionStatus = &gCollisionStatus; + f32 var_f20; + f32 sp20; + f32 sp24; + f32 sinTheta, cosTheta; + f32 x, y, z; + f32 sp3C; + + func_802BD20C_31DF7C(&sp20, &sp24); + if (bss_802BFEE4 != 0) { + var_f20 = 80.0f; + } else { + var_f20 = 32.0f; + } + + if (sp24 != 0.0f) { + f32 t1; + f32 t2; + f32 t3; + + t3 = D_802BFDB0_320B20 * D_802BFDB8_320B28; + t1 = 8.0f; + t2 = 32.0f; + + if (t3 > 0.0f) { + D_802BFDB8_320B28 += D_802BFDB0_320B20 / t2; + } else { + D_802BFDB8_320B28 += D_802BFDB0_320B20 / t1; + } + if (D_802BFDB0_320B20 > 0.0f) { + if (D_802BFDB0_320B20 < D_802BFDB8_320B28) { + D_802BFDB8_320B28 = D_802BFDB0_320B20; + } + } else { + if (D_802BFDB8_320B28 < D_802BFDB0_320B20) { + D_802BFDB8_320B28 = D_802BFDB0_320B20; + } + } + + if (D_802BFDB4_320B24 * D_802BFDBC_320B2C > 0.0f) { + D_802BFDBC_320B2C += D_802BFDB4_320B24 / t2; + } else { + D_802BFDBC_320B2C += D_802BFDB4_320B24 / t1; + } + if (D_802BFDB4_320B24 > 0.0f) { + if (D_802BFDB4_320B24 < D_802BFDBC_320B2C) { + D_802BFDBC_320B2C = D_802BFDB4_320B24; + } + } else { + if (D_802BFDBC_320B2C < D_802BFDB4_320B24) { + D_802BFDBC_320B2C = D_802BFDB4_320B24; + } + } + + sp20 = clamp_angle(atan2(0.0f, 0.0f, D_802BFDB8_320B28, -D_802BFDBC_320B2C) + gCameras[CAM_DEFAULT].currentYaw); + if (bss_802BFEF8 <= sp24) { + bss_802BFEF8 = bss_802BFEF8 + ((sp24 - bss_802BFEF8) / var_f20); + if (bss_802BFEF8 > sp24) { + bss_802BFEF8 = sp24; + } + } else { + bss_802BFEF8 += (sp24 - bss_802BFEF8) / var_f20; + } + sp24 = bss_802BFEF8; + bss_802BFEFC = sp20; + sin_cos_rad(DEG_TO_RAD(sp20), &sinTheta, &cosTheta); + bss_802BFF00 += (sp24 * sinTheta) / var_f20; + bss_802BFF04 += (-sp24 * cosTheta) / var_f20; + } else { + bss_802BFEF8 -= 0.15; + if (bss_802BFEF8 < 0.0f) { + bss_802BFEF8 = 0.0f; + D_802BFDBC_320B2C = 0.0f; + D_802BFDB8_320B28 = 0.0f; + } + sp24 = bss_802BFEF8; + sp20 = bss_802BFEFC; + sin_cos_rad(DEG_TO_RAD(bss_802BFEFC), &sinTheta, &cosTheta); + bss_802BFF00 = sp24 * sinTheta; + bss_802BFF04 = -sp24 * cosTheta; + } + npc->moveSpeed = sp24; + if (sp24 != 0.0f) { + npc->yaw = sp20; + x = npc->pos.x; + z = npc->pos.z; + y = npc->moveToPos.y + -6.0f; + sp3C = (npc->collisionHeight * 0.5f) + (playerStatus->colliderHeight * 0.8f); + if (npc_test_move_taller_with_slipping(npc->collisionChannel, &x, &y, &z, npc->moveSpeed, sp20, sp3C, + npc->collisionRadius) != 0) + { + collisionStatus->pushingAgainstWall = D_8010C978; + if ((get_collider_flags(D_8010C978) & 0xFF) == 4) { + bss_802BFEF0++; + } else { + bss_802BFEF0 = 0; + } + npc->pos.x += (x - npc->pos.x) * 0.5f; + npc->pos.z += (z - npc->pos.z) * 0.5f; + } else { + npc_move_heading(npc, sp24, sp20); + collisionStatus->pushingAgainstWall = -1; + } + sp24 = 2.0f; + sp20 = clamp_angle(npc->yaw - 30.0f); + x = npc->pos.x; + z = npc->pos.z; + y = npc->moveToPos.y + -6.0f; + sp3C = (npc->collisionHeight * 0.5f) + (playerStatus->colliderHeight * 0.8f); + if (npc_test_move_taller_with_slipping(npc->collisionChannel, &x, &y, &z, sp24, sp20, sp3C, npc->collisionRadius) != 0) { + npc->pos.x += (x - npc->pos.x) / 5.0f; + npc->pos.z += (z - npc->pos.z) / 5.0f; + } + sp20 = clamp_angle(npc->yaw + 30.0f); + x = npc->pos.x; + z = npc->pos.z; + y = npc->moveToPos.y + -6.0f; + sp3C = (npc->collisionHeight * 0.5f) + (playerStatus->colliderHeight * 0.8f); + if (npc_test_move_taller_with_slipping(npc->collisionChannel, &x, &y, &z, sp24, sp20, sp3C, npc->collisionRadius) != 0) { + npc->pos.x += (x - npc->pos.x) / 5.0f; + npc->pos.z += (z - npc->pos.z) / 5.0f; + } + } + if (bss_802BFEE4 == 0) { + func_802BD368_31E0D8(npc->collisionChannel, npc->pos.x, npc->pos.y, npc->pos.z, npc->yaw, + npc->collisionRadius * 0.5f); + if (bss_802BFEE4 == 0) { + npc->moveSpeed = 3.0f; + npc->moveToPos.y = OriginalPlayerY - (npc->collisionHeight * 0.5f); + bss_802BFEE8 = 0; + if (partnerActionStatus->pressedButtons & BUTTON_C_DOWN) { + bss_802BFEE4 = 1; + npc->moveSpeed = 2.0f; + } else { + return; + } + } + } + + if (bss_802BFEE4 == 1 && (partnerActionStatus->currentButtons & 4) && bss_802BFEE8 == 0) { + bss_802BFEE4 = 2; + } + bss_802BFEE8++; + if (bss_802BFEE4 == 2) { + x = npc->pos.x; + y = npc->pos.y; + z = npc->pos.z; + sp3C = npc->collisionHeight; + if (npc_raycast_down_around(npc->collisionChannel, &x, &y, &z, &sp3C, npc->yaw, npc->collisionRadius) != 0) { + var_f20 = ((OriginalPlayerY - (playerStatus->colliderHeight * 2)) - npc->moveToPos.y) * 0.1f; + npc->moveToPos.y += var_f20; + if (npc->moveToPos.y < y + 5.0f) { + npc->moveToPos.y = y + 5.0f; + } + } else { + var_f20 = ((OriginalPlayerY - (playerStatus->colliderHeight * 2)) - npc->moveToPos.y) * 0.1f; + npc->moveToPos.y += var_f20; + } + if (bss_802BFEE8 == ((bss_802BFEE8 / 6) * 6)) { + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + (npc->collisionHeight * 0.5f), npc->pos.z, + (OriginalPlayerY - npc->moveToPos.y) - (npc->collisionHeight * 0.5f)); + } + if (bss_802BFEE8 == 1) { + suggest_player_anim_setUnkFlag(ANIM_Mario_80010); + npc->currentAnim = 0x7000A; + } + if (bss_802BFEF4 == 0 && (playerStatus->position.y + (playerStatus->colliderHeight * 0.5f) < OriginalPlayerY)) { + bss_802BFEF4 = 1; + playerStatus->renderMode = 0xD; + func_802DDFF8(playerStatus->trueAnimation, 4, 2, 0, 0, 0, 0); + func_8003D624(npc, 4, 2, 0, 0, 0, 0); + } + if (bss_802BFEE8 >= 10 && (!(partnerActionStatus->currentButtons & BUTTON_C_DOWN) || bss_802BFEE8 >= 30)) { + npc->currentAnim = 0x7000C; + sfx_play_sound_at_npc(SOUND_694, 0, NPC_PARTNER); + bss_802BFEE4 = 3; + } + } + + x = npc->pos.x; + y = npc->moveToPos.y; + z = npc->pos.z; + sp3C = (npc->collisionHeight * 0.5f) + playerStatus->colliderHeight; + if (npc_raycast_up_corners(npc->collisionChannel, &x, &y, &z, &sp3C, npc->yaw, npc->collisionRadius * 0.3f) >= 0) { + npc->moveToPos.y += (((npc->moveToPos.y - y) + sp3C) - ((npc->collisionHeight * 0.5f) + playerStatus->colliderHeight)) * 0.2f; + if (bss_802BFEE8 == ((bss_802BFEE8 / 9) * 9)) { + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + (npc->collisionHeight * 0.5f), npc->pos.z, + (OriginalPlayerY - npc->moveToPos.y) - (npc->collisionHeight * 0.5f)); + } + } else if (bss_802BFEE4 == 3) { + bss_802BFF08 += 0.14; + if (bss_802BFF08 > 1.8) { + bss_802BFF08 = 1.8f; + } + npc->moveToPos.y += bss_802BFF08; + if (bss_802BFEE8 == ((bss_802BFEE8 / 9) * 9)) { + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + npc->collisionHeight * 0.5f, npc->pos.z, + (OriginalPlayerY - npc->moveToPos.y) - npc->collisionHeight * 0.5f); + } + if ((OriginalPlayerY - npc->moveToPos.y) - (npc->collisionHeight * 0.5f) <= 0.0f) { + if (bss_802BFEF4 != 0) { + bss_802BFEF4 = 0; + func_802DDFF8(0x10002, 0, 0, 0, 0, 0, 0); + func_8003D624(npc, 0, 0, 0, 0, 0, 0); + } + bss_802BFEE4 = 0; + npc->currentAnim = 0x7000A; + npc->moveToPos.y = OriginalPlayerY - (npc->collisionHeight * 0.5f); + suggest_player_anim_setUnkFlag(ANIM_Mario_8000F); + } + } +} s32 func_802BE280_31EFF0(s32 arg0, f32* x, f32* y, f32* z, f32 length, f32 radius, f32* yaw) { f32 sinAngle, cosAngle, hitX, hitY, hitZ, totalLength, hitNx, hitNy, hitNz; @@ -108,8 +325,358 @@ s32 func_802BE280_31EFF0(s32 arg0, f32* x, f32* y, f32* z, f32 length, f32 radiu return hitResult; } -void func_802BE3A4_31F114(Npc*); -INCLUDE_ASM(s32, "world/partner/sushie", func_802BE3A4_31F114); +ApiStatus func_802BE3A4_31F114(Evt* script, s32 isInitialCall) { + PlayerStatus* playerStatus = &gPlayerStatus; + PlayerData* playerData = &gPlayerData; + CollisionStatus* collisionStatus = &gCollisionStatus; + PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus; + Npc* npc = script->owner2.npc; + s32 colliderFlags; + f32 yTemp; + f64 zTemp; + f64 xTemp; + f32 x, y, z; + f32 angle; + f32 dist; + f32 sp34; + f32 sinTheta; + f32 cosTheta; + s32 collider; + s32 t; + + if (isInitialCall) { + func_802BF920_320690(npc); + bss_802BFEFC = 0.0f; + bss_802BFEF8 = 0.0f; + bss_802BFF00 = 0.0f; + bss_802BFF04 = 0.0f; + bss_802BFF08 = 0.0f; + script->functionTemp[0] = 0; + } + playerData->partnerUsedTime[PARTNER_SUSHIE]++; + playerStatus->animFlags &= ~PA_FLAGS_RIDING_PARTNER; + + switch (script->functionTemp[0]) { + case 0: + if (!gGameStatusPtr->keepUsingPartnerOnMapChange) { + collider = collisionStatus->currentWall; + if (collider >= 0 && !(collider & 0x4000)) { + collider = get_collider_flags(collider) & 0xFF; + if (collider != SURFACE_TYPE_DOCK_WALL) { + return ApiStatus_DONE1; + } + script->functionTemp[0] = 20; + break; + } + return ApiStatus_DONE1; + } + npc->moveToPos.y = npc->pos.y; + playerStatus->position.y = npc->moveToPos.y + 16.0f; + bss_802BFEEC = 1; + npc->flags |= NPC_FLAG_ENABLE_HIT_SCRIPT; + npc->flags &= ~NPC_FLAG_GRAVITY; + npc->flags |= NPC_FLAG_100; + suggest_player_anim_setUnkFlag(ANIM_Mario_8000F); + disable_player_shadow(); + disable_npc_shadow(npc); + func_8003D624(npc, 4, 2, 0, 0, 0, 0); + npc->currentAnim = 0x7000A; + npc->moveSpeed = playerStatus->runSpeed; + npc->jumpScale = 0.0f; + partnerActionStatus->partnerActionState = PARTNER_ACTION_USE; + gGameStatusPtr->keepUsingPartnerOnMapChange = FALSE; + partnerActionStatus->actingPartner = PARTNER_SUSHIE; + bss_802BFEE4 = 0; + bss_802BFEE8 = 0; + script->functionTemp[2] = 0; + script->functionTemp[0] = 1; + break; + case 20: + if (collisionStatus->currentWall >= 0) { + get_collider_center(collisionStatus->currentWall, &x, &y, &z); + angle = atan2(x, z, playerStatus->position.x, playerStatus->position.z); + x = playerStatus->position.x; + y = playerStatus->position.y; + z = playerStatus->position.z; + collider = func_802BE280_31EFF0(0, &x, &y, &z, playerStatus->colliderDiameter * 0.5f, + 2.0f * playerStatus->colliderDiameter, &angle); + colliderFlags = -1; + if (collider >= 0) { + colliderFlags = get_collider_flags(collider) & 0xFF; + } + if (colliderFlags == SURFACE_TYPE_DOCK_WALL) { + bss_802BFEEC = 1; + set_action_state(ACTION_STATE_RIDE); + disable_player_static_collisions(); + disable_player_input(); + npc->collisionChannel = COLLISION_CHANNEL_80000; + npc->moveToPos.x = playerStatus->position.x; + npc->moveToPos.y = playerStatus->position.y; + npc->moveToPos.z = playerStatus->position.z; + npc->yaw = angle; + playerStatus->targetYaw = angle; + npc->renderYaw = 90.0f; + add_vec2D_polar(&npc->moveToPos.x, &npc->moveToPos.z, 40.0f, npc->yaw); + x = npc->moveToPos.x; + y = npc->moveToPos.y; + z = npc->moveToPos.z; + dist = 100.0f; + collider = npc_raycast_down_around(npc->collisionChannel, &x, &y, &z, &dist, + npc->yaw, npc->collisionRadius); + npc->currentAnim = 0x70003; + npc->duration = 12; + npc->moveToPos.y = y - (npc->collisionHeight * 0.5f); + suggest_player_anim_clearUnkFlag(ANIM_Mario_10002); + script->functionTemp[0]++; + break; + } + } + return ApiStatus_DONE1; + case 21: + npc->pos.x += ((npc->moveToPos.x - npc->pos.x) / npc->duration); + npc->pos.y += ((npc->moveToPos.y - npc->pos.y) / npc->duration); + npc->pos.z += ((npc->moveToPos.z - npc->pos.z) / npc->duration); + npc->duration--; + if (npc->duration != 0) { + if (npc->duration == 2) { + sfx_play_sound_at_npc(SOUND_JUMP_2081, 0, NPC_PARTNER); + suggest_player_anim_clearUnkFlag(ANIM_Mario_BeforeJump); + } + break; + } + npc->collisionChannel = COLLISION_CHANNEL_10000; + npc->flags |= NPC_FLAG_ENABLE_HIT_SCRIPT; + npc->flags &= ~(NPC_FLAG_GRAVITY | NPC_FLAG_40); + disable_npc_shadow(npc); + func_8003D624(npc, 4, 2, 0, 0, 0, 0); + npc->currentAnim = 0x7000A; + playerStatus->flags |= PS_FLAGS_MOVEMENT_LOCKED; + dist = dist2D(playerStatus->position.x, playerStatus->position.z, npc->moveToPos.x, npc->moveToPos.z); + npc->jumpVelocity = 5.0f; + npc->jumpScale = 0.6f; + y = npc->moveToPos.y - playerStatus->position.y; + npc->duration = (2.0f * npc->jumpVelocity) / 0.6f; + npc->moveSpeed = dist / npc->duration; + npc->jumpVelocity += y / npc->duration; + suggest_player_anim_clearUnkFlag(ANIM_Mario_AnimMidairStill); + script->functionTemp[0]++; + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + (npc->collisionHeight * 0.5f), npc->pos.z, 0.0f); + return 0; + case 23: + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + (npc->collisionHeight * 0.5f), npc->pos.z, 0.0f); + // fallthrough + case 22: + case 24: + script->functionTemp[0]++; + // fallthrough + case 25: + playerStatus->position.y += npc->jumpVelocity; + npc->jumpVelocity -= npc->jumpScale; + add_vec2D_polar(&playerStatus->position.x, &playerStatus->position.z, npc->moveSpeed, npc->yaw); + if (npc->jumpVelocity <= 0.0f) { + suggest_player_anim_clearUnkFlag(ANIM_Mario_AnimMidair); + } + gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x; + gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y; + gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z; + + if (npc->duration == 0) { + set_action_state(ACTION_STATE_RIDE); + disable_player_shadow(); + playerStatus->flags &= ~PS_FLAGS_MOVEMENT_LOCKED; + suggest_player_anim_setUnkFlag(ANIM_Mario_8000F); + sfx_play_sound_at_npc(SOUND_2013, 0, NPC_PARTNER); + playerStatus->position.x = npc->pos.x; + playerStatus->position.y = npc->pos.y; + playerStatus->position.z = npc->pos.z; + playerStatus->targetYaw = npc->yaw; + npc->moveSpeed = 3.0f; + partnerActionStatus->partnerActionState = PARTNER_ACTION_USE; + gGameStatusPtr->keepUsingPartnerOnMapChange = FALSE; + partnerActionStatus->actingPartner = PARTNER_SUSHIE; + bss_802BFEE4 = 0; + bss_802BFEE8 = 0; + script->functionTemp[2] = 0; + script->functionTemp[0] = 1; + } else { + npc->duration--; + } + break; + case 1: + playerStatus->animFlags |= PA_FLAGS_RIDING_PARTNER; + func_802BD414_31E184(npc); + if (bss_802BFEE4 == 0) { + script->functionTemp[2]++; + if (script->functionTemp[2] > 20) { + script->functionTemp[2] -= 40; + } + npc->pos.y = npc->moveToPos.y + (abs(script->functionTemp[2]) * 0.125f); + if (script->functionTemp[2] == 5) { + func_802BD20C_31DF7C(&angle, &sp34); + if (bss_802BFEE4 == 0) { + if (sp34 != 0.0f) { + sfx_play_sound_at_npc(SOUND_2015, 0, NPC_PARTNER); + } else { + sfx_play_sound_at_npc(SOUND_2014, 0, NPC_PARTNER); + } + } + } + if (bss_802BFEF8 == 0.0f && !((gGameStatusPtr->frameCounter % 10) & 0xFFFF)) { + fx_rising_bubble(0, npc->pos.x, npc->moveToPos.y + (npc->collisionHeight * 0.5f), npc->pos.z, 0.0f); + } + } else { + npc->pos.y = npc->moveToPos.y; + } + if (!(playerStatus->animFlags & PA_FLAGS_RIDING_PARTNER)) { + func_802BD100_31DE70(); + } + + if (bss_802BFEE4 == 1) { + if (!(gGameStatusPtr->frameCounter % 19)) { + yTemp = npc->moveToPos.y + (npc->collisionHeight * 0.5f); + fx_rising_bubble(0,npc->pos.x, yTemp, npc->pos.z, OriginalPlayerY - npc->pos.y); + } + } else if (bss_802BFEF8 != 0.0f && bss_802BFEE4 < 2) { + if (!(gGameStatusPtr->frameCounter % 7)) { + yTemp = npc->moveToPos.y + (npc->collisionHeight * 0.5f); + + fx_rising_bubble(0, npc->pos.x, yTemp, npc->pos.z, bss_802BFEE4 != 0 ? OriginalPlayerY - npc->pos.y : 0.0f); + } + } + + gCameras[CAM_DEFAULT].targetPos.x = npc->pos.x; + gCameras[CAM_DEFAULT].targetPos.y = OriginalPlayerY; + gCameras[CAM_DEFAULT].targetPos.z = npc->pos.z; + if ((partnerActionStatus->pressedButtons & (BUTTON_B | BUTTON_C_DOWN)) || bss_802BFEF0 >= 30) { + if (bss_802BFEF4 == 0) { + x = npc->pos.x; + y = npc->moveToPos.y + npc->collisionHeight; + z = npc->pos.z; + + t = npc_test_move_taller_with_slipping(npc->collisionChannel, &x, &y, &z, 10.0f, npc->yaw, + npc->collisionHeight, npc->collisionRadius); + if (t != 0) { + collisionStatus->pushingAgainstWall = npc->currentWall = D_8010C97A; + } else { + collisionStatus->pushingAgainstWall = -1; + } + + if (npc->currentWall < 0 || + (npc->currentWall & 0x4000) || + (collider = get_collider_flags(npc->currentWall) & 0xFF, (collider != SURFACE_TYPE_DOCK_WALL))) + { + if (bss_802BFEE4 == 2 && bss_802BFEE8 == 1) { + sfx_play_sound_at_npc(SOUND_294, 0, NPC_PARTNER); + } + break; + } + bss_802BFEF0 = 0; + x = npc->pos.x; + z = npc->pos.z; + y = npc->moveToPos.y + 100.0f; + add_vec2D_polar(&x, &z, 40.0f, npc->yaw); + dist = 100.0f; + collider = npc_raycast_down_around(npc->collisionChannel, &x, &y, &z, &dist, npc->yaw, 0.0f); + if (collider != 0) { + get_collider_center(npc->currentWall, &x, &y, &z); + dist = dist2D(npc->pos.x, npc->pos.z, x, z); + sin_cos_rad(DEG_TO_RAD(atan2(npc->pos.x, npc->pos.z, x, z)), &sinTheta, &cosTheta); + xTemp = npc->pos.x + ((sinTheta * dist) * 0.6); + zTemp = npc->pos.z - ((cosTheta * dist) * 0.6); + dist = 100.0f; + x = xTemp; + z = zTemp; + npc_raycast_down_around(npc->collisionChannel, &x, &y, &z, &dist, npc->yaw, 0.0f); + npc->moveToPos.y = y; + npc->moveToPos.x = x; + npc->moveToPos.z = z; + playerStatus->targetYaw = atan2(playerStatus->position.x, playerStatus->position.z, x, z); + npc->yaw = playerStatus->targetYaw; + dist = dist2D(playerStatus->position.x, playerStatus->position.z, npc->moveToPos.x, npc->moveToPos.z); + npc->jumpVelocity = 5.0f; + npc->jumpScale = 0.6f; + npc->duration = (2.0f * npc->jumpVelocity) / 0.6f; + npc->moveSpeed = dist / npc->duration; + npc->jumpVelocity += (npc->moveToPos.y - playerStatus->position.y) / npc->duration; + sfx_play_sound_at_npc(SOUND_JUMP_2081, 0, NPC_PARTNER); + suggest_player_anim_clearUnkFlag(ANIM_Mario_BeforeJump); + enable_player_shadow(); + playerStatus->flags |= PS_FLAGS_MOVEMENT_LOCKED; + script->functionTemp[0] = 3; + } + } + } + break; + case 3: + suggest_player_anim_clearUnkFlag(ANIM_Mario_AnimMidairStill); + script->functionTemp[0]++; + // fallthrough + case 4: + if (npc->jumpVelocity <= 0.0f) { + suggest_player_anim_clearUnkFlag(ANIM_Mario_AnimMidair); + script->functionTemp[0]++; + } + // fallthrough + case 5: + if (npc->jumpVelocity <= 0.0f) { + playerStatus->position.y = y = player_check_collision_below(npc->jumpVelocity, &collider); + if (collider > 0) { + suggest_player_anim_clearUnkFlag(ANIM_Mario_10009); + } + } else { + playerStatus->position.y += npc->jumpVelocity; + } + npc->jumpVelocity -= npc->jumpScale; + gCameras[CAM_DEFAULT].targetPos.x = playerStatus->position.x; + gCameras[CAM_DEFAULT].targetPos.y = playerStatus->position.y; + gCameras[CAM_DEFAULT].targetPos.z = playerStatus->position.z; + if (npc->duration != 0) { + add_vec2D_polar(&playerStatus->position.x, &playerStatus->position.z, npc->moveSpeed, npc->yaw); + npc->duration--; + break; + } + if (collider >= 0) { + playerStatus->flags &= ~PS_FLAGS_MOVEMENT_LOCKED; + suggest_player_anim_clearUnkFlag(ANIM_Mario_10002); + npc->flags |= NPC_FLAG_40; + dist = dist2D(npc->pos.x, npc->pos.z, npc->moveToPos.x, npc->moveToPos.z) + + (playerStatus->colliderDiameter * 0.5f); + npc->jumpVelocity = 8.0f; + npc->jumpScale = 1.0f; + npc->moveSpeed = 4.0f; + y = npc->moveToPos.y - npc->pos.y; + npc->duration = (2.0f * npc->jumpVelocity) / npc->jumpScale; + npc->moveSpeed = dist / npc->duration; + npc->jumpVelocity += y / npc->duration; + script->functionTemp[0] = 10; + } + break; + case 10: + npc->pos.y += npc->jumpVelocity; + npc->jumpVelocity = npc->jumpVelocity - npc->jumpScale; + add_vec2D_polar(&npc->pos.x, &npc->pos.z, npc->moveSpeed, npc->yaw); + if (npc->duration == 0) { + enable_player_static_collisions(); + enable_player_input(); + set_action_state(ACTION_STATE_IDLE); + enable_npc_shadow(npc); + partner_clear_player_tracking(npc); + bss_802BFEEC = 0; + npc->flags &= ~NPC_FLAG_ENABLE_HIT_SCRIPT; + npc->flags |= NPC_FLAG_GRAVITY; + npc->flags &= ~NPC_FLAG_40; + gGameStatusPtr->keepUsingPartnerOnMapChange = FALSE; + partnerActionStatus->partnerActionState = PARTNER_ACTION_NONE; + partnerActionStatus->actingPartner = 0; + func_802DDFF8(0x10002, 0, 0, 0, 0, 0, 0); + func_8003D624(npc, 0, 0, 0, 0, 0, 0); + return ApiStatus_DONE1; + } + npc->duration--; + break; + } + return ApiStatus_BLOCK; +} EvtScript world_sushie_use_ability = { EVT_CALL(func_802BE3A4_31F114) @@ -121,7 +688,7 @@ void world_sushie_init(Npc* sushie) { sushie->collisionHeight = 24; sushie->collisionRadius = 36; sushie->collisionChannel = COLLISION_CHANNEL_10000; - D_802BFEEC = 0; + bss_802BFEEC = 0; bss_802BFEE4 = 0; bss_802BFEE8 = 0; bss_802BFEF0 = 0; @@ -262,7 +829,7 @@ EvtScript world_sushie_put_away = { void world_sushie_pre_battle(Npc* sushie) { PartnerActionStatus* sushieActionStatus = &gPartnerActionStatus; - if (D_802BFEEC) { + if (bss_802BFEEC) { sushieActionStatus->npc = *sushie; sushieActionStatus->partnerAction_unk_1 = TRUE; enable_player_static_collisions(); @@ -294,7 +861,7 @@ s32 func_802BFAB8_320828(Evt* script, s32 isInitialCall) { switch (script->functionTemp[0]) { case 0: - gGameStatusPtr->keepUsingPartnerOnMapChange = 1; + gGameStatusPtr->keepUsingPartnerOnMapChange = TRUE; disable_player_static_collisions(); disable_player_input(); partnerNPC->pos.x = playerStatus->position.x; diff --git a/tools/build/configure.py b/tools/build/configure.py index 7caa7770e9..0b028bc32a 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -240,7 +240,7 @@ class Configure: modes = ["ld"] if assets: - modes.extend(["bin", "Yay0", "img", "vtx", "gfx", "pm_map_data", "pm_msg", "pm_npc_sprites", "pm_charset", + modes.extend(["bin", "yay0", "img", "vtx", "gfx", "pm_map_data", "pm_msg", "pm_npc_sprites", "pm_charset", "pm_charset_palettes", "pm_effect_loads", "pm_effect_shims", "pm_sprite_shading_profiles"]) if code: modes.extend(["code", "c", "data", "rodata"]) @@ -309,7 +309,7 @@ class Configure: def write_ninja(self, ninja: ninja_syntax.Writer, skip_outputs: Set[str], non_matching: bool, debug: bool): import segtypes import segtypes.common.data - import segtypes.n64.Yay0 + import segtypes.n64.yay0 assert self.linker_entries is not None @@ -454,7 +454,7 @@ class Configure: build(inc_dir / (seg.name + ".pal.inc.c"), [bin_path], "pal_inc_c", vars) elif isinstance(seg, segtypes.common.bin.CommonSegBin): build(entry.object_path, entry.src_paths, "bin") - elif isinstance(seg, segtypes.n64.Yay0.N64SegYay0): + elif isinstance(seg, segtypes.n64.yay0.N64SegYay0): compressed_path = entry.object_path.with_suffix("") # remove .o build(compressed_path, entry.src_paths, "yay0") build(entry.object_path, [compressed_path], "bin") diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index 768218b06e..affa3526cf 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = ebadd64f07f744382786a5000b1667d4a21c48e6 - parent = 25780dbbc1b130021483bde6228d196f9998ab30 + commit = 715ee0ad551da41cffdf01430c3a0f817638e70a + parent = 05e1ef8cb3c53d63683e33059c7f522619e6a69e method = merge cmdver = 0.4.5 diff --git a/tools/splat/CHANGELOG.md b/tools/splat/CHANGELOG.md index d6ba90a1b1..ffecd666d7 100644 --- a/tools/splat/CHANGELOG.md +++ b/tools/splat/CHANGELOG.md @@ -1,6 +1,31 @@ # splat Release Notes +### 0.12.7 + +* Allow setting a different macro for jumptable labels with `asm_jtbl_label_macro` + * The currently recommended one is `jlabel` instead of `glabel` +* Two new options for symbols: `force_migration` and `force_not_migration` + * Useful for weird cases where the disassembler decided a rodata symbol must (or must not) be migrated when it really shouldn't (or should) +* Fix `str_encoding` defaulting to `False` instead of `None` +* Output empty rules in generated dependency files to avoid issues when the function file does not exist anymore (i.e. when it gets matched) +* Allow changing the `include_macro_inc` option in the yaml + +### 0.12.6 + +* Adds two new N64-specific segments: + * IPL3: Allows setting its correct VRAM address without messing the global segment detection + * RSP: Allows disassembling using the RSP instruction set instead of the default one +* PS2 was added as a new platform option. + * When this is selected the R5900 instruction set will be used when disassembling instead of the default one. + +### 0.12.5 + +* Update minimal spimdisasm version to 1.7.1. +* Fix spimdisasm>=1.7.0 non being able to see symbols which only are referenced by other data symbols. +* An check was added to prevent segments marked with `exclusive_ram_id` have a vram address range which overlaps with segments not marked with said tag. If this happens it will be warned to the user. + ### 0.12.4 + * Fixed a bug involving the order of attributes in symbol_addrs preventing proper range searching during calls to `get_symbol` ### 0.12.3: Initial Gamecube Support diff --git a/tools/splat/create_config.py b/tools/splat/create_config.py index afbee0b1cd..55241d0952 100755 --- a/tools/splat/create_config.py +++ b/tools/splat/create_config.py @@ -1,13 +1,13 @@ #! /usr/bin/env python3 -import sys import argparse +import sys from pathlib import Path -from util.n64 import rominfo, find_code_length +from segtypes.gc.rarc import GcSegRarc from util.gc import gcinfo -from segtypes.gc.rarc import GcSegRarc +from util.n64 import find_code_length, rominfo parser = argparse.ArgumentParser( description="Create a splat config from an N64 ROM or a GameCube disc image." diff --git a/tools/splat/mypy.ini b/tools/splat/mypy.ini index 156b2a90b3..6e7c2ef479 100644 --- a/tools/splat/mypy.ini +++ b/tools/splat/mypy.ini @@ -1,3 +1,4 @@ [mypy] ignore_missing_imports = True +check_untyped_defs = True mypy_path = stubs diff --git a/tools/splat/requirements.txt b/tools/splat/requirements.txt index 874e3ce505..796133d0be 100644 --- a/tools/splat/requirements.txt +++ b/tools/splat/requirements.txt @@ -3,7 +3,8 @@ pylibyaml tqdm intervaltree colorama -spimdisasm>=1.5.6 -rabbitizer>=1.2.0 +# This value should be keep in sync with the version listed on split.py +spimdisasm>=1.7.11 +rabbitizer>=1.3.1 pygfxd n64img>=0.1.2 diff --git a/tools/splat/segtypes/common/asm.py b/tools/splat/segtypes/common/asm.py index 25b0be004d..de27772486 100644 --- a/tools/splat/segtypes/common/asm.py +++ b/tools/splat/segtypes/common/asm.py @@ -1,9 +1,10 @@ -from segtypes.common.codesubsegment import CommonSegCodeSubsegment -from typing import Optional from pathlib import Path +from typing import Optional from util import options +from segtypes.common.codesubsegment import CommonSegCodeSubsegment + class CommonSegAsm(CommonSegCodeSubsegment): def out_path(self) -> Optional[Path]: diff --git a/tools/splat/segtypes/common/bin.py b/tools/splat/segtypes/common/bin.py index e01be5b01f..7d30b9d60b 100644 --- a/tools/splat/segtypes/common/bin.py +++ b/tools/splat/segtypes/common/bin.py @@ -1,8 +1,9 @@ from pathlib import Path from typing import Optional + +from util import log, options + from segtypes.common.segment import CommonSegment -from util import options -from util import log class CommonSegBin(CommonSegment): @@ -11,6 +12,7 @@ class CommonSegBin(CommonSegment): def split(self, rom_bytes): path = self.out_path() + assert path is not None path.parent.mkdir(parents=True, exist_ok=True) if self.rom_end == "auto": @@ -19,5 +21,8 @@ class CommonSegBin(CommonSegment): ) with open(path, "wb") as f: + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + f.write(rom_bytes[self.rom_start : self.rom_end]) self.log(f"Wrote {self.name} to {path}") diff --git a/tools/splat/segtypes/common/bss.py b/tools/splat/segtypes/common/bss.py index b6859bec72..711c102f23 100644 --- a/tools/splat/segtypes/common/bss.py +++ b/tools/splat/segtypes/common/bss.py @@ -1,7 +1,7 @@ import spimdisasm +from util import symbols from segtypes.common.data import CommonSegData -from util import symbols class CommonSegBss(CommonSegData): diff --git a/tools/splat/segtypes/common/c.py b/tools/splat/segtypes/common/c.py index 89ab629aa4..a3c2a548eb 100644 --- a/tools/splat/segtypes/common/c.py +++ b/tools/splat/segtypes/common/c.py @@ -1,17 +1,18 @@ -from segtypes.common.codesubsegment import CommonSegCodeSubsegment -from segtypes.common.group import CommonSegGroup -from segtypes.common.rodata import CommonSegRodata -from typing import Optional, Set import os import re from pathlib import Path +from typing import Optional, Set + import spimdisasm -from util import log, options -from util import symbols +from util import log, options, symbols from util.compiler import GCC, SN64 from util.symbols import Symbol +from segtypes.common.codesubsegment import CommonSegCodeSubsegment +from segtypes.common.group import CommonSegGroup +from segtypes.common.rodata import CommonSegRodata + class CommonSegC(CommonSegCodeSubsegment): defined_funcs: Set[str] = set() @@ -283,13 +284,19 @@ class CommonSegC(CommonSegCodeSubsegment): build_path = options.opts.build_path dep_path = build_path / c_path.with_suffix(".asmproc.d") + dep_path.parent.mkdir(parents=True, exist_ok=True) with dep_path.open("w") as f: o_path = build_path / c_path.with_suffix(".o") f.write(f"{o_path}:") + depend_list = [] for func in self.spim_section.symbolList: func_name = func.getName() if func_name in self.global_asm_funcs or is_new_c_file: outpath = asm_out_dir / self.name / (func_name + ".s") + depend_list.append(outpath) f.write(f" \\\n {outpath}") f.write("\n") + + for depend_file in depend_list: + f.write(f"{depend_file}:\n") diff --git a/tools/splat/segtypes/common/code.py b/tools/splat/segtypes/common/code.py index 87fa7b4f82..3486552a75 100644 --- a/tools/splat/segtypes/common/code.py +++ b/tools/splat/segtypes/common/code.py @@ -1,12 +1,14 @@ +import typing from collections import OrderedDict from typing import Dict, List, Optional, Tuple -import typing -from segtypes.common.group import CommonSegGroup -from segtypes.segment import RomAddr, Segment + from util import log, options from util.range import Range from util.symbols import Symbol +from segtypes.common.group import CommonSegGroup +from segtypes.segment import RomAddr, Segment + CODE_TYPES = ["c", "asm", "hasm"] @@ -109,6 +111,8 @@ class CommonSegCode(CommonSegGroup): rep.given_symbol_name_format_no_rom = self.symbol_name_format_no_rom rep.sibling = base[1] rep.parent = self + if rep.special_vram_segment: + self.special_vram_segment = True alls.append(rep) # Insert alls into segs at i @@ -265,6 +269,8 @@ class CommonSegCode(CommonSegGroup): ) segment.sibling = base_segments.get(segment.name, None) segment.parent = self + if segment.special_vram_segment: + self.special_vram_segment = True for i, section in enumerate(self.section_order): if not self.section_boundaries[section].has_start() and dotless_type( diff --git a/tools/splat/segtypes/common/codesubsegment.py b/tools/splat/segtypes/common/codesubsegment.py index 9c76d7cec1..80beb4276d 100644 --- a/tools/splat/segtypes/common/codesubsegment.py +++ b/tools/splat/segtypes/common/codesubsegment.py @@ -1,11 +1,14 @@ from typing import Optional -from util import options -from segtypes.common.code import CommonSegCode + import spimdisasm +import rabbitizer + +from util import options, symbols + +from segtypes import segment +from segtypes.common.code import CommonSegCode from segtypes.segment import Segment -from segtypes import segment -from util import symbols # abstract class for c, asm, data, etc class CommonSegCodeSubsegment(Segment): @@ -22,12 +25,13 @@ class CommonSegCodeSubsegment(Segment): ) self.str_encoding: Optional[str] = ( - self.yaml.get("str_encoding", False) - if isinstance(self.yaml, dict) - else None + self.yaml.get("str_encoding", None) if isinstance(self.yaml, dict) else None ) self.spim_section: Optional[spimdisasm.mips.sections.SectionBase] = None + self.instr_category = rabbitizer.InstrCategory.CPU + if options.opts.platform == "ps2": + self.instr_category = rabbitizer.InstrCategory.R5900 @property def needs_symbols(self) -> bool: @@ -55,6 +59,7 @@ class CommonSegCodeSubsegment(Segment): ) self.spim_section.isHandwritten = is_hasm + self.spim_section.instrCat = self.instr_category self.spim_section.analyze() self.spim_section.setCommentOffset(self.rom_start) diff --git a/tools/splat/segtypes/common/data.py b/tools/splat/segtypes/common/data.py index 5dfbf62a50..d30ef03cd9 100644 --- a/tools/splat/segtypes/common/data.py +++ b/tools/splat/segtypes/common/data.py @@ -1,10 +1,11 @@ +from pathlib import Path +from typing import Optional + import spimdisasm +from util import options, symbols from segtypes.common.codesubsegment import CommonSegCodeSubsegment from segtypes.common.group import CommonSegGroup -from pathlib import Path -from typing import Optional -from util import options, symbols class CommonSegData(CommonSegCodeSubsegment, CommonSegGroup): diff --git a/tools/splat/segtypes/n64/Yay0.py b/tools/splat/segtypes/common/decompressor.py similarity index 56% rename from tools/splat/segtypes/n64/Yay0.py rename to tools/splat/segtypes/common/decompressor.py index dfc95ef0f1..4d5b6d9379 100644 --- a/tools/splat/segtypes/n64/Yay0.py +++ b/tools/splat/segtypes/common/decompressor.py @@ -1,11 +1,19 @@ +from typing import Optional, Any + +from util import log, options +from util.n64.decompressor import Decompressor + from segtypes.n64.segment import N64Segment -from util.n64 import Yay0decompress -from util import options -from util import log -class N64SegYay0(N64Segment): +class CommonSegDecompressor(N64Segment): + decompressor: Decompressor + compression_type = "" # "Mio0" -> filename.Mio0.o + def split(self, rom_bytes): + if self.decompressor is None: + log.error("Decompressor is not a standalone segment type") + out_dir = options.opts.asset_path / self.dir out_dir.mkdir(parents=True, exist_ok=True) @@ -16,9 +24,12 @@ class N64SegYay0(N64Segment): out_path = out_dir / f"{self.name}.bin" with open(out_path, "wb") as f: - self.log(f"Decompressing {self.name}...") + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + + self.log(f"Decompressing {self.name}") compressed_bytes = rom_bytes[self.rom_start : self.rom_end] - decompressed_bytes = Yay0decompress.decompress_yay0(compressed_bytes) + decompressed_bytes = self.decompressor.decompress(compressed_bytes) f.write(decompressed_bytes) self.log(f"Wrote {self.name} to {out_path}") @@ -29,7 +40,9 @@ class N64SegYay0(N64Segment): LinkerEntry( self, [options.opts.asset_path / self.dir / f"{self.name}.bin"], - options.opts.asset_path / self.dir / f"{self.name}.Yay0", + options.opts.asset_path + / self.dir + / f"{self.name}.{self.compression_type}", self.get_linker_section(), ) ] diff --git a/tools/splat/segtypes/common/group.py b/tools/splat/segtypes/common/group.py index 26295fc383..b964456745 100644 --- a/tools/splat/segtypes/common/group.py +++ b/tools/splat/segtypes/common/group.py @@ -1,7 +1,9 @@ from typing import List, Optional + +from util import log + from segtypes.common.segment import CommonSegment from segtypes.segment import RomAddr, Segment -from util import log class CommonSegGroup(CommonSegment): @@ -72,6 +74,8 @@ class CommonSegGroup(CommonSegment): segment_class, subsection_yaml, start, end, vram ) segment.parent = self + if segment.special_vram_segment: + self.special_vram_segment = True ret.append(segment) prev_start = start diff --git a/tools/splat/segtypes/common/header.py b/tools/splat/segtypes/common/header.py index 5f16fd3826..b03b0ae86c 100644 --- a/tools/splat/segtypes/common/header.py +++ b/tools/splat/segtypes/common/header.py @@ -1,7 +1,9 @@ -from segtypes.common.segment import CommonSegment from pathlib import Path + from util import options +from segtypes.common.segment import CommonSegment + class CommonSegHeader(CommonSegment): def should_split(self): diff --git a/tools/splat/segtypes/common/lib.py b/tools/splat/segtypes/common/lib.py index 3dd29d4ce3..b4b190c462 100644 --- a/tools/splat/segtypes/common/lib.py +++ b/tools/splat/segtypes/common/lib.py @@ -1,8 +1,9 @@ from pathlib import Path -from segtypes.n64.segment import N64Segment -from segtypes.linker_entry import LinkerEntry -from util import options, log +from util import log, options + +from segtypes.linker_entry import LinkerEntry +from segtypes.n64.segment import N64Segment class CommonSegLib(N64Segment): diff --git a/tools/splat/segtypes/common/rodata.py b/tools/splat/segtypes/common/rodata.py index 59a8deb705..17cd0b4b16 100644 --- a/tools/splat/segtypes/common/rodata.py +++ b/tools/splat/segtypes/common/rodata.py @@ -1,7 +1,7 @@ import spimdisasm +from util import compiler, options, symbols from segtypes.common.data import CommonSegData -from util import symbols, options, compiler class CommonSegRodata(CommonSegData): @@ -48,19 +48,17 @@ class CommonSegRodata(CommonSegData): super().split(rom_bytes) if options.opts.migrate_rodata_to_functions: - if self.spim_section and ( - not self.type.startswith(".") or self.partial_migration - ): - path_folder = options.opts.data_path / self.dir - path_folder.parent.mkdir(parents=True, exist_ok=True) + if self.spim_section is not None and self.partial_migration: + path_folder = options.opts.nonmatchings_path / self.dir / self.name + path_folder.mkdir(parents=True, exist_ok=True) for rodataSym in self.spim_section.symbolList: - if not rodataSym.isRdata(): + if rodataSym.shouldMigrate(): continue path = path_folder / f"{rodataSym.getName()}.s" with open(path, "w", newline="\n") as f: - if options.opts.compiler.include_macro_inc: + if options.opts.include_macro_inc: f.write('.include "macro.inc"\n\n') preamble = options.opts.generated_s_preamble if preamble: diff --git a/tools/splat/segtypes/common/sbss.py b/tools/splat/segtypes/common/sbss.py new file mode 100644 index 0000000000..cbd004670d --- /dev/null +++ b/tools/splat/segtypes/common/sbss.py @@ -0,0 +1,6 @@ +from segtypes.common.data import CommonSegData + + +class CommonSegSbss(CommonSegData): + def get_linker_section(self) -> str: + return ".sbss" diff --git a/tools/splat/segtypes/common/sdata.py b/tools/splat/segtypes/common/sdata.py new file mode 100644 index 0000000000..a3a0e528a3 --- /dev/null +++ b/tools/splat/segtypes/common/sdata.py @@ -0,0 +1,6 @@ +from segtypes.common.data import CommonSegData + + +class CommonSegSdata(CommonSegData): + def get_linker_section(self) -> str: + return ".sdata" diff --git a/tools/splat/segtypes/gc/apploader.py b/tools/splat/segtypes/gc/apploader.py index 08d1ad96a3..810e822577 100644 --- a/tools/splat/segtypes/gc/apploader.py +++ b/tools/splat/segtypes/gc/apploader.py @@ -1,7 +1,7 @@ import struct +from pathlib import Path from segtypes.gc.segment import GCSegment -from pathlib import Path class GcSegApploader(GCSegment): diff --git a/tools/splat/segtypes/gc/bi2.py b/tools/splat/segtypes/gc/bi2.py index b7cc1ab755..2bf6a97898 100644 --- a/tools/splat/segtypes/gc/bi2.py +++ b/tools/splat/segtypes/gc/bi2.py @@ -1,8 +1,9 @@ import struct +from pathlib import Path + +from util import options from segtypes.gc.segment import GCSegment -from pathlib import Path -from util import options class GcSegBi2(GCSegment): diff --git a/tools/splat/segtypes/gc/bootinfo.py b/tools/splat/segtypes/gc/bootinfo.py index 77b665c8f4..28a93fd749 100644 --- a/tools/splat/segtypes/gc/bootinfo.py +++ b/tools/splat/segtypes/gc/bootinfo.py @@ -1,8 +1,9 @@ import struct +from pathlib import Path + +from util import options from segtypes.gc.segment import GCSegment -from pathlib import Path -from util import options class GcSegBootinfo(GCSegment): diff --git a/tools/splat/segtypes/gc/dol.py b/tools/splat/segtypes/gc/dol.py index 4fc075283e..3a92bda841 100644 --- a/tools/splat/segtypes/gc/dol.py +++ b/tools/splat/segtypes/gc/dol.py @@ -1,7 +1,7 @@ import struct +from pathlib import Path from segtypes.gc.segment import GCSegment -from pathlib import Path class GcSegDol(GCSegment): diff --git a/tools/splat/segtypes/gc/dolheader.py b/tools/splat/segtypes/gc/dolheader.py index d08a341569..f8a060a660 100644 --- a/tools/splat/segtypes/gc/dolheader.py +++ b/tools/splat/segtypes/gc/dolheader.py @@ -1,6 +1,7 @@ -from segtypes.common.header import CommonSegHeader from util import options +from segtypes.common.header import CommonSegHeader + class DolSegHeader(CommonSegHeader): def parse_header(self, dol_bytes): diff --git a/tools/splat/segtypes/gc/fst.py b/tools/splat/segtypes/gc/fst.py index d0e7beef1f..be091feea0 100644 --- a/tools/splat/segtypes/gc/fst.py +++ b/tools/splat/segtypes/gc/fst.py @@ -1,7 +1,7 @@ import struct +from pathlib import Path from segtypes.gc.segment import GCSegment -from pathlib import Path class GcSegFst(GCSegment): diff --git a/tools/splat/segtypes/gc/rarc.py b/tools/splat/segtypes/gc/rarc.py index 63c535f98d..43eda14226 100644 --- a/tools/splat/segtypes/gc/rarc.py +++ b/tools/splat/segtypes/gc/rarc.py @@ -1,13 +1,14 @@ import struct +from enum import IntEnum +from pathlib import Path + +from typing import List, Optional + +from util import options +from util.gc.gcutil import read_string_from_bytes +from util.n64.Yay0decompress import Yay0Decompressor from segtypes.gc.segment import GCSegment -from pathlib import Path -from util import options -from util.n64.Yay0decompress import decompress_yay0 -from util.gc.gcutil import read_string_from_bytes - -from typing import List -from enum import IntEnum # Represents the RARC archive format used by first-party Nintendo games. @@ -16,6 +17,8 @@ class GcSegRarc(GCSegment): super().__init__(*args, **kwargs) def split(self, file_bytes): + assert self.file_path is not None + archive = GCRARCArchive(self.file_path, file_bytes) archive.build_hierarchy(file_bytes) @@ -53,7 +56,7 @@ class GCRARCArchive: # Yay0 elif compression_scheme == 0x59617930: self.compression = "yay0" - return decompress_yay0(file_bytes) + return Yay0Decompressor().decompress(file_bytes) # Not compressed! else: return file_bytes @@ -95,6 +98,8 @@ class GCRARCArchive: n.children.append(dir_node) def emit(self, file_bytes): + assert options.opts.filesystem_path is not None + rel_path = self.file_path.relative_to(options.opts.filesystem_path / "files") arc_root_path = options.opts.asset_path / rel_path.with_suffix("") @@ -180,7 +185,7 @@ class GCRARCNode: self.name = read_string_from_bytes(self.name_offset, string_table_bytes) self.entries = [] - self.parent = None + self.parent: Optional[GCRARCNode] = None self.children = [] def get_entries(self, file_entry_offset, file_bytes, string_table_bytes): @@ -233,16 +238,13 @@ class GCRARCNode: n.print_recursive(level + 1) def get_full_directory_path(self): - path_components = [] + path_components: List[str] = [] - node = self - while True: + node: Optional[GCRARCNode] = self + while node is not None: path_components.insert(0, node.name) node = node.parent - if node == None: - break - return Path(*path_components) @@ -258,7 +260,7 @@ class GCRARCFileEntry: self.data_size = struct.unpack_from(">I", file_bytes, offset + 0x000C)[0] self.name = read_string_from_bytes(self.name_offset, string_table_bytes) - self.parent_node = None + self.parent_node: Optional[GCRARCNode] = None def emit_to_filesystem(self, dir_path: Path, file_data_offset, file_bytes): if self.flags & int(GCRARCFlags.IS_DIR) != 0x00: @@ -302,13 +304,10 @@ class GCRARCFileEntry: path_components = [self.name] node = self.parent_node - while True: + while node is not None: path_components.insert(0, node.name) node = node.parent - if node == None: - break - return Path("/".join(path_components)) diff --git a/tools/splat/segtypes/gc/relheader.py b/tools/splat/segtypes/gc/relheader.py index 69acb4b3dd..e92fc636e1 100644 --- a/tools/splat/segtypes/gc/relheader.py +++ b/tools/splat/segtypes/gc/relheader.py @@ -1,6 +1,7 @@ -from segtypes.common.header import CommonSegHeader from util import options +from segtypes.common.header import CommonSegHeader + class RelSegHeader(CommonSegHeader): def __init__(self, *args, **kwargs): diff --git a/tools/splat/segtypes/linker_entry.py b/tools/splat/segtypes/linker_entry.py index 2280c26bca..233346a4ac 100644 --- a/tools/splat/segtypes/linker_entry.py +++ b/tools/splat/segtypes/linker_entry.py @@ -1,12 +1,14 @@ -from dataclasses import dataclass -from functools import lru_cache -from typing import Dict, Optional, OrderedDict, Union, List -from pathlib import Path -from segtypes.n64.palette import N64SegPalette -from util import options -from segtypes.segment import Segment import os import re +from dataclasses import dataclass +from functools import lru_cache +from pathlib import Path +from typing import Dict, List, Optional, OrderedDict, Union + +from util import options + +from segtypes.n64.palette import N64SegPalette +from segtypes.segment import Segment # clean 'foo/../bar' to 'bar' @lru_cache(maxsize=None) @@ -167,11 +169,7 @@ class LinkerWriter: leaving_bss = False cur_section = entry.section_type - if cur_section == "linker": - self._end_block() - self._begin_segment(entry.segment) - continue - elif cur_section == "linker_offset": + if cur_section == "linker_offset": self._write_symbol(f"{get_segment_cname(entry.segment)}_OFFSET", ".") continue diff --git a/tools/splat/segtypes/n64/asm.py b/tools/splat/segtypes/n64/asm.py index 2839d3a88c..4b93b2c3b0 100644 --- a/tools/splat/segtypes/n64/asm.py +++ b/tools/splat/segtypes/n64/asm.py @@ -1,7 +1,7 @@ -from segtypes.common.asm import CommonSegAsm - from util import options +from segtypes.common.asm import CommonSegAsm + class N64SegAsm(CommonSegAsm): @staticmethod diff --git a/tools/splat/segtypes/n64/ci.py b/tools/splat/segtypes/n64/ci.py index a1b2edb739..0df169d947 100644 --- a/tools/splat/segtypes/n64/ci.py +++ b/tools/splat/segtypes/n64/ci.py @@ -1,7 +1,9 @@ -from typing import TYPE_CHECKING, Optional -from segtypes.n64.img import N64SegImg +from typing import Optional, TYPE_CHECKING + from util import log +from segtypes.n64.img import N64SegImg + if TYPE_CHECKING: from segtypes.n64.palette import N64SegPalette @@ -29,6 +31,7 @@ class N64SegCi(N64SegImg): log.error( f"no palette sibling segment exists\n(hint: add a segment with type 'palette' and name '{self.name}')" ) + assert self.palette is not None self.palette.extract = False self.n64img.palette = self.palette.parse_palette(rom_bytes) diff --git a/tools/splat/segtypes/n64/ci4.py b/tools/splat/segtypes/n64/ci4.py index bd8d936ea9..83258816e4 100644 --- a/tools/splat/segtypes/n64/ci4.py +++ b/tools/splat/segtypes/n64/ci4.py @@ -1,6 +1,7 @@ -from segtypes.n64.ci import N64SegCi import n64img.image +from segtypes.n64.ci import N64SegCi + class N64SegCi4(N64SegCi): def __init__(self, *args, **kwargs): diff --git a/tools/splat/segtypes/n64/ci8.py b/tools/splat/segtypes/n64/ci8.py index e4c5668534..dbf66cdff5 100644 --- a/tools/splat/segtypes/n64/ci8.py +++ b/tools/splat/segtypes/n64/ci8.py @@ -1,6 +1,7 @@ -from segtypes.n64.ci import N64SegCi import n64img.image +from segtypes.n64.ci import N64SegCi + class N64SegCi8(N64SegCi): def __init__(self, *args, **kwargs): diff --git a/tools/splat/segtypes/n64/gfx.py b/tools/splat/segtypes/n64/gfx.py index 6e45c2bdf1..e35b55ddb7 100644 --- a/tools/splat/segtypes/n64/gfx.py +++ b/tools/splat/segtypes/n64/gfx.py @@ -4,11 +4,39 @@ Dumps out Gfx[] as a .inc.c file. """ from pathlib import Path -from pygfxd import * -from util import log + +from pygfxd import ( + gfxd_buffer_to_string, + gfxd_cimg_callback, + gfxd_dl_callback, + gfxd_endian, + gfxd_execute, + gfxd_input_buffer, + gfxd_light_callback, + gfxd_lookat_callback, + gfxd_macro_dflt, + gfxd_macro_fn, + gfxd_mtx_callback, + gfxd_output_buffer, + gfxd_printf, + gfxd_puts, + gfxd_target, + gfxd_timg_callback, + gfxd_tlut_callback, + gfxd_vp_callback, + gfxd_vtx_callback, + gfxd_zimg_callback, + GfxdEndian, + gfxd_f3d, + gfxd_f3db, + gfxd_f3dex, + gfxd_f3dexb, + gfxd_f3dex2, +) + +from util import log, options from util.log import error -from util import options from segtypes.common.codesubsegment import CommonSegCodeSubsegment @@ -137,6 +165,9 @@ class N64SegGfx(CommonSegCodeSubsegment): return 0 def disassemble_data(self, rom_bytes): + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + gfx_data = rom_bytes[self.rom_start : self.rom_end] segment_length = len(gfx_data) if (segment_length) % 8 != 0: diff --git a/tools/splat/segtypes/n64/hasm.py b/tools/splat/segtypes/n64/hasm.py index 0c40598504..18def923fd 100644 --- a/tools/splat/segtypes/n64/hasm.py +++ b/tools/splat/segtypes/n64/hasm.py @@ -1,7 +1,7 @@ -from segtypes.common.hasm import CommonSegHasm - from util import options +from segtypes.common.hasm import CommonSegHasm + class N64SegHasm(CommonSegHasm): @staticmethod diff --git a/tools/splat/segtypes/n64/header.py b/tools/splat/segtypes/n64/header.py index f79b6eb523..96c59d5d4c 100644 --- a/tools/splat/segtypes/n64/header.py +++ b/tools/splat/segtypes/n64/header.py @@ -1,6 +1,7 @@ -from segtypes.common.header import CommonSegHeader from util import options +from segtypes.common.header import CommonSegHeader + class N64SegHeader(CommonSegHeader): def parse_header(self, rom_bytes): diff --git a/tools/splat/segtypes/n64/i4.py b/tools/splat/segtypes/n64/i4.py index 21d40beea6..16a68c5928 100644 --- a/tools/splat/segtypes/n64/i4.py +++ b/tools/splat/segtypes/n64/i4.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegI4(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.I4) + kwargs["img_cls"] = n64img.image.I4 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/i8.py b/tools/splat/segtypes/n64/i8.py index 72d85e5673..c2364f2b7e 100644 --- a/tools/splat/segtypes/n64/i8.py +++ b/tools/splat/segtypes/n64/i8.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegI8(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.I8) + kwargs["img_cls"] = n64img.image.I8 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/ia16.py b/tools/splat/segtypes/n64/ia16.py index f1af15fbe9..f2884728f7 100644 --- a/tools/splat/segtypes/n64/ia16.py +++ b/tools/splat/segtypes/n64/ia16.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegIa16(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.IA16) + kwargs["img_cls"] = n64img.image.IA16 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/ia4.py b/tools/splat/segtypes/n64/ia4.py index 264ea4909a..0eef15b3ee 100644 --- a/tools/splat/segtypes/n64/ia4.py +++ b/tools/splat/segtypes/n64/ia4.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegIa4(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.IA4) + kwargs["img_cls"] = n64img.image.IA4 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/ia8.py b/tools/splat/segtypes/n64/ia8.py index 14d3e111ad..186be5e115 100644 --- a/tools/splat/segtypes/n64/ia8.py +++ b/tools/splat/segtypes/n64/ia8.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegIa8(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.IA8) + kwargs["img_cls"] = n64img.image.IA8 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/img.py b/tools/splat/segtypes/n64/img.py index ef3336c046..9d59d24f84 100644 --- a/tools/splat/segtypes/n64/img.py +++ b/tools/splat/segtypes/n64/img.py @@ -2,9 +2,10 @@ from pathlib import Path from typing import Type from n64img.image import Image -from segtypes.n64.segment import N64Segment from util import log, options +from segtypes.n64.segment import N64Segment + class N64SegImg(N64Segment): def __init__( @@ -72,6 +73,9 @@ class N64SegImg(N64Segment): path = self.out_path() path.parent.mkdir(parents=True, exist_ok=True) + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + self.n64img.data = rom_bytes[self.rom_start : self.rom_end] self.n64img.write(path) diff --git a/tools/splat/segtypes/n64/ipl3.py b/tools/splat/segtypes/n64/ipl3.py new file mode 100644 index 0000000000..6a76cb34eb --- /dev/null +++ b/tools/splat/segtypes/n64/ipl3.py @@ -0,0 +1,9 @@ +from segtypes.common.code import CommonSegCode +from segtypes.common.hasm import CommonSegHasm + + +class N64SegIpl3(CommonSegHasm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.special_vram_segment = True diff --git a/tools/splat/segtypes/n64/linker.py b/tools/splat/segtypes/n64/linker.py deleted file mode 100644 index 1253e0771f..0000000000 --- a/tools/splat/segtypes/n64/linker.py +++ /dev/null @@ -1,8 +0,0 @@ -from segtypes.n64.segment import N64Segment - - -class N64SegLinker(N64Segment): - def get_linker_entries(self): - from segtypes.linker_entry import LinkerEntry - - return [LinkerEntry(self, [], self.name, "linker")] diff --git a/tools/splat/segtypes/n64/linker_offset.py b/tools/splat/segtypes/n64/linker_offset.py index fdf3043d6f..ac4d94546a 100644 --- a/tools/splat/segtypes/n64/linker_offset.py +++ b/tools/splat/segtypes/n64/linker_offset.py @@ -1,3 +1,5 @@ +from pathlib import Path + from segtypes.n64.segment import N64Segment @@ -5,4 +7,4 @@ class N64SegLinker_offset(N64Segment): def get_linker_entries(self): from segtypes.linker_entry import LinkerEntry - return [LinkerEntry(self, [], self.name, "linker_offset")] + return [LinkerEntry(self, [], Path(self.name), "linker_offset")] diff --git a/tools/splat/segtypes/n64/mio0.py b/tools/splat/segtypes/n64/mio0.py new file mode 100644 index 0000000000..5ad4635502 --- /dev/null +++ b/tools/splat/segtypes/n64/mio0.py @@ -0,0 +1,10 @@ +from util.n64.Mio0decompress import Mio0Decompressor + +from segtypes.common.decompressor import CommonSegDecompressor + + +class N64SegMio0(CommonSegDecompressor): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.decompressor = Mio0Decompressor() + self.compression_type = "Mio0" diff --git a/tools/splat/segtypes/n64/palette.py b/tools/splat/segtypes/n64/palette.py index 5e332379d8..b9d048f930 100644 --- a/tools/splat/segtypes/n64/palette.py +++ b/tools/splat/segtypes/n64/palette.py @@ -1,11 +1,12 @@ from itertools import zip_longest from pathlib import Path -from typing import TYPE_CHECKING, Optional +from typing import List, Optional, Tuple, TYPE_CHECKING -from segtypes.n64.segment import N64Segment from util import log, options from util.color import unpack_color +from segtypes.n64.segment import N64Segment + if TYPE_CHECKING: from segtypes.n64.ci import N64SegCi as Raster @@ -57,12 +58,16 @@ class N64SegPalette(N64Segment): # TODO: output with no raster log.error(f"orphaned palette segment: {self.name} lacks ci4/ci8 sibling") - self.raster.n64img.palette = self.parse_palette(rom_bytes) + assert self.raster is not None + self.raster.n64img.palette = self.parse_palette(rom_bytes) # type: ignore self.raster.n64img.write(self.out_path()) self.raster.extract = False - def parse_palette(self, rom_bytes): + def parse_palette(self, rom_bytes) -> List[Tuple[int, int, int, int]]: + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + data = rom_bytes[self.rom_start : self.rom_end] palette = [] diff --git a/tools/splat/segtypes/n64/rgba16.py b/tools/splat/segtypes/n64/rgba16.py index 34908639ee..4b6f4fdea7 100644 --- a/tools/splat/segtypes/n64/rgba16.py +++ b/tools/splat/segtypes/n64/rgba16.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegRgba16(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.RGBA16) + kwargs["img_cls"] = n64img.image.RGBA16 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/rgba32.py b/tools/splat/segtypes/n64/rgba32.py index 15a5aa2dd7..ae3d5383e4 100644 --- a/tools/splat/segtypes/n64/rgba32.py +++ b/tools/splat/segtypes/n64/rgba32.py @@ -1,7 +1,9 @@ -from segtypes.n64.img import N64SegImg import n64img.image +from segtypes.n64.img import N64SegImg + class N64SegRgba32(N64SegImg): def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs, img_cls=n64img.image.RGBA32) + kwargs["img_cls"] = n64img.image.RGBA32 + super().__init__(*args, **kwargs) diff --git a/tools/splat/segtypes/n64/rsp.py b/tools/splat/segtypes/n64/rsp.py new file mode 100644 index 0000000000..f69123a457 --- /dev/null +++ b/tools/splat/segtypes/n64/rsp.py @@ -0,0 +1,10 @@ +import rabbitizer + +from segtypes.common.hasm import CommonSegHasm + + +class N64SegRsp(CommonSegHasm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + self.instr_category = rabbitizer.InstrCategory.RSP diff --git a/tools/splat/segtypes/n64/vtx.py b/tools/splat/segtypes/n64/vtx.py index 5a0e1c0f12..85d61c2e6d 100644 --- a/tools/splat/segtypes/n64/vtx.py +++ b/tools/splat/segtypes/n64/vtx.py @@ -7,9 +7,10 @@ Originally written by Mark Street (https://github.com/mkst) import struct from pathlib import Path -from util.log import error from util import options +from util.log import error + from segtypes.common.codesubsegment import CommonSegCodeSubsegment @@ -45,6 +46,9 @@ class N64SegVtx(CommonSegCodeSubsegment): self.file_text = self.disassemble_data(rom_bytes) def disassemble_data(self, rom_bytes): + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + vertex_data = rom_bytes[self.rom_start : self.rom_end] segment_length = len(vertex_data) if (segment_length) % 16 != 0: diff --git a/tools/splat/segtypes/n64/yay0.py b/tools/splat/segtypes/n64/yay0.py new file mode 100644 index 0000000000..210f7611a9 --- /dev/null +++ b/tools/splat/segtypes/n64/yay0.py @@ -0,0 +1,10 @@ +from util.n64.Yay0decompress import Yay0Decompressor + +from segtypes.common.decompressor import CommonSegDecompressor + + +class N64SegYay0(CommonSegDecompressor): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.decompressor = Yay0Decompressor() + self.compression_type = "Yay0" diff --git a/tools/splat/segtypes/psx/asm.py b/tools/splat/segtypes/psx/asm.py index b1ff86415a..2e9ff5ea50 100644 --- a/tools/splat/segtypes/psx/asm.py +++ b/tools/splat/segtypes/psx/asm.py @@ -1,7 +1,7 @@ -from segtypes.common.asm import CommonSegAsm - from util import options +from segtypes.common.asm import CommonSegAsm + class PsxSegAsm(CommonSegAsm): @staticmethod @@ -10,9 +10,8 @@ class PsxSegAsm(CommonSegAsm): ret.append('.include "macro.inc"') ret.append("") - ret.append("/* assembler directives */") - ret.append(".set noat /* allow manual use of $at */") - ret.append(".set noreorder /* don't insert nops after branches */") + ret.append(".set noat") + ret.append(".set noreorder") ret.append("") preamble = options.opts.generated_s_preamble if preamble: diff --git a/tools/splat/segtypes/psx/header.py b/tools/splat/segtypes/psx/header.py index 2c79737944..aeda3ee2b2 100644 --- a/tools/splat/segtypes/psx/header.py +++ b/tools/splat/segtypes/psx/header.py @@ -51,6 +51,7 @@ class PsxSegHeader(CommonSegHeader): header_lines.append(self.get_line("word", rom_bytes[0x40:0x44], "Reserved")) header_lines.append(self.get_line("word", rom_bytes[0x44:0x48], "Reserved")) header_lines.append(self.get_line("word", rom_bytes[0x48:0x4C], "Reserved")) + assert isinstance(self.rom_end, int) header_lines.append( self.get_line("ascii", rom_bytes[0x4C : self.rom_end], "Sony Inc") ) diff --git a/tools/splat/segtypes/segment.py b/tools/splat/segtypes/segment.py index e3093e1441..d4160b9baa 100644 --- a/tools/splat/segtypes/segment.py +++ b/tools/splat/segtypes/segment.py @@ -1,15 +1,14 @@ import importlib import importlib.util - -from typing import Any, Dict, TYPE_CHECKING, Set, Type, Union, Optional, List from pathlib import Path -from util import log -from util import options -from util import symbols -from util.symbols import Symbol +from typing import Any, Dict, List, Optional, Set, Type, TYPE_CHECKING, Union + from intervaltree import Interval, IntervalTree +from util import log, options, symbols +from util.symbols import Symbol + # circular import if TYPE_CHECKING: from segtypes.linker_entry import LinkerEntry @@ -98,6 +97,7 @@ class Segment: log.error( f"could not load presumed extended segment type '{seg_type}' because no extensions path is configured" ) + assert ext_path is not None try: ext_spec = importlib.util.spec_from_file_location( @@ -221,6 +221,9 @@ class Segment: self.warnings: List[str] = [] self.did_run = False + # For segments which are not in the usual VRAM segment space, like N64's IPL3 which lives in 0xA4... + self.special_vram_segment: bool = False + if isinstance(self.rom_start, int) and isinstance(self.rom_end, int): if self.rom_start > self.rom_end: log.error( diff --git a/tools/splat/split.py b/tools/splat/split.py index bbda664551..80a5faee7c 100755 --- a/tools/splat/split.py +++ b/tools/splat/split.py @@ -2,9 +2,9 @@ import argparse import hashlib +import importlib import pickle from typing import Any, Dict, List, Optional, Set, Union -import importlib import rabbitizer import spimdisasm @@ -17,9 +17,9 @@ from segtypes.linker_entry import LinkerWriter, to_cname from segtypes.segment import RomAddr, Segment from util import compiler, log, options, palettes, symbols -VERSION = "0.12.4" +VERSION = "0.12.7" # This value should be keep in sync with the version listed on requirements.txt -SPIMDISASM_MIN = (1, 5, 6) +SPIMDISASM_MIN = (1, 7, 11) parser = argparse.ArgumentParser( description="Split a rom given a rom, a config, and output directory" @@ -30,6 +30,11 @@ parser.add_argument("--verbose", action="store_true", help="Enable debug logging parser.add_argument( "--use-cache", action="store_true", help="Only split changed segments in config" ) +parser.add_argument( + "--skip-version-check", + action="store_true", + help="Skips the disassembler's version check", +) linker_writer: LinkerWriter config: Dict[str, Any] @@ -68,7 +73,7 @@ def initialize_segments(config_segments: Union[dict, list]) -> List[Segment]: this_start = Segment.parse_segment_start(seg_yaml) - if i == len(config_segments) - 1 and Segment.parse_segment_file_path: + if i == len(config_segments) - 1 and Segment.parse_segment_file_path(seg_yaml): next_start: RomAddr = 0 else: next_start = Segment.parse_segment_start(config_segments[i + 1]) @@ -114,7 +119,7 @@ def assign_symbols_to_segments(): continue if symbol.rom: - cands = segment_roms[symbol.rom] + cands: Set[Interval] = segment_roms[symbol.rom] if len(cands) > 1: log.error("multiple segments rom overlap symbol", symbol) elif len(cands) == 0: @@ -124,7 +129,7 @@ def assign_symbols_to_segments(): seg: Segment = cand.data seg.add_symbol(symbol) else: - cands: Set[Interval] = segment_rams[symbol.vram_start] + cands = segment_rams[symbol.vram_start] segs: List[Segment] = [cand.data for cand in cands] for seg in segs: if not seg.get_exclusive_ram_id(): @@ -238,6 +243,7 @@ def configure_disassembler(): spimdisasm.common.GlobalConfig.GP_VALUE = options.opts.gp spimdisasm.common.GlobalConfig.ASM_TEXT_LABEL = options.opts.asm_function_macro + spimdisasm.common.GlobalConfig.ASM_JTBL_LABEL = options.opts.asm_jtbl_label_macro spimdisasm.common.GlobalConfig.ASM_DATA_LABEL = options.opts.asm_data_macro spimdisasm.common.GlobalConfig.ASM_TEXT_END_LABEL = options.opts.asm_end_label @@ -258,10 +264,10 @@ def brief_seg_name(seg: Segment, limit: int, ellipsis="…") -> str: return s -def main(config_path, modes, verbose, use_cache=True): +def main(config_path, modes, verbose, use_cache=True, skip_version_check=False): global config - if spimdisasm.__version_info__ < SPIMDISASM_MIN: + if not skip_version_check and spimdisasm.__version_info__ < SPIMDISASM_MIN: log.error( f"splat {VERSION} requires as minimum spimdisasm {SPIMDISASM_MIN}, but the installed version is {spimdisasm.__version_info__}" ) @@ -505,4 +511,4 @@ def main(config_path, modes, verbose, use_cache=True): if __name__ == "__main__": args = parser.parse_args() - main(args.config, args.modes, args.verbose, args.use_cache) + main(args.config, args.modes, args.verbose, args.use_cache, args.skip_version_check) diff --git a/tools/splat/util/compiler.py b/tools/splat/util/compiler.py index 205af0a771..c89c35c019 100644 --- a/tools/splat/util/compiler.py +++ b/tools/splat/util/compiler.py @@ -5,6 +5,7 @@ from dataclasses import dataclass class Compiler: name: str asm_function_macro: str = "glabel" + asm_jtbl_label_macro: str = "glabel" asm_data_macro: str = "glabel" asm_end_label: str = "" c_newline: str = "\n" @@ -20,6 +21,7 @@ GCC = Compiler( SN64 = Compiler( "SN64", asm_function_macro=".globl", + asm_jtbl_label_macro=".globl", asm_data_macro=".globl", asm_end_label=".end", c_newline="\r\n", diff --git a/tools/splat/util/gc/gcfst.py b/tools/splat/util/gc/gcfst.py index e3bfcabe91..e50420f71c 100644 --- a/tools/splat/util/gc/gcfst.py +++ b/tools/splat/util/gc/gcfst.py @@ -1,10 +1,11 @@ import struct +from pathlib import Path +from typing import List, Optional from segtypes.gc.segment import GCSegment -from pathlib import Path + from util import options from util.gc.gcutil import read_string_from_bytes -from typing import List, Optional # Represents the info for either a directory or a file within a GameCube disc image's file system. @@ -57,11 +58,14 @@ class GCFSTEntry: # Builds this entry's full path within the filesystem from its parents' names. def get_full_name(self): - path_components = [] + path_components: List[str] = [] entry = self while entry.parent != None: path_components.insert(0, entry.name) + + if entry.parent is None: + break entry = entry.parent return Path(*path_components) @@ -96,6 +100,8 @@ def split_iso(iso_bytes): # Splits the header info, apploader, DOL, and FST metadata from the ISO. def split_sys_info(iso_bytes): + assert options.opts.filesystem_path is not None + sys_path = options.opts.filesystem_path / "sys" sys_path.mkdir(parents=True, exist_ok=True) @@ -128,6 +134,8 @@ def split_sys_info(iso_bytes): # Splits the ISO's filesystem into individual files. def split_content(iso_bytes): + assert options.opts.filesystem_path is not None + fst_path = options.opts.filesystem_path / "sys" / "fst.bin" assert fst_path.is_file() diff --git a/tools/splat/util/gc/gcinfo.py b/tools/splat/util/gc/gcinfo.py index 002c6434f4..78130df8bc 100644 --- a/tools/splat/util/gc/gcinfo.py +++ b/tools/splat/util/gc/gcinfo.py @@ -1,17 +1,12 @@ #! /usr/bin/env python3 -from dataclasses import dataclass -import sys -import os import argparse -import itertools -import struct - -from pathlib import Path import hashlib -import zlib + +from pathlib import Path +from typing import Optional parser = argparse.ArgumentParser( description="Gives information on GameCube disc images" @@ -31,7 +26,7 @@ region_codes = {"E": "NTSC-U", "J": "NTSC-J", "P": "PAL"} publisher_codes = {"01": "Nintendo", "08": "Capcom", "8P": "Sega", "E9": "Natsume"} -def get_info(iso_path: Path, iso_bytes: bytes = None): +def get_info(iso_path: Path, iso_bytes: Optional[bytes] = None): if iso_bytes is None: iso_bytes = iso_path.read_bytes() diff --git a/tools/splat/util/log.py b/tools/splat/util/log.py index e5cca3580e..e33e9998d8 100644 --- a/tools/splat/util/log.py +++ b/tools/splat/util/log.py @@ -1,7 +1,8 @@ import sys -from colorama import init, Fore, Style from typing import Optional +from colorama import Fore, init, Style + init(autoreset=True) newline = True diff --git a/tools/splat/util/n64/Mio0decompress.py b/tools/splat/util/n64/Mio0decompress.py new file mode 100644 index 0000000000..64a059e7cf --- /dev/null +++ b/tools/splat/util/n64/Mio0decompress.py @@ -0,0 +1,108 @@ +import argparse +import struct +import sys + +try: + from .. import log + from .decompressor import Decompressor +except ImportError: + print(f"Run as python3 -m util.n64.Miodecompress") + sys.exit(1) + + +class GenericMio0Decompressor(Decompressor): + def __init__( + self, unpacked_offset, compressed_offset, uncompressed_offset, header_length + ): + self.unpacked_offset = unpacked_offset + self.compressed_offset = compressed_offset + self.uncompressed_offset = uncompressed_offset + self.header_length = header_length + + @staticmethod + def read_word(data, offset): + (res,) = struct.unpack(">I", data[offset : offset + 4]) + return res + + @staticmethod + def read_short(data, offset): + (res,) = struct.unpack(">H", data[offset : offset + 2]) + return res + + def decompress(self, in_bytes, byte_order="big") -> bytearray: + magic = in_bytes[0:4] + if magic != b"MIO0": + log.error(f"MIO0 magic is incorrect: {magic}") + + unpacked_size = self.read_word(in_bytes, self.unpacked_offset) + comp_offset = self.read_word(in_bytes, self.compressed_offset) + uncomp_offset = self.read_word(in_bytes, self.uncompressed_offset) + + layout_data = struct.iter_unpack(">I", in_bytes[self.header_length :]) + uncompressed_data = struct.iter_unpack(">B", in_bytes[uncomp_offset:]) + compressed_data = struct.iter_unpack(">H", in_bytes[comp_offset:]) + + idx = 0 + ret = bytearray(unpacked_size) + + mask_bit_counter = 0 + while idx < unpacked_size: + if mask_bit_counter == 0: + (current_mask,) = next(layout_data) + mask_bit_counter = 32 + + if current_mask & 0x80000000: + (ud,) = next(uncompressed_data) + ret[idx] = ud + idx += 1 + else: + (length_offset,) = next(compressed_data) + + length = (length_offset >> 12) + 3 + index = (length_offset & 0xFFF) + 1 + offset = idx - index + + if not (3 <= length <= 18): + log.error(f"Invalid length: {length}, corrupt data?") + + if not (1 <= index <= 4096): + log.error(f"Invalid index: {index}, corrupt data?") + + for i in range(length): + ret[idx] = ret[offset + i] + idx += 1 + + current_mask <<= 1 + mask_bit_counter -= 1 + + return ret + + +class Mio0Decompressor(GenericMio0Decompressor): + def __init__(self): + super().__init__( + unpacked_offset=4, + compressed_offset=8, + uncompressed_offset=12, + header_length=16, + ) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("infile") + parser.add_argument("outfile") + args = parser.parse_args() + + with open(args.infile, "rb") as f: + raw_bytes = f.read() + + miodecompress = Mio0Decompressor() + decompressed = miodecompress.decompress(raw_bytes) + + with open(args.outfile, "wb") as f: + f.write(decompressed) + + +if __name__ == "__main__": + main() diff --git a/tools/splat/util/n64/Yay0decompress.py b/tools/splat/util/n64/Yay0decompress.py index 547e696a84..ca24c23695 100644 --- a/tools/splat/util/n64/Yay0decompress.py +++ b/tools/splat/util/n64/Yay0decompress.py @@ -1,12 +1,19 @@ import argparse -import sys import os +import sys from ctypes import * from struct import pack, unpack_from -from util import log +from typing import Optional + +try: + from .. import log + from .decompressor import Decompressor +except ImportError: + print(f"Run as python3 -m util.n64.Yay0decompress") + sys.exit(1) tried_loading = False -lib = None +lib: Optional[CDLL] = None def setup_lib(): @@ -23,125 +30,133 @@ def setup_lib(): ) return True except Exception: - print("Failed to load C library; falling back to python method") + log.write( + "Failed to load Yay0 C library; falling back to Python method", + status="warn", + ) tried_loading = True return False -def decompress_yay0(in_bytes, byte_order="big"): - # attempt to load the library only once per execution - global lib - if not setup_lib(): - return decompress_yay0_python(in_bytes, byte_order) +class Yay0Decompressor(Decompressor): + def decompress(self, in_bytes, byte_order="big") -> bytearray: + # attempt to load the library only once per execution + global lib + if not setup_lib(): + return self.decompress_python(in_bytes, byte_order) + assert lib is not None - class Yay0(Structure): - _fields_ = [ - ("magic", c_uint32), - ("uncompressedLength", c_uint32), - ("opPtr", c_uint32), - ("dataPtr", c_uint32), - ] + class Yay0(Structure): + _fields_ = [ + ("magic", c_uint32), + ("uncompressedLength", c_uint32), + ("opPtr", c_uint32), + ("dataPtr", c_uint32), + ] - # read the file header - bigEndian = byte_order == "big" - if bigEndian: - # the struct is only a view, so when passed to C it will keep - # its BigEndian values and crash. Explicitly convert them here to little - hdr = Yay0.from_buffer_copy(pack("IIII", in_bytes, 0))) - else: - hdr = Yay0.from_buffer_copy(in_bytes, 0) - - magic = getattr(hdr, hdr._fields_[0][0]) - if magic != int.from_bytes(str.encode("Yay0"), byteorder="big"): - log.error(f"Yay0 magic is incorrect: {magic}") - - # create the input/output buffers, copying data to in - src = (c_uint8 * len(in_bytes)).from_buffer_copy(in_bytes, 0) - dst = (c_uint8 * hdr.uncompressedLength)() - - # call decompress, equivilant to, in C: - # decompress(&hdr, &src, &dst, bigEndian) - lib.decompress(byref(hdr), byref(src), byref(dst), c_bool(bigEndian)) - - # other functions want the results back as a non-ctypes type - return bytearray(dst) - - -def decompress_yay0_python(in_bytes, byte_order="big"): - if in_bytes[:4] != b"Yay0": - sys.exit("Input file is not yay0") - - decompressed_size = int.from_bytes(in_bytes[4:8], byteorder=byte_order) - link_table_offset = int.from_bytes(in_bytes[8:12], byteorder=byte_order) - chunk_offset = int.from_bytes(in_bytes[12:16], byteorder=byte_order) - - link_table_idx = link_table_offset - chunk_idx = chunk_offset - other_idx = 16 - - mask_bit_counter = 0 - current_mask = 0 - - # preallocate result and index into it - idx = 0 - ret = bytearray(decompressed_size) - - while idx < decompressed_size: - # If we're out of bits, get the next mask - if mask_bit_counter == 0: - current_mask = int.from_bytes( - in_bytes[other_idx : other_idx + 4], byteorder=byte_order + # read the file header + bigEndian = byte_order == "big" + if bigEndian: + # the struct is only a view, so when passed to C it will keep + # its BigEndian values and crash. Explicitly convert them here to little + hdr = Yay0.from_buffer_copy( + pack("IIII", in_bytes, 0)) ) - other_idx += 4 - mask_bit_counter = 32 - - if current_mask & 0x80000000: - ret[idx] = in_bytes[chunk_idx] - idx += 1 - chunk_idx += 1 else: - link = int.from_bytes( - in_bytes[link_table_idx : link_table_idx + 2], byteorder=byte_order - ) - link_table_idx += 2 + hdr = Yay0.from_buffer_copy(in_bytes, 0) - offset = idx - (link & 0xFFF) + magic = getattr(hdr, hdr._fields_[0][0]) + if magic != int.from_bytes(str.encode("Yay0"), byteorder="big"): + log.error(f"Yay0 magic is incorrect: {magic}") - count = link >> 12 + # create the input/output buffers, copying data to in + src = (c_uint8 * len(in_bytes)).from_buffer_copy(in_bytes, 0) + dst = (c_uint8 * hdr.uncompressedLength)() - if count == 0: - count_modifier = in_bytes[chunk_idx] - chunk_idx += 1 - count = count_modifier + 18 - else: - count += 2 + # call decompress, equivilant to, in C: + # decompress(&hdr, &src, &dst, bigEndian) + lib.decompress(byref(hdr), byref(src), byref(dst), c_bool(bigEndian)) - # Copy the block - for i in range(count): - ret[idx] = ret[offset + i - 1] + # other functions want the results back as a non-ctypes type + return bytearray(dst) + + @staticmethod + def decompress_python(in_bytes, byte_order="big"): + if in_bytes[:4] != b"Yay0": + log.error("Input file is not Yay0") + + decompressed_size = int.from_bytes(in_bytes[4:8], byteorder=byte_order) + link_table_offset = int.from_bytes(in_bytes[8:12], byteorder=byte_order) + chunk_offset = int.from_bytes(in_bytes[12:16], byteorder=byte_order) + + link_table_idx = link_table_offset + chunk_idx = chunk_offset + other_idx = 16 + + mask_bit_counter = 0 + current_mask = 0 + + # preallocate result and index into it + idx = 0 + ret = bytearray(decompressed_size) + + while idx < decompressed_size: + # If we're out of bits, get the next mask + if mask_bit_counter == 0: + current_mask = int.from_bytes( + in_bytes[other_idx : other_idx + 4], byteorder=byte_order + ) + other_idx += 4 + mask_bit_counter = 32 + + if current_mask & 0x80000000: + ret[idx] = in_bytes[chunk_idx] idx += 1 + chunk_idx += 1 + else: + link = int.from_bytes( + in_bytes[link_table_idx : link_table_idx + 2], byteorder=byte_order + ) + link_table_idx += 2 - current_mask <<= 1 - mask_bit_counter -= 1 + offset = idx - (link & 0xFFF) - return ret + count = link >> 12 + + if count == 0: + count_modifier = in_bytes[chunk_idx] + chunk_idx += 1 + count = count_modifier + 18 + else: + count += 2 + + # Copy the block + for i in range(count): + ret[idx] = ret[offset + i - 1] + idx += 1 + + current_mask <<= 1 + mask_bit_counter -= 1 + + return ret -def main(args): +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("infile") + parser.add_argument("outfile") + parser.add_argument("--byte-order", default="big", choices=["big", "little"]) + args = parser.parse_args() + with open(args.infile, "rb") as f: raw_bytes = f.read() - decompressed = decompress_yay0(raw_bytes, args.byte_order) + yay0decompressor = Yay0Decompressor() + decompressed = yay0decompressor.decompress(raw_bytes, args.byte_order) with open(args.outfile, "wb") as f: f.write(decompressed) if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("infile") - parser.add_argument("outfile") - parser.add_argument("--byte-order", default="big", choices=["big", "little"]) - - args = parser.parse_args() - main(args) + main() diff --git a/tools/splat/util/n64/decompressor.py b/tools/splat/util/n64/decompressor.py new file mode 100644 index 0000000000..cc5ddb8f80 --- /dev/null +++ b/tools/splat/util/n64/decompressor.py @@ -0,0 +1,7 @@ +from abc import ABC, abstractmethod + + +class Decompressor(ABC): + @abstractmethod + def decompress(self, in_bytes, byte_order="big") -> bytearray: + pass diff --git a/tools/splat/util/n64/find_code_length.py b/tools/splat/util/n64/find_code_length.py index 8d7b8b522f..1f9053cab4 100755 --- a/tools/splat/util/n64/find_code_length.py +++ b/tools/splat/util/n64/find_code_length.py @@ -1,8 +1,9 @@ #! /usr/bin/env python3 import argparse -import spimdisasm + import rabbitizer +import spimdisasm def int_any_base(x): diff --git a/tools/splat/util/n64/rominfo.py b/tools/splat/util/n64/rominfo.py index 52ad30f98a..a210c2340d 100755 --- a/tools/splat/util/n64/rominfo.py +++ b/tools/splat/util/n64/rominfo.py @@ -1,18 +1,20 @@ #! /usr/bin/env python3 -from dataclasses import dataclass - -import sys import argparse -import itertools -import struct -import spimdisasm -import rabbitizer - -from pathlib import Path import hashlib +import itertools +import struct + +import sys import zlib +from dataclasses import dataclass + +from pathlib import Path +from typing import Optional + +import rabbitizer +import spimdisasm parser = argparse.ArgumentParser(description="Gives information on N64 roms") parser.add_argument("rom", help="path to an N64 rom") @@ -112,7 +114,7 @@ def guess_header_encoding(rom_bytes: bytes): sys.exit("Unknown header encoding, please raise an Issue with us") -def get_info(rom_path: Path, rom_bytes: bytes = None, header_encoding=None): +def get_info(rom_path: Path, rom_bytes: Optional[bytes] = None, header_encoding=None): if rom_bytes is None: rom_bytes = read_rom(rom_path) diff --git a/tools/splat/util/options.py b/tools/splat/util/options.py index 6e1add1d98..8fa876d055 100644 --- a/tools/splat/util/options.py +++ b/tools/splat/util/options.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from pathlib import Path -from typing import Dict, List, Mapping, Optional, Type, TypeVar +from typing import cast, Dict, List, Literal, Mapping, Optional, Set, Type, TypeVar from util import compiler from util.compiler import Compiler @@ -24,7 +24,7 @@ class SplatOpts: # Determines the compiler used to compile the target binary compiler: Compiler # Determines the endianness of the target binary - endianness: str + endianness: Literal["big", "little"] # Determines the default section order of the target binary # this can be overridden per-segment section_order: List[str] @@ -125,10 +125,14 @@ class SplatOpts: asm_inc_header: str # Determines the macro used to declare functions in asm files asm_function_macro: str + # Determines the macro used to declare jumptable labels in asm files + asm_jtbl_label_macro: str # Determines the macro used to declare data symbols in asm files asm_data_macro: str # Determines the macro used at the end of a function, such as endlabel or .end asm_end_label: str + # Determines including the macro.inc file on non-migrated rodata variables + include_macro_inc: bool # Determines the number of characters to left align before the TODO finish documenting mnemonic_ljust: int # Determines whether to pad the rom address @@ -164,7 +168,7 @@ class SplatOpts: # Gamecube-specific options ################################################################################ # Path where the iso's filesystem will be extracted to - filesystem_path: Path + filesystem_path: Optional[Path] ################################################################################ # Compiler-specific options @@ -181,206 +185,210 @@ class SplatOpts: opts: SplatOpts -def parse_yaml( - yaml: Dict, - basename: str, - config_paths: List[str], - modes: List[str], - verbose: bool = False, -) -> SplatOpts: - T = TypeVar("T") +T = TypeVar("T") - def yaml_as_type(value: object, t: Type[T]) -> T: - if isinstance(value, t): - return value - raise ValueError(f"Expected {t}, got {type(value)}") - def parse_opt( - yaml: Mapping[str, object], - opt: str, - t: Type[T], - default: Optional[T] = None, - ) -> T: - value = yaml.get(opt) - if isinstance(value, t): - # Fast path - return value - if value is None and opt not in yaml: +class OptParser: + _read_opts: Set[str] + + def __init__(self, yaml: Mapping[str, object]) -> None: + self._yaml = yaml + self._read_opts = set() + + def parse_opt(self, opt: str, t: Type[T], default: Optional[T] = None) -> T: + if opt not in self._yaml: if default is not None: return default raise ValueError(f"Missing required option {opt}") - return yaml_as_type(value, t) - - def parse_optional_opt( - yaml: Mapping[str, object], - opt: str, - t: Type[T], - default: Optional[T] = None, - ) -> Optional[T]: - value = yaml.get(opt) + self._read_opts.add(opt) + value = self._yaml[opt] if isinstance(value, t): - # Fast path return value - if value is None and opt not in yaml: - return default - return yaml_as_type(value, t) + if t is float and isinstance(value, int): + return cast(T, float(value)) + raise ValueError(f"Expected {opt} to have type {t}, got {type(value)}") + + def parse_optional_opt(self, opt: str, t: Type[T]) -> Optional[T]: + if opt not in self._yaml: + return None + return self.parse_opt(opt, t) def parse_opt_within( - yaml: Mapping[str, object], - opt: str, - t: Type[T], - within: List[T], - default: Optional[T] = None, + self, opt: str, t: Type[T], within: List[T], default: Optional[T] = None ) -> T: - value = parse_opt(yaml, opt, t, default) + value = self.parse_opt(opt, t, default) if value not in within: raise ValueError(f"Invalid value for {opt}: {value}") return value def parse_path( - yaml: Mapping[str, object], opt: str, default: Optional[str] = None + self, base_path: Path, opt: str, default: Optional[str] = None ) -> Path: - value = parse_opt(yaml, opt, str, default) - return Path(value) + return base_path / Path(self.parse_opt(opt, str, default)) - def parse_optional_path(yaml: Mapping[str, object], opt: str, base_path: Path): - value = yaml.get(opt) - if value is None: + def parse_optional_path(self, base_path: Path, opt: str) -> Optional[Path]: + if opt not in self._yaml: return None - if not isinstance(value, str): - raise ValueError(f"Expected str, got {type(value)}") - return base_path / Path(value) + return self.parse_path(base_path, opt) - def parse_symbol_addrs_paths(yaml: Mapping[str, object]) -> List[Path]: - paths = yaml.get("symbol_addrs_path", "symbol_addrs.txt") + def check_no_unread_opts(self) -> None: + opts = [opt for opt in self._yaml if opt not in self._read_opts] + if opts: + raise ValueError(f"Unrecognized YAML option(s): {', '.join(opts)}") + + +def _parse_yaml( + yaml: Dict, + config_paths: List[str], + modes: List[str], + verbose: bool = False, +) -> SplatOpts: + p = OptParser(yaml) + + def parse_symbol_addrs_paths(base_path: Path) -> List[Path]: + paths = p.parse_opt("symbol_addrs_path", object, "symbol_addrs.txt") if isinstance(paths, str): return [base_path / paths] elif isinstance(paths, list): return [base_path / path for path in paths] else: - raise ValueError(f"Expected str or list, got {type(paths)}") + raise ValueError( + f"Expected str or list for 'symbol_addrs_paths', got {type(paths)}" + ) - platform = parse_opt_within(yaml, "platform", str, ["n64", "psx", "gc"]) - comp = compiler.for_name(parse_opt(yaml, "compiler", str, "IDO")) + basename = p.parse_opt("basename", str) + platform = p.parse_opt_within("platform", str, ["n64", "psx", "gc", "ps2"]) + comp = compiler.for_name(p.parse_opt("compiler", str, "IDO")) - base_path = Path(config_paths[0]).parent / parse_opt(yaml, "base_path", str) - asm_path: Path = base_path / parse_path(yaml, "asm_path", "asm") + base_path = Path(config_paths[0]).parent / p.parse_opt("base_path", str) + asm_path: Path = p.parse_path(base_path, "asm_path", "asm") - return SplatOpts( - verbose=verbose, - dump_symbols=parse_opt(yaml, "dump_symbols", bool, False), - modes=modes, - base_path=base_path, - target_path=base_path / parse_path(yaml, "target_path"), - platform=platform, - compiler=comp, - endianness=parse_opt( - yaml, + def parse_endianness() -> Literal["big", "little"]: + endianness = p.parse_opt_within( "endianness", str, - "little" if platform.lower() == "psx" else "big", + ["big", "little"], + "little" if platform in ["psx", "ps2"] else "big", + ) + + if endianness == "big": + return "big" + elif endianness == "little": + return "little" + else: + raise ValueError(f"Invalid endianness: {endianness}") + + ret = SplatOpts( + verbose=verbose, + dump_symbols=p.parse_opt("dump_symbols", bool, False), + modes=modes, + base_path=base_path, + target_path=p.parse_path(base_path, "target_path"), + platform=platform, + compiler=comp, + endianness=parse_endianness(), + section_order=p.parse_opt( + "section_order", list, [".text", ".data", ".rodata", ".bss"] ), - section_order=parse_opt( - yaml, "section_order", list, [".text", ".data", ".rodata", ".bss"] + generated_c_preamble=p.parse_opt( + "generated_c_preamble", str, '#include "common.h"' ), - generated_c_preamble=parse_opt( - yaml, "generated_c_preamble", str, '#include "common.h"' - ), - generated_s_preamble=parse_opt(yaml, "generated_s_preamble", str, ""), - use_o_as_suffix=parse_opt(yaml, "o_as_suffix", bool, False), - gp=parse_opt(yaml, "gp_value", int, 0), - asset_path=base_path / parse_path(yaml, "asset_path", "assets"), - symbol_addrs_paths=parse_symbol_addrs_paths(yaml), - build_path=base_path / parse_path(yaml, "build_path", "build"), - src_path=base_path / parse_path(yaml, "src_path", "src"), + generated_s_preamble=p.parse_opt("generated_s_preamble", str, ""), + use_o_as_suffix=p.parse_opt("o_as_suffix", bool, False), + gp=p.parse_opt("gp_value", int, 0), + asset_path=p.parse_path(base_path, "asset_path", "assets"), + symbol_addrs_paths=parse_symbol_addrs_paths(base_path), + build_path=p.parse_path(base_path, "build_path", "build"), + src_path=p.parse_path(base_path, "src_path", "src"), asm_path=asm_path, - data_path=asm_path / parse_path(yaml, "data_path", "data"), - nonmatchings_path=asm_path - / parse_path(yaml, "nonmatchings_path", "nonmatchings"), - cache_path=base_path / parse_path(yaml, "cache_path", ".splache"), - create_undefined_funcs_auto=parse_opt( - yaml, "create_undefined_funcs_auto", bool, True + data_path=p.parse_path(asm_path, "data_path", "data"), + nonmatchings_path=p.parse_path(asm_path, "nonmatchings_path", "nonmatchings"), + cache_path=p.parse_path(base_path, "cache_path", ".splache"), + create_undefined_funcs_auto=p.parse_opt( + "create_undefined_funcs_auto", bool, True ), - undefined_funcs_auto_path=base_path - / parse_path(yaml, "undefined_funcs_auto_path", "undefined_funcs_auto.txt"), - create_undefined_syms_auto=parse_opt( - yaml, "create_undefined_syms_auto", bool, True + undefined_funcs_auto_path=p.parse_path( + base_path, "undefined_funcs_auto_path", "undefined_funcs_auto.txt" ), - undefined_syms_auto_path=base_path - / parse_path(yaml, "undefined_syms_auto_path", "undefined_syms_auto.txt"), - extensions_path=parse_optional_path(yaml, "extensions_path", base_path), - lib_path=base_path / parse_path(yaml, "lib_path", "lib"), - elf_section_list_path=parse_optional_path( - yaml, "elf_section_list_path", base_path + create_undefined_syms_auto=p.parse_opt( + "create_undefined_syms_auto", bool, True ), - subalign=parse_opt(yaml, "subalign", int, 16), - auto_all_sections=parse_opt( - yaml, "auto_all_sections", list, [".data", ".rodata", ".bss"] + undefined_syms_auto_path=p.parse_path( + base_path, "undefined_syms_auto_path", "undefined_syms_auto.txt" ), - ld_script_path=base_path / parse_path(yaml, "ld_script_path", f"{basename}.ld"), - ld_symbol_header_path=parse_optional_path( - yaml, "ld_symbol_header_path", base_path + extensions_path=p.parse_optional_path(base_path, "extensions_path"), + lib_path=p.parse_path(base_path, "lib_path", "lib"), + elf_section_list_path=p.parse_optional_path(base_path, "elf_section_list_path"), + subalign=p.parse_opt("subalign", int, 16), + auto_all_sections=p.parse_opt( + "auto_all_sections", list, [".data", ".rodata", ".bss"] ), - ld_discard_section=parse_opt(yaml, "ld_discard_section", bool, True), - ld_section_labels=parse_opt( - yaml, + ld_script_path=p.parse_path(base_path, "ld_script_path", f"{basename}.ld"), + ld_symbol_header_path=p.parse_optional_path(base_path, "ld_symbol_header_path"), + ld_discard_section=p.parse_opt("ld_discard_section", bool, True), + ld_section_labels=p.parse_opt( "ld_section_labels", list, [".text", ".data", ".rodata", ".bss"], ), - create_c_files=parse_opt(yaml, "create_c_files", bool, True), - auto_decompile_empty_functions=parse_opt( - yaml, "auto_decompile_empty_functions", bool, True + create_c_files=p.parse_opt("create_c_files", bool, True), + auto_decompile_empty_functions=p.parse_opt( + "auto_decompile_empty_functions", bool, True ), - do_c_func_detection=parse_opt(yaml, "do_c_func_detection", bool, True), - c_newline=parse_opt(yaml, "c_newline", str, comp.c_newline), - symbol_name_format=parse_opt(yaml, "symbol_name_format", str, "$VRAM"), - symbol_name_format_no_rom=parse_opt( - yaml, "symbol_name_format_no_rom", str, "$VRAM_$SEG" + do_c_func_detection=p.parse_opt("do_c_func_detection", bool, True), + c_newline=p.parse_opt("c_newline", str, comp.c_newline), + symbol_name_format=p.parse_opt("symbol_name_format", str, "$VRAM"), + symbol_name_format_no_rom=p.parse_opt( + "symbol_name_format_no_rom", str, "$VRAM_$SEG" ), - find_file_boundaries=parse_opt(yaml, "find_file_boundaries", bool, True), - migrate_rodata_to_functions=parse_opt( - yaml, "migrate_rodata_to_functions", bool, True + find_file_boundaries=p.parse_opt("find_file_boundaries", bool, True), + migrate_rodata_to_functions=p.parse_opt( + "migrate_rodata_to_functions", bool, True ), - asm_inc_header=parse_opt(yaml, "asm_inc_header", str, comp.asm_inc_header), - asm_function_macro=parse_opt( - yaml, "asm_function_macro", str, comp.asm_function_macro + asm_inc_header=p.parse_opt("asm_inc_header", str, comp.asm_inc_header), + asm_function_macro=p.parse_opt( + "asm_function_macro", str, comp.asm_function_macro ), - asm_data_macro=parse_opt(yaml, "asm_data_macro", str, comp.asm_data_macro), - asm_end_label=parse_opt(yaml, "asm_end_label", str, comp.asm_end_label), - mnemonic_ljust=parse_opt(yaml, "mnemonic_ljust", int, 11), - rom_address_padding=parse_opt(yaml, "rom_address_padding", bool, False), - mips_abi_gpr=parse_opt_within( - yaml, + asm_jtbl_label_macro=p.parse_opt( + "asm_jtbl_label_macro", str, comp.asm_jtbl_label_macro + ), + asm_data_macro=p.parse_opt("asm_data_macro", str, comp.asm_data_macro), + asm_end_label=p.parse_opt("asm_end_label", str, comp.asm_end_label), + include_macro_inc=p.parse_opt( + "include_macro_inc", bool, comp.include_macro_inc + ), + mnemonic_ljust=p.parse_opt("mnemonic_ljust", int, 11), + rom_address_padding=p.parse_opt("rom_address_padding", bool, False), + mips_abi_gpr=p.parse_opt_within( "mips_abi_gpr", str, ["numeric", "o32", "n32", "n64"], "o32", ), - mips_abi_float_regs=parse_opt_within( - yaml, + mips_abi_float_regs=p.parse_opt_within( "mips_abi_float_regs", str, ["numeric", "o32", "n32", "n64"], "numeric", ), - add_set_gp_64=parse_opt(yaml, "add_set_gp_64", bool, True), - create_asm_dependencies=parse_opt(yaml, "create_asm_dependencies", bool, False), - string_encoding=parse_optional_opt(yaml, "string_encoding", str, None), - header_encoding=parse_opt(yaml, "header_encoding", str, "ASCII"), - gfx_ucode=parse_opt_within( - yaml, + add_set_gp_64=p.parse_opt("add_set_gp_64", bool, True), + create_asm_dependencies=p.parse_opt("create_asm_dependencies", bool, False), + string_encoding=p.parse_optional_opt("string_encoding", str), + header_encoding=p.parse_opt("header_encoding", str, "ASCII"), + gfx_ucode=p.parse_opt_within( "gfx_ucode", str, ["f3d", "f3db", "f3dex", "f3dexb", "f3dex2"], "f3dex2", ), - libultra_symbols=parse_opt(yaml, "libultra_symbols", bool, False), - hardware_regs=parse_opt(yaml, "hardware_regs", bool, False), - use_legacy_include_asm=parse_opt(yaml, "use_legacy_include_asm", bool, True), - filesystem_path=parse_optional_path(yaml, "filesystem_path", base_path), + libultra_symbols=p.parse_opt("libultra_symbols", bool, False), + hardware_regs=p.parse_opt("hardware_regs", bool, False), + use_legacy_include_asm=p.parse_opt("use_legacy_include_asm", bool, True), + filesystem_path=p.parse_optional_path(base_path, "filesystem_path"), ) + p.check_no_unread_opts() + return ret def initialize( @@ -394,6 +402,4 @@ def initialize( if not modes: modes = ["all"] - opts = parse_yaml( - config["options"], config["options"]["basename"], config_paths, modes, verbose - ) + opts = _parse_yaml(config["options"], config_paths, modes, verbose) diff --git a/tools/splat/util/palettes.py b/tools/splat/util/palettes.py index d22ddb5b0b..f5b7760622 100644 --- a/tools/splat/util/palettes.py +++ b/tools/splat/util/palettes.py @@ -1,7 +1,8 @@ from typing import Dict + +from segtypes.common.group import CommonSegGroup from segtypes.n64.ci import N64SegCi from segtypes.n64.palette import N64SegPalette as Palette -from segtypes.common.group import CommonSegGroup # Resolve Raster#palette and Palette#raster links def initialize(all_segments): diff --git a/tools/splat/util/symbols.py b/tools/splat/util/symbols.py index 2f49333389..b08c94f50b 100644 --- a/tools/splat/util/symbols.py +++ b/tools/splat/util/symbols.py @@ -1,14 +1,15 @@ -from typing import Dict, List, Optional, TYPE_CHECKING, Set +from dataclasses import dataclass +from typing import Dict, List, Optional, Set, TYPE_CHECKING + import spimdisasm import tqdm -from dataclasses import dataclass -from intervaltree import IntervalTree, Interval +from intervaltree import Interval, IntervalTree # circular import if TYPE_CHECKING: from segtypes.segment import Segment -from util import options, log +from util import log, options all_symbols: List["Symbol"] = [] all_symbols_dict: Dict[int, List["Symbol"]] = {} @@ -179,6 +180,12 @@ def initialize(all_segments: "List[Segment]"): if attr_name == "ignore": ignore_sym = tf_val continue + if attr_name == "force_migration": + sym.force_migration = tf_val + continue + if attr_name == "force_not_migration": + sym.force_not_migration = tf_val + continue if ignore_sym: ignored_addresses.add(sym.vram_start) ignore_sym = False @@ -196,6 +203,7 @@ def initialize_spim_context(all_segments: "List[Segment]") -> None: global_vrom_end = None global_vram_start = None global_vram_end = None + overlay_segments: Set[spimdisasm.common.SymbolsSegment] = set() spim_context.bannedSymbols |= ignored_addresses @@ -206,6 +214,10 @@ def initialize_spim_context(all_segments: "List[Segment]") -> None: # We only care about the VRAMs of code segments continue + if segment.special_vram_segment: + # Special segments which should not be accounted in the global VRAM calculation, like N64's IPL3 + continue + if ( not isinstance(segment.vram_start, int) or not isinstance(segment.vram_end, int) @@ -249,16 +261,32 @@ def initialize_spim_context(all_segments: "List[Segment]") -> None: for sym in symbols_list: add_symbol_to_spim_segment(spim_segment, sym) + overlay_segments.add(spim_segment) + if ( global_vram_start is not None and global_vram_end is not None and global_vrom_start is not None and global_vrom_end is not None ): - spim_context.globalSegment.changeRanges( + spim_context.changeGlobalSegmentRanges( global_vrom_start, global_vrom_end, global_vram_start, global_vram_end ) + # Check the vram range of the global segment does not overlap with any overlay segment + for ovl_segment in overlay_segments: + assert ( + ovl_segment.vramStart <= ovl_segment.vramEnd + ), f"{ovl_segment.vramStart:X} {ovl_segment.vramEnd:X}" + if ( + ovl_segment.vramEnd > global_vram_start + and global_vram_end > ovl_segment.vramStart + ): + log.write( + f"Warning: the vram range ([0x{ovl_segment.vramStart:X}, 0x{ovl_segment.vramEnd:X}]) of the non-global segment at rom address 0x{ovl_segment.vromStart:X} overlaps with the global vram range ([0x{global_vram_start:X}, 0x{global_vram_end:X}])", + status="warn", + ) + # pass the global symbols to spimdisasm for segment in all_segments: if not isinstance(segment, CommonSegCode): @@ -308,6 +336,10 @@ def add_symbol_to_spim_segment( context_sym.vromAddress = sym.rom if sym.given_size is not None: context_sym.size = sym.size + if sym.force_migration: + context_sym.forceMigration = True + if sym.force_not_migration: + context_sym.forceNotMigration = True context_sym.setNameGetCallbackIfUnset(lambda _: sym.name) return context_sym @@ -347,6 +379,10 @@ def add_symbol_to_spim_section( context_sym.vromAddress = sym.rom if sym.given_size is not None: context_sym.size = sym.size + if sym.force_migration: + context_sym.forceMigration = True + if sym.force_not_migration: + context_sym.forceNotMigration = True context_sym.setNameGetCallbackIfUnset(lambda _: sym.name) return context_sym @@ -430,6 +466,9 @@ class Symbol: extract: bool = True user_declared: bool = False + force_migration: bool = False + force_not_migration: bool = False + _generated_default_name: Optional[str] = None _last_type: Optional[str] = None @@ -487,9 +526,7 @@ class Symbol: prefix = "func" elif self.type == "jtbl": prefix = "jtbl" - elif self.type == "jtbl_label": - return f"L{suffix}" - elif self.type == "label": + elif self.type in {"jtbl_label", "label"}: return f".L{suffix}" else: prefix = "D" diff --git a/tools/splat_ext/pm_map_data.py b/tools/splat_ext/pm_map_data.py index d2babd8495..0d0d0077f4 100644 --- a/tools/splat_ext/pm_map_data.py +++ b/tools/splat_ext/pm_map_data.py @@ -1,10 +1,7 @@ import os from pathlib import Path from segtypes.n64.segment import N64Segment -from segtypes.n64.ia8 import N64SegIa8 -from segtypes.n64.rgba32 import N64SegRgba32 -from segtypes.n64.ci4 import N64SegCi4 -from util.n64 import Yay0decompress +from util.n64.Yay0decompress import Yay0Decompressor from util.color import unpack_color from segtypes.n64.palette import iter_in_groups from util import options @@ -100,7 +97,7 @@ class N64SegPm_map_data(N64Segment): bytes = rom_bytes[bytes_start : bytes_start + size] if is_compressed: - bytes = Yay0decompress.decompress_yay0(bytes) + bytes = Yay0Decompressor.decompress_python(bytes) if name.startswith("party_"): with open(path, "wb") as f: diff --git a/tools/splat_ext/pm_npc_sprites.py b/tools/splat_ext/pm_npc_sprites.py index 3e0f4c705e..b0db0ff8c3 100644 --- a/tools/splat_ext/pm_npc_sprites.py +++ b/tools/splat_ext/pm_npc_sprites.py @@ -2,6 +2,7 @@ from segtypes.n64.segment import N64Segment from pathlib import Path import struct from util.n64 import Yay0decompress +from util.n64.Yay0decompress import Yay0Decompressor from segtypes.n64.palette import iter_in_groups from util.color import unpack_color from util import options @@ -302,7 +303,7 @@ class N64SegPm_npc_sprites(N64Segment): start = int.from_bytes(data[i * 4 : (i + 1) * 4], byteorder="big") end = int.from_bytes(data[(i + 1) * 4 : (i + 2) * 4], byteorder="big") - sprite_data = Yay0decompress.decompress_yay0(data[start:end]) + sprite_data = Yay0Decompressor.decompress_python(data[start:end]) sprite = Sprite.from_bytes(sprite_data) if sprite_name in self.sprite_cfg: diff --git a/ver/us/asm/bss.s b/ver/us/asm/bss.s index 0f14997951..cb925fba3b 100644 --- a/ver/us/asm/bss.s +++ b/ver/us/asm/bss.s @@ -625,10 +625,10 @@ dlabel gCollisionDataZoneBackup dlabel D_800A426C .space 4 -dlabel D_800A4270 +dlabel IdleThread .space 0x000001b0 -dlabel D_800A4420 +dlabel MainThread .space 0x000021b0 dlabel nuScStack diff --git a/ver/us/asm/data/world/area_jan/jan_04/B461B0.data.s b/ver/us/asm/data/world/area_jan/jan_04/B461B0.data.s index 9ca8870cd4..37389e0bd5 100644 --- a/ver/us/asm/data/world/area_jan/jan_04/B461B0.data.s +++ b/ver/us/asm/data/world/area_jan/jan_04/B461B0.data.s @@ -27,7 +27,7 @@ dlabel D_802421DC_B4694C .word 0x41F00000, 0x00000000, 0xC2DC0000, 0x00000000 dlabel D_802421EC_B4695C -.word 0x00000024, 0x00000002, 0xFE363C80, 0xF8406049, 0x00000024, 0x00000002, 0xFE363C81, 0xF840604A, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C81, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000046, 0x00000001, D_80241FD8_B46748, 0x00000012, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xF9718888, 0x00000000, 0x00000047, 0x00000005, D_80241AD4_B46244, 0x00001000, 0x0000002B, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241AD4_B46244, 0x00100000, D_802421DC_B4694C, 0x00000001, 0x00000000, 0x00000045, 0x00000002, D_80241E58_B465C8, 0xFE363C89, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x0000000A, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000049, 0x00000001, 0xFE363C89, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8A80, 0x00000043, 0x00000004, PlayerMoveTo, 0x0000000A, 0x00000000, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070001, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8E80, 0x00000014, 0x0000012D, 0xF24ABE80, 0xF24A5E80, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A4, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080007, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A5, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070007, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A6, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080007, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A7, 0x00000043, 0x00000001, CloseMessage, 0x00000043, 0x00000003, jan_04_ChangeNpcToPartner, 0x00000000, 0x00000007, 0x00000043, 0x00000001, func_802409E0_B45150, 0x00000044, 0x00000001, 0x80241244, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018F, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80241268, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000024, 0x00000002, 0xF5DE0180, 0x0000000F, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000024, 0x00000002, 0xFE363C80, 0xF8406049, 0x00000024, 0x00000002, 0xFE363C81, 0xF840604A, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C81, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000046, 0x00000001, D_80241FD8_B46748, 0x00000012, 0x00000000, 0x00000043, 0x00000003, SetSelfVar, 0x00000000, 0x00000001, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xF9718888, 0x00000000, 0x00000047, 0x00000005, D_80241AD4_B46244, 0x00001000, 0x0000002B, 0x00000001, 0x00000000, 0x00000047, 0x00000005, D_80241AD4_B46244, 0x00100000, D_802421DC_B4694C, 0x00000001, 0x00000000, 0x00000045, 0x00000002, D_80241E58_B465C8, 0xFE363C89, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x0000000B, 0x00000002, 0xFE363C80, 0x0000000A, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000049, 0x00000001, 0xFE363C89, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8A80, 0x00000043, 0x00000004, PlayerMoveTo, 0x0000000A, 0x00000000, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070001, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8E80, 0x00000014, 0x0000012D, 0xF24ABE80, 0xF24A5E80, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A4, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080007, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A5, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070007, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A6, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080007, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00070004, 0x00070001, 0x00000000, 0x001000A7, 0x00000043, 0x00000001, CloseMessage, 0x00000043, 0x00000003, jan_04_ChangeNpcToPartner, 0x00000000, 0x00000007, 0x00000043, 0x00000001, jan_04_LoadPartyImage, 0x00000044, 0x00000001, 0x80241244, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018F, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80241268, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000024, 0x00000002, 0xF5DE0180, 0x0000000F, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80242570_B46CE0 .word 0x00000043, 0x00000002, GetEntryID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000003, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF5DE0180, 0x0000000E, 0x00000043, 0x00000003, EnableNpcShadow, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00070007, 0x00000043, 0x00000003, SetNpcYaw, 0xFFFFFFFF, 0x0000010E, 0x0000000A, 0x00000002, 0xF840604A, 0x00000000, 0x0000000A, 0x00000002, 0xF8406049, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000037, 0x00000096, 0xFFFFFFA1, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x0000005A, 0x0000008C, 0xFFFFFFAB, 0x00000013, 0x00000000, 0x00000012, 0x00000000, 0x0000000A, 0x00000002, 0xF8406049, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0xFFFFFFF6, 0x00000070, 0xFFFFFFB0, 0x00000012, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x00000032, 0x00000000, 0x00000000, 0x00000043, 0x00000003, EnableNpcShadow, 0xFFFFFFFF, 0x00000001, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, BindNpcIdle, 0xFFFFFFFF, D_802421EC_B4695C, 0x00000012, 0x00000000, 0x00000043, 0x00000002, RemoveNpc, 0xFFFFFFFF, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/asm/data/world/area_kmr/kmr_02/8B5640.data.s b/ver/us/asm/data/world/area_kmr/kmr_02/8B5640.data.s index 30fdc3a19d..1b71f2879b 100644 --- a/ver/us/asm/data/world/area_kmr/kmr_02/8B5640.data.s +++ b/ver/us/asm/data/world/area_kmr/kmr_02/8B5640.data.s @@ -210,7 +210,7 @@ dlabel D_80249694_8B9704 .word 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002D, 0x00000043, 0x00000002, ShowChoice, 0x001E0013, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002E, 0x00000043, 0x00000002, ShowChoice, 0x001E0013, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002F, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0030, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, func_802427B0_8B2820, 0x00000043, 0x00000005, EndSpeech, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xF8405BDE, 0x00000001, 0x00000043, 0x00000001, func_802427CC_8B283C, 0x00000043, 0x00000001, func_802427EC_8B285C, 0x00000024, 0x00000002, 0xF8405BDE, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_802497F4_8B9864 -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, func_80242014_8B2084, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B001D, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFED9, 0xFFFFFFE2, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFC, 0x00000269, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000015, 0x000001D2, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00000078, 0x00000014, 0x0000000A, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000006, RotateModel, 0x000000A7, 0xFE363C80, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000006, RotateModel, 0x000000A9, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000015, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000001, 0x00000016, 0x7FFFFE00, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000043, 0x00000003, EnableNpcAI, 0x00000002, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0xFFFFFFA1, 0x00000000, 0xFFFFFFAA, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFFFFFFA4, 0x00000000, 0xFFFFFFD2, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000100, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF43, 0x00000000, 0xFFFFFFD8, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF43, 0x00000000, 0xFFFFFFD8, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFEA2, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7FB4, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000002, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0xFFFFFF93, 0xFFFFFFC3, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010001, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000001, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFF72, 0xFFFFFFA1, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF12, 0xFFFFFFDF, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000001, func_80242014_8B2084, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFF58, 0xFFFFFFF1, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B001E, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000001, 0x009E000C, 0x009E0002, 0x00000000, 0xFFFFFFFC, 0x000B001F, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x009D000B, 0x009D000A, 0x00000000, 0x00000002, 0x000B0020, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFFB1, 0x00000000, 0xFFFFFFF6, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFFEA, 0x00000000, 0x0000000C, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFEA2, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7C1A, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFB1, 0xFFFFFFF6, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0xFFFFFFD3, 0x00000028, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010001, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFFE9, 0xFFFFFFEB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000001E, 0x00000023, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D000B, 0x009D000A, 0x00000000, 0x000B0021, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000029, 0xFFFFFF6D, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000007F, 0xFFFFFF63, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000003, 0x0000000A, 0x00000002, 0xF8405B9E, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF2450280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0022, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, ShowChoice, 0x001E0011, 0x00000008, 0x00000001, 0x0000000A, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, CloseMessage, 0x00000043, 0x00000003, FindKeyItem, 0x00000056, 0xFE363C80, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C80, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000001, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFCE, 0xFFFFFFE8, 0x00000000, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000005E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_80248D28_8B8D98, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000C, 0x009E0002, 0x00000000, 0x000B0024, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0010, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0x0000005A, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0x0000010E, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0025, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C80, 0x0000015C, 0x00000024, 0x00000002, 0xFE363C81, 0x00000003, 0x00000046, 0x00000001, D_802455D4_8B5644, 0x00000043, 0x00000002, AddStarPieces, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0026, 0x00000008, 0x00000001, 0x0000000A, 0x00000044, 0x00000001, D_80248DC8_8B8E38, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0xF24A7E80, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFFFFFFE2, 0x00000000, 0xFFFFFFED, 0x0000000A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, func_802D2520, 0x00010002, 0x00000005, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000023, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000001, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0005, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFFE9, 0xFFFFFFEB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000007, func_802D2520, 0x00010002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFAB, 0xFFFFFFF6, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000006, ContinueSpeech, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0023, 0x00000024, 0x00000002, 0xF8405B9F, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000023, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000003C, 0x00000012, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000003C, 0x00000013, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0027, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0028, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0029, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8280, 0x00000028, 0xF2450280, 0xF24AB680, 0xF24A5E80, 0x00000057, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0x0000007F, 0x00000000, 0xFFFFFF63, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000020, 0xFFFFFF69, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000001, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0xFE363C80, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFC, 0x00000003, 0x00000024, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B002B, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000003, 0x00000009, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFC, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0002, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFFC4, 0xFFFFFFF2, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C80, 0x00000121, 0x00000024, 0x00000002, 0xFE363C81, 0x00000002, 0x00000046, 0x00000001, D_802455D4_8B5644, 0x00000043, 0x00000003, AddBadge, 0x00000121, 0xFE363C80, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0002, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000003, 0x00000009, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_80249694_8B9704, 0x00000043, 0x00000003, EnableNpcAI, 0x00000002, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000000, 0x00000043, 0x00000001, func_80242734_8B27A4, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0031, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0032, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000057, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0033, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000001, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0xFE363C80, 0x00000003, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0034, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0035, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0036, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x00000002, 0x000B0037, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000002, 0xF24A7F4D, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000007, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B0038, 0x00000043, 0x00000001, func_802439A0_8B3A10, 0x00000044, 0x00000001, 0x80243C0C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D0189, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80243C30, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x00000002, 0x000B0039, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B003A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000029, 0xFFFFFF71, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x009F0003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000005, 0x0000007F, 0xFFFFFF63, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x009F0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000050, 0xFFFFFF66, 0x00000000, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000006F, 0xFFFFFF38, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000001, func_80242788_8B27F8, 0x00000043, 0x00000001, func_80242710_8B2780, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B003B, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B003C, 0x00000013, 0x00000000, 0x00000043, 0x00000003, kmr_02_ChangeNpcToPartner, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000200, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000073, 0x00000000, 0xFFFFFECB, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000005, 0x00000040, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000000, 0x00000200, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000000, 0x00000008, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x000000B8, 0x00000000, 0xFFFFFF6B, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x000000C8, 0x00000000, 0x00000064, 0x00000043, 0x00000002, RestartNpcAI, 0x00000001, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000001, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8A80, 0x00000057, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFF8D, 0x00000048, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000004, 0x00000004, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, func_80242014_8B2084, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B001D, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFED9, 0xFFFFFFE2, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000004, PlaySoundAtNpc, 0xFFFFFFFC, 0x00000269, 0x00000000, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x00000015, 0x000001D2, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0x00000000, 0x00000078, 0x00000014, 0x0000000A, 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000006, RotateModel, 0x000000A7, 0xFE363C80, 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000043, 0x00000006, RotateModel, 0x000000A9, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000000, 0x00000015, 0x7FFFFE00, 0x00000043, 0x00000004, ModifyColliderFlags, 0x00000001, 0x00000016, 0x7FFFFE00, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000043, 0x00000003, EnableNpcAI, 0x00000002, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0xFFFFFFA1, 0x00000000, 0xFFFFFFAA, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFFFFFFA4, 0x00000000, 0xFFFFFFD2, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000100, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF43, 0x00000000, 0xFFFFFFD8, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF43, 0x00000000, 0xFFFFFFD8, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFEA2, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7FB4, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000002, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0xFFFFFF93, 0xFFFFFFC3, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010001, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000001, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFF72, 0xFFFFFFA1, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF12, 0xFFFFFFDF, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000001, func_80242014_8B2084, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFF58, 0xFFFFFFF1, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B001E, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000001, 0x009E000C, 0x009E0002, 0x00000000, 0xFFFFFFFC, 0x000B001F, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x009D000B, 0x009D000A, 0x00000000, 0x00000002, 0x000B0020, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFFB1, 0x00000000, 0xFFFFFFF6, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFFEA, 0x00000000, 0x0000000C, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFEA2, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7C1A, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFB1, 0xFFFFFFF6, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000002, 0xFFFFFFD3, 0x00000028, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x00010001, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFFE9, 0xFFFFFFEB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0002, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000001E, 0x00000023, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D000B, 0x009D000A, 0x00000000, 0x000B0021, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8A80, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000029, 0xFFFFFF6D, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D000C, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000007F, 0xFFFFFF63, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000003, 0x0000000A, 0x00000002, 0xF8405B9E, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF2450280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0022, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, ShowChoice, 0x001E0011, 0x00000008, 0x00000001, 0x0000000A, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000001, CloseMessage, 0x00000043, 0x00000003, FindKeyItem, 0x00000056, 0xFE363C80, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C80, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000001, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFCE, 0xFFFFFFE8, 0x00000000, 0x00000043, 0x00000003, InterpPlayerYaw, 0x0000005E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_80248D28_8B8D98, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000C, 0x009E0002, 0x00000000, 0x000B0024, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0010, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0x0000005A, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0x0000010E, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0025, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C80, 0x0000015C, 0x00000024, 0x00000002, 0xFE363C81, 0x00000003, 0x00000046, 0x00000001, D_802455D4_8B5644, 0x00000043, 0x00000002, AddStarPieces, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0026, 0x00000008, 0x00000001, 0x0000000A, 0x00000044, 0x00000001, D_80248DC8_8B8E38, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0xF24A7E80, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFFFFFFE2, 0x00000000, 0xFFFFFFED, 0x0000000A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, func_802D2520, 0x00010002, 0x00000005, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000023, 0x00000043, 0x00000003, SetNpcSpeed, 0x00000001, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0005, 0x00000043, 0x00000005, NpcMoveTo, 0x00000001, 0xFFFFFFE9, 0xFFFFFFEB, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x009E0001, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000007, func_802D2520, 0x00010002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFFAB, 0xFFFFFFF6, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000006, ContinueSpeech, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0023, 0x00000024, 0x00000002, 0xF8405B9F, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000023, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000003C, 0x00000012, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000003C, 0x00000013, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0027, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0028, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0029, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000056, 0x00000000, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8280, 0x00000028, 0xF2450280, 0xF24AB680, 0xF24A5E80, 0x00000057, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0x0000007F, 0x00000000, 0xFFFFFF63, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000020, 0xFFFFFF69, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000001, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0xFE363C80, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFC, 0x00000003, 0x00000024, 0x00000002, 0xFE363C80, 0x0000001E, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B002B, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000003, 0x00000009, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0xFFFFFFFC, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B002C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0002, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFFFFFFC4, 0xFFFFFFF2, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C80, 0x00000121, 0x00000024, 0x00000002, 0xFE363C81, 0x00000002, 0x00000046, 0x00000001, D_802455D4_8B5644, 0x00000043, 0x00000003, AddBadge, 0x00000121, 0xFE363C80, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0002, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000003, 0x00000009, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_80249694_8B9704, 0x00000043, 0x00000003, EnableNpcAI, 0x00000002, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000001, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000000, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000000, 0x00000043, 0x00000001, func_80242734_8B27A4, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0031, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, AdjustCam, 0x00000000, 0xF24A8680, 0x0000001E, 0xF2462E80, 0xF24AB680, 0xF24A6280, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0032, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000057, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0033, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000001, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000001, 0xFE363C80, 0x00000003, 0x00000057, 0x00000000, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B0034, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000002, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B0035, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x000B0036, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, GetAngleBetweenNPCs, 0x00000002, 0xFFFFFFFC, 0xFE363C80, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x00000002, 0x000B0037, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000002, 0xF24A7F4D, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000007, 0x00000043, 0x00000007, SpeakToNpc, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0xFFFFFFFC, 0x000B0038, 0x00000043, 0x00000001, kmr_02_LoadPartyImage, 0x00000044, 0x00000001, 0x80243C0C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D0189, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80243C30, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0x00000001, 0x009E000B, 0x009E0001, 0x00000000, 0x00000002, 0x000B0039, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x009D0008, 0x009D0001, 0x00000000, 0x000B003A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000029, 0xFFFFFF71, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C1, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, 0x00000000, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x009F0003, 0x00000043, 0x00000005, NpcMoveTo, 0x00000005, 0x0000007F, 0xFFFFFF63, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000005, 0x009F0001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000040, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0003, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x00000050, 0xFFFFFF66, 0x00000000, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0x0000006F, 0xFFFFFF38, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x009D0001, 0x00000005, 0x00000001, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFFD, 0x00000043, 0x00000006, RotateModel, 0x0000005F, 0xFE363C80, 0x00000000, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtCollider, 0x0000000F, 0x000001C2, 0x00000000, 0x00000043, 0x00000001, func_80242788_8B27F8, 0x00000043, 0x00000001, func_80242710_8B2780, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B003B, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00010008, 0x00010001, 0x00000000, 0x000B003C, 0x00000013, 0x00000000, 0x00000043, 0x00000003, kmr_02_ChangeNpcToPartner, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000200, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000073, 0x00000000, 0xFFFFFECB, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000005, 0x00000040, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000000, 0x00000200, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000000, 0x00000008, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x000000B8, 0x00000000, 0xFFFFFF6B, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFF, 0x000000C8, 0x00000000, 0x00000064, 0x00000043, 0x00000002, RestartNpcAI, 0x00000001, 0x00000043, 0x00000003, EnableNpcAI, 0x00000005, 0x00000001, 0x00000043, 0x00000003, EnableNpcAI, 0x00000004, 0x00000001, 0x00000056, 0x00000000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8A80, 0x00000057, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000000, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFF8D, 0x00000048, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000004, 0x00000004, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_8024B388_8BB3F8 .word 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_02/9E9420.data.s b/ver/us/asm/data/world/area_nok/nok_02/9E9420.data.s index 1a63d9459d..eb171c8733 100644 --- a/ver/us/asm/data/world/area_nok/nok_02/9E9420.data.s +++ b/ver/us/asm/data/world/area_nok/nok_02/9E9420.data.s @@ -30,16 +30,7 @@ dlabel D_80252754_9E9774 .word 0x00000043, 0x00000004, ShowGotItem, 0xFE363C80, 0x00000001, 0x00000010, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80252784_9E97A4 -.word 0x00150000, 0x00150001, 0x00150002, 0xF840622B - -dlabel D_80252794_9E97B4 -.word 0xF840622C - -dlabel D_80252798_9E97B8 -.word 0xF840622D - -dlabel D_8025279C_9E97BC -.word 0x0000006E, 0x00150003, 0x00150004, 0x00150005, 0xF840622E, 0xF840622F, 0xF8406230, 0x0000008F, 0x00150006, 0x00150007, 0x00150008, 0xF8406231, 0xF8406232, 0xF8406233, 0x0000005C, 0x00150009, 0x0015000A, 0x0015000B, 0xF8406234, 0xF8406235, 0xF8406236, 0x000000C3, 0x0015000C, 0x0015000D, 0x0015000E, 0xF8406237, 0xF8406238, 0xF8406239, 0x0000006F, 0x0015000F, 0x00150010, 0x00150011, 0xF840623A, 0xF840623B, 0xF840623C, 0x00000070, 0x00150012, 0x00150013, 0x00150014, 0xF840623D, 0xF840623E, 0xF840623F, 0x00000089, 0x00150015, 0x00150016, 0x00150017, 0xF8406240, 0xF8406241, 0xF8406242, 0x00000071, 0x00150018, 0x00150019, 0x0015001A, 0xF8406243, 0xF8406244, 0xF8406245, 0x00000000, 0x0015001B, 0x0015001C, 0x0015001D, 0xF8406246, 0xF8406247, 0xF8406248, 0x00000095, 0x0015001E, 0x0015001F, 0x00150020, 0xF8406249, 0xF840624A, 0xF840624B, 0x000000D6, 0x00150021, 0x00150022, 0x00150023, 0xF840624C, 0xF840624D, 0xF840624E, 0x00000000, 0x00150024, 0x00150025, 0x00150026, 0xF840624F, 0xF8406250, 0xF8406251, 0x00000073, 0x00150027, 0x00150028, 0x00150029, 0xF8406252, 0xF8406253, 0xF8406254, 0x000000B5, 0x0015002A, 0x0015002B, 0x0015002C, 0xF8406255, 0xF8406256, 0xF8406257, 0x00000074, 0x0015002D, 0x0015002E, 0x0015002F, 0xF8406258, 0xF8406259, 0xF840625A, 0x0000009D, 0x00150030, 0x00150031, 0x00150032, 0xF840625B, 0xF840625C, 0xF840625D, 0x000000D3, 0x00150033, 0x00150034, 0x00150035, 0xF840625E, 0xF840625F, 0xF8406260, 0x00000076, 0x00150036, 0x00150037, 0x00150038, 0xF8406261, 0xF8406262, 0xF8406263, 0x000000AC, 0x00150039, 0x0015003A, 0x0015003B, 0xF8406264, 0xF8406265, 0xF8406266, 0x00000077 +.word 0x00150000, 0x00150001, 0x00150002, 0xF840622B, 0xF840622C, 0xF840622D, 0x0000006E, 0x00150003, 0x00150004, 0x00150005, 0xF840622E, 0xF840622F, 0xF8406230, 0x0000008F, 0x00150006, 0x00150007, 0x00150008, 0xF8406231, 0xF8406232, 0xF8406233, 0x0000005C, 0x00150009, 0x0015000A, 0x0015000B, 0xF8406234, 0xF8406235, 0xF8406236, 0x000000C3, 0x0015000C, 0x0015000D, 0x0015000E, 0xF8406237, 0xF8406238, 0xF8406239, 0x0000006F, 0x0015000F, 0x00150010, 0x00150011, 0xF840623A, 0xF840623B, 0xF840623C, 0x00000070, 0x00150012, 0x00150013, 0x00150014, 0xF840623D, 0xF840623E, 0xF840623F, 0x00000089, 0x00150015, 0x00150016, 0x00150017, 0xF8406240, 0xF8406241, 0xF8406242, 0x00000071, 0x00150018, 0x00150019, 0x0015001A, 0xF8406243, 0xF8406244, 0xF8406245, 0x00000000, 0x0015001B, 0x0015001C, 0x0015001D, 0xF8406246, 0xF8406247, 0xF8406248, 0x00000095, 0x0015001E, 0x0015001F, 0x00150020, 0xF8406249, 0xF840624A, 0xF840624B, 0x000000D6, 0x00150021, 0x00150022, 0x00150023, 0xF840624C, 0xF840624D, 0xF840624E, 0x00000000, 0x00150024, 0x00150025, 0x00150026, 0xF840624F, 0xF8406250, 0xF8406251, 0x00000073, 0x00150027, 0x00150028, 0x00150029, 0xF8406252, 0xF8406253, 0xF8406254, 0x000000B5, 0x0015002A, 0x0015002B, 0x0015002C, 0xF8406255, 0xF8406256, 0xF8406257, 0x00000074, 0x0015002D, 0x0015002E, 0x0015002F, 0xF8406258, 0xF8406259, 0xF840625A, 0x0000009D, 0x00150030, 0x00150031, 0x00150032, 0xF840625B, 0xF840625C, 0xF840625D, 0x000000D3, 0x00150033, 0x00150034, 0x00150035, 0xF840625E, 0xF840625F, 0xF8406260, 0x00000076, 0x00150036, 0x00150037, 0x00150038, 0xF8406261, 0xF8406262, 0xF8406263, 0x000000AC, 0x00150039, 0x0015003A, 0x0015003B, 0xF8406264, 0xF8406265, 0xF8406266, 0x00000077 dlabel D_802529B4_9E99D4 .word 0x00000000, 0x00000000, 0x00000043, 0x00000002, func_802CF56C, 0x00000001, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A2, 0x00000004, 0x00000001, 0x0000005A, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF5DE02DA, 0x00000002, 0x0000000A, 0x00000002, 0xF840622A, 0x00000000, 0x00000043, 0x00000002, func_802442E0_9DB300, 0xF5DE02DC, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, D_802529B4_9E99D4, 0x00000024, 0x00000002, 0xFE363C81, 0x00000009, 0x00000046, 0x00000001, D_8025254C_9E956C, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x00000016, 0x00000001, 0x00000000, 0x0000001C, 0x00000000, 0x00000024, 0x00000002, 0xF840622A, 0x00000001, 0x00000023, 0x00000000, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C80, D_802529B4_9E99D4, 0x00000024, 0x00000002, 0xFE363C81, 0x00000009, 0x00000046, 0x00000001, D_802526D0_9E96F0, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0xFFFFFFFF, 0x00000016, 0x00000001, 0x00000000, 0x0000001C, 0x00000000, 0x00000024, 0x00000002, 0xF840622A, 0x00000001, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF840622A, 0x00000001, 0x00000043, 0x00000002, func_80244288_9DB2A8, 0xF5DE02DC, 0x00000027, 0x00000002, 0xF5DE02DB, 0x00000001, 0x00000043, 0x00000002, func_80243EC8_9DAEE8, 0xF5DE02DB, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, func_80244224_9DB244, 0xF5DE02DC, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0xFE363C81, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00B1, 0x00000024, 0x00000002, 0xFE363C80, 0x00000157, 0x00000024, 0x00000002, 0xFE363C81, 0x00000000, 0x00000046, 0x00000001, D_80252754_9E9774, 0x00000043, 0x00000002, AddCoin, 0x00000001, 0x00000012, 0x00000000, 0x00000043, 0x00000002, func_80244224_9DB244, 0xF5DE02DC, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0xFE363C82, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00B1, 0x00000043, 0x00000004, ShowGotItem, 0x0000015C, 0x00000001, 0x00000020, 0x00000043, 0x00000002, AddStarPieces, 0x00000003, 0x00000013, 0x00000000, 0x00000014, 0x00000001, 0xF5DE02DB, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00B2, 0x00000024, 0x00000002, 0xFE363C80, 0x0000007B, 0x00000024, 0x00000002, 0xFE363C81, 0x00000001, 0x00000046, 0x00000001, D_80252724_9E9744, 0x00000043, 0x00000002, AddKeyItem, 0x0000007B, 0x00000016, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00B3, 0x00000024, 0x00000002, 0xFE363C80, 0x0000007C, 0x00000024, 0x00000002, 0xFE363C81, 0x00000001, 0x00000046, 0x00000001, D_80252724_9E9744, 0x00000043, 0x00000002, AddKeyItem, 0x0000007C, 0x00000043, 0x00000003, FindKeyItem, 0x0000007B, 0xFE363C81, 0x00000043, 0x00000002, RemoveKeyItemAt, 0xFE363C81, 0x00000023, 0x00000000, 0x00000024, 0x00000002, 0xF5DE02DA, 0x00000000, 0x00000004, 0x00000001, 0x0000005A, 0x00000013, 0x00000000, 0x0000000A, 0x00000002, 0xF8406229, 0x00000001, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AD, 0x00000043, 0x00000002, ShowChoice, 0x001E0012, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AE, 0x00000016, 0x00000001, 0x00000001, 0x00000043, 0x00000002, func_80244078_9DB098, 0xF5DE02DC, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00B0, 0x00000024, 0x00000002, 0xF5DE02DA, 0x00000001, 0x00000004, 0x00000001, 0x0000005A, 0x00000012, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AF, 0x00000013, 0x00000000, 0x00000004, 0x00000001, 0x00000032, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000002, func_80244224_9DB244, 0xF5DE02DC, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0xFE363C80, 0x00000023, 0x00000000, 0x00000012, 0x00000000, 0x0000000A, 0x00000002, 0xF8406228, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AA, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AB, 0x00000013, 0x00000000, 0x00000043, 0x00000002, ShowChoice, 0x001E0010, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, func_80244224_9DB244, 0xF5DE02DC, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0xFE363C80, 0x00000024, 0x00000002, 0xF8406228, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00AC, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000004, 0x00000001, 0x0000005A, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_80243F10_9DAF30, 0xF5DE02DC, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0x00000059, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A5, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A6, 0x00000013, 0x00000000, 0x00000004, 0x00000001, 0x0000005A, 0x00000012, 0x00000000, 0x0000000A, 0x00000002, 0xF5DE02DA, 0x00000000, 0x0000000A, 0x00000002, 0xF8405DE9, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A3, 0x00000024, 0x00000002, 0xF8405DE9, 0x00000001, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A4, 0x00000013, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A7, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000003, 0x00000001, 0x00000032, 0x00000043, 0x00000002, ShowChoice, 0x001E0010, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A9, 0x00000043, 0x00000002, func_80244224_9DB244, 0xF5DE02DC, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0xFE363C80, 0x00000024, 0x00000002, 0xF5DE02DA, 0x00000002, 0x00000024, 0x00000002, 0xF8406228, 0x00000000, 0x00000024, 0x00000002, 0xF840622A, 0x00000000, 0x00000024, 0x00000002, 0xF8406229, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, ContinueSpeech, 0xFFFFFFFF, 0x00B50004, 0x00B50001, 0x00000000, 0x000C00A8, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00B50006, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00B50009, 0x00000043, 0x00000005, EndSpeech, 0xFFFFFFFF, 0x00B50008, 0x00B50009, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00B50007, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFF, 0x00B50001, 0x00000024, 0x00000002, 0xF5DE02DA, 0x00000001, 0x00000024, 0x00000002, 0xF5DE02DC, 0x00000000, 0x00000013, 0x00000000, 0x00000003, 0x00000001, 0x0000005A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000004, 0x00000001, 0x00000050, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFB5, 0x00000004, 0x00000001, 0x0000004B, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFCB, 0x00000004, 0x00000001, 0x00000046, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0xFFFFFFF3, 0x00000004, 0x00000001, 0x0000003C, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0x00000007, 0x00000004, 0x00000001, 0x00000032, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0x00000029, 0x00000004, 0x00000001, 0x00000028, 0x00000013, 0x00000000, 0x0000000C, 0x00000002, 0xF5DE0180, 0x0000003C, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xF840627E, 0x00000001, 0x00000003, 0x00000001, 0x00000014, 0x00000024, 0x00000002, 0xF8406264, 0x00000001, 0x00000024, 0x00000002, 0xF8406261, 0x00000001, 0x00000024, 0x00000002, 0xF840625E, 0x00000001, 0x00000003, 0x00000001, 0x0000001E, 0x00000024, 0x00000002, 0xF840625B, 0x00000001, 0x00000024, 0x00000002, 0xF8406258, 0x00000001, 0x00000024, 0x00000002, 0xF8406255, 0x00000001, 0x00000003, 0x00000001, 0x00000028, 0x00000024, 0x00000002, 0xF8406252, 0x00000001, 0x00000024, 0x00000002, 0xF840624F, 0x00000001, 0x00000024, 0x00000002, 0xF840624C, 0x00000001, 0x00000003, 0x00000001, 0x00000032, 0x00000024, 0x00000002, 0xF8406249, 0x00000001, 0x00000024, 0x00000002, 0xF8406246, 0x00000001, 0x00000024, 0x00000002, 0xF8406243, 0x00000001, 0x00000003, 0x00000001, 0x0000003C, 0x00000024, 0x00000002, 0xF8406240, 0x00000001, 0x00000024, 0x00000002, 0xF840623D, 0x00000001, 0x00000024, 0x00000002, 0xF840623A, 0x00000001, 0x00000003, 0x00000001, 0x00000046, 0x00000024, 0x00000002, 0xF8406237, 0x00000001, 0x00000024, 0x00000002, 0xF8406234, 0x00000001, 0x00000024, 0x00000002, 0xF8406231, 0x00000001, 0x00000003, 0x00000001, 0x0000004B, 0x00000024, 0x00000002, 0xF840622E, 0x00000001, 0x00000024, 0x00000002, 0xF840622B, 0x00000001, 0x00000003, 0x00000001, 0x00000050, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000 diff --git a/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s b/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s index 1fc16a82f3..dd27237561 100644 --- a/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s +++ b/ver/us/asm/data/world/area_nok/nok_04/9EEEB0.data.s @@ -87,7 +87,7 @@ dlabel D_8024337C_9F0F6C .word 0x0000004E, 0x00000006, D_80243258_9F0E48, 0x00000010, 0x00000000, D_80243374_9F0F64, 0x00000000, 0x00000001, 0x00000043, 0x00000001, func_80240E4C_9EEA3C, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_802433B8_9F0FA8 -.word 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0xFFFFFF98, 0x00000028, 0x00000002, 0xFE363C82, 0x000000F1, 0x00000029, 0x00000002, 0xFE363C80, 0xFFFFFF9B, 0x00000029, 0x00000002, 0xFE363C82, 0x00000023, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C82, 0x0000000E, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000006, 0xFFFFFEA2, 0x00000000, 0x0000015E, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000003, GetCamDistance, 0x00000000, 0xFE363C8A, 0x0000002E, 0x00000002, 0xFE363C8A, 0xF24A7D50, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C8A, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF33, 0x0000010B, 0x00000028, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000006, 0xFFFFFF0A, 0x00000122, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110004, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0011000A, 0x00110004, 0x00000000, 0x000C00C3, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000004, NpcFaceNpc, 0xFFFFFFFC, 0x00000006, 0x00000000, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C4, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000046, 0x00000001, D_8024337C_9F0F6C, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF31, 0x0000010C, 0x00000007, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0x00000001, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFF1, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000C, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x000C00C7, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x0011000D, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110000, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000006, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000027, 0x00000002, 0xFE363C82, 0x00000001, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000006, 0x00000044, 0x00000001, D_80241328_9EEF18, 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C83, 0x0000003C, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000001E, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020003, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000006, 0x00000100, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020000, 0x00000008, 0x00000001, 0x00000004, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C8, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00C9, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000263, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000000, 0x00000002, 0xFFFFFFD3, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x000C00CA, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CB, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00CC, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000043, 0x00000002, ShowChoice, 0x001E000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CD, 0x00000004, 0x00000001, 0x0000000A, 0x00000012, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CE, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000013, 0x00000000, 0x00000043, 0x00000003, nok_04_ChangeNpcToPartner, 0x00000006, 0x00000002, 0x00000043, 0x00000001, func_80240E90_9EEA80, 0x00000044, 0x00000001, 0x80240FE8, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018A, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x8024100C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000004, AwaitPlayerApproach, 0xFFFFFE70, 0x00000190, 0x00000064, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00CF, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFF06, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0002, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000014, 0x00000024, 0x00000002, 0xF9718886, 0x00000000, 0x00000024, 0x00000002, 0xF9718887, 0x00000000, 0x00000024, 0x00000002, 0xF9718885, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D0, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718886, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718886, 0x00000000, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, BindNpcDefeat, 0x00000000, D_8024317C_9F0D6C, 0x00000043, 0x00000003, BindNpcAI, 0x00000000, D_80243110_9F0D00, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF2C, 0x00000000, 0x000000ED, 0x0000000F, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8B, 0x00000025, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080012, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000003, 0x00000001, 0x00000015, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000015, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFF01, 0x00000000, 0x0000011F, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001F, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x0000001F, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000002, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF3B, 0x00000000, 0x000000E3, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF17, 0x00000000, 0x0000011D, 0x0000000A, 0x00000003, 0x00000001, 0x00000016, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000016, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFFFFFF2E, 0x00000000, 0x000000F4, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x00000020, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000020, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000007, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF86, 0x00000000, 0x000000DB, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF4F, 0x00000000, 0x000000F2, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF2B, 0x00000000, 0x0000012C, 0x0000000F, 0x00000003, 0x00000001, 0x00000017, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000017, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFFFFFF2E, 0x00000000, 0x0000010A, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000002, 0x00000003, 0x00000001, 0x00000021, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000021, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF9C, 0x00000000, 0x0000010D, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF27, 0x00000000, 0x000000D4, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF03, 0x00000000, 0x0000010E, 0x0000000A, 0x00000003, 0x00000001, 0x00000018, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000018, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFFFFFF49, 0x00000000, 0x00000101, 0x00000043, 0x00000005, GetNpcPos, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000005, 0x00000003, 0x00000001, 0x00000022, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000022, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000003, 0x00000001, 0x00000028, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000028, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFECF, 0x00000000, 0x00000149, 0x00000043, 0x00000003, InterpPlayerYaw, 0x00000032, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFFFFFEB1, 0x00000000, 0x00000163, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x00000032, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D1, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718887, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000024, 0x00000002, 0xF9718888, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000003, 0x00000001, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0xFFFFFF98, 0x00000028, 0x00000002, 0xFE363C82, 0x000000F1, 0x00000029, 0x00000002, 0xFE363C80, 0xFFFFFF9B, 0x00000029, 0x00000002, 0xFE363C82, 0x00000023, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C82, 0x0000000E, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000006, 0xFFFFFEA2, 0x00000000, 0x0000015E, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF24, 0x00000000, 0x0000010E, 0x00000043, 0x00000003, GetCamDistance, 0x00000000, 0xFE363C8A, 0x0000002E, 0x00000002, 0xFE363C8A, 0xF24A7D50, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFE363C8A, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF33, 0x0000010B, 0x00000028, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110008, 0x00000043, 0x00000005, NpcMoveTo, 0x00000006, 0xFFFFFF0A, 0x00000122, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110004, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0011000A, 0x00110004, 0x00000000, 0x000C00C3, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000004, NpcFaceNpc, 0xFFFFFFFC, 0x00000006, 0x00000000, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C4, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000046, 0x00000001, D_8024337C_9F0F6C, 0x00000043, 0x00000004, PlayerMoveTo, 0xFFFFFF31, 0x0000010C, 0x00000007, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00060005, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0x00000001, 0x00000056, 0x00000000, 0x00000005, 0x00000001, 0x0000001E, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFFFFFFF1, 0x00000027, 0x00000002, 0xFE363C81, 0x00000008, 0x00000027, 0x00000002, 0xFE363C82, 0x0000000C, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x000C00C7, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x0011000D, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x00110009, 0x00110003, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00110000, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000006, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000027, 0x00000002, 0xFE363C82, 0x00000001, 0x00000027, 0x00000002, 0xFE363C81, 0x00000014, 0x00000024, 0x00000002, 0xFE363C83, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0x00000006, 0x00000044, 0x00000001, D_80241328_9EEF18, 0x00000043, 0x00000004, InterpNpcYaw, 0xFE363C83, 0x0000003C, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000001E, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020003, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000006, 0x00000100, 0x00000000, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020000, 0x00000008, 0x00000001, 0x00000004, 0x00000043, 0x00000003, EnableNpcBlur, 0x00000001, 0x00000001, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000003, SetNpcSprite, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00C8, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00C9, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, PlaySoundAtPlayer, 0x00000263, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000000, 0x00000002, 0xFFFFFFD3, 0x00000032, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x000C00CA, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CB, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000007, SpeakToNpc, 0xFFFFFFFC, 0x00010008, 0x00010001, 0x00000000, 0x00000006, 0x000C00CC, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000006, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010021, 0x00000043, 0x00000002, ShowChoice, 0x001E000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CD, 0x00000004, 0x00000001, 0x0000000A, 0x00000012, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x000C00CE, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020010, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000006, 0x00020003, 0x00000043, 0x00000005, EndSpeech, 0x00000006, 0x0002000D, 0x00020003, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFA4, 0x00000013, 0x00000000, 0x00000043, 0x00000003, nok_04_ChangeNpcToPartner, 0x00000006, 0x00000002, 0x00000043, 0x00000001, nok_04_LoadPartyImage, 0x00000044, 0x00000001, 0x80240FE8, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018A, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x8024100C, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000004, AwaitPlayerApproach, 0xFFFFFE70, 0x00000190, 0x00000064, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00CF, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xFFFFFF06, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0002, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x00000014, 0x00000024, 0x00000002, 0xF9718886, 0x00000000, 0x00000024, 0x00000002, 0xF9718887, 0x00000000, 0x00000024, 0x00000002, 0xF9718885, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D0, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718886, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001E, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718886, 0x00000000, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001B, 0x00000043, 0x00000003, BindNpcDefeat, 0x00000000, D_8024317C_9F0D6C, 0x00000043, 0x00000003, BindNpcAI, 0x00000000, D_80243110_9F0D00, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFFFFFF2C, 0x00000000, 0x000000ED, 0x0000000F, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8B, 0x00000025, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080012, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000003, 0x00000001, 0x00000015, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000015, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFF01, 0x00000000, 0x0000011F, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x0000001F, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x0000001F, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000002, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF9C, 0x00000000, 0x000000E1, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF3B, 0x00000000, 0x000000E3, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFFFFFF17, 0x00000000, 0x0000011D, 0x0000000A, 0x00000003, 0x00000001, 0x00000016, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000016, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0xFFFFFF2E, 0x00000000, 0x000000F4, 0x00000043, 0x00000005, GetNpcPos, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000003, 0x00000001, 0x00000020, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000003, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000020, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000A, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000003, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000003, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000003, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000007, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF86, 0x00000000, 0x000000DB, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF4F, 0x00000000, 0x000000F2, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFFFFFF2B, 0x00000000, 0x0000012C, 0x0000000F, 0x00000003, 0x00000001, 0x00000017, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000017, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0xFFFFFF2E, 0x00000000, 0x0000010A, 0x00000043, 0x00000005, GetNpcPos, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000002, 0x00000003, 0x00000001, 0x00000021, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000004, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000021, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000004, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000004, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000004, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000004, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x0000003F, 0x00000000, 0x000000D4, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000001, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF9C, 0x00000000, 0x0000010D, 0x00000014, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF27, 0x00000000, 0x000000D4, 0x0000000A, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFFFFFF03, 0x00000000, 0x0000010E, 0x0000000A, 0x00000003, 0x00000001, 0x00000018, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000018, 0x00000013, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0xFFFFFF49, 0x00000000, 0x00000101, 0x00000043, 0x00000005, GetNpcPos, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000008, 0x00000001, 0x00000005, 0x00000003, 0x00000001, 0x00000022, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000005, 0xF24A8280, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000C, 0x0000000A, 0x00000002, 0xF9718887, 0x00000000, 0x00000004, 0x00000001, 0x00000022, 0x00000013, 0x00000000, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000000F, 0x00000027, 0x00000002, 0xFE363C8A, 0x00000046, 0x00000027, 0x00000002, 0xFE363C8C, 0xFFFFFFE2, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000005, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000005, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000014, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000005, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000005, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000057, 0x00000000, 0x00000003, 0x00000001, 0x00000028, 0x0000000A, 0x00000002, 0xF9718885, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000028, 0x00000013, 0x00000000, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFECF, 0x00000000, 0x00000149, 0x00000043, 0x00000003, InterpPlayerYaw, 0x00000032, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFFFFFEB1, 0x00000000, 0x00000163, 0x00000043, 0x00000004, InterpNpcYaw, 0xFFFFFFFC, 0x00000032, 0x00000000, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000C00D1, 0x000000A0, 0x00000028, 0x00000024, 0x00000002, 0xF9718887, 0x00000001, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFFFFFEFC, 0x00000000, 0x0000011C, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000024, 0x00000002, 0xF9718888, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80244D0C_9F28FC .word 0x00000056, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000027, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000027, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x0000002A, 0x00000002, 0xFE363C8A, 0x00000002, 0x0000002A, 0x00000002, 0xFE363C8C, 0x00000002, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0x0000000F, 0xFFFFFFF5, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000057, 0x00000000, 0x00000043, 0x00000005, func_80240574_9EE164, 0xFE363C80, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, GetNpcPointer, 0x00000000, 0xFE363C8E, 0x00000043, 0x00000003, GetNpcPointer, 0x00000001, 0xFE363C8F, 0x00000024, 0x00000002, 0xFE363C8A, 0xFE363C80, 0x00000024, 0x00000002, 0xFE363C8B, 0xFE363C81, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C82, 0x00000014, 0x00000001, 0xFD050F80, 0x00000016, 0x00000001, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C8C, 0x00000028, 0x00000002, 0xFE363C84, 0x00000004, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C84, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C8B, 0x0000002A, 0x00000002, 0xFE363C83, 0x00000002, 0x00000024, 0x00000002, 0xFE363C8D, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C8D, 0xFE363C83, 0x00000044, 0x00000001, D_8024303C_9F0C2C, 0x00000008, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C83, 0x00000000, 0xFFFFFFFF, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8D, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C8C, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00BF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C89, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000027, 0x00000002, 0xFD050F80, 0x00000001, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000016, 0x00000001, 0x00000001, 0x00000024, 0x00000002, 0xFE363C84, 0xFE363C8C, 0x00000028, 0x00000002, 0xFE363C84, 0x00000004, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C84, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000024, 0x00000002, 0xFE363C83, 0xFE363C8B, 0x00000029, 0x00000002, 0xFE363C83, 0x00000002, 0x0000002A, 0x00000002, 0xFE363C83, 0x00000003, 0x00000024, 0x00000002, 0xFE363C8D, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C8D, 0xFE363C83, 0x00000044, 0x00000001, D_80242F9C_9F0B8C, 0x00000008, 0x00000001, 0x00000001, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C83, 0x00000000, 0xFFFFFFFF, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8D, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000024, 0x00000002, 0xFE363C89, 0xFE363C8C, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C0, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x0000001E, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000024, 0x00000002, 0xFE363C8C, 0xFE363C89, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0xB0000017, 0x00000000, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x0000001E, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000027, 0x00000002, 0xFD050F80, 0x00000001, 0x00000044, 0x00000001, D_802417F8_9EF3E8, 0x00000002, 0x00000000, 0x00000016, 0x00000001, 0x00000002, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0008, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000000, 0x00000000, 0x00000043, 0x00000004, func_80240314_9EDF04, 0xFE363C8A, 0xFE363C8B, 0xFE363C8C, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000024, 0x00000002, 0xFE363C80, 0xFE363C8B, 0x00000028, 0x00000002, 0xFE363C80, 0x00000032, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0xFE363C80, 0x00000000, 0x00000000, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0xFE363C8F, 0x00000043, 0x00000002, func_80240548_9EE138, 0xFE363C8E, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B0009, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C1, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, func_8024051C_9EE10C, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C81, 0x00000028, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000001, 0xF24A7CE7, 0x00000043, 0x00000006, NpcJump0, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010024, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000004, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000027, 0x00000002, 0xFE363C84, 0x00000032, 0x00000027, 0x00000002, 0xFE363C85, 0x00000002, 0x00000027, 0x00000002, 0xFE363C83, 0x00000008, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000003, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000027, 0x00000002, 0xFE363C83, 0xFFFFFFF0, 0x00000043, 0x0000000F, PlayEffect, 0x00000011, 0x00000003, 0xFE363C83, 0xFE363C84, 0xFE363C85, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x000000D2, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D0006, 0x000000A0, 0x00000028, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000043, 0x00000002, AddKeyItem, 0x00000019, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x002B000C, 0x002B0001, 0x00000005, 0x000C00C2, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000000, 0x002B000B, 0x00000043, 0x00000004, func_802403C0_9EDFB0, 0x00000000, 0x00000000, 0x00000014, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, SetModelFlags, 0x0000004C, 0x00000010, 0x00000000, 0x00000043, 0x00000002, func_80240548_9EE138, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x00000013, 0x00000000, 0x00000008, 0x00000043, 0x00000002, DisablePlayerPhysics, 0x00000000, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000024, 0x00000002, 0xF9718883, 0x00000000, 0x00000044, 0x00000001, D_802433B8_9F0FA8, 0x00000023, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/asm/data/world/area_obk/obk_09/BDB140.data.s b/ver/us/asm/data/world/area_obk/obk_09/BDB140.data.s index 85a4f3d378..690882a788 100644 --- a/ver/us/asm/data/world/area_obk/obk_09/BDB140.data.s +++ b/ver/us/asm/data/world/area_obk/obk_09/BDB140.data.s @@ -3,7 +3,7 @@ .section .data dlabel D_80240990_BDB140 -.word 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFDC, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFDC, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x0000001C, 0x00000000, 0x00000008, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFF4C, 0x00000000, 0x00000158, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFFFFFF4C, 0x00000014, 0x00000158, 0x00000043, 0x00000004, PlayerMoveTo, 0x00000000, 0x000000BE, 0x0000003C, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0008001E, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8E80, 0xF24A5680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x000001F4, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x00000118, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x0000006E, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000030, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000E0042, 0x000000A0, 0x00000028, 0x00000049, 0x00000001, 0xFE363C8A, 0x00000043, 0x00000003, InterpPlayerYaw, 0x00000028, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x01010002, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8A80, 0xF24A5680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000190, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x0000012C, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xFFFFFFEC, 0x0000000A, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x0000003C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFFF6, 0x00000050, 0xFFFFFFDD, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x0000001E, 0x00000046, 0xFFFFFFB5, 0x00000043, 0x00000003, SetNpcYaw, 0x00000000, 0x0000010E, 0x00000043, 0x00000003, SetNpcYaw, 0x00000001, 0x0000010E, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0x000000C1, 0x00000000, 0x00000026, 0x00000002, 0xFE363C80, 0xF24A7A80, 0x00000005, 0x00000001, 0x00000014, 0x0000002C, 0x00000002, 0xFE363C80, 0xF24AAA80, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000007, func_802CFD30, 0x00000001, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24F2A80, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0043, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0044, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0045, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x000000E1, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0046, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000014, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0047, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB880, 0xF24A5480, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000226, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x0000012C, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x00000050, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0007, 0x00BF0008, 0x00000000, 0x000E0048, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000014, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0049, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x0000010E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000005, 0x000E004A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x0000005A, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000005, 0x000E004B, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000226, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A4A80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, EnableGroup, 0x00000029, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0x0000028A, 0x00000050, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000002, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x8000000F, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0xFFFFFEE8, 0xFFFFFE20, 0x00000064, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, TranslateGroup, 0x00000029, 0x00000000, 0xFE363C80, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x0000028A, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0xFE363C80, 0x00000050, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000002, StopSound, 0x8000000F, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x0000009B, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x0000000F, 0xF24A7B4D, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AF280, 0xF24A3280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x000001F4, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x00000000, 0x0000015E, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00140005, 0x00140009, 0x00000000, 0x000E004C, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x00000014, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0x0000026C, 0x00000050, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000002, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x8000000F, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0xFFFFFE20, 0xFFFFFEE8, 0x00000064, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, TranslateGroup, 0x00000029, 0x00000000, 0xFE363C80, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x00000280, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0xFE363C80, 0x00000050, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000002, StopSound, 0x8000000F, 0x00000043, 0x00000003, EnableGroup, 0x00000029, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E004D, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0006, 0x00BF0005, 0x00000000, 0x000E004E, 0x00000043, 0x00000007, SpeakToNpc, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x00000001, 0x000E004F, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF000B, 0x00BF0008, 0x00000000, 0x000E0050, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050008, 0x00050001, 0x00000000, 0x000E0051, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0007, 0x00BF0008, 0x00000000, 0x000E0052, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C81, 0x00000028, 0x00000027, 0x00000002, 0xFE363C82, 0x00000096, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000019, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0053, 0x00000043, 0x00000003, obk_09_ChangeNpcToPartner, 0x00000000, 0x00000009, 0x00000043, 0x00000001, func_80240350_BDAB00, 0x00000044, 0x00000001, 0x80240508, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018D, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80240534, 0x00000008, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0005000B, 0x0005000B, 0x00000000, 0x000E0054, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x0000000F, 0x00000002, 0xF5DE0180, 0xFFFFFFDC, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000024, 0x00000002, 0xF5DE0180, 0xFFFFFFDC, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000005, SetMusicTrack, 0x00000000, 0x0000001C, 0x00000000, 0x00000008, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetPlayerPos, 0xFFFFFF4C, 0x00000000, 0x00000158, 0x00000043, 0x00000005, SetNpcPos, 0xFFFFFFFC, 0xFFFFFF4C, 0x00000014, 0x00000158, 0x00000043, 0x00000004, PlayerMoveTo, 0x00000000, 0x000000BE, 0x0000003C, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0008001E, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8E80, 0xF24A5680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x000001F4, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x00000118, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x0000006E, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000030, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x000E0042, 0x000000A0, 0x00000028, 0x00000049, 0x00000001, 0xFE363C8A, 0x00000043, 0x00000003, InterpPlayerYaw, 0x00000028, 0x00000000, 0x00000043, 0x00000002, SetPlayerAnimation, 0x01010002, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8A80, 0xF24A5680, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000190, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x0000012C, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0xFFFFFFEC, 0x0000000A, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x0000003C, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, SetNpcPos, 0x00000000, 0xFFFFFFF6, 0x00000050, 0xFFFFFFDD, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0x0000001E, 0x00000046, 0xFFFFFFB5, 0x00000043, 0x00000003, SetNpcYaw, 0x00000000, 0x0000010E, 0x00000043, 0x00000003, SetNpcYaw, 0x00000001, 0x0000010E, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000000, 0x000000C1, 0x00000000, 0x00000026, 0x00000002, 0xFE363C80, 0xF24A7A80, 0x00000005, 0x00000001, 0x00000014, 0x0000002C, 0x00000002, 0xFE363C80, 0xF24AAA80, 0x00000043, 0x00000007, func_802CFD30, 0x00000000, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000007, func_802CFD30, 0x00000001, 0x00000007, 0xFE363C80, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0xF24F2A80, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0043, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0044, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0045, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x000000E1, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0046, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000014, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0047, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB880, 0xF24A5480, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000226, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x000000C8, 0x0000012C, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x00000050, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0007, 0x00BF0008, 0x00000000, 0x000E0048, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000014, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0004, 0x00BF0001, 0x00000000, 0x000E0049, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x0000010E, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000005, 0x000E004A, 0x00000043, 0x00000004, InterpNpcYaw, 0x00000000, 0x0000005A, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000005, 0x000E004B, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x00000226, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A4A80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000003, EnableGroup, 0x00000029, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0x0000028A, 0x00000050, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000002, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x8000000F, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0xFFFFFEE8, 0xFFFFFE20, 0x00000064, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, TranslateGroup, 0x00000029, 0x00000000, 0xFE363C80, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x0000028A, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0xFE363C80, 0x00000050, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000002, StopSound, 0x8000000F, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x0000009B, 0x00000000, 0x00000043, 0x00000005, ShakeCam, 0x00000000, 0x00000000, 0x0000000F, 0xF24A7B4D, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000004, SetCamType, 0x00000000, 0x00000004, 0x00000001, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AF280, 0xF24A3280, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x000001F4, 0x00000043, 0x00000004, SetCamPosA, 0x00000000, 0x00000000, 0x0000015E, 0x00000043, 0x00000004, SetCamPosB, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, SetCamPosC, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000002, 0x00140005, 0x00140009, 0x00000000, 0x000E004C, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24A8680, 0xF24A5280, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24BE280, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0x00000000, 0x00000032, 0xFFFFFFBA, 0x00000008, 0x00000001, 0x00000014, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0x0000026C, 0x00000050, 0x00000043, 0x00000003, EnableNpcShadow, 0x00000002, 0x00000000, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000002, 0x8000000F, 0x00000000, 0x00000043, 0x00000005, MakeLerp, 0xFFFFFE20, 0xFFFFFEE8, 0x00000064, 0x00000001, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, TranslateGroup, 0x00000029, 0x00000000, 0xFE363C80, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x00000280, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000001, 0xFE363C80, 0x00000050, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000002, StopSound, 0x8000000F, 0x00000043, 0x00000003, EnableGroup, 0x00000029, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E004D, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0006, 0x00BF0005, 0x00000000, 0x000E004E, 0x00000043, 0x00000007, SpeakToNpc, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x00000001, 0x000E004F, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF000B, 0x00BF0008, 0x00000000, 0x000E0050, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050008, 0x00050001, 0x00000000, 0x000E0051, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00BF0007, 0x00BF0008, 0x00000000, 0x000E0052, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8280, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000000, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C81, 0x00000028, 0x00000027, 0x00000002, 0xFE363C82, 0x00000096, 0x00000043, 0x00000006, NpcJump0, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000019, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000000, 0x00050004, 0x00050001, 0x00000000, 0x000E0053, 0x00000043, 0x00000003, obk_09_ChangeNpcToPartner, 0x00000000, 0x00000009, 0x00000043, 0x00000001, obk_09_LoadPartyImage, 0x00000044, 0x00000001, 0x80240508, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018D, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80240534, 0x00000008, 0x00000001, 0x0000000A, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x0005000B, 0x0005000B, 0x00000000, 0x000E0054, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241830_BDBFE0 .word 0x00000000, 0x00180018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000, 0x00000000, 0x001A0018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000, 0x00000000, 0x00140014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000, 0x00000000, 0x00160018, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00630000 diff --git a/ver/us/asm/data/world/area_omo/omo_12/DDFB60.data.s b/ver/us/asm/data/world/area_omo/omo_12/DDFB60.data.s index f37628c452..b03f72a18a 100644 --- a/ver/us/asm/data/world/area_omo/omo_12/DDFB60.data.s +++ b/ver/us/asm/data/world/area_omo/omo_12/DDFB60.data.s @@ -24,7 +24,7 @@ dlabel D_80241018_DE0328 .word 0x00000000, 0x00000000, 0x00000000, 0xC1C80000, 0xC0A00000, 0x00000000, 0xC2700000, 0x41F00000, 0x00000000, 0x00000000, 0x00000000, 0x41A00000, 0x00000000 dlabel D_8024104C_DE035C -.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, omo_12_SetCamera0Flag1000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000009, SetCamProperties, 0x00000000, 0xF24A8280, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xF2518280, 0xF24AB680, 0xF24A6280, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000006, 0x00000043, 0x00000002, GetCurrentPartnerID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x00060007, 0x00000024, 0x00000002, 0xFE363C8A, 0xFFFFFFFF, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000016, 0x00000001, 0x00000006, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, GetEncounterTriggerHitTier, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x000001F5, 0x00000024, 0x00000002, 0xF9718890, 0x00000000, 0x00000005, 0x00000001, 0x00000008, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x006D0003, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x006D0004, 0x00000056, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xF9718890, 0x00000000, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000002, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001B, 0x00000024, 0x00000002, 0xFE363C82, 0x00000032, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0xFFFFFFE5, 0x00000024, 0x00000002, 0xFE363C82, 0xFFFFFFCE, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_802D2C14, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000100, 0x00000001, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFE363C81, 0x00000000, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000003, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000002, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0x00000014, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000002, 0xFE363C80, 0x00000014, 0xFE363C82, 0x00000014, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000006, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0x00000006, 0xFE363C82, 0x00000005, 0x00000001, 0x00000007, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xF70F2E81, 0x00000002, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000048, 0x00000008, 0x00000001, 0x00000028, 0x00000024, 0x00000002, 0xF9718890, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x0000002A, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A5A80, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFFFFFFFF, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060005, 0x00060007, 0x00000000, 0x000F0058, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002C, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000057, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060005, 0x00060007, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060006, 0x00060001, 0x00000000, 0x000F0057, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_802D2C14, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x00060001, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000001, 0x00000262, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000001, 0x00000000, 0x00000000, 0x0000001E, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x000F0059, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080011, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000001, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000024, 0x00000002, 0xFE363C81, 0xFFFFFFE7, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000019, 0x00000013, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x00000102, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFE363C81, 0xFE363C84, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0xFFFFFFFC, 0x00000003, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000057, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C87, 0xFE363C88, 0xFE363C89, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000001, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000043, 0x00000005, LoadPath, 0x0000000F, D_80240FF4_DE0304, 0x00000003, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0x0000000C, 0x00000012, 0x00000000, 0x00000043, 0x00000005, LoadPath, 0x0000000F, D_80241018_DE0328, 0x00000003, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0xFFFFFFF4, 0x00000013, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C84, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000003, 0x00000001, 0x0000001E, 0x00000043, 0x00000001, GetNextPathPos, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C87, 0x00000027, 0x00000002, 0xFE363C82, 0xFE363C88, 0x00000027, 0x00000002, 0xFE363C83, 0xFE363C89, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x000F005A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E81, 0x00000006, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, omo_12_ChangeNpcToPartner, 0x00000001, 0x00000006, 0x00000043, 0x00000001, func_80240420_DDF730, 0x00000044, 0x00000001, 0x802405E4, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018E, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80240608, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFC, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000005, MakeLerp, 0x000000C8, 0x000000FF, 0x0000002D, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, func_80240314_DDF624, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000027, 0x00000002, 0xFE363C83, 0x00000008, 0x00000043, 0x00000005, func_80240314_DDF624, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0xFE363C80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000001, CloseMessage, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_802408A8_DDFBB8, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x00060004, 0x00060001, 0x00000000, 0x000F005B, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000044, 0x00000001, D_80240F38_DE0248, 0x00000043, 0x00000001, omo_12_UnsetCamera0Flag1000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000002, RemoveNpc, 0x00000002, 0x00000043, 0x00000002, RemoveNpc, 0x00000003, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 +.word 0x00000043, 0x00000002, DisablePlayerInput, 0x00000001, 0x00000043, 0x00000001, omo_12_SetCamera0Flag1000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000009, SetCamProperties, 0x00000000, 0xF24A8280, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0xF2518280, 0xF24AB680, 0xF24A6280, 0x00000024, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000006, 0x00000043, 0x00000002, GetCurrentPartnerID, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000003, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x00060007, 0x00000024, 0x00000002, 0xFE363C8A, 0xFFFFFFFF, 0x00000013, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000000, 0x0000000A, 0x00000002, 0xFE363C8A, 0x00000000, 0x00000043, 0x00000002, GetOwnerEncounterTrigger, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000004, 0x00000016, 0x00000001, 0x00000006, 0x0000001C, 0x00000000, 0x00000043, 0x00000002, GetEncounterTriggerHitTier, 0xFE363C80, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000000, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000002, 0x00000000, 0x00000013, 0x00000000, 0x00000023, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000002, PlaySound, 0x000001F5, 0x00000024, 0x00000002, 0xF9718890, 0x00000000, 0x00000005, 0x00000001, 0x00000008, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000003, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000003, 0x00000006, 0x00000000, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000002, 0x006D0003, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000003, 0x006D0004, 0x00000056, 0x00000000, 0x00000003, 0x00000001, 0x0000000A, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000002, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000003, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000002, 0x0000000A, 0x00000002, 0xF9718890, 0x00000000, 0x00000004, 0x00000001, 0x0000000A, 0x00000013, 0x00000000, 0x00000057, 0x00000000, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000002, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000024, 0x00000002, 0xFE363C81, 0x0000001B, 0x00000024, 0x00000002, 0xFE363C82, 0x00000032, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0xFFFFFFE5, 0x00000024, 0x00000002, 0xFE363C82, 0xFFFFFFCE, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_802D2C14, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0xFFFFFFFC, 0x00000100, 0x00000001, 0x00000043, 0x00000002, SetPlayerSpeed, 0xF24A8680, 0x00000043, 0x00000004, PlayerMoveTo, 0xFE363C81, 0x00000000, 0x00000000, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000002, 0x00000003, 0x00000056, 0x00000000, 0x00000043, 0x00000003, SetNpcJumpscale, 0x00000002, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0x00000014, 0xFE363C82, 0x00000043, 0x00000006, NpcJump0, 0x00000002, 0xFE363C80, 0x00000014, 0xFE363C82, 0x00000014, 0x00000057, 0x00000000, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x00000006, 0x00000043, 0x00000005, GetNpcPos, 0x00000002, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C80, 0x00000006, 0xFE363C82, 0x00000005, 0x00000001, 0x00000007, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000001, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000002, 0x00000002, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000006, 0x00000000, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xF70F2E81, 0x00000002, 0x00000024, 0x00000002, 0xF70F2E82, 0x00000048, 0x00000008, 0x00000001, 0x00000028, 0x00000024, 0x00000002, 0xF9718890, 0x00000001, 0x00000043, 0x00000005, SetNpcPos, 0x00000002, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000043, 0x00000005, SetNpcPos, 0x00000003, 0x00000000, 0xFFFFFC18, 0x00000000, 0x00000008, 0x00000001, 0x00000019, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C83, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C83, 0x0000002A, 0x00000002, 0xFE363C80, 0x00000002, 0x00000043, 0x00000005, UseSettingsFrom, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetCamDistance, 0x00000000, 0x0000012C, 0x00000043, 0x00000004, SetCamPitch, 0x00000000, 0xF24AB680, 0xF24A5A80, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A8E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000043, 0x00000003, WaitForCam, 0x00000000, 0xF24A7E80, 0x0000000A, 0x00000002, 0xFE363C8A, 0xFFFFFFFF, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060005, 0x00060007, 0x00000000, 0x000F0058, 0x00000056, 0x00000000, 0x00000008, 0x00000001, 0x0000000A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x0001002C, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000057, 0x00000000, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060005, 0x00060007, 0x00000000, 0x00000012, 0x00000000, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060006, 0x00060001, 0x00000000, 0x000F0057, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000013, 0x00000000, 0x00000043, 0x00000002, func_802D2C14, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, SetNpcAnimation, 0x00000001, 0x00060001, 0x00000043, 0x00000004, PlaySoundAtNpc, 0x00000001, 0x00000262, 0x00000000, 0x00000043, 0x0000000A, ShowEmote, 0x00000001, 0x00000000, 0x00000000, 0x0000001E, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000028, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x000F0059, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00080011, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000001, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000024, 0x00000002, 0xFE363C81, 0xFFFFFFE7, 0x00000012, 0x00000000, 0x00000024, 0x00000002, 0xFE363C81, 0x00000019, 0x00000013, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000056, 0x00000000, 0x00000043, 0x00000002, DisablePartnerAI, 0x00000000, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000003, SetNpcSpeed, 0xFFFFFFFC, 0xF24A8680, 0x00000043, 0x00000003, SetNpcAnimation, 0xFFFFFFFC, 0x00000102, 0x00000043, 0x00000005, NpcMoveTo, 0xFFFFFFFC, 0xFE363C81, 0xFE363C84, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0xFFFFFFFC, 0x00000003, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000057, 0x00000000, 0x00000043, 0x00000004, SetNpcFlagBits, 0x00000001, 0x00000100, 0x00000001, 0x00000043, 0x00000005, GetNpcPos, 0x00000001, 0xFE363C87, 0xFE363C88, 0xFE363C89, 0x00000043, 0x00000003, GetAngleToPlayer, 0x00000001, 0xFE363C80, 0x0000000C, 0x00000002, 0xFE363C80, 0x000000B4, 0x00000043, 0x00000005, LoadPath, 0x0000000F, D_80240FF4_DE0304, 0x00000003, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0x0000000C, 0x00000012, 0x00000000, 0x00000043, 0x00000005, LoadPath, 0x0000000F, D_80241018_DE0328, 0x00000003, 0x00000000, 0x00000024, 0x00000002, 0xFE363C84, 0xFFFFFFF4, 0x00000013, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0xFE363C84, 0x00000043, 0x00000005, SetPanTarget, 0x00000000, 0xFE363C80, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetCamSpeed, 0x00000000, 0xF24A7E80, 0x00000043, 0x00000004, PanToTarget, 0x00000000, 0x00000000, 0x00000001, 0x00000003, 0x00000001, 0x0000001E, 0x00000043, 0x00000001, GetNextPathPos, 0x00000027, 0x00000002, 0xFE363C81, 0xFE363C87, 0x00000027, 0x00000002, 0xFE363C82, 0xFE363C88, 0x00000027, 0x00000002, 0xFE363C83, 0xFE363C89, 0x00000043, 0x00000005, SetNpcPos, 0x00000001, 0xFE363C81, 0xFE363C82, 0xFE363C83, 0x00000043, 0x00000003, PlayerFaceNpc, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C80, 0x00000001, 0x00000004, 0x00000001, 0x0000001E, 0x00000013, 0x00000000, 0x00000043, 0x00000003, NpcFacePlayer, 0x00000001, 0x00000003, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x000F005A, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010002, 0x00000008, 0x00000001, 0x00000005, 0x00000043, 0x00000002, SetPlayerAnimation, 0x00010029, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000005, EndSpeech, 0x00000001, 0x00060004, 0x00060001, 0x00000000, 0x00000024, 0x00000002, 0xF70F2E81, 0x00000006, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000003, omo_12_ChangeNpcToPartner, 0x00000001, 0x00000006, 0x00000043, 0x00000001, omo_12_LoadPartyImage, 0x00000044, 0x00000001, 0x802405E4, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, ShowMessageAtScreenPos, 0x001D018E, 0x000000A0, 0x00000028, 0x00000044, 0x00000001, 0x80240608, 0x00000008, 0x00000001, 0x0000000A, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetNpcPos, 0xFFFFFFFC, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000043, 0x00000005, MakeLerp, 0x000000C8, 0x000000FF, 0x0000002D, 0x00000000, 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000001, UpdateLerp, 0x00000043, 0x00000005, func_80240314_DDF624, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x0000000A, 0x00000002, 0xFE363C81, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000043, 0x00000004, GetPlayerPos, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0x00000027, 0x00000002, 0xFE363C83, 0x00000008, 0x00000043, 0x00000005, func_80240314_DDF624, 0xFE363C82, 0xFE363C83, 0xFE363C84, 0xFE363C80, 0x00000057, 0x00000000, 0x00000008, 0x00000001, 0x0000001E, 0x00000043, 0x00000001, CloseMessage, 0x00000008, 0x00000001, 0x0000000A, 0x00000046, 0x00000001, D_802408A8_DDFBB8, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000006, SpeakToPlayer, 0xFFFFFFFC, 0x00060004, 0x00060001, 0x00000000, 0x000F005B, 0x00000043, 0x00000001, EnablePartnerAI, 0x00000044, 0x00000001, D_80240F38_DE0248, 0x00000043, 0x00000001, omo_12_UnsetCamera0Flag1000, 0x00000043, 0x00000003, ResetCam, 0x00000000, 0xF24A8E80, 0x00000024, 0x00000002, 0xF5DE0180, 0x00000002, 0x00000043, 0x00000002, DisablePlayerInput, 0x00000000, 0x00000043, 0x00000002, RemoveNpc, 0x00000002, 0x00000043, 0x00000002, RemoveNpc, 0x00000003, 0x00000048, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000 dlabel D_80241E60_DE1170 .word 0x00000005, 0x00000001, 0x00000000, 0x00000043, 0x00000003, GetSelfVar, 0x00000000, 0xFE363C80, 0x00000008, 0x00000001, 0x00000001, 0x0000000B, 0x00000002, 0xFE363C80, 0x00000000, 0x00000007, 0x00000000, 0x00000013, 0x00000000, 0x00000006, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000043, 0x00000002, StartBossBattle, 0x00000003, 0x00000002, 0x00000000, 0x00000001, 0x00000000 diff --git a/ver/us/asm/nonmatchings/audio/25f00_len_940/func_8004B328.s b/ver/us/asm/nonmatchings/audio/25f00_len_940/func_8004B328.s deleted file mode 100644 index 81d00246d2..0000000000 --- a/ver/us/asm/nonmatchings/audio/25f00_len_940/func_8004B328.s +++ /dev/null @@ -1,56 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004B328 -/* 26728 8004B328 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 2672C 8004B32C 00042400 */ sll $a0, $a0, 0x10 -/* 26730 8004B330 00042403 */ sra $a0, $a0, 0x10 -/* 26734 8004B334 24020001 */ addiu $v0, $zero, 1 -/* 26738 8004B338 AFBF0014 */ sw $ra, 0x14($sp) -/* 2673C 8004B33C 1082000B */ beq $a0, $v0, .L8004B36C -/* 26740 8004B340 AFB00010 */ sw $s0, 0x10($sp) -/* 26744 8004B344 24020002 */ addiu $v0, $zero, 2 -/* 26748 8004B348 14820024 */ bne $a0, $v0, .L8004B3DC -/* 2674C 8004B34C 00000000 */ nop -/* 26750 8004B350 0C015B54 */ jal func_80056D50 -/* 26754 8004B354 00000000 */ nop -/* 26758 8004B358 3C01800A */ lui $at, %hi(D_800A0F50) -/* 2675C 8004B35C 0C015B4D */ jal func_80056D34 -/* 26760 8004B360 A4220F50 */ sh $v0, %lo(D_800A0F50)($at) -/* 26764 8004B364 08012CF7 */ j .L8004B3DC -/* 26768 8004B368 00000000 */ nop -.L8004B36C: -/* 2676C 8004B36C 3C026666 */ lui $v0, 0x6666 -/* 26770 8004B370 3C03800A */ lui $v1, %hi(D_800A0F50) -/* 26774 8004B374 94630F50 */ lhu $v1, %lo(D_800A0F50)($v1) -/* 26778 8004B378 34426667 */ ori $v0, $v0, 0x6667 -/* 2677C 8004B37C 00031C00 */ sll $v1, $v1, 0x10 -/* 26780 8004B380 00032403 */ sra $a0, $v1, 0x10 -/* 26784 8004B384 00820018 */ mult $a0, $v0 -/* 26788 8004B388 00031FC3 */ sra $v1, $v1, 0x1f -/* 2678C 8004B38C 00003810 */ mfhi $a3 -/* 26790 8004B390 000710C3 */ sra $v0, $a3, 3 -/* 26794 8004B394 00431023 */ subu $v0, $v0, $v1 -/* 26798 8004B398 00021400 */ sll $v0, $v0, 0x10 -/* 2679C 8004B39C 00021403 */ sra $v0, $v0, 0x10 -/* 267A0 8004B3A0 00450018 */ mult $v0, $a1 -/* 267A4 8004B3A4 00001812 */ mflo $v1 -/* 267A8 8004B3A8 00838023 */ subu $s0, $a0, $v1 -/* 267AC 8004B3AC 06020001 */ bltzl $s0, .L8004B3B4 -/* 267B0 8004B3B0 0000802D */ daddu $s0, $zero, $zero -.L8004B3B4: -/* 267B4 8004B3B4 02100018 */ mult $s0, $s0 -/* 267B8 8004B3B8 00003012 */ mflo $a2 -/* 267BC 8004B3BC 000683C3 */ sra $s0, $a2, 0xf -/* 267C0 8004B3C0 00102400 */ sll $a0, $s0, 0x10 -/* 267C4 8004B3C4 0C015B51 */ jal func_80056D44 -/* 267C8 8004B3C8 00042403 */ sra $a0, $a0, 0x10 -/* 267CC 8004B3CC 16000003 */ bnez $s0, .L8004B3DC -/* 267D0 8004B3D0 00000000 */ nop -/* 267D4 8004B3D4 3C018008 */ lui $at, %hi(nuAuTaskStop) -/* 267D8 8004B3D8 A0208180 */ sb $zero, %lo(nuAuTaskStop)($at) -.L8004B3DC: -/* 267DC 8004B3DC 8FBF0014 */ lw $ra, 0x14($sp) -/* 267E0 8004B3E0 8FB00010 */ lw $s0, 0x10($sp) -/* 267E4 8004B3E4 03E00008 */ jr $ra -/* 267E8 8004B3E8 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/os/39cb0_len_100/boot_idle.s b/ver/us/asm/nonmatchings/os/39cb0_len_100/boot_idle.s deleted file mode 100644 index 483d3dbe15..0000000000 --- a/ver/us/asm/nonmatchings/os/39cb0_len_100/boot_idle.s +++ /dev/null @@ -1,47 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel boot_idle -/* 39D0C 8005E90C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 39D10 8005E910 AFBF001C */ sw $ra, 0x1c($sp) -/* 39D14 8005E914 AFB00018 */ sw $s0, 0x18($sp) -/* 39D18 8005E918 3C01800A */ lui $at, %hi(nuIdleFunc) -/* 39D1C 8005E91C 0C017D14 */ jal nuPiInit -/* 39D20 8005E920 AC20A630 */ sw $zero, %lo(nuIdleFunc)($at) -/* 39D24 8005E924 24040002 */ addiu $a0, $zero, 2 -/* 39D28 8005E928 0C017A6C */ jal nuScCreateScheduler -/* 39D2C 8005E92C 24050001 */ addiu $a1, $zero, 1 -/* 39D30 8005E930 0C019B98 */ jal osViSetSpecialFeatures -/* 39D34 8005E934 2404005A */ addiu $a0, $zero, 0x5a -/* 39D38 8005E938 3C10800A */ lui $s0, %hi(D_800A4420) -/* 39D3C 8005E93C 26104420 */ addiu $s0, $s0, %lo(D_800A4420) -/* 39D40 8005E940 0200202D */ daddu $a0, $s0, $zero -/* 39D44 8005E944 24050003 */ addiu $a1, $zero, 3 -/* 39D48 8005E948 3C02800C */ lui $v0, %hi(nuYieldBuf) -/* 39D4C 8005E94C 24428590 */ addiu $v0, $v0, %lo(nuYieldBuf) -/* 39D50 8005E950 AFA20010 */ sw $v0, 0x10($sp) -/* 39D54 8005E954 2402000A */ addiu $v0, $zero, 0xa -/* 39D58 8005E958 3C068002 */ lui $a2, %hi(boot_main) -/* 39D5C 8005E95C 24C65F70 */ addiu $a2, $a2, %lo(boot_main) -/* 39D60 8005E960 0000382D */ daddu $a3, $zero, $zero -/* 39D64 8005E964 0C019798 */ jal osCreateThread -/* 39D68 8005E968 AFA20014 */ sw $v0, 0x14($sp) -/* 39D6C 8005E96C 0C019808 */ jal osStartThread -/* 39D70 8005E970 0200202D */ daddu $a0, $s0, $zero -/* 39D74 8005E974 3C04800A */ lui $a0, %hi(D_800A4270) -/* 39D78 8005E978 24844270 */ addiu $a0, $a0, %lo(D_800A4270) -/* 39D7C 8005E97C 0C0197D4 */ jal osSetThreadPri -/* 39D80 8005E980 0000282D */ daddu $a1, $zero, $zero -.L8005E984: -/* 39D84 8005E984 3C02800A */ lui $v0, %hi(nuIdleFunc) -/* 39D88 8005E988 8C42A630 */ lw $v0, %lo(nuIdleFunc)($v0) -.L8005E98C: -/* 39D8C 8005E98C 1040FFFF */ beqz $v0, .L8005E98C -/* 39D90 8005E990 00000000 */ nop -/* 39D94 8005E994 0040F809 */ jalr $v0 -/* 39D98 8005E998 00000000 */ nop -/* 39D9C 8005E99C 08017A61 */ j .L8005E984 -/* 39DA0 8005E9A0 00000000 */ nop -/* 39DA4 8005E9A4 00000000 */ nop -/* 39DA8 8005E9A8 00000000 */ nop -/* 39DAC 8005E9AC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contQuery.s b/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contQuery.s deleted file mode 100644 index 6ddf828207..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contQuery.s +++ /dev/null @@ -1,25 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel contQuery -/* 3BC70 80060870 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 3BC74 80060874 AFB00010 */ sw $s0, 0x10($sp) -/* 3BC78 80060878 3C10800E */ lui $s0, %hi(nuSiMesgQ) -/* 3BC7C 8006087C 2610AC78 */ addiu $s0, $s0, %lo(nuSiMesgQ) -/* 3BC80 80060880 AFBF0014 */ sw $ra, 0x14($sp) -/* 3BC84 80060884 0C018640 */ jal osContStartQuery -/* 3BC88 80060888 0200202D */ daddu $a0, $s0, $zero -/* 3BC8C 8006088C 14400008 */ bnez $v0, .L800608B0 -/* 3BC90 80060890 0200202D */ daddu $a0, $s0, $zero -/* 3BC94 80060894 0000282D */ daddu $a1, $zero, $zero -/* 3BC98 80060898 0C0195BC */ jal osRecvMesg -/* 3BC9C 8006089C 24060001 */ addiu $a2, $zero, 1 -/* 3BCA0 800608A0 3C04800B */ lui $a0, %hi(nuContStatus) -/* 3BCA4 800608A4 0C018660 */ jal osContGetQuery -/* 3BCA8 800608A8 24841B7C */ addiu $a0, $a0, %lo(nuContStatus) -/* 3BCAC 800608AC 0000102D */ daddu $v0, $zero, $zero -.L800608B0: -/* 3BCB0 800608B0 8FBF0014 */ lw $ra, 0x14($sp) -/* 3BCB4 800608B4 8FB00010 */ lw $s0, 0x10($sp) -/* 3BCB8 800608B8 03E00008 */ jr $ra -/* 3BCBC 800608BC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScEventHandler.s b/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScEventHandler.s deleted file mode 100644 index b3a9491cc8..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScEventHandler.s +++ /dev/null @@ -1,82 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuScEventHandler -/* 3A3A8 8005EFA8 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 3A3AC 8005EFAC AFB1001C */ sw $s1, 0x1c($sp) -/* 3A3B0 8005EFB0 3C11800E */ lui $s1, %hi(D_800DA4B4) -/* 3A3B4 8005EFB4 2631A4B4 */ addiu $s1, $s1, %lo(D_800DA4B4) -/* 3A3B8 8005EFB8 AFB40028 */ sw $s4, 0x28($sp) -/* 3A3BC 8005EFBC 2414029A */ addiu $s4, $zero, 0x29a -/* 3A3C0 8005EFC0 AFB30024 */ sw $s3, 0x24($sp) -/* 3A3C4 8005EFC4 2413029D */ addiu $s3, $zero, 0x29d -/* 3A3C8 8005EFC8 AFB20020 */ sw $s2, 0x20($sp) -/* 3A3CC 8005EFCC 24120001 */ addiu $s2, $zero, 1 -/* 3A3D0 8005EFD0 AFBF002C */ sw $ra, 0x2c($sp) -/* 3A3D4 8005EFD4 AFB00018 */ sw $s0, 0x18($sp) -/* 3A3D8 8005EFD8 3C018009 */ lui $at, %hi(D_80093B94) -/* 3A3DC 8005EFDC AC203B94 */ sw $zero, %lo(D_80093B94)($at) -.L8005EFE0: -/* 3A3E0 8005EFE0 0220202D */ daddu $a0, $s1, $zero -.L8005EFE4: -/* 3A3E4 8005EFE4 27A50010 */ addiu $a1, $sp, 0x10 -.L8005EFE8: -/* 3A3E8 8005EFE8 0C0195BC */ jal osRecvMesg -/* 3A3EC 8005EFEC 24060001 */ addiu $a2, $zero, 1 -/* 3A3F0 8005EFF0 8FA20010 */ lw $v0, 0x10($sp) -/* 3A3F4 8005EFF4 10540005 */ beq $v0, $s4, .L8005F00C -/* 3A3F8 8005EFF8 00000000 */ nop -/* 3A3FC 8005EFFC 1053001D */ beq $v0, $s3, .L8005F074 -/* 3A400 8005F000 0220202D */ daddu $a0, $s1, $zero -/* 3A404 8005F004 08017BFA */ j .L8005EFE8 -/* 3A408 8005F008 27A50010 */ addiu $a1, $sp, 0x10 -.L8005F00C: -/* 3A40C 8005F00C 3C028009 */ lui $v0, %hi(D_80093B94) -/* 3A410 8005F010 8C423B94 */ lw $v0, %lo(D_80093B94)($v0) -/* 3A414 8005F014 24420001 */ addiu $v0, $v0, 1 -/* 3A418 8005F018 3C018009 */ lui $at, %hi(D_80093B94) -/* 3A41C 8005F01C AC223B94 */ sw $v0, %lo(D_80093B94)($at) -/* 3A420 8005F020 0C017C30 */ jal nuScEventBroadcast -/* 3A424 8005F024 2624FF8C */ addiu $a0, $s1, -0x74 -/* 3A428 8005F028 3C02800A */ lui $v0, %hi(nuScPreNMIFlag) -/* 3A42C 8005F02C 9042A5B0 */ lbu $v0, %lo(nuScPreNMIFlag)($v0) -/* 3A430 8005F030 1040FFEC */ beqz $v0, .L8005EFE4 -/* 3A434 8005F034 0220202D */ daddu $a0, $s1, $zero -/* 3A438 8005F038 12000003 */ beqz $s0, .L8005F048 -/* 3A43C 8005F03C 34420002 */ ori $v0, $v0, 2 -/* 3A440 8005F040 08017BF9 */ j .L8005EFE4 -/* 3A444 8005F044 2610FFFF */ addiu $s0, $s0, -1 -.L8005F048: -/* 3A448 8005F048 3C01800A */ lui $at, %hi(nuScPreNMIFlag) -/* 3A44C 8005F04C 0C01A98C */ jal osAfterPreNMI -/* 3A450 8005F050 A022A5B0 */ sb $v0, %lo(nuScPreNMIFlag)($at) -/* 3A454 8005F054 3C013F80 */ lui $at, 0x3f80 -/* 3A458 8005F058 44816000 */ mtc1 $at, $f12 -/* 3A45C 8005F05C 0C019BF4 */ jal osViSetYScale -/* 3A460 8005F060 00000000 */ nop -/* 3A464 8005F064 0C019CE0 */ jal osViBlack -/* 3A468 8005F068 24040001 */ addiu $a0, $zero, 1 -/* 3A46C 8005F06C 08017BF9 */ j .L8005EFE4 -/* 3A470 8005F070 0220202D */ daddu $a0, $s1, $zero -.L8005F074: -/* 3A474 8005F074 3C01800A */ lui $at, %hi(nuScPreNMIFlag) -/* 3A478 8005F078 A032A5B0 */ sb $s2, %lo(nuScPreNMIFlag)($at) -/* 3A47C 8005F07C 0C017C30 */ jal nuScEventBroadcast -/* 3A480 8005F080 2624FF8E */ addiu $a0, $s1, -0x72 -/* 3A484 8005F084 3C028009 */ lui $v0, %hi(D_80093B80) -/* 3A488 8005F088 8C423B80 */ lw $v0, %lo(D_80093B80)($v0) -/* 3A48C 8005F08C 10400003 */ beqz $v0, .L8005F09C -/* 3A490 8005F090 00000000 */ nop -/* 3A494 8005F094 0040F809 */ jalr $v0 -/* 3A498 8005F098 00000000 */ nop -.L8005F09C: -/* 3A49C 8005F09C 92220608 */ lbu $v0, 0x608($s1) -/* 3A4A0 8005F0A0 8E230604 */ lw $v1, 0x604($s1) -/* 3A4A4 8005F0A4 00021042 */ srl $v0, $v0, 1 -/* 3A4A8 8005F0A8 14600002 */ bnez $v1, .L8005F0B4 -/* 3A4AC 8005F0AC 0043001B */ divu $zero, $v0, $v1 -/* 3A4B0 8005F0B0 0007000D */ break 7 -.L8005F0B4: -/* 3A4B4 8005F0B4 00001012 */ mflo $v0 -/* 3A4B8 8005F0B8 08017BF8 */ j .L8005EFE0 -/* 3A4BC 8005F0BC 2450FFFD */ addiu $s0, $v0, -3 diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetAudioMQ.s b/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetAudioMQ.s deleted file mode 100644 index acb521ba88..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetAudioMQ.s +++ /dev/null @@ -1,7 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuScGetAudioMQ -/* 3A384 8005EF84 3C02800E */ lui $v0, 0x800e -/* 3A388 8005EF88 03E00008 */ jr $ra -/* 3A38C 8005EF8C 2442A444 */ addiu $v0, $v0, -0x5bbc diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetFrameRate.s b/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetFrameRate.s deleted file mode 100644 index 91380dd42d..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetFrameRate.s +++ /dev/null @@ -1,7 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuScGetFrameRate -/* 3A39C 8005EF9C 3C02800E */ lui $v0, 0x800e -/* 3A3A0 8005EFA0 03E00008 */ jr $ra -/* 3A3A4 8005EFA4 9042AABC */ lbu $v0, -0x5544($v0) diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetGfxMQ.s b/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetGfxMQ.s deleted file mode 100644 index 8b8367c036..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScGetGfxMQ.s +++ /dev/null @@ -1,7 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuScGetGfxMQ -/* 3A378 8005EF78 3C02800E */ lui $v0, 0x800e -/* 3A37C 8005EF7C 03E00008 */ jr $ra -/* 3A380 8005EF80 2442A47C */ addiu $v0, $v0, -0x5b84 diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScSetFrameBufferNum.s b/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScSetFrameBufferNum.s deleted file mode 100644 index 2f0a2e1a34..0000000000 --- a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScSetFrameBufferNum.s +++ /dev/null @@ -1,7 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel nuScSetFrameBufferNum -/* 3A390 8005EF90 3C01800E */ lui $at, 0x800e -/* 3A394 8005EF94 03E00008 */ jr $ra -/* 3A398 8005EF98 A024AABD */ sb $a0, -0x5543($at) diff --git a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contReadData.s b/ver/us/asm/nonmatchings/os/nusys/nucontmgr/contReadData.s similarity index 100% rename from ver/us/asm/nonmatchings/os/nusys/nuContMgr/contReadData.s rename to ver/us/asm/nonmatchings/os/nusys/nucontmgr/contReadData.s diff --git a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contReadNW.s b/ver/us/asm/nonmatchings/os/nusys/nucontmgr/contReadNW.s similarity index 95% rename from ver/us/asm/nonmatchings/os/nusys/nuContMgr/contReadNW.s rename to ver/us/asm/nonmatchings/os/nusys/nucontmgr/contReadNW.s index ea04e342ed..a115eabbf7 100644 --- a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contReadNW.s +++ b/ver/us/asm/nonmatchings/os/nusys/nucontmgr/contReadNW.s @@ -38,8 +38,8 @@ glabel contReadNW .L80060838: /* 3BC38 80060838 14400009 */ bnez $v0, .L80060860 /* 3BC3C 8006083C 00000000 */ nop -/* 3BC40 80060840 3C028009 */ lui $v0, %hi(D_80093D20) -/* 3BC44 80060844 8C423D20 */ lw $v0, %lo(D_80093D20)($v0) +/* 3BC40 80060840 3C028009 */ lui $v0, %hi(nuContReadFunc) +/* 3BC44 80060844 8C423D20 */ lw $v0, %lo(nuContReadFunc)($v0) /* 3BC48 80060848 50400005 */ beql $v0, $zero, .L80060860 /* 3BC4C 8006084C 0000102D */ daddu $v0, $zero, $zero /* 3BC50 80060850 86040000 */ lh $a0, ($s0) diff --git a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contRetrace.s b/ver/us/asm/nonmatchings/os/nusys/nucontmgr/contRetrace.s similarity index 95% rename from ver/us/asm/nonmatchings/os/nusys/nuContMgr/contRetrace.s rename to ver/us/asm/nonmatchings/os/nusys/nucontmgr/contRetrace.s index 53c590099f..b9360031c3 100644 --- a/ver/us/asm/nonmatchings/os/nusys/nuContMgr/contRetrace.s +++ b/ver/us/asm/nonmatchings/os/nusys/nucontmgr/contRetrace.s @@ -42,8 +42,8 @@ glabel contRetrace /* 3BAF0 800606F0 0C0195BC */ jal osRecvMesg /* 3BAF4 800606F4 24060001 */ addiu $a2, $zero, 1 .L800606F8: -/* 3BAF8 800606F8 3C028009 */ lui $v0, %hi(D_80093D20) -/* 3BAFC 800606FC 8C423D20 */ lw $v0, %lo(D_80093D20)($v0) +/* 3BAF8 800606F8 3C028009 */ lui $v0, %hi(nuContReadFunc) +/* 3BAFC 800606FC 8C423D20 */ lw $v0, %lo(nuContReadFunc)($v0) /* 3BB00 80060700 10400003 */ beqz $v0, .L80060710 /* 3BB04 80060704 00000000 */ nop /* 3BB08 80060708 0040F809 */ jalr $v0 diff --git a/ver/us/asm/nonmatchings/os/nusys/nuSched/nuScWaitTaskReady.s b/ver/us/asm/nonmatchings/os/nusys/nusched/nuScWaitTaskReady.s similarity index 100% rename from ver/us/asm/nonmatchings/os/nusys/nuSched/nuScWaitTaskReady.s rename to ver/us/asm/nonmatchings/os/nusys/nusched/nuScWaitTaskReady.s diff --git a/ver/us/asm/nonmatchings/world/area_jan/jan_04/B45150/func_802409E0_B45150.s b/ver/us/asm/nonmatchings/world/area_jan/jan_04/B45150/func_802409E0_B45150.s deleted file mode 100644 index 9d81858a9b..0000000000 --- a/ver/us/asm/nonmatchings/world/area_jan/jan_04/B45150/func_802409E0_B45150.s +++ /dev/null @@ -1,51 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_802462C0_B4AA30 -.ascii "party_opuku\0flo_00\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - -.section .text - -glabel func_802409E0_B45150 -/* B45150 802409E0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* B45154 802409E4 3C048024 */ lui $a0, %hi(D_802462C0_B4AA30) -/* B45158 802409E8 248462C0 */ addiu $a0, $a0, %lo(D_802462C0_B4AA30) -/* B4515C 802409EC 27A50010 */ addiu $a1, $sp, 0x10 -/* B45160 802409F0 AFBF0020 */ sw $ra, 0x20($sp) -/* B45164 802409F4 AFB1001C */ sw $s1, 0x1c($sp) -/* B45168 802409F8 0C016B3A */ jal load_asset_by_name -/* B4516C 802409FC AFB00018 */ sw $s0, 0x18($sp) -/* B45170 80240A00 0040802D */ daddu $s0, $v0, $zero -/* B45174 80240A04 0200202D */ daddu $a0, $s0, $zero -/* B45178 80240A08 3C118024 */ lui $s1, %hi(D_80246300) -/* B4517C 80240A0C 26316300 */ addiu $s1, $s1, %lo(D_80246300) -/* B45180 80240A10 0C01BB7C */ jal decode_yay0 -/* B45184 80240A14 0220282D */ daddu $a1, $s1, $zero -/* B45188 80240A18 0C00AB1E */ jal general_heap_free -/* B4518C 80240A1C 0200202D */ daddu $a0, $s0, $zero -/* B45190 80240A20 3C048025 */ lui $a0, %hi(D_8024A2A0) -/* B45194 80240A24 2484A2A0 */ addiu $a0, $a0, %lo(D_8024A2A0) -/* B45198 80240A28 3C028024 */ lui $v0, %hi(mac_01_TransformFoliage) -/* B4519C 80240A2C 24426500 */ addiu $v0, $v0, %lo(mac_01_TransformFoliage) -/* B451A0 80240A30 AC820000 */ sw $v0, ($a0) -/* B451A4 80240A34 24020096 */ addiu $v0, $zero, 0x96 -/* B451A8 80240A38 A4820008 */ sh $v0, 8($a0) -/* B451AC 80240A3C 24020069 */ addiu $v0, $zero, 0x69 -/* B451B0 80240A40 A482000A */ sh $v0, 0xa($a0) -/* B451B4 80240A44 24020002 */ addiu $v0, $zero, 2 -/* B451B8 80240A48 AC82000C */ sw $v0, 0xc($a0) -/* B451BC 80240A4C 24020001 */ addiu $v0, $zero, 1 -/* B451C0 80240A50 AC910004 */ sw $s1, 4($a0) -/* B451C4 80240A54 0C0496CB */ jal set_message_images -/* B451C8 80240A58 AC820010 */ sw $v0, 0x10($a0) -/* B451CC 80240A5C 8FBF0020 */ lw $ra, 0x20($sp) -/* B451D0 80240A60 8FB1001C */ lw $s1, 0x1c($sp) -/* B451D4 80240A64 8FB00018 */ lw $s0, 0x18($sp) -/* B451D8 80240A68 24020002 */ addiu $v0, $zero, 2 -/* B451DC 80240A6C 03E00008 */ jr $ra -/* B451E0 80240A70 27BD0028 */ addiu $sp, $sp, 0x28 -/* B451E4 80240A74 00000000 */ nop -/* B451E8 80240A78 00000000 */ nop -/* B451EC 80240A7C 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/func_802439A0_8B3A10.s b/ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/kmr_02_LoadPartyImage.s similarity index 98% rename from ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/func_802439A0_8B3A10.s rename to ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/kmr_02_LoadPartyImage.s index b043d5e7ad..ec24ad113c 100644 --- a/ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/func_802439A0_8B3A10.s +++ b/ver/us/asm/nonmatchings/world/area_kmr/kmr_02/8B3A10/kmr_02_LoadPartyImage.s @@ -8,7 +8,7 @@ dlabel D_80257F10_8C7F80 .section .text -glabel func_802439A0_8B3A10 +glabel kmr_02_LoadPartyImage /* 8B3A10 802439A0 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 8B3A14 802439A4 3C048025 */ lui $a0, %hi(D_80257F10_8C7F80) /* 8B3A18 802439A8 24847F10 */ addiu $a0, $a0, %lo(D_80257F10_8C7F80) diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_01/9C53E0/func_802428D8_9C7CB8.s b/ver/us/asm/nonmatchings/world/area_nok/nok_01/9C53E0/func_802428D8_9C7CB8.s deleted file mode 100644 index cf9f8770ce..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_01/9C53E0/func_802428D8_9C7CB8.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802428D8_9C7CB8 -/* 9C7CB8 802428D8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 9C7CBC 802428DC AFBF0010 */ sw $ra, 0x10($sp) -/* 9C7CC0 802428E0 8C82000C */ lw $v0, 0xc($a0) -/* 9C7CC4 802428E4 0C0B1EAF */ jal evt_get_variable -/* 9C7CC8 802428E8 8C450000 */ lw $a1, ($v0) -/* 9C7CCC 802428EC 00021040 */ sll $v0, $v0, 1 -/* 9C7CD0 802428F0 3C048025 */ lui $a0, %hi(D_80250810_9D5BF0) -/* 9C7CD4 802428F4 00822021 */ addu $a0, $a0, $v0 -/* 9C7CD8 802428F8 0C015612 */ jal snd_ambient_80055848 -/* 9C7CDC 802428FC 84840810 */ lh $a0, %lo(D_80250810_9D5BF0)($a0) -/* 9C7CE0 80242900 8FBF0010 */ lw $ra, 0x10($sp) -/* 9C7CE4 80242904 24020002 */ addiu $v0, $zero, 2 -/* 9C7CE8 80242908 03E00008 */ jr $ra -/* 9C7CEC 8024290C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9D7AA0/func_802430CC_9DA0EC.s b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9D7AA0/func_802430CC_9DA0EC.s deleted file mode 100644 index 0a5e1c5163..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9D7AA0/func_802430CC_9DA0EC.s +++ /dev/null @@ -1,90 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802430CC_9DA0EC -/* 9DA0EC 802430CC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 9DA0F0 802430D0 AFB10014 */ sw $s1, 0x14($sp) -/* 9DA0F4 802430D4 0080882D */ daddu $s1, $a0, $zero -/* 9DA0F8 802430D8 AFBF001C */ sw $ra, 0x1c($sp) -/* 9DA0FC 802430DC AFB20018 */ sw $s2, 0x18($sp) -/* 9DA100 802430E0 AFB00010 */ sw $s0, 0x10($sp) -/* 9DA104 802430E4 8E30000C */ lw $s0, 0xc($s1) -/* 9DA108 802430E8 8E050000 */ lw $a1, ($s0) -/* 9DA10C 802430EC 0C0B1EAF */ jal evt_get_variable -/* 9DA110 802430F0 26100004 */ addiu $s0, $s0, 4 -/* 9DA114 802430F4 0220202D */ daddu $a0, $s1, $zero -/* 9DA118 802430F8 8E050000 */ lw $a1, ($s0) -/* 9DA11C 802430FC 0C0B1EAF */ jal evt_get_variable -/* 9DA120 80243100 0040802D */ daddu $s0, $v0, $zero -/* 9DA124 80243104 3C128011 */ lui $s2, %hi(gPlayerStatus) -/* 9DA128 80243108 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus) -/* 9DA12C 8024310C 0000182D */ daddu $v1, $zero, $zero -/* 9DA130 80243110 C6420054 */ lwc1 $f2, 0x54($s2) -/* 9DA134 80243114 3C014080 */ lui $at, 0x4080 -/* 9DA138 80243118 44810000 */ mtc1 $at, $f0 -/* 9DA13C 8024311C 00000000 */ nop -/* 9DA140 80243120 4602003E */ c.le.s $f0, $f2 -/* 9DA144 80243124 00000000 */ nop -/* 9DA148 80243128 45000009 */ bc1f .L80243150 -/* 9DA14C 8024312C 0040202D */ daddu $a0, $v0, $zero -/* 9DA150 80243130 8E22008C */ lw $v0, 0x8c($s1) -/* 9DA154 80243134 24420001 */ addiu $v0, $v0, 1 -/* 9DA158 80243138 AE22008C */ sw $v0, 0x8c($s1) -/* 9DA15C 8024313C 28420003 */ slti $v0, $v0, 3 -/* 9DA160 80243140 14400004 */ bnez $v0, .L80243154 -/* 9DA164 80243144 24020002 */ addiu $v0, $zero, 2 -/* 9DA168 80243148 08090C55 */ j .L80243154 -/* 9DA16C 8024314C AE22008C */ sw $v0, 0x8c($s1) -.L80243150: -/* 9DA170 80243150 AE20008C */ sw $zero, 0x8c($s1) -.L80243154: -/* 9DA174 80243154 C6020038 */ lwc1 $f2, 0x38($s0) -/* 9DA178 80243158 C6400028 */ lwc1 $f0, 0x28($s2) -/* 9DA17C 8024315C 46001081 */ sub.s $f2, $f2, $f0 -/* 9DA180 80243160 46021102 */ mul.s $f4, $f2, $f2 -/* 9DA184 80243164 00000000 */ nop -/* 9DA188 80243168 C6400030 */ lwc1 $f0, 0x30($s2) -/* 9DA18C 8024316C C6020040 */ lwc1 $f2, 0x40($s0) -/* 9DA190 80243170 46001001 */ sub.s $f0, $f2, $f0 -/* 9DA194 80243174 46000002 */ mul.s $f0, $f0, $f0 -/* 9DA198 80243178 00000000 */ nop -/* 9DA19C 8024317C 46002100 */ add.s $f4, $f4, $f0 -/* 9DA1A0 80243180 3C0145C8 */ lui $at, 0x45c8 -/* 9DA1A4 80243184 44810000 */ mtc1 $at, $f0 -/* 9DA1A8 80243188 00000000 */ nop -/* 9DA1AC 8024318C 4600203C */ c.lt.s $f4, $f0 -/* 9DA1B0 80243190 00000000 */ nop -/* 9DA1B4 80243194 45000005 */ bc1f .L802431AC -/* 9DA1B8 80243198 00000000 */ nop -/* 9DA1BC 8024319C 8E22008C */ lw $v0, 0x8c($s1) -/* 9DA1C0 802431A0 28420002 */ slti $v0, $v0, 2 -/* 9DA1C4 802431A4 50400001 */ beql $v0, $zero, .L802431AC -/* 9DA1C8 802431A8 24030001 */ addiu $v1, $zero, 1 -.L802431AC: -/* 9DA1CC 802431AC C6020038 */ lwc1 $f2, 0x38($s0) -/* 9DA1D0 802431B0 C4800038 */ lwc1 $f0, 0x38($a0) -/* 9DA1D4 802431B4 46001081 */ sub.s $f2, $f2, $f0 -/* 9DA1D8 802431B8 46021102 */ mul.s $f4, $f2, $f2 -/* 9DA1DC 802431BC 00000000 */ nop -/* 9DA1E0 802431C0 C4800040 */ lwc1 $f0, 0x40($a0) -/* 9DA1E4 802431C4 C6020040 */ lwc1 $f2, 0x40($s0) -/* 9DA1E8 802431C8 46001001 */ sub.s $f0, $f2, $f0 -/* 9DA1EC 802431CC 46000002 */ mul.s $f0, $f0, $f0 -/* 9DA1F0 802431D0 00000000 */ nop -/* 9DA1F4 802431D4 46002100 */ add.s $f4, $f4, $f0 -/* 9DA1F8 802431D8 3C0144C8 */ lui $at, 0x44c8 -/* 9DA1FC 802431DC 44810000 */ mtc1 $at, $f0 -/* 9DA200 802431E0 00000000 */ nop -/* 9DA204 802431E4 4600203C */ c.lt.s $f4, $f0 -/* 9DA208 802431E8 00000000 */ nop -/* 9DA20C 802431EC 45030001 */ bc1tl .L802431F4 -/* 9DA210 802431F0 24030001 */ addiu $v1, $zero, 1 -.L802431F4: -/* 9DA214 802431F4 AE230084 */ sw $v1, 0x84($s1) -/* 9DA218 802431F8 8FBF001C */ lw $ra, 0x1c($sp) -/* 9DA21C 802431FC 8FB20018 */ lw $s2, 0x18($sp) -/* 9DA220 80243200 8FB10014 */ lw $s1, 0x14($sp) -/* 9DA224 80243204 8FB00010 */ lw $s0, 0x10($sp) -/* 9DA228 80243208 24020002 */ addiu $v0, $zero, 2 -/* 9DA22C 8024320C 03E00008 */ jr $ra -/* 9DA230 80243210 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244078_9DB098.s b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244078_9DB098.s index 941c1a1c85..0fd53597ca 100644 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244078_9DB098.s +++ b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244078_9DB098.s @@ -27,9 +27,9 @@ glabel func_80244078_9DB098 /* 9DB0F0 802440D0 001510C0 */ sll $v0, $s5, 3 /* 9DB0F4 802440D4 00551023 */ subu $v0, $v0, $s5 /* 9DB0F8 802440D8 00021080 */ sll $v0, $v0, 2 -/* 9DB0FC 802440DC 3C058025 */ lui $a1, %hi(D_80252794_9E97B4) +/* 9DB0FC 802440DC 3C058025 */ lui $a1, %hi(D_80252784_9E97A4 + 0x10) /* 9DB100 802440E0 00A22821 */ addu $a1, $a1, $v0 -/* 9DB104 802440E4 8CA52794 */ lw $a1, %lo(D_80252794_9E97B4)($a1) +/* 9DB104 802440E4 8CA52794 */ lw $a1, %lo(D_80252784_9E97A4 + 0x10)($a1) /* 9DB108 802440E8 0C0B2026 */ jal evt_set_variable /* 9DB10C 802440EC 24060001 */ addiu $a2, $zero, 1 .L802440F0: diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244224_9DB244.s b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244224_9DB244.s deleted file mode 100644 index 8f425d9fb7..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244224_9DB244.s +++ /dev/null @@ -1,29 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80244224_9DB244 -/* 9DB244 80244224 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 9DB248 80244228 AFB00010 */ sw $s0, 0x10($sp) -/* 9DB24C 8024422C 0080802D */ daddu $s0, $a0, $zero -/* 9DB250 80244230 AFBF0014 */ sw $ra, 0x14($sp) -/* 9DB254 80244234 8E02000C */ lw $v0, 0xc($s0) -/* 9DB258 80244238 0C0B1EAF */ jal evt_get_variable -/* 9DB25C 8024423C 8C450000 */ lw $a1, ($v0) -/* 9DB260 80244240 2442FFFF */ addiu $v0, $v0, -1 -/* 9DB264 80244244 3C048025 */ lui $a0, %hi(D_80252784_9E97A4) -/* 9DB268 80244248 24842784 */ addiu $a0, $a0, %lo(D_80252784_9E97A4) -/* 9DB26C 8024424C 000218C0 */ sll $v1, $v0, 3 -/* 9DB270 80244250 00621823 */ subu $v1, $v1, $v0 -/* 9DB274 80244254 00031880 */ sll $v1, $v1, 2 -/* 9DB278 80244258 00641821 */ addu $v1, $v1, $a0 -/* 9DB27C 8024425C 8C620000 */ lw $v0, ($v1) -/* 9DB280 80244260 AE020084 */ sw $v0, 0x84($s0) -/* 9DB284 80244264 8C620004 */ lw $v0, 4($v1) -/* 9DB288 80244268 AE020088 */ sw $v0, 0x88($s0) -/* 9DB28C 8024426C 8C630008 */ lw $v1, 8($v1) -/* 9DB290 80244270 AE03008C */ sw $v1, 0x8c($s0) -/* 9DB294 80244274 8FBF0014 */ lw $ra, 0x14($sp) -/* 9DB298 80244278 8FB00010 */ lw $s0, 0x10($sp) -/* 9DB29C 8024427C 24020002 */ addiu $v0, $zero, 2 -/* 9DB2A0 80244280 03E00008 */ jr $ra -/* 9DB2A4 80244284 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244288_9DB2A8.s b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244288_9DB2A8.s deleted file mode 100644 index e36bf2eb2c..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_80244288_9DB2A8.s +++ /dev/null @@ -1,26 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80244288_9DB2A8 -/* 9DB2A8 80244288 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 9DB2AC 8024428C AFB00010 */ sw $s0, 0x10($sp) -/* 9DB2B0 80244290 0080802D */ daddu $s0, $a0, $zero -/* 9DB2B4 80244294 AFBF0014 */ sw $ra, 0x14($sp) -/* 9DB2B8 80244298 8E02000C */ lw $v0, 0xc($s0) -/* 9DB2BC 8024429C 0C0B1EAF */ jal evt_get_variable -/* 9DB2C0 802442A0 8C450000 */ lw $a1, ($v0) -/* 9DB2C4 802442A4 0200202D */ daddu $a0, $s0, $zero -/* 9DB2C8 802442A8 2442FFFF */ addiu $v0, $v0, -1 -/* 9DB2CC 802442AC 000218C0 */ sll $v1, $v0, 3 -/* 9DB2D0 802442B0 00621823 */ subu $v1, $v1, $v0 -/* 9DB2D4 802442B4 00031880 */ sll $v1, $v1, 2 -/* 9DB2D8 802442B8 3C058025 */ lui $a1, %hi(D_80252798_9E97B8) -/* 9DB2DC 802442BC 00A32821 */ addu $a1, $a1, $v1 -/* 9DB2E0 802442C0 8CA52798 */ lw $a1, %lo(D_80252798_9E97B8)($a1) -/* 9DB2E4 802442C4 0C0B2026 */ jal evt_set_variable -/* 9DB2E8 802442C8 24060001 */ addiu $a2, $zero, 1 -/* 9DB2EC 802442CC 8FBF0014 */ lw $ra, 0x14($sp) -/* 9DB2F0 802442D0 8FB00010 */ lw $s0, 0x10($sp) -/* 9DB2F4 802442D4 24020002 */ addiu $v0, $zero, 2 -/* 9DB2F8 802442D8 03E00008 */ jr $ra -/* 9DB2FC 802442DC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_802442E0_9DB300.s b/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_802442E0_9DB300.s deleted file mode 100644 index 6abbfcfd31..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_02/9DA8F0/func_802442E0_9DB300.s +++ /dev/null @@ -1,36 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_802442E0_9DB300 -/* 9DB300 802442E0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 9DB304 802442E4 AFB00010 */ sw $s0, 0x10($sp) -/* 9DB308 802442E8 0080802D */ daddu $s0, $a0, $zero -/* 9DB30C 802442EC AFBF0014 */ sw $ra, 0x14($sp) -/* 9DB310 802442F0 8E02000C */ lw $v0, 0xc($s0) -/* 9DB314 802442F4 0C0B1EAF */ jal evt_get_variable -/* 9DB318 802442F8 8C450000 */ lw $a1, ($v0) -/* 9DB31C 802442FC 2442FFFF */ addiu $v0, $v0, -1 -/* 9DB320 80244300 000218C0 */ sll $v1, $v0, 3 -/* 9DB324 80244304 00621823 */ subu $v1, $v1, $v0 -/* 9DB328 80244308 00031880 */ sll $v1, $v1, 2 -/* 9DB32C 8024430C 3C048025 */ lui $a0, %hi(D_8025279C_9E97BC) -/* 9DB330 80244310 00832021 */ addu $a0, $a0, $v1 -/* 9DB334 80244314 8C84279C */ lw $a0, %lo(D_8025279C_9E97BC)($a0) -/* 9DB338 80244318 00041140 */ sll $v0, $a0, 5 -/* 9DB33C 8024431C 3C018025 */ lui $at, %hi(D_802529B4_9E99D4) -/* 9DB340 80244320 AC2429B4 */ sw $a0, %lo(D_802529B4_9E99D4)($at) -/* 9DB344 80244324 3C038008 */ lui $v1, %hi(gItemTable+0x18) -/* 9DB348 80244328 00621821 */ addu $v1, $v1, $v0 -/* 9DB34C 8024432C 946378F8 */ lhu $v1, %lo(gItemTable+0x18)($v1) -/* 9DB350 80244330 AE040088 */ sw $a0, 0x88($s0) -/* 9DB354 80244334 30630004 */ andi $v1, $v1, 4 -/* 9DB358 80244338 0003182B */ sltu $v1, $zero, $v1 -/* 9DB35C 8024433C AE030084 */ sw $v1, 0x84($s0) -/* 9DB360 80244340 8FBF0014 */ lw $ra, 0x14($sp) -/* 9DB364 80244344 8FB00010 */ lw $s0, 0x10($sp) -/* 9DB368 80244348 24020002 */ addiu $v0, $zero, 2 -/* 9DB36C 8024434C 03E00008 */ jr $ra -/* 9DB370 80244350 27BD0018 */ addiu $sp, $sp, 0x18 -/* 9DB374 80244354 00000000 */ nop -/* 9DB378 80244358 00000000 */ nop -/* 9DB37C 8024435C 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_nok/nok_04/9EEA80/func_80240E90_9EEA80.s b/ver/us/asm/nonmatchings/world/area_nok/nok_04/9EEA80/func_80240E90_9EEA80.s deleted file mode 100644 index f369f9f755..0000000000 --- a/ver/us/asm/nonmatchings/world/area_nok/nok_04/9EEA80/func_80240E90_9EEA80.s +++ /dev/null @@ -1,51 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_80246E40_9F4A30 -.ascii "party_kameki\0\0\0\0" - -.section .text - -glabel func_80240E90_9EEA80 -/* 9EEA80 80240E90 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 9EEA84 80240E94 3C048024 */ lui $a0, %hi(D_80246E40_9F4A30) -/* 9EEA88 80240E98 24846E40 */ addiu $a0, $a0, %lo(D_80246E40_9F4A30) -/* 9EEA8C 80240E9C 27A50010 */ addiu $a1, $sp, 0x10 -/* 9EEA90 80240EA0 AFBF0020 */ sw $ra, 0x20($sp) -/* 9EEA94 80240EA4 AFB1001C */ sw $s1, 0x1c($sp) -/* 9EEA98 80240EA8 0C016B3A */ jal load_asset_by_name -/* 9EEA9C 80240EAC AFB00018 */ sw $s0, 0x18($sp) -/* 9EEAA0 80240EB0 0040802D */ daddu $s0, $v0, $zero -/* 9EEAA4 80240EB4 0200202D */ daddu $a0, $s0, $zero -/* 9EEAA8 80240EB8 3C118024 */ lui $s1, %hi(dgb_01_npcGroupList_80246E50) -/* 9EEAAC 80240EBC 26316E50 */ addiu $s1, $s1, %lo(dgb_01_npcGroupList_80246E50) -/* 9EEAB0 80240EC0 0C01BB7C */ jal decode_yay0 -/* 9EEAB4 80240EC4 0220282D */ daddu $a1, $s1, $zero -/* 9EEAB8 80240EC8 0C00AB1E */ jal general_heap_free -/* 9EEABC 80240ECC 0200202D */ daddu $a0, $s0, $zero -/* 9EEAC0 80240ED0 3C048025 */ lui $a0, %hi(pause_partners_load_portrait) -/* 9EEAC4 80240ED4 2484ADE0 */ addiu $a0, $a0, %lo(pause_partners_load_portrait) -/* 9EEAC8 80240ED8 3C028024 */ lui $v0, %hi(D_80247050) -/* 9EEACC 80240EDC 24427050 */ addiu $v0, $v0, %lo(D_80247050) -/* 9EEAD0 80240EE0 AC820000 */ sw $v0, ($a0) -/* 9EEAD4 80240EE4 24020096 */ addiu $v0, $zero, 0x96 -/* 9EEAD8 80240EE8 A4820008 */ sh $v0, 8($a0) -/* 9EEADC 80240EEC 24020069 */ addiu $v0, $zero, 0x69 -/* 9EEAE0 80240EF0 A482000A */ sh $v0, 0xa($a0) -/* 9EEAE4 80240EF4 24020002 */ addiu $v0, $zero, 2 -/* 9EEAE8 80240EF8 AC82000C */ sw $v0, 0xc($a0) -/* 9EEAEC 80240EFC 24020001 */ addiu $v0, $zero, 1 -/* 9EEAF0 80240F00 AC910004 */ sw $s1, 4($a0) -/* 9EEAF4 80240F04 0C0496CB */ jal set_message_images -/* 9EEAF8 80240F08 AC820010 */ sw $v0, 0x10($a0) -/* 9EEAFC 80240F0C 8FBF0020 */ lw $ra, 0x20($sp) -/* 9EEB00 80240F10 8FB1001C */ lw $s1, 0x1c($sp) -/* 9EEB04 80240F14 8FB00018 */ lw $s0, 0x18($sp) -/* 9EEB08 80240F18 24020002 */ addiu $v0, $zero, 2 -/* 9EEB0C 80240F1C 03E00008 */ jr $ra -/* 9EEB10 80240F20 27BD0028 */ addiu $sp, $sp, 0x28 -/* 9EEB14 80240F24 00000000 */ nop -/* 9EEB18 80240F28 00000000 */ nop -/* 9EEB1C 80240F2C 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_obk/obk_01/BBD1A0/func_8024007C_BBD21C.s b/ver/us/asm/nonmatchings/world/area_obk/obk_01/BBD1A0/func_8024007C_BBD21C.s deleted file mode 100644 index c95899eb4b..0000000000 --- a/ver/us/asm/nonmatchings/world/area_obk/obk_01/BBD1A0/func_8024007C_BBD21C.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8024007C_BBD21C -/* BBD21C 8024007C 3C028007 */ lui $v0, %hi(gGameStatusPtr) -/* BBD220 80240080 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) -/* BBD224 80240084 90420012 */ lbu $v0, 0x12($v0) -/* BBD228 80240088 000211C2 */ srl $v0, $v0, 7 -/* BBD22C 8024008C AC82009C */ sw $v0, 0x9c($a0) -/* BBD230 80240090 03E00008 */ jr $ra -/* BBD234 80240094 24020002 */ addiu $v0, $zero, 2 diff --git a/ver/us/asm/nonmatchings/world/area_obk/obk_09/BDAB00/func_80240350_BDAB00.s b/ver/us/asm/nonmatchings/world/area_obk/obk_09/BDAB00/func_80240350_BDAB00.s deleted file mode 100644 index 4cde28caf9..0000000000 --- a/ver/us/asm/nonmatchings/world/area_obk/obk_09/BDAB00/func_80240350_BDAB00.s +++ /dev/null @@ -1,51 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_802429E8_BDD198 -.ascii "party_resa\0\0omo_03\0\0\0\0\0\0" - -.section .text - -glabel func_80240350_BDAB00 -/* BDAB00 80240350 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* BDAB04 80240354 3C048024 */ lui $a0, %hi(D_802429E8_BDD198) -/* BDAB08 80240358 248429E8 */ addiu $a0, $a0, %lo(D_802429E8_BDD198) -/* BDAB0C 8024035C 27A50010 */ addiu $a1, $sp, 0x10 -/* BDAB10 80240360 AFBF0020 */ sw $ra, 0x20($sp) -/* BDAB14 80240364 AFB1001C */ sw $s1, 0x1c($sp) -/* BDAB18 80240368 0C016B3A */ jal load_asset_by_name -/* BDAB1C 8024036C AFB00018 */ sw $s0, 0x18($sp) -/* BDAB20 80240370 0040802D */ daddu $s0, $v0, $zero -/* BDAB24 80240374 0200202D */ daddu $a0, $s0, $zero -/* BDAB28 80240378 3C118024 */ lui $s1, %hi(D_80242A00) -/* BDAB2C 8024037C 26312A00 */ addiu $s1, $s1, %lo(D_80242A00) -/* BDAB30 80240380 0C01BB7C */ jal decode_yay0 -/* BDAB34 80240384 0220282D */ daddu $a1, $s1, $zero -/* BDAB38 80240388 0C00AB1E */ jal general_heap_free -/* BDAB3C 8024038C 0200202D */ daddu $a0, $s0, $zero -/* BDAB40 80240390 3C048024 */ lui $a0, %hi(D_80246990) -/* BDAB44 80240394 24846990 */ addiu $a0, $a0, %lo(D_80246990) -/* BDAB48 80240398 3C028024 */ lui $v0, %hi(D_80242C00) -/* BDAB4C 8024039C 24422C00 */ addiu $v0, $v0, %lo(D_80242C00) -/* BDAB50 802403A0 AC820000 */ sw $v0, ($a0) -/* BDAB54 802403A4 24020096 */ addiu $v0, $zero, 0x96 -/* BDAB58 802403A8 A4820008 */ sh $v0, 8($a0) -/* BDAB5C 802403AC 24020069 */ addiu $v0, $zero, 0x69 -/* BDAB60 802403B0 A482000A */ sh $v0, 0xa($a0) -/* BDAB64 802403B4 24020002 */ addiu $v0, $zero, 2 -/* BDAB68 802403B8 AC82000C */ sw $v0, 0xc($a0) -/* BDAB6C 802403BC 24020001 */ addiu $v0, $zero, 1 -/* BDAB70 802403C0 AC910004 */ sw $s1, 4($a0) -/* BDAB74 802403C4 0C0496CB */ jal set_message_images -/* BDAB78 802403C8 AC820010 */ sw $v0, 0x10($a0) -/* BDAB7C 802403CC 8FBF0020 */ lw $ra, 0x20($sp) -/* BDAB80 802403D0 8FB1001C */ lw $s1, 0x1c($sp) -/* BDAB84 802403D4 8FB00018 */ lw $s0, 0x18($sp) -/* BDAB88 802403D8 24020002 */ addiu $v0, $zero, 2 -/* BDAB8C 802403DC 03E00008 */ jr $ra -/* BDAB90 802403E0 27BD0028 */ addiu $sp, $sp, 0x28 -/* BDAB94 802403E4 00000000 */ nop -/* BDAB98 802403E8 00000000 */ nop -/* BDAB9C 802403EC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/area_omo/omo_12/DDF730/func_80240420_DDF730.s b/ver/us/asm/nonmatchings/world/area_omo/omo_12/DDF730/func_80240420_DDF730.s deleted file mode 100644 index 6b1e400e74..0000000000 --- a/ver/us/asm/nonmatchings/world/area_omo/omo_12/DDF730/func_80240420_DDF730.s +++ /dev/null @@ -1,51 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_80243168_DE2478 -.ascii "party_akari\0\0\0\0\0\0\0\0\0\0\0\0\0" - -.section .text - -glabel func_80240420_DDF730 -/* DDF730 80240420 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* DDF734 80240424 3C048024 */ lui $a0, %hi(D_80243168_DE2478) -/* DDF738 80240428 24843168 */ addiu $a0, $a0, %lo(D_80243168_DE2478) -/* DDF73C 8024042C 27A50010 */ addiu $a1, $sp, 0x10 -/* DDF740 80240430 AFBF0020 */ sw $ra, 0x20($sp) -/* DDF744 80240434 AFB1001C */ sw $s1, 0x1c($sp) -/* DDF748 80240438 0C016B3A */ jal load_asset_by_name -/* DDF74C 8024043C AFB00018 */ sw $s0, 0x18($sp) -/* DDF750 80240440 0040802D */ daddu $s0, $v0, $zero -/* DDF754 80240444 0200202D */ daddu $a0, $s0, $zero -/* DDF758 80240448 3C118024 */ lui $s1, %hi(D_80243190) -/* DDF75C 8024044C 26313190 */ addiu $s1, $s1, %lo(D_80243190) -/* DDF760 80240450 0C01BB7C */ jal decode_yay0 -/* DDF764 80240454 0220282D */ daddu $a1, $s1, $zero -/* DDF768 80240458 0C00AB1E */ jal general_heap_free -/* DDF76C 8024045C 0200202D */ daddu $a0, $s0, $zero -/* DDF770 80240460 3C048024 */ lui $a0, %hi(D_80247120) -/* DDF774 80240464 24847120 */ addiu $a0, $a0, %lo(D_80247120) -/* DDF778 80240468 3C028024 */ lui $v0, %hi(D_80243390_omo_12) -/* DDF77C 8024046C 24423390 */ addiu $v0, $v0, %lo(D_80243390_omo_12) -/* DDF780 80240470 AC820000 */ sw $v0, ($a0) -/* DDF784 80240474 24020096 */ addiu $v0, $zero, 0x96 -/* DDF788 80240478 A4820008 */ sh $v0, 8($a0) -/* DDF78C 8024047C 24020069 */ addiu $v0, $zero, 0x69 -/* DDF790 80240480 A482000A */ sh $v0, 0xa($a0) -/* DDF794 80240484 24020002 */ addiu $v0, $zero, 2 -/* DDF798 80240488 AC82000C */ sw $v0, 0xc($a0) -/* DDF79C 8024048C 24020001 */ addiu $v0, $zero, 1 -/* DDF7A0 80240490 AC910004 */ sw $s1, 4($a0) -/* DDF7A4 80240494 0C0496CB */ jal set_message_images -/* DDF7A8 80240498 AC820010 */ sw $v0, 0x10($a0) -/* DDF7AC 8024049C 8FBF0020 */ lw $ra, 0x20($sp) -/* DDF7B0 802404A0 8FB1001C */ lw $s1, 0x1c($sp) -/* DDF7B4 802404A4 8FB00018 */ lw $s0, 0x18($sp) -/* DDF7B8 802404A8 24020002 */ addiu $v0, $zero, 2 -/* DDF7BC 802404AC 03E00008 */ jr $ra -/* DDF7C0 802404B0 27BD0028 */ addiu $sp, $sp, 0x28 -/* DDF7C4 802404B4 00000000 */ nop -/* DDF7C8 802404B8 00000000 */ nop -/* DDF7CC 802404BC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/world/partner/goombario/func_802BD5D8_3174F8.s b/ver/us/asm/nonmatchings/world/partner/goombario/func_802BD5D8_3174F8.s deleted file mode 100644 index c07c2044d4..0000000000 --- a/ver/us/asm/nonmatchings/world/partner/goombario/func_802BD5D8_3174F8.s +++ /dev/null @@ -1,396 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_802BDE88_317DA8 -.word .L802BD8EC, .L802BD90C, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD858, .L802BD870, .L802BD974, .L802BD858, .L802BD870, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD88C, .L802BD8BC, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD974, .L802BD92C, .L802BD94C - -.section .text - -glabel func_802BD5D8_3174F8 -/* 3174F8 802BD5D8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 3174FC 802BD5DC AFB10014 */ sw $s1, 0x14($sp) -/* 317500 802BD5E0 0080882D */ daddu $s1, $a0, $zero -/* 317504 802BD5E4 AFB00010 */ sw $s0, 0x10($sp) -/* 317508 802BD5E8 3C108011 */ lui $s0, %hi(gPlayerStatus) -/* 31750C 802BD5EC 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus) -/* 317510 802BD5F0 AFBF0024 */ sw $ra, 0x24($sp) -/* 317514 802BD5F4 AFB40020 */ sw $s4, 0x20($sp) -/* 317518 802BD5F8 AFB3001C */ sw $s3, 0x1c($sp) -/* 31751C 802BD5FC AFB20018 */ sw $s2, 0x18($sp) -/* 317520 802BD600 10A0001C */ beqz $a1, .L802BD674 -/* 317524 802BD604 8E32014C */ lw $s2, 0x14c($s1) -/* 317528 802BD608 0C0AF559 */ jal func_802BD564_317484 -/* 31752C 802BD60C 0240202D */ daddu $a0, $s2, $zero -/* 317530 802BD610 3C04802C */ lui $a0, %hi(D_802BDF30) -/* 317534 802BD614 2484DF30 */ addiu $a0, $a0, %lo(D_802BDF30) -/* 317538 802BD618 3C01802C */ lui $at, %hi(D_802BDF64) -/* 31753C 802BD61C AC20DF64 */ sw $zero, %lo(D_802BDF64)($at) -/* 317540 802BD620 AC800000 */ sw $zero, ($a0) -/* 317544 802BD624 8E020004 */ lw $v0, 4($s0) -/* 317548 802BD628 3C05802C */ lui $a1, %hi(D_802BDF34) -/* 31754C 802BD62C 24A5DF34 */ addiu $a1, $a1, %lo(D_802BDF34) -/* 317550 802BD630 30420020 */ andi $v0, $v0, 0x20 -/* 317554 802BD634 10400008 */ beqz $v0, .L802BD658 -/* 317558 802BD638 ACA00000 */ sw $zero, ($a1) -/* 31755C 802BD63C 3C02802B */ lui $v0, %hi(D_802B79A8_E21858) -/* 317560 802BD640 8C4279A8 */ lw $v0, %lo(D_802B79A8_E21858)($v0) -/* 317564 802BD644 8C430000 */ lw $v1, ($v0) -/* 317568 802BD648 24020001 */ addiu $v0, $zero, 1 -/* 31756C 802BD64C AC820000 */ sw $v0, ($a0) -/* 317570 802BD650 3C01802C */ lui $at, %hi(D_802BDF38) -/* 317574 802BD654 AC23DF38 */ sw $v1, %lo(D_802BDF38)($at) -.L802BD658: -/* 317578 802BD658 8E020004 */ lw $v0, 4($s0) -/* 31757C 802BD65C 30420010 */ andi $v0, $v0, 0x10 -/* 317580 802BD660 10400002 */ beqz $v0, .L802BD66C -/* 317584 802BD664 24020001 */ addiu $v0, $zero, 1 -/* 317588 802BD668 ACA20000 */ sw $v0, ($a1) -.L802BD66C: -/* 31758C 802BD66C 24020028 */ addiu $v0, $zero, 0x28 -/* 317590 802BD670 AE220070 */ sw $v0, 0x70($s1) -.L802BD674: -/* 317594 802BD674 8E230070 */ lw $v1, 0x70($s1) -/* 317598 802BD678 24130001 */ addiu $s3, $zero, 1 -/* 31759C 802BD67C 10730053 */ beq $v1, $s3, .L802BD7CC -/* 3175A0 802BD680 28620002 */ slti $v0, $v1, 2 -/* 3175A4 802BD684 10400005 */ beqz $v0, .L802BD69C -/* 3175A8 802BD688 24020028 */ addiu $v0, $zero, 0x28 -/* 3175AC 802BD68C 10600030 */ beqz $v1, .L802BD750 -/* 3175B0 802BD690 2402000A */ addiu $v0, $zero, 0xa -/* 3175B4 802BD694 080AF6A3 */ j .L802BDA8C -/* 3175B8 802BD698 00000000 */ nop -.L802BD69C: -/* 3175BC 802BD69C 10620005 */ beq $v1, $v0, .L802BD6B4 -/* 3175C0 802BD6A0 24020029 */ addiu $v0, $zero, 0x29 -/* 3175C4 802BD6A4 10620018 */ beq $v1, $v0, .L802BD708 -/* 3175C8 802BD6A8 00000000 */ nop -/* 3175CC 802BD6AC 080AF6A1 */ j .L802BDA84 -/* 3175D0 802BD6B0 00000000 */ nop -.L802BD6B4: -/* 3175D4 802BD6B4 8E420000 */ lw $v0, ($s2) -/* 3175D8 802BD6B8 30421000 */ andi $v0, $v0, 0x1000 -/* 3175DC 802BD6BC 10400004 */ beqz $v0, .L802BD6D0 -/* 3175E0 802BD6C0 2402FFFF */ addiu $v0, $zero, -1 -/* 3175E4 802BD6C4 82020015 */ lb $v0, 0x15($s0) -/* 3175E8 802BD6C8 10400004 */ beqz $v0, .L802BD6DC -/* 3175EC 802BD6CC 2402FFFF */ addiu $v0, $zero, -1 -.L802BD6D0: -/* 3175F0 802BD6D0 AE220084 */ sw $v0, 0x84($s1) -.L802BD6D4: -/* 3175F4 802BD6D4 080AF6C4 */ j .L802BDB10 -/* 3175F8 802BD6D8 24020002 */ addiu $v0, $zero, 2 -.L802BD6DC: -/* 3175FC 802BD6DC 24020003 */ addiu $v0, $zero, 3 -/* 317600 802BD6E0 0C03805E */ jal disable_player_input -/* 317604 802BD6E4 AE220074 */ sw $v0, 0x74($s1) -/* 317608 802BD6E8 82030015 */ lb $v1, 0x15($s0) -/* 31760C 802BD6EC 8E220070 */ lw $v0, 0x70($s1) -/* 317610 802BD6F0 3C01802C */ lui $at, %hi(D_802BDF64) -/* 317614 802BD6F4 AC33DF64 */ sw $s3, %lo(D_802BDF64)($at) -/* 317618 802BD6F8 24420001 */ addiu $v0, $v0, 1 -/* 31761C 802BD6FC AE230078 */ sw $v1, 0x78($s1) -/* 317620 802BD700 080AF6A1 */ j .L802BDA84 -/* 317624 802BD704 AE220070 */ sw $v0, 0x70($s1) -.L802BD708: -/* 317628 802BD708 8E220074 */ lw $v0, 0x74($s1) -/* 31762C 802BD70C 10400003 */ beqz $v0, .L802BD71C -/* 317630 802BD710 2442FFFF */ addiu $v0, $v0, -1 -/* 317634 802BD714 080AF6A1 */ j .L802BDA84 -/* 317638 802BD718 AE220074 */ sw $v0, 0x74($s1) -.L802BD71C: -/* 31763C 802BD71C 82030015 */ lb $v1, 0x15($s0) -/* 317640 802BD720 8E220078 */ lw $v0, 0x78($s1) -/* 317644 802BD724 0043102A */ slt $v0, $v0, $v1 -/* 317648 802BD728 10400007 */ beqz $v0, .L802BD748 -/* 31764C 802BD72C 2402FFFF */ addiu $v0, $zero, -1 -/* 317650 802BD730 0C038069 */ jal enable_player_input -/* 317654 802BD734 AE220084 */ sw $v0, 0x84($s1) -/* 317658 802BD738 3C01802C */ lui $at, %hi(D_802BDF64) -/* 31765C 802BD73C AC20DF64 */ sw $zero, %lo(D_802BDF64)($at) -/* 317660 802BD740 080AF6C4 */ j .L802BDB10 -/* 317664 802BD744 24020002 */ addiu $v0, $zero, 2 -.L802BD748: -/* 317668 802BD748 080AF6A1 */ j .L802BDA84 -/* 31766C 802BD74C AE200070 */ sw $zero, 0x70($s1) -.L802BD750: -/* 317670 802BD750 0C009C22 */ jal set_time_freeze_mode -/* 317674 802BD754 24040001 */ addiu $a0, $zero, 1 -/* 317678 802BD758 3C03FDFF */ lui $v1, 0xfdff -/* 31767C 802BD75C 3463FFFF */ ori $v1, $v1, 0xffff -/* 317680 802BD760 3C040001 */ lui $a0, 1 -/* 317684 802BD764 8E020000 */ lw $v0, ($s0) -/* 317688 802BD768 34840001 */ ori $a0, $a0, 1 -/* 31768C 802BD76C 00431024 */ and $v0, $v0, $v1 -/* 317690 802BD770 AE020000 */ sw $v0, ($s0) -/* 317694 802BD774 AE440028 */ sw $a0, 0x28($s2) -/* 317698 802BD778 3C01800B */ lui $at, %hi(gCameras+0x6C) -/* 31769C 802BD77C C42C1DEC */ lwc1 $f12, %lo(gCameras+0x6C)($at) -/* 3176A0 802BD780 C60000A8 */ lwc1 $f0, 0xa8($s0) -/* 3176A4 802BD784 46006300 */ add.s $f12, $f12, $f0 -/* 3176A8 802BD788 3C0142B4 */ lui $at, 0x42b4 -/* 3176AC 802BD78C 44810000 */ mtc1 $at, $f0 -/* 3176B0 802BD790 0C00A6C9 */ jal clamp_angle -/* 3176B4 802BD794 46006301 */ sub.s $f12, $f12, $f0 -/* 3176B8 802BD798 E640000C */ swc1 $f0, 0xc($s2) -/* 3176BC 802BD79C 3C018011 */ lui $at, %hi(gPartnerActionStatus) -/* 3176C0 802BD7A0 A033EBB0 */ sb $s3, %lo(gPartnerActionStatus)($at) -/* 3176C4 802BD7A4 0C03A5EE */ jal close_status_menu -/* 3176C8 802BD7A8 00000000 */ nop -/* 3176CC 802BD7AC 3C02802C */ lui $v0, %hi(D_802BDF30) -/* 3176D0 802BD7B0 8C42DF30 */ lw $v0, %lo(D_802BDF30)($v0) -/* 3176D4 802BD7B4 10400004 */ beqz $v0, .L802BD7C8 -/* 3176D8 802BD7B8 24020014 */ addiu $v0, $zero, 0x14 -/* 3176DC 802BD7BC AE200084 */ sw $zero, 0x84($s1) -/* 3176E0 802BD7C0 080AF6A1 */ j .L802BDA84 -/* 3176E4 802BD7C4 AE220070 */ sw $v0, 0x70($s1) -.L802BD7C8: -/* 3176E8 802BD7C8 AE330070 */ sw $s3, 0x70($s1) -.L802BD7CC: -/* 3176EC 802BD7CC 3C04802C */ lui $a0, %hi(GoombarioGetTattleID) -/* 3176F0 802BD7D0 8C84DF60 */ lw $a0, %lo(GoombarioGetTattleID)($a0) -/* 3176F4 802BD7D4 0480008A */ bltz $a0, .L802BDA00 -/* 3176F8 802BD7D8 30824000 */ andi $v0, $a0, 0x4000 -/* 3176FC 802BD7DC 10400070 */ beqz $v0, .L802BD9A0 -/* 317700 802BD7E0 00000000 */ nop -/* 317704 802BD7E4 0C0441A9 */ jal get_entity_type -/* 317708 802BD7E8 2410FFFF */ addiu $s0, $zero, -1 -/* 31770C 802BD7EC 0040282D */ daddu $a1, $v0, $zero -/* 317710 802BD7F0 3C03802C */ lui $v1, %hi(EntityTattles) -/* 317714 802BD7F4 2463DC40 */ addiu $v1, $v1, %lo(EntityTattles) -/* 317718 802BD7F8 8C620000 */ lw $v0, ($v1) -/* 31771C 802BD7FC 10500066 */ beq $v0, $s0, .L802BD998 -/* 317720 802BD800 24A4FFF7 */ addiu $a0, $a1, -9 -/* 317724 802BD804 0060A02D */ daddu $s4, $v1, $zero -/* 317728 802BD808 3C03802C */ lui $v1, %hi(jtbl_802BDE88_317DA8) -/* 31772C 802BD80C 2463DE88 */ addiu $v1, $v1, %lo(jtbl_802BDE88_317DA8) -/* 317730 802BD810 00041080 */ sll $v0, $a0, 2 -/* 317734 802BD814 00434821 */ addu $t1, $v0, $v1 -/* 317738 802BD818 3C068011 */ lui $a2, %hi(gPlayerData) -/* 31773C 802BD81C 24C6F290 */ addiu $a2, $a2, %lo(gPlayerData) -/* 317740 802BD820 24070001 */ addiu $a3, $zero, 1 -/* 317744 802BD824 24080002 */ addiu $t0, $zero, 2 -/* 317748 802BD828 0200982D */ daddu $s3, $s0, $zero -/* 31774C 802BD82C 0280182D */ daddu $v1, $s4, $zero -/* 317750 802BD830 24120004 */ addiu $s2, $zero, 4 -/* 317754 802BD834 8C620000 */ lw $v0, ($v1) -.L802BD838: -/* 317758 802BD838 54450054 */ bnel $v0, $a1, .L802BD98C -/* 31775C 802BD83C 24630008 */ addiu $v1, $v1, 8 -/* 317760 802BD840 2C82002A */ sltiu $v0, $a0, 0x2a -/* 317764 802BD844 1040004B */ beqz $v0, .L802BD974 -/* 317768 802BD848 00000000 */ nop -/* 31776C 802BD84C 8D220000 */ lw $v0, ($t1) -/* 317770 802BD850 00400008 */ jr $v0 -/* 317774 802BD854 00000000 */ nop -.L802BD858: -/* 317778 802BD858 80C20001 */ lb $v0, 1($a2) -/* 31777C 802BD85C 18400045 */ blez $v0, .L802BD974 -/* 317780 802BD860 00000000 */ nop -/* 317784 802BD864 3C10001B */ lui $s0, 0x1b -/* 317788 802BD868 080AF65D */ j .L802BD974 -/* 31778C 802BD86C 36100002 */ ori $s0, $s0, 2 -.L802BD870: -/* 317790 802BD870 80C20001 */ lb $v0, 1($a2) -/* 317794 802BD874 28420002 */ slti $v0, $v0, 2 -/* 317798 802BD878 1440003E */ bnez $v0, .L802BD974 -/* 31779C 802BD87C 00000000 */ nop -/* 3177A0 802BD880 3C10001B */ lui $s0, 0x1b -/* 3177A4 802BD884 080AF65D */ j .L802BD974 -/* 3177A8 802BD888 36100004 */ ori $s0, $s0, 4 -.L802BD88C: -/* 3177AC 802BD88C 3C028011 */ lui $v0, %hi(gPlayerData) -/* 3177B0 802BD890 8042F290 */ lb $v0, %lo(gPlayerData)($v0) -/* 3177B4 802BD894 14470004 */ bne $v0, $a3, .L802BD8A8 -/* 3177B8 802BD898 00000000 */ nop -/* 3177BC 802BD89C 3C10001B */ lui $s0, 0x1b -/* 3177C0 802BD8A0 080AF65D */ j .L802BD974 -/* 3177C4 802BD8A4 36100018 */ ori $s0, $s0, 0x18 -.L802BD8A8: -/* 3177C8 802BD8A8 14480032 */ bne $v0, $t0, .L802BD974 -/* 3177CC 802BD8AC 00000000 */ nop -/* 3177D0 802BD8B0 3C10001B */ lui $s0, 0x1b -/* 3177D4 802BD8B4 080AF65D */ j .L802BD974 -/* 3177D8 802BD8B8 36100019 */ ori $s0, $s0, 0x19 -.L802BD8BC: -/* 3177DC 802BD8BC 3C028011 */ lui $v0, %hi(gPlayerData) -/* 3177E0 802BD8C0 8042F290 */ lb $v0, %lo(gPlayerData)($v0) -/* 3177E4 802BD8C4 14470004 */ bne $v0, $a3, .L802BD8D8 -/* 3177E8 802BD8C8 00000000 */ nop -/* 3177EC 802BD8CC 3C10001B */ lui $s0, 0x1b -/* 3177F0 802BD8D0 080AF65D */ j .L802BD974 -/* 3177F4 802BD8D4 3610001B */ ori $s0, $s0, 0x1b -.L802BD8D8: -/* 3177F8 802BD8D8 14480026 */ bne $v0, $t0, .L802BD974 -/* 3177FC 802BD8DC 00000000 */ nop -/* 317800 802BD8E0 3C10001B */ lui $s0, 0x1b -/* 317804 802BD8E4 080AF65D */ j .L802BD974 -/* 317808 802BD8E8 3610001C */ ori $s0, $s0, 0x1c -.L802BD8EC: -/* 31780C 802BD8EC 3C028011 */ lui $v0, %hi(gPlayerData) -/* 317810 802BD8F0 8042F290 */ lb $v0, %lo(gPlayerData)($v0) -/* 317814 802BD8F4 28420002 */ slti $v0, $v0, 2 -/* 317818 802BD8F8 1440001E */ bnez $v0, .L802BD974 -/* 31781C 802BD8FC 00000000 */ nop -/* 317820 802BD900 3C10001B */ lui $s0, 0x1b -/* 317824 802BD904 080AF65D */ j .L802BD974 -/* 317828 802BD908 3610000D */ ori $s0, $s0, 0xd -.L802BD90C: -/* 31782C 802BD90C 3C028011 */ lui $v0, %hi(gPlayerData) -/* 317830 802BD910 8042F290 */ lb $v0, %lo(gPlayerData)($v0) -/* 317834 802BD914 28420002 */ slti $v0, $v0, 2 -/* 317838 802BD918 14400016 */ bnez $v0, .L802BD974 -/* 31783C 802BD91C 00000000 */ nop -/* 317840 802BD920 3C10001B */ lui $s0, 0x1b -/* 317844 802BD924 080AF65D */ j .L802BD974 -/* 317848 802BD928 3610000F */ ori $s0, $s0, 0xf -.L802BD92C: -/* 31784C 802BD92C 3C028011 */ lui $v0, %hi(gPlayerData) -/* 317850 802BD930 8042F290 */ lb $v0, %lo(gPlayerData)($v0) -/* 317854 802BD934 28420002 */ slti $v0, $v0, 2 -/* 317858 802BD938 1440000E */ bnez $v0, .L802BD974 -/* 31785C 802BD93C 00000000 */ nop -/* 317860 802BD940 3C10001B */ lui $s0, 0x1b -/* 317864 802BD944 080AF65D */ j .L802BD974 -/* 317868 802BD948 3610001E */ ori $s0, $s0, 0x1e -.L802BD94C: -/* 31786C 802BD94C 3C04802C */ lui $a0, %hi(GoombarioGetTattleID) -/* 317870 802BD950 8C84DF60 */ lw $a0, %lo(GoombarioGetTattleID)($a0) -/* 317874 802BD954 0C04417A */ jal get_entity_by_index -/* 317878 802BD958 30843FFF */ andi $a0, $a0, 0x3fff -/* 31787C 802BD95C 8C420040 */ lw $v0, 0x40($v0) -/* 317880 802BD960 8C420010 */ lw $v0, 0x10($v0) -/* 317884 802BD964 14530003 */ bne $v0, $s3, .L802BD974 -/* 317888 802BD968 00000000 */ nop -/* 31788C 802BD96C 3C10001B */ lui $s0, 0x1b -/* 317890 802BD970 36100016 */ ori $s0, $s0, 0x16 -.L802BD974: -/* 317894 802BD974 56130058 */ bnel $s0, $s3, .L802BDAD8 -/* 317898 802BD978 AE300084 */ sw $s0, 0x84($s1) -/* 31789C 802BD97C 02541021 */ addu $v0, $s2, $s4 -/* 3178A0 802BD980 8C420000 */ lw $v0, ($v0) -/* 3178A4 802BD984 080AF6B6 */ j .L802BDAD8 -/* 3178A8 802BD988 AE220084 */ sw $v0, 0x84($s1) -.L802BD98C: -/* 3178AC 802BD98C 8C620000 */ lw $v0, ($v1) -/* 3178B0 802BD990 1453FFA9 */ bne $v0, $s3, .L802BD838 -/* 3178B4 802BD994 26520008 */ addiu $s2, $s2, 8 -.L802BD998: -/* 3178B8 802BD998 3C04802C */ lui $a0, %hi(GoombarioGetTattleID) -/* 3178BC 802BD99C 8C84DF60 */ lw $a0, %lo(GoombarioGetTattleID)($a0) -.L802BD9A0: -/* 3178C0 802BD9A0 04800017 */ bltz $a0, .L802BDA00 -/* 3178C4 802BD9A4 30822000 */ andi $v0, $a0, 0x2000 -/* 3178C8 802BD9A8 10400015 */ beqz $v0, .L802BDA00 -/* 3178CC 802BD9AC 00000000 */ nop -/* 3178D0 802BD9B0 0C00EABB */ jal get_npc_unsafe -/* 3178D4 802BD9B4 30841FFF */ andi $a0, $a0, 0x1fff -/* 3178D8 802BD9B8 3C01802C */ lui $at, %hi(D_802BDF38) -/* 3178DC 802BD9BC AC22DF38 */ sw $v0, %lo(D_802BDF38)($at) -/* 3178E0 802BD9C0 0C00FB3A */ jal get_enemy -/* 3178E4 802BD9C4 804400A4 */ lb $a0, 0xa4($v0) -/* 3178E8 802BD9C8 8C4200D8 */ lw $v0, 0xd8($v0) -/* 3178EC 802BD9CC 1040FF41 */ beqz $v0, .L802BD6D4 -/* 3178F0 802BD9D0 0040802D */ daddu $s0, $v0, $zero -/* 3178F4 802BD9D4 3C02EFE8 */ lui $v0, 0xefe8 -/* 3178F8 802BD9D8 34422080 */ ori $v0, $v0, 0x2080 -/* 3178FC 802BD9DC 0202102A */ slt $v0, $s0, $v0 -/* 317900 802BD9E0 50400005 */ beql $v0, $zero, .L802BD9F8 -/* 317904 802BD9E4 AE300084 */ sw $s0, 0x84($s1) -/* 317908 802BD9E8 0200F809 */ jalr $s0 -/* 31790C 802BD9EC 00000000 */ nop -/* 317910 802BD9F0 080AF5B5 */ j .L802BD6D4 -/* 317914 802BD9F4 AE220084 */ sw $v0, 0x84($s1) -.L802BD9F8: -/* 317918 802BD9F8 080AF5B5 */ j .L802BD6D4 -/* 31791C 802BD9FC AE200088 */ sw $zero, 0x88($s1) -.L802BDA00: -/* 317920 802BDA00 3C02802C */ lui $v0, %hi(D_802BDF34) -/* 317924 802BDA04 8C42DF34 */ lw $v0, %lo(D_802BDF34)($v0) -/* 317928 802BDA08 10400003 */ beqz $v0, .L802BDA18 -/* 31792C 802BDA0C 3C03001B */ lui $v1, 0x1b -/* 317930 802BDA10 080AF6BF */ j .L802BDAFC -/* 317934 802BDA14 34630025 */ ori $v1, $v1, 0x25 -.L802BDA18: -/* 317938 802BDA18 3C04802C */ lui $a0, %hi(GoombarioGetTattleID) -/* 31793C 802BDA1C 8C84DF60 */ lw $a0, %lo(GoombarioGetTattleID)($a0) -/* 317940 802BDA20 04800004 */ bltz $a0, .L802BDA34 -/* 317944 802BDA24 0000282D */ daddu $a1, $zero, $zero -/* 317948 802BDA28 0C0AF440 */ jal func_802BD100_317020 -/* 31794C 802BDA2C 00000000 */ nop -/* 317950 802BDA30 0040282D */ daddu $a1, $v0, $zero -.L802BDA34: -/* 317954 802BDA34 14A00010 */ bnez $a1, .L802BDA78 -/* 317958 802BDA38 24020001 */ addiu $v0, $zero, 1 -/* 31795C 802BDA3C 0C016AFA */ jal get_current_map_settings -/* 317960 802BDA40 00000000 */ nop -/* 317964 802BDA44 8C50003C */ lw $s0, 0x3c($v0) -/* 317968 802BDA48 1200FF22 */ beqz $s0, .L802BD6D4 -/* 31796C 802BDA4C 3C02EFE8 */ lui $v0, 0xefe8 -/* 317970 802BDA50 34422080 */ ori $v0, $v0, 0x2080 -/* 317974 802BDA54 0202102A */ slt $v0, $s0, $v0 -/* 317978 802BDA58 50400005 */ beql $v0, $zero, .L802BDA70 -/* 31797C 802BDA5C AE300084 */ sw $s0, 0x84($s1) -/* 317980 802BDA60 0200F809 */ jalr $s0 -/* 317984 802BDA64 00000000 */ nop -/* 317988 802BDA68 080AF5B5 */ j .L802BD6D4 -/* 31798C 802BDA6C AE220084 */ sw $v0, 0x84($s1) -.L802BDA70: -/* 317990 802BDA70 080AF5B5 */ j .L802BD6D4 -/* 317994 802BDA74 AE200088 */ sw $zero, 0x88($s1) -.L802BDA78: -/* 317998 802BDA78 AE250084 */ sw $a1, 0x84($s1) -/* 31799C 802BDA7C 080AF5B5 */ j .L802BD6D4 -/* 3179A0 802BDA80 AE220088 */ sw $v0, 0x88($s1) -.L802BDA84: -/* 3179A4 802BDA84 8E230070 */ lw $v1, 0x70($s1) -/* 3179A8 802BDA88 2402000A */ addiu $v0, $zero, 0xa -.L802BDA8C: -/* 3179AC 802BDA8C 10620005 */ beq $v1, $v0, .L802BDAA4 -/* 3179B0 802BDA90 24020014 */ addiu $v0, $zero, 0x14 -/* 3179B4 802BDA94 10620012 */ beq $v1, $v0, .L802BDAE0 -/* 3179B8 802BDA98 0000102D */ daddu $v0, $zero, $zero -/* 3179BC 802BDA9C 080AF6C4 */ j .L802BDB10 -/* 3179C0 802BDAA0 00000000 */ nop -.L802BDAA4: -/* 3179C4 802BDAA4 0C016AFA */ jal get_current_map_settings -/* 3179C8 802BDAA8 00000000 */ nop -/* 3179CC 802BDAAC 8C50003C */ lw $s0, 0x3c($v0) -/* 3179D0 802BDAB0 12000016 */ beqz $s0, .L802BDB0C -/* 3179D4 802BDAB4 3C02EFE8 */ lui $v0, 0xefe8 -/* 3179D8 802BDAB8 34422080 */ ori $v0, $v0, 0x2080 -/* 3179DC 802BDABC 0202102A */ slt $v0, $s0, $v0 -/* 3179E0 802BDAC0 50400005 */ beql $v0, $zero, .L802BDAD8 -/* 3179E4 802BDAC4 AE300084 */ sw $s0, 0x84($s1) -/* 3179E8 802BDAC8 0200F809 */ jalr $s0 -/* 3179EC 802BDACC 00000000 */ nop -/* 3179F0 802BDAD0 080AF5B5 */ j .L802BD6D4 -/* 3179F4 802BDAD4 AE220084 */ sw $v0, 0x84($s1) -.L802BDAD8: -/* 3179F8 802BDAD8 080AF5B5 */ j .L802BD6D4 -/* 3179FC 802BDADC AE200088 */ sw $zero, 0x88($s1) -.L802BDAE0: -/* 317A00 802BDAE0 3C02802C */ lui $v0, %hi(D_802BDF38) -/* 317A04 802BDAE4 8C42DF38 */ lw $v0, %lo(D_802BDF38)($v0) -/* 317A08 802BDAE8 0C00FB3A */ jal get_enemy -/* 317A0C 802BDAEC 804400A4 */ lb $a0, 0xa4($v0) -/* 317A10 802BDAF0 8C4300D8 */ lw $v1, 0xd8($v0) -/* 317A14 802BDAF4 10600006 */ beqz $v1, .L802BDB10 -/* 317A18 802BDAF8 0000102D */ daddu $v0, $zero, $zero -.L802BDAFC: -/* 317A1C 802BDAFC 24020002 */ addiu $v0, $zero, 2 -/* 317A20 802BDB00 AE230084 */ sw $v1, 0x84($s1) -/* 317A24 802BDB04 080AF6C4 */ j .L802BDB10 -/* 317A28 802BDB08 AE200088 */ sw $zero, 0x88($s1) -.L802BDB0C: -/* 317A2C 802BDB0C 0000102D */ daddu $v0, $zero, $zero -.L802BDB10: -/* 317A30 802BDB10 8FBF0024 */ lw $ra, 0x24($sp) -/* 317A34 802BDB14 8FB40020 */ lw $s4, 0x20($sp) -/* 317A38 802BDB18 8FB3001C */ lw $s3, 0x1c($sp) -/* 317A3C 802BDB1C 8FB20018 */ lw $s2, 0x18($sp) -/* 317A40 802BDB20 8FB10014 */ lw $s1, 0x14($sp) -/* 317A44 802BDB24 8FB00010 */ lw $s0, 0x10($sp) -/* 317A48 802BDB28 03E00008 */ jr $ra -/* 317A4C 802BDB2C 27BD0028 */ addiu $sp, $sp, 0x28 diff --git a/ver/us/asm/nonmatchings/world/partner/sushie/func_802BD414_31E184.s b/ver/us/asm/nonmatchings/world/partner/sushie/func_802BD414_31E184.s deleted file mode 100644 index 85ff2e6715..0000000000 --- a/ver/us/asm/nonmatchings/world/partner/sushie/func_802BD414_31E184.s +++ /dev/null @@ -1,974 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel D_802BFE50_320BC0 -.double 0.15 - -dlabel D_802BFE58_320BC8 -.double 0.14 - -dlabel D_802BFE60_320BD0 -.double 1.8 - -.section .text - -glabel func_802BD414_31E184 -/* 31E184 802BD414 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 31E188 802BD418 AFB00040 */ sw $s0, 0x40($sp) -/* 31E18C 802BD41C 0080802D */ daddu $s0, $a0, $zero -/* 31E190 802BD420 27A40020 */ addiu $a0, $sp, 0x20 -/* 31E194 802BD424 AFBF0058 */ sw $ra, 0x58($sp) -/* 31E198 802BD428 AFB50054 */ sw $s5, 0x54($sp) -/* 31E19C 802BD42C AFB40050 */ sw $s4, 0x50($sp) -/* 31E1A0 802BD430 AFB3004C */ sw $s3, 0x4c($sp) -/* 31E1A4 802BD434 AFB20048 */ sw $s2, 0x48($sp) -/* 31E1A8 802BD438 AFB10044 */ sw $s1, 0x44($sp) -/* 31E1AC 802BD43C F7BA0078 */ sdc1 $f26, 0x78($sp) -/* 31E1B0 802BD440 F7B80070 */ sdc1 $f24, 0x70($sp) -/* 31E1B4 802BD444 F7B60068 */ sdc1 $f22, 0x68($sp) -/* 31E1B8 802BD448 F7B40060 */ sdc1 $f20, 0x60($sp) -/* 31E1BC 802BD44C 0C0AF483 */ jal func_802BD20C_31DF7C -/* 31E1C0 802BD450 27A50024 */ addiu $a1, $sp, 0x24 -/* 31E1C4 802BD454 3C148011 */ lui $s4, %hi(gPlayerStatus) -/* 31E1C8 802BD458 2694EFC8 */ addiu $s4, $s4, %lo(gPlayerStatus) -/* 31E1CC 802BD45C 3C158011 */ lui $s5, %hi(gPartnerActionStatus) -/* 31E1D0 802BD460 26B5EBB0 */ addiu $s5, $s5, %lo(gPartnerActionStatus) -/* 31E1D4 802BD464 3C118016 */ lui $s1, %hi(gCollisionStatus) -/* 31E1D8 802BD468 2631A550 */ addiu $s1, $s1, %lo(gCollisionStatus) -/* 31E1DC 802BD46C 3C02802C */ lui $v0, %hi(bss_802BFEE4) -/* 31E1E0 802BD470 8C42FEE4 */ lw $v0, %lo(bss_802BFEE4)($v0) -/* 31E1E4 802BD474 3C014200 */ lui $at, 0x4200 -/* 31E1E8 802BD478 4481A000 */ mtc1 $at, $f20 -/* 31E1EC 802BD47C 10400003 */ beqz $v0, .L802BD48C -/* 31E1F0 802BD480 00000000 */ nop -/* 31E1F4 802BD484 3C0142A0 */ lui $at, 0x42a0 -/* 31E1F8 802BD488 4481A000 */ mtc1 $at, $f20 -.L802BD48C: -/* 31E1FC 802BD48C C7A00024 */ lwc1 $f0, 0x24($sp) -/* 31E200 802BD490 44803000 */ mtc1 $zero, $f6 -/* 31E204 802BD494 00000000 */ nop -/* 31E208 802BD498 46060032 */ c.eq.s $f0, $f6 -/* 31E20C 802BD49C 00000000 */ nop -/* 31E210 802BD4A0 45010095 */ bc1t .L802BD6F8 -/* 31E214 802BD4A4 00000000 */ nop -/* 31E218 802BD4A8 3C02802C */ lui $v0, %hi(D_802BFDB8_320B28) -/* 31E21C 802BD4AC 2442FDB8 */ addiu $v0, $v0, %lo(D_802BFDB8_320B28) -/* 31E220 802BD4B0 3C01802C */ lui $at, %hi(D_802BFDB0_320B20) -/* 31E224 802BD4B4 C422FDB0 */ lwc1 $f2, %lo(D_802BFDB0_320B20)($at) -/* 31E228 802BD4B8 C4440000 */ lwc1 $f4, ($v0) -/* 31E22C 802BD4BC 46041002 */ mul.s $f0, $f2, $f4 -/* 31E230 802BD4C0 00000000 */ nop -/* 31E234 802BD4C4 3C014100 */ lui $at, 0x4100 -/* 31E238 802BD4C8 44815000 */ mtc1 $at, $f10 -/* 31E23C 802BD4CC 3C014200 */ lui $at, 0x4200 -/* 31E240 802BD4D0 44814000 */ mtc1 $at, $f8 -/* 31E244 802BD4D4 4600303C */ c.lt.s $f6, $f0 -/* 31E248 802BD4D8 00000000 */ nop -/* 31E24C 802BD4DC 45020002 */ bc1fl .L802BD4E8 -/* 31E250 802BD4E0 460A1003 */ div.s $f0, $f2, $f10 -/* 31E254 802BD4E4 46081003 */ div.s $f0, $f2, $f8 -.L802BD4E8: -/* 31E258 802BD4E8 46002000 */ add.s $f0, $f4, $f0 -/* 31E25C 802BD4EC E4400000 */ swc1 $f0, ($v0) -/* 31E260 802BD4F0 3C01802C */ lui $at, %hi(D_802BFDB0_320B20) -/* 31E264 802BD4F4 C422FDB0 */ lwc1 $f2, %lo(D_802BFDB0_320B20)($at) -/* 31E268 802BD4F8 44800000 */ mtc1 $zero, $f0 -/* 31E26C 802BD4FC 00000000 */ nop -/* 31E270 802BD500 4602003C */ c.lt.s $f0, $f2 -/* 31E274 802BD504 00000000 */ nop -/* 31E278 802BD508 45000007 */ bc1f .L802BD528 -/* 31E27C 802BD50C 00000000 */ nop -/* 31E280 802BD510 3C02802C */ lui $v0, %hi(D_802BFDB8_320B28) -/* 31E284 802BD514 2442FDB8 */ addiu $v0, $v0, %lo(D_802BFDB8_320B28) -/* 31E288 802BD518 C4400000 */ lwc1 $f0, ($v0) -/* 31E28C 802BD51C 4600103C */ c.lt.s $f2, $f0 -/* 31E290 802BD520 080AF54F */ j .L802BD53C -/* 31E294 802BD524 00000000 */ nop -.L802BD528: -/* 31E298 802BD528 3C02802C */ lui $v0, %hi(D_802BFDB8_320B28) -/* 31E29C 802BD52C 2442FDB8 */ addiu $v0, $v0, %lo(D_802BFDB8_320B28) -/* 31E2A0 802BD530 C4400000 */ lwc1 $f0, ($v0) -/* 31E2A4 802BD534 4602003C */ c.lt.s $f0, $f2 -/* 31E2A8 802BD538 00000000 */ nop -.L802BD53C: -/* 31E2AC 802BD53C 45030001 */ bc1tl .L802BD544 -/* 31E2B0 802BD540 E4420000 */ swc1 $f2, ($v0) -.L802BD544: -/* 31E2B4 802BD544 3C02802C */ lui $v0, %hi(D_802BFDBC_320B2C) -/* 31E2B8 802BD548 2442FDBC */ addiu $v0, $v0, %lo(D_802BFDBC_320B2C) -/* 31E2BC 802BD54C 3C01802C */ lui $at, %hi(D_802BFDB4_320B24) -/* 31E2C0 802BD550 C424FDB4 */ lwc1 $f4, %lo(D_802BFDB4_320B24)($at) -/* 31E2C4 802BD554 C4460000 */ lwc1 $f6, ($v0) -/* 31E2C8 802BD558 46062082 */ mul.s $f2, $f4, $f6 -/* 31E2CC 802BD55C 00000000 */ nop -/* 31E2D0 802BD560 44800000 */ mtc1 $zero, $f0 -/* 31E2D4 802BD564 00000000 */ nop -/* 31E2D8 802BD568 4602003C */ c.lt.s $f0, $f2 -/* 31E2DC 802BD56C 00000000 */ nop -/* 31E2E0 802BD570 45020002 */ bc1fl .L802BD57C -/* 31E2E4 802BD574 460A2003 */ div.s $f0, $f4, $f10 -/* 31E2E8 802BD578 46082003 */ div.s $f0, $f4, $f8 -.L802BD57C: -/* 31E2EC 802BD57C 46003000 */ add.s $f0, $f6, $f0 -/* 31E2F0 802BD580 E4400000 */ swc1 $f0, ($v0) -/* 31E2F4 802BD584 3C01802C */ lui $at, %hi(D_802BFDB4_320B24) -/* 31E2F8 802BD588 C422FDB4 */ lwc1 $f2, %lo(D_802BFDB4_320B24)($at) -/* 31E2FC 802BD58C 44800000 */ mtc1 $zero, $f0 -/* 31E300 802BD590 00000000 */ nop -/* 31E304 802BD594 4602003C */ c.lt.s $f0, $f2 -/* 31E308 802BD598 00000000 */ nop -/* 31E30C 802BD59C 45000007 */ bc1f .L802BD5BC -/* 31E310 802BD5A0 00000000 */ nop -/* 31E314 802BD5A4 3C02802C */ lui $v0, %hi(D_802BFDBC_320B2C) -/* 31E318 802BD5A8 2442FDBC */ addiu $v0, $v0, %lo(D_802BFDBC_320B2C) -/* 31E31C 802BD5AC C4400000 */ lwc1 $f0, ($v0) -/* 31E320 802BD5B0 4600103C */ c.lt.s $f2, $f0 -/* 31E324 802BD5B4 080AF574 */ j .L802BD5D0 -/* 31E328 802BD5B8 00000000 */ nop -.L802BD5BC: -/* 31E32C 802BD5BC 3C02802C */ lui $v0, %hi(D_802BFDBC_320B2C) -/* 31E330 802BD5C0 2442FDBC */ addiu $v0, $v0, %lo(D_802BFDBC_320B2C) -/* 31E334 802BD5C4 C4400000 */ lwc1 $f0, ($v0) -/* 31E338 802BD5C8 4602003C */ c.lt.s $f0, $f2 -/* 31E33C 802BD5CC 00000000 */ nop -.L802BD5D0: -/* 31E340 802BD5D0 45030001 */ bc1tl .L802BD5D8 -/* 31E344 802BD5D4 E4420000 */ swc1 $f2, ($v0) -.L802BD5D8: -/* 31E348 802BD5D8 3C06802C */ lui $a2, %hi(D_802BFDB8_320B28) -/* 31E34C 802BD5DC 8CC6FDB8 */ lw $a2, %lo(D_802BFDB8_320B28)($a2) -/* 31E350 802BD5E0 3C01802C */ lui $at, %hi(D_802BFDBC_320B2C) -/* 31E354 802BD5E4 C420FDBC */ lwc1 $f0, %lo(D_802BFDBC_320B2C)($at) -/* 31E358 802BD5E8 44806000 */ mtc1 $zero, $f12 -/* 31E35C 802BD5EC 46000007 */ neg.s $f0, $f0 -/* 31E360 802BD5F0 44070000 */ mfc1 $a3, $f0 -/* 31E364 802BD5F4 0C00A720 */ jal atan2 -/* 31E368 802BD5F8 46006386 */ mov.s $f14, $f12 -/* 31E36C 802BD5FC 3C01800B */ lui $at, %hi(gCameras+0x6C) -/* 31E370 802BD600 C42C1DEC */ lwc1 $f12, %lo(gCameras+0x6C)($at) -/* 31E374 802BD604 0C00A6C9 */ jal clamp_angle -/* 31E378 802BD608 460C0300 */ add.s $f12, $f0, $f12 -/* 31E37C 802BD60C 3C02802C */ lui $v0, %hi(D_802BFEF8) -/* 31E380 802BD610 2442FEF8 */ addiu $v0, $v0, %lo(D_802BFEF8) -/* 31E384 802BD614 C4420000 */ lwc1 $f2, ($v0) -/* 31E388 802BD618 C7A40024 */ lwc1 $f4, 0x24($sp) -/* 31E38C 802BD61C 4604103E */ c.le.s $f2, $f4 -/* 31E390 802BD620 00000000 */ nop -/* 31E394 802BD624 4500000A */ bc1f .L802BD650 -/* 31E398 802BD628 E7A00020 */ swc1 $f0, 0x20($sp) -/* 31E39C 802BD62C 46022001 */ sub.s $f0, $f4, $f2 -/* 31E3A0 802BD630 46140003 */ div.s $f0, $f0, $f20 -/* 31E3A4 802BD634 46001000 */ add.s $f0, $f2, $f0 -/* 31E3A8 802BD638 4600203C */ c.lt.s $f4, $f0 -/* 31E3AC 802BD63C 00000000 */ nop -/* 31E3B0 802BD640 45000007 */ bc1f .L802BD660 -/* 31E3B4 802BD644 E4400000 */ swc1 $f0, ($v0) -/* 31E3B8 802BD648 080AF598 */ j .L802BD660 -/* 31E3BC 802BD64C E4440000 */ swc1 $f4, ($v0) -.L802BD650: -/* 31E3C0 802BD650 46022001 */ sub.s $f0, $f4, $f2 -/* 31E3C4 802BD654 46140003 */ div.s $f0, $f0, $f20 -/* 31E3C8 802BD658 46001000 */ add.s $f0, $f2, $f0 -/* 31E3CC 802BD65C E4400000 */ swc1 $f0, ($v0) -.L802BD660: -/* 31E3D0 802BD660 27A50028 */ addiu $a1, $sp, 0x28 -/* 31E3D4 802BD664 C7A40020 */ lwc1 $f4, 0x20($sp) -/* 31E3D8 802BD668 3C0140C9 */ lui $at, 0x40c9 -/* 31E3DC 802BD66C 34210FD0 */ ori $at, $at, 0xfd0 -/* 31E3E0 802BD670 44816000 */ mtc1 $at, $f12 -/* 31E3E4 802BD674 3C01802C */ lui $at, %hi(D_802BFEF8) -/* 31E3E8 802BD678 C420FEF8 */ lwc1 $f0, %lo(D_802BFEF8)($at) -/* 31E3EC 802BD67C 460C2302 */ mul.s $f12, $f4, $f12 -/* 31E3F0 802BD680 00000000 */ nop -/* 31E3F4 802BD684 3C0143B4 */ lui $at, 0x43b4 -/* 31E3F8 802BD688 44811000 */ mtc1 $at, $f2 -/* 31E3FC 802BD68C 27A6002C */ addiu $a2, $sp, 0x2c -/* 31E400 802BD690 E7A00024 */ swc1 $f0, 0x24($sp) -/* 31E404 802BD694 3C01802C */ lui $at, %hi(bss_802BFEFC) -/* 31E408 802BD698 E424FEFC */ swc1 $f4, %lo(bss_802BFEFC)($at) -/* 31E40C 802BD69C 0C00A82D */ jal sin_cos_rad -/* 31E410 802BD6A0 46026303 */ div.s $f12, $f12, $f2 -/* 31E414 802BD6A4 C7A00024 */ lwc1 $f0, 0x24($sp) -/* 31E418 802BD6A8 C7A20028 */ lwc1 $f2, 0x28($sp) -/* 31E41C 802BD6AC 46020082 */ mul.s $f2, $f0, $f2 -/* 31E420 802BD6B0 00000000 */ nop -/* 31E424 802BD6B4 C7A4002C */ lwc1 $f4, 0x2c($sp) -/* 31E428 802BD6B8 46000007 */ neg.s $f0, $f0 -/* 31E42C 802BD6BC 46040002 */ mul.s $f0, $f0, $f4 -/* 31E430 802BD6C0 00000000 */ nop -/* 31E434 802BD6C4 3C03802C */ lui $v1, %hi(D_802BFF00) -/* 31E438 802BD6C8 2463FF00 */ addiu $v1, $v1, %lo(D_802BFF00) -/* 31E43C 802BD6CC 3C02802C */ lui $v0, %hi(D_802BFF04) -/* 31E440 802BD6D0 2442FF04 */ addiu $v0, $v0, %lo(D_802BFF04) -/* 31E444 802BD6D4 C4640000 */ lwc1 $f4, ($v1) -/* 31E448 802BD6D8 46141083 */ div.s $f2, $f2, $f20 -/* 31E44C 802BD6DC 46022100 */ add.s $f4, $f4, $f2 -/* 31E450 802BD6E0 C4420000 */ lwc1 $f2, ($v0) -/* 31E454 802BD6E4 46140003 */ div.s $f0, $f0, $f20 -/* 31E458 802BD6E8 46001080 */ add.s $f2, $f2, $f0 -/* 31E45C 802BD6EC E4640000 */ swc1 $f4, ($v1) -/* 31E460 802BD6F0 080AF5EB */ j .L802BD7AC -/* 31E464 802BD6F4 E4420000 */ swc1 $f2, ($v0) -.L802BD6F8: -/* 31E468 802BD6F8 3C02802C */ lui $v0, %hi(D_802BFEF8) -/* 31E46C 802BD6FC 2442FEF8 */ addiu $v0, $v0, %lo(D_802BFEF8) -/* 31E470 802BD700 C4400000 */ lwc1 $f0, ($v0) -/* 31E474 802BD704 3C01802C */ lui $at, %hi(D_802BFE50_320BC0) -/* 31E478 802BD708 D422FE50 */ ldc1 $f2, %lo(D_802BFE50_320BC0)($at) -/* 31E47C 802BD70C 46000021 */ cvt.d.s $f0, $f0 -/* 31E480 802BD710 46220001 */ sub.d $f0, $f0, $f2 -/* 31E484 802BD714 46200020 */ cvt.s.d $f0, $f0 -/* 31E488 802BD718 4606003C */ c.lt.s $f0, $f6 -/* 31E48C 802BD71C 00000000 */ nop -/* 31E490 802BD720 45000006 */ bc1f .L802BD73C -/* 31E494 802BD724 E4400000 */ swc1 $f0, ($v0) -/* 31E498 802BD728 E4460000 */ swc1 $f6, ($v0) -/* 31E49C 802BD72C 3C01802C */ lui $at, %hi(D_802BFDBC_320B2C) -/* 31E4A0 802BD730 E426FDBC */ swc1 $f6, %lo(D_802BFDBC_320B2C)($at) -/* 31E4A4 802BD734 3C01802C */ lui $at, %hi(D_802BFDB8_320B28) -/* 31E4A8 802BD738 E426FDB8 */ swc1 $f6, %lo(D_802BFDB8_320B28)($at) -.L802BD73C: -/* 31E4AC 802BD73C 27A50028 */ addiu $a1, $sp, 0x28 -/* 31E4B0 802BD740 3C01802C */ lui $at, %hi(bss_802BFEFC) -/* 31E4B4 802BD744 C424FEFC */ lwc1 $f4, %lo(bss_802BFEFC)($at) -/* 31E4B8 802BD748 3C0140C9 */ lui $at, 0x40c9 -/* 31E4BC 802BD74C 34210FD0 */ ori $at, $at, 0xfd0 -/* 31E4C0 802BD750 44816000 */ mtc1 $at, $f12 -/* 31E4C4 802BD754 C4400000 */ lwc1 $f0, ($v0) -/* 31E4C8 802BD758 460C2302 */ mul.s $f12, $f4, $f12 -/* 31E4CC 802BD75C 00000000 */ nop -/* 31E4D0 802BD760 3C0143B4 */ lui $at, 0x43b4 -/* 31E4D4 802BD764 44811000 */ mtc1 $at, $f2 -/* 31E4D8 802BD768 27A6002C */ addiu $a2, $sp, 0x2c -/* 31E4DC 802BD76C E7A00024 */ swc1 $f0, 0x24($sp) -/* 31E4E0 802BD770 E7A40020 */ swc1 $f4, 0x20($sp) -/* 31E4E4 802BD774 0C00A82D */ jal sin_cos_rad -/* 31E4E8 802BD778 46026303 */ div.s $f12, $f12, $f2 -/* 31E4EC 802BD77C C7A00024 */ lwc1 $f0, 0x24($sp) -/* 31E4F0 802BD780 C7A20028 */ lwc1 $f2, 0x28($sp) -/* 31E4F4 802BD784 46020082 */ mul.s $f2, $f0, $f2 -/* 31E4F8 802BD788 00000000 */ nop -/* 31E4FC 802BD78C C7A4002C */ lwc1 $f4, 0x2c($sp) -/* 31E500 802BD790 46000007 */ neg.s $f0, $f0 -/* 31E504 802BD794 46040002 */ mul.s $f0, $f0, $f4 -/* 31E508 802BD798 00000000 */ nop -/* 31E50C 802BD79C 3C01802C */ lui $at, %hi(D_802BFF00) -/* 31E510 802BD7A0 E422FF00 */ swc1 $f2, %lo(D_802BFF00)($at) -/* 31E514 802BD7A4 3C01802C */ lui $at, %hi(D_802BFF04) -/* 31E518 802BD7A8 E420FF04 */ swc1 $f0, %lo(D_802BFF04)($at) -.L802BD7AC: -/* 31E51C 802BD7AC C7A20024 */ lwc1 $f2, 0x24($sp) -/* 31E520 802BD7B0 44800000 */ mtc1 $zero, $f0 -/* 31E524 802BD7B4 00000000 */ nop -/* 31E528 802BD7B8 46001032 */ c.eq.s $f2, $f0 -/* 31E52C 802BD7BC 00000000 */ nop -/* 31E530 802BD7C0 450100D6 */ bc1t .L802BDB1C -/* 31E534 802BD7C4 E6020018 */ swc1 $f2, 0x18($s0) -/* 31E538 802BD7C8 860200A8 */ lh $v0, 0xa8($s0) -/* 31E53C 802BD7CC 3C013F00 */ lui $at, 0x3f00 -/* 31E540 802BD7D0 44810000 */ mtc1 $at, $f0 -/* 31E544 802BD7D4 C7AA0020 */ lwc1 $f10, 0x20($sp) -/* 31E548 802BD7D8 C6080038 */ lwc1 $f8, 0x38($s0) -/* 31E54C 802BD7DC 44823000 */ mtc1 $v0, $f6 -/* 31E550 802BD7E0 00000000 */ nop -/* 31E554 802BD7E4 468031A0 */ cvt.s.w $f6, $f6 -/* 31E558 802BD7E8 46003182 */ mul.s $f6, $f6, $f0 -/* 31E55C 802BD7EC 00000000 */ nop -/* 31E560 802BD7F0 E60A000C */ swc1 $f10, 0xc($s0) -/* 31E564 802BD7F4 868200B0 */ lh $v0, 0xb0($s4) -/* 31E568 802BD7F8 3C013F4C */ lui $at, 0x3f4c -/* 31E56C 802BD7FC 3421CCCD */ ori $at, $at, 0xcccd -/* 31E570 802BD800 44810000 */ mtc1 $at, $f0 -/* 31E574 802BD804 44821000 */ mtc1 $v0, $f2 -/* 31E578 802BD808 00000000 */ nop -/* 31E57C 802BD80C 468010A0 */ cvt.s.w $f2, $f2 -/* 31E580 802BD810 46001082 */ mul.s $f2, $f2, $f0 -/* 31E584 802BD814 00000000 */ nop -/* 31E588 802BD818 3C01C0C0 */ lui $at, 0xc0c0 -/* 31E58C 802BD81C 44812000 */ mtc1 $at, $f4 -/* 31E590 802BD820 C6000064 */ lwc1 $f0, 0x64($s0) -/* 31E594 802BD824 27A50030 */ addiu $a1, $sp, 0x30 -/* 31E598 802BD828 E7A80030 */ swc1 $f8, 0x30($sp) -/* 31E59C 802BD82C 46040000 */ add.s $f0, $f0, $f4 -/* 31E5A0 802BD830 C6080018 */ lwc1 $f8, 0x18($s0) -/* 31E5A4 802BD834 C6040040 */ lwc1 $f4, 0x40($s0) -/* 31E5A8 802BD838 46023180 */ add.s $f6, $f6, $f2 -/* 31E5AC 802BD83C E7A40038 */ swc1 $f4, 0x38($sp) -/* 31E5B0 802BD840 E7A00034 */ swc1 $f0, 0x34($sp) -/* 31E5B4 802BD844 E7A6003C */ swc1 $f6, 0x3c($sp) -/* 31E5B8 802BD848 E7A80010 */ swc1 $f8, 0x10($sp) -/* 31E5BC 802BD84C E7AA0014 */ swc1 $f10, 0x14($sp) -/* 31E5C0 802BD850 E7A60018 */ swc1 $f6, 0x18($sp) -/* 31E5C4 802BD854 860200A6 */ lh $v0, 0xa6($s0) -/* 31E5C8 802BD858 27A60034 */ addiu $a2, $sp, 0x34 -/* 31E5CC 802BD85C 44820000 */ mtc1 $v0, $f0 -/* 31E5D0 802BD860 00000000 */ nop -/* 31E5D4 802BD864 46800020 */ cvt.s.w $f0, $f0 -/* 31E5D8 802BD868 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 31E5DC 802BD86C 8E040080 */ lw $a0, 0x80($s0) -/* 31E5E0 802BD870 0C0376B9 */ jal npc_test_move_taller_with_slipping -/* 31E5E4 802BD874 27A70038 */ addiu $a3, $sp, 0x38 -/* 31E5E8 802BD878 10400025 */ beqz $v0, .L802BD910 -/* 31E5EC 802BD87C 00000000 */ nop -/* 31E5F0 802BD880 3C028011 */ lui $v0, %hi(D_8010C978) -/* 31E5F4 802BD884 2442C978 */ addiu $v0, $v0, %lo(D_8010C978) -/* 31E5F8 802BD888 8C440000 */ lw $a0, ($v0) -/* 31E5FC 802BD88C 94420002 */ lhu $v0, 2($v0) -/* 31E600 802BD890 0C016F6A */ jal get_collider_flags -/* 31E604 802BD894 A6220000 */ sh $v0, ($s1) -/* 31E608 802BD898 304200FF */ andi $v0, $v0, 0xff -/* 31E60C 802BD89C 24030004 */ addiu $v1, $zero, 4 -/* 31E610 802BD8A0 14430007 */ bne $v0, $v1, .L802BD8C0 -/* 31E614 802BD8A4 00000000 */ nop -/* 31E618 802BD8A8 3C03802C */ lui $v1, %hi(bss_802BFEF0) -/* 31E61C 802BD8AC 2463FEF0 */ addiu $v1, $v1, %lo(bss_802BFEF0) -/* 31E620 802BD8B0 8C620000 */ lw $v0, ($v1) -/* 31E624 802BD8B4 24420001 */ addiu $v0, $v0, 1 -/* 31E628 802BD8B8 080AF632 */ j .L802BD8C8 -/* 31E62C 802BD8BC AC620000 */ sw $v0, ($v1) -.L802BD8C0: -/* 31E630 802BD8C0 3C01802C */ lui $at, %hi(bss_802BFEF0) -/* 31E634 802BD8C4 AC20FEF0 */ sw $zero, %lo(bss_802BFEF0)($at) -.L802BD8C8: -/* 31E638 802BD8C8 C7A40030 */ lwc1 $f4, 0x30($sp) -/* 31E63C 802BD8CC C6060038 */ lwc1 $f6, 0x38($s0) -/* 31E640 802BD8D0 46062101 */ sub.s $f4, $f4, $f6 -/* 31E644 802BD8D4 3C013F00 */ lui $at, 0x3f00 -/* 31E648 802BD8D8 44814000 */ mtc1 $at, $f8 -/* 31E64C 802BD8DC 00000000 */ nop -/* 31E650 802BD8E0 46082102 */ mul.s $f4, $f4, $f8 -/* 31E654 802BD8E4 00000000 */ nop -/* 31E658 802BD8E8 C7A00038 */ lwc1 $f0, 0x38($sp) -/* 31E65C 802BD8EC C6020040 */ lwc1 $f2, 0x40($s0) -/* 31E660 802BD8F0 46020001 */ sub.s $f0, $f0, $f2 -/* 31E664 802BD8F4 46080002 */ mul.s $f0, $f0, $f8 -/* 31E668 802BD8F8 00000000 */ nop -/* 31E66C 802BD8FC 46043180 */ add.s $f6, $f6, $f4 -/* 31E670 802BD900 46001080 */ add.s $f2, $f2, $f0 -/* 31E674 802BD904 E6060038 */ swc1 $f6, 0x38($s0) -/* 31E678 802BD908 080AF64A */ j .L802BD928 -/* 31E67C 802BD90C E6020040 */ swc1 $f2, 0x40($s0) -.L802BD910: -/* 31E680 802BD910 8FA50024 */ lw $a1, 0x24($sp) -/* 31E684 802BD914 8FA60020 */ lw $a2, 0x20($sp) -/* 31E688 802BD918 0C00EA95 */ jal npc_move_heading -/* 31E68C 802BD91C 0200202D */ daddu $a0, $s0, $zero -/* 31E690 802BD920 2402FFFF */ addiu $v0, $zero, -1 -/* 31E694 802BD924 A6220000 */ sh $v0, ($s1) -.L802BD928: -/* 31E698 802BD928 C60C000C */ lwc1 $f12, 0xc($s0) -/* 31E69C 802BD92C 3C0141F0 */ lui $at, 0x41f0 -/* 31E6A0 802BD930 4481D000 */ mtc1 $at, $f26 -/* 31E6A4 802BD934 3C014000 */ lui $at, 0x4000 -/* 31E6A8 802BD938 44810000 */ mtc1 $at, $f0 -/* 31E6AC 802BD93C 461A6301 */ sub.s $f12, $f12, $f26 -/* 31E6B0 802BD940 0C00A6C9 */ jal clamp_angle -/* 31E6B4 802BD944 E7A00024 */ swc1 $f0, 0x24($sp) -/* 31E6B8 802BD948 27B30030 */ addiu $s3, $sp, 0x30 -/* 31E6BC 802BD94C 0260282D */ daddu $a1, $s3, $zero -/* 31E6C0 802BD950 27B20034 */ addiu $s2, $sp, 0x34 -/* 31E6C4 802BD954 860200A8 */ lh $v0, 0xa8($s0) -/* 31E6C8 802BD958 3C013F00 */ lui $at, 0x3f00 -/* 31E6CC 802BD95C 4481C000 */ mtc1 $at, $f24 -/* 31E6D0 802BD960 44824000 */ mtc1 $v0, $f8 -/* 31E6D4 802BD964 00000000 */ nop -/* 31E6D8 802BD968 46804220 */ cvt.s.w $f8, $f8 -/* 31E6DC 802BD96C 46184202 */ mul.s $f8, $f8, $f24 -/* 31E6E0 802BD970 00000000 */ nop -/* 31E6E4 802BD974 0240302D */ daddu $a2, $s2, $zero -/* 31E6E8 802BD978 868200B0 */ lh $v0, 0xb0($s4) -/* 31E6EC 802BD97C 3C013F4C */ lui $at, 0x3f4c -/* 31E6F0 802BD980 3421CCCD */ ori $at, $at, 0xcccd -/* 31E6F4 802BD984 4481A000 */ mtc1 $at, $f20 -/* 31E6F8 802BD988 44822000 */ mtc1 $v0, $f4 -/* 31E6FC 802BD98C 00000000 */ nop -/* 31E700 802BD990 46802120 */ cvt.s.w $f4, $f4 -/* 31E704 802BD994 46142102 */ mul.s $f4, $f4, $f20 -/* 31E708 802BD998 00000000 */ nop -/* 31E70C 802BD99C C6060038 */ lwc1 $f6, 0x38($s0) -/* 31E710 802BD9A0 C6020064 */ lwc1 $f2, 0x64($s0) -/* 31E714 802BD9A4 3C01C0C0 */ lui $at, 0xc0c0 -/* 31E718 802BD9A8 4481B000 */ mtc1 $at, $f22 -/* 31E71C 802BD9AC C7AA0024 */ lwc1 $f10, 0x24($sp) -/* 31E720 802BD9B0 46161080 */ add.s $f2, $f2, $f22 -/* 31E724 802BD9B4 E7A00020 */ swc1 $f0, 0x20($sp) -/* 31E728 802BD9B8 E7A60030 */ swc1 $f6, 0x30($sp) -/* 31E72C 802BD9BC C6060040 */ lwc1 $f6, 0x40($s0) -/* 31E730 802BD9C0 46044200 */ add.s $f8, $f8, $f4 -/* 31E734 802BD9C4 E7A60038 */ swc1 $f6, 0x38($sp) -/* 31E738 802BD9C8 E7A20034 */ swc1 $f2, 0x34($sp) -/* 31E73C 802BD9CC E7A8003C */ swc1 $f8, 0x3c($sp) -/* 31E740 802BD9D0 E7AA0010 */ swc1 $f10, 0x10($sp) -/* 31E744 802BD9D4 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31E748 802BD9D8 E7A80018 */ swc1 $f8, 0x18($sp) -/* 31E74C 802BD9DC 860200A6 */ lh $v0, 0xa6($s0) -/* 31E750 802BD9E0 27B10038 */ addiu $s1, $sp, 0x38 -/* 31E754 802BD9E4 44820000 */ mtc1 $v0, $f0 -/* 31E758 802BD9E8 00000000 */ nop -/* 31E75C 802BD9EC 46800020 */ cvt.s.w $f0, $f0 -/* 31E760 802BD9F0 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 31E764 802BD9F4 8E040080 */ lw $a0, 0x80($s0) -/* 31E768 802BD9F8 0C0376B9 */ jal npc_test_move_taller_with_slipping -/* 31E76C 802BD9FC 0220382D */ daddu $a3, $s1, $zero -/* 31E770 802BDA00 1040000F */ beqz $v0, .L802BDA40 -/* 31E774 802BDA04 00000000 */ nop -/* 31E778 802BDA08 C7A00030 */ lwc1 $f0, 0x30($sp) -/* 31E77C 802BDA0C C6060038 */ lwc1 $f6, 0x38($s0) -/* 31E780 802BDA10 C7A20038 */ lwc1 $f2, 0x38($sp) -/* 31E784 802BDA14 46060001 */ sub.s $f0, $f0, $f6 -/* 31E788 802BDA18 C6040040 */ lwc1 $f4, 0x40($s0) -/* 31E78C 802BDA1C 3C0140A0 */ lui $at, 0x40a0 -/* 31E790 802BDA20 44814000 */ mtc1 $at, $f8 -/* 31E794 802BDA24 46041081 */ sub.s $f2, $f2, $f4 -/* 31E798 802BDA28 46080003 */ div.s $f0, $f0, $f8 -/* 31E79C 802BDA2C 46003180 */ add.s $f6, $f6, $f0 -/* 31E7A0 802BDA30 46081083 */ div.s $f2, $f2, $f8 -/* 31E7A4 802BDA34 46022100 */ add.s $f4, $f4, $f2 -/* 31E7A8 802BDA38 E6060038 */ swc1 $f6, 0x38($s0) -/* 31E7AC 802BDA3C E6040040 */ swc1 $f4, 0x40($s0) -.L802BDA40: -/* 31E7B0 802BDA40 C60C000C */ lwc1 $f12, 0xc($s0) -/* 31E7B4 802BDA44 0C00A6C9 */ jal clamp_angle -/* 31E7B8 802BDA48 461A6300 */ add.s $f12, $f12, $f26 -/* 31E7BC 802BDA4C 860200A8 */ lh $v0, 0xa8($s0) -/* 31E7C0 802BDA50 44823000 */ mtc1 $v0, $f6 -/* 31E7C4 802BDA54 00000000 */ nop -/* 31E7C8 802BDA58 468031A0 */ cvt.s.w $f6, $f6 -/* 31E7CC 802BDA5C 46183182 */ mul.s $f6, $f6, $f24 -/* 31E7D0 802BDA60 00000000 */ nop -/* 31E7D4 802BDA64 868200B0 */ lh $v0, 0xb0($s4) -/* 31E7D8 802BDA68 44822000 */ mtc1 $v0, $f4 -/* 31E7DC 802BDA6C 00000000 */ nop -/* 31E7E0 802BDA70 46802120 */ cvt.s.w $f4, $f4 -/* 31E7E4 802BDA74 46142102 */ mul.s $f4, $f4, $f20 -/* 31E7E8 802BDA78 00000000 */ nop -/* 31E7EC 802BDA7C 0260282D */ daddu $a1, $s3, $zero -/* 31E7F0 802BDA80 C6080038 */ lwc1 $f8, 0x38($s0) -/* 31E7F4 802BDA84 C6020064 */ lwc1 $f2, 0x64($s0) -/* 31E7F8 802BDA88 C7AA0024 */ lwc1 $f10, 0x24($sp) -/* 31E7FC 802BDA8C 46161080 */ add.s $f2, $f2, $f22 -/* 31E800 802BDA90 E7A00020 */ swc1 $f0, 0x20($sp) -/* 31E804 802BDA94 E7A80030 */ swc1 $f8, 0x30($sp) -/* 31E808 802BDA98 C6080040 */ lwc1 $f8, 0x40($s0) -/* 31E80C 802BDA9C 46043180 */ add.s $f6, $f6, $f4 -/* 31E810 802BDAA0 E7A80038 */ swc1 $f8, 0x38($sp) -/* 31E814 802BDAA4 E7A20034 */ swc1 $f2, 0x34($sp) -/* 31E818 802BDAA8 E7A6003C */ swc1 $f6, 0x3c($sp) -/* 31E81C 802BDAAC E7AA0010 */ swc1 $f10, 0x10($sp) -/* 31E820 802BDAB0 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31E824 802BDAB4 E7A60018 */ swc1 $f6, 0x18($sp) -/* 31E828 802BDAB8 860200A6 */ lh $v0, 0xa6($s0) -/* 31E82C 802BDABC 0240302D */ daddu $a2, $s2, $zero -/* 31E830 802BDAC0 44820000 */ mtc1 $v0, $f0 -/* 31E834 802BDAC4 00000000 */ nop -/* 31E838 802BDAC8 46800020 */ cvt.s.w $f0, $f0 -/* 31E83C 802BDACC E7A0001C */ swc1 $f0, 0x1c($sp) -/* 31E840 802BDAD0 8E040080 */ lw $a0, 0x80($s0) -/* 31E844 802BDAD4 0C0376B9 */ jal npc_test_move_taller_with_slipping -/* 31E848 802BDAD8 0220382D */ daddu $a3, $s1, $zero -/* 31E84C 802BDADC 1040000F */ beqz $v0, .L802BDB1C -/* 31E850 802BDAE0 00000000 */ nop -/* 31E854 802BDAE4 C7A00030 */ lwc1 $f0, 0x30($sp) -/* 31E858 802BDAE8 C6060038 */ lwc1 $f6, 0x38($s0) -/* 31E85C 802BDAEC C7A20038 */ lwc1 $f2, 0x38($sp) -/* 31E860 802BDAF0 46060001 */ sub.s $f0, $f0, $f6 -/* 31E864 802BDAF4 C6040040 */ lwc1 $f4, 0x40($s0) -/* 31E868 802BDAF8 3C0140A0 */ lui $at, 0x40a0 -/* 31E86C 802BDAFC 44814000 */ mtc1 $at, $f8 -/* 31E870 802BDB00 46041081 */ sub.s $f2, $f2, $f4 -/* 31E874 802BDB04 46080003 */ div.s $f0, $f0, $f8 -/* 31E878 802BDB08 46003180 */ add.s $f6, $f6, $f0 -/* 31E87C 802BDB0C 46081083 */ div.s $f2, $f2, $f8 -/* 31E880 802BDB10 46022100 */ add.s $f4, $f4, $f2 -/* 31E884 802BDB14 E6060038 */ swc1 $f6, 0x38($s0) -/* 31E888 802BDB18 E6040040 */ swc1 $f4, 0x40($s0) -.L802BDB1C: -/* 31E88C 802BDB1C 3C11802C */ lui $s1, %hi(bss_802BFEE4) -/* 31E890 802BDB20 2631FEE4 */ addiu $s1, $s1, %lo(bss_802BFEE4) -/* 31E894 802BDB24 8E220000 */ lw $v0, ($s1) -/* 31E898 802BDB28 1440002C */ bnez $v0, .L802BDBDC -/* 31E89C 802BDB2C 00000000 */ nop -/* 31E8A0 802BDB30 C600000C */ lwc1 $f0, 0xc($s0) -/* 31E8A4 802BDB34 E7A00010 */ swc1 $f0, 0x10($sp) -/* 31E8A8 802BDB38 860200A6 */ lh $v0, 0xa6($s0) -/* 31E8AC 802BDB3C 3C013F00 */ lui $at, 0x3f00 -/* 31E8B0 802BDB40 4481A000 */ mtc1 $at, $f20 -/* 31E8B4 802BDB44 44820000 */ mtc1 $v0, $f0 -/* 31E8B8 802BDB48 00000000 */ nop -/* 31E8BC 802BDB4C 46800020 */ cvt.s.w $f0, $f0 -/* 31E8C0 802BDB50 46140002 */ mul.s $f0, $f0, $f20 -/* 31E8C4 802BDB54 00000000 */ nop -/* 31E8C8 802BDB58 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31E8CC 802BDB5C 8E040080 */ lw $a0, 0x80($s0) -/* 31E8D0 802BDB60 8E050038 */ lw $a1, 0x38($s0) -/* 31E8D4 802BDB64 8E06003C */ lw $a2, 0x3c($s0) -/* 31E8D8 802BDB68 0C0AF4DA */ jal func_802BD368_31E0D8 -/* 31E8DC 802BDB6C 8E070040 */ lw $a3, 0x40($s0) -/* 31E8E0 802BDB70 8E220000 */ lw $v0, ($s1) -/* 31E8E4 802BDB74 14400019 */ bnez $v0, .L802BDBDC -/* 31E8E8 802BDB78 00000000 */ nop -/* 31E8EC 802BDB7C 860200A8 */ lh $v0, 0xa8($s0) -/* 31E8F0 802BDB80 44820000 */ mtc1 $v0, $f0 -/* 31E8F4 802BDB84 00000000 */ nop -/* 31E8F8 802BDB88 46800020 */ cvt.s.w $f0, $f0 -/* 31E8FC 802BDB8C 46140002 */ mul.s $f0, $f0, $f20 -/* 31E900 802BDB90 00000000 */ nop -/* 31E904 802BDB94 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31E908 802BDB98 C422FEE0 */ lwc1 $f2, %lo(OriginalPlayerY)($at) -/* 31E90C 802BDB9C 46001081 */ sub.s $f2, $f2, $f0 -/* 31E910 802BDBA0 3C014040 */ lui $at, 0x4040 -/* 31E914 802BDBA4 44810000 */ mtc1 $at, $f0 -/* 31E918 802BDBA8 00000000 */ nop -/* 31E91C 802BDBAC E6000018 */ swc1 $f0, 0x18($s0) -/* 31E920 802BDBB0 E6020064 */ swc1 $f2, 0x64($s0) -/* 31E924 802BDBB4 8EA2000C */ lw $v0, 0xc($s5) -/* 31E928 802BDBB8 3C01802C */ lui $at, %hi(bss_802BFEE8) -/* 31E92C 802BDBBC AC20FEE8 */ sw $zero, %lo(bss_802BFEE8)($at) -/* 31E930 802BDBC0 30420004 */ andi $v0, $v0, 4 -/* 31E934 802BDBC4 104001A1 */ beqz $v0, .L802BE24C -/* 31E938 802BDBC8 24020001 */ addiu $v0, $zero, 1 -/* 31E93C 802BDBCC 3C014000 */ lui $at, 0x4000 -/* 31E940 802BDBD0 44810000 */ mtc1 $at, $f0 -/* 31E944 802BDBD4 AE220000 */ sw $v0, ($s1) -/* 31E948 802BDBD8 E6000018 */ swc1 $f0, 0x18($s0) -.L802BDBDC: -/* 31E94C 802BDBDC 3C04802C */ lui $a0, %hi(bss_802BFEE4) -/* 31E950 802BDBE0 2484FEE4 */ addiu $a0, $a0, %lo(bss_802BFEE4) -/* 31E954 802BDBE4 8C830000 */ lw $v1, ($a0) -/* 31E958 802BDBE8 24020001 */ addiu $v0, $zero, 1 -/* 31E95C 802BDBEC 1462000A */ bne $v1, $v0, .L802BDC18 -/* 31E960 802BDBF0 00000000 */ nop -/* 31E964 802BDBF4 8EA20008 */ lw $v0, 8($s5) -/* 31E968 802BDBF8 30420004 */ andi $v0, $v0, 4 -/* 31E96C 802BDBFC 10400006 */ beqz $v0, .L802BDC18 -/* 31E970 802BDC00 00000000 */ nop -/* 31E974 802BDC04 3C02802C */ lui $v0, %hi(bss_802BFEE8) -/* 31E978 802BDC08 8C42FEE8 */ lw $v0, %lo(bss_802BFEE8)($v0) -/* 31E97C 802BDC0C 14400002 */ bnez $v0, .L802BDC18 -/* 31E980 802BDC10 24020002 */ addiu $v0, $zero, 2 -/* 31E984 802BDC14 AC820000 */ sw $v0, ($a0) -.L802BDC18: -/* 31E988 802BDC18 3C03802C */ lui $v1, %hi(bss_802BFEE8) -/* 31E98C 802BDC1C 2463FEE8 */ addiu $v1, $v1, %lo(bss_802BFEE8) -/* 31E990 802BDC20 8C620000 */ lw $v0, ($v1) -/* 31E994 802BDC24 24420001 */ addiu $v0, $v0, 1 -/* 31E998 802BDC28 AC620000 */ sw $v0, ($v1) -/* 31E99C 802BDC2C 3C03802C */ lui $v1, %hi(bss_802BFEE4) -/* 31E9A0 802BDC30 8C63FEE4 */ lw $v1, %lo(bss_802BFEE4)($v1) -/* 31E9A4 802BDC34 24020002 */ addiu $v0, $zero, 2 -/* 31E9A8 802BDC38 146200B1 */ bne $v1, $v0, .L802BDF00 -/* 31E9AC 802BDC3C 27A50030 */ addiu $a1, $sp, 0x30 -/* 31E9B0 802BDC40 C6000038 */ lwc1 $f0, 0x38($s0) -/* 31E9B4 802BDC44 C602003C */ lwc1 $f2, 0x3c($s0) -/* 31E9B8 802BDC48 C6040040 */ lwc1 $f4, 0x40($s0) -/* 31E9BC 802BDC4C 860200A8 */ lh $v0, 0xa8($s0) -/* 31E9C0 802BDC50 E7A00030 */ swc1 $f0, 0x30($sp) -/* 31E9C4 802BDC54 44820000 */ mtc1 $v0, $f0 -/* 31E9C8 802BDC58 00000000 */ nop -/* 31E9CC 802BDC5C 46800020 */ cvt.s.w $f0, $f0 -/* 31E9D0 802BDC60 27A2003C */ addiu $v0, $sp, 0x3c -/* 31E9D4 802BDC64 E7A20034 */ swc1 $f2, 0x34($sp) -/* 31E9D8 802BDC68 E7A40038 */ swc1 $f4, 0x38($sp) -/* 31E9DC 802BDC6C E7A0003C */ swc1 $f0, 0x3c($sp) -/* 31E9E0 802BDC70 AFA20010 */ sw $v0, 0x10($sp) -/* 31E9E4 802BDC74 C600000C */ lwc1 $f0, 0xc($s0) -/* 31E9E8 802BDC78 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31E9EC 802BDC7C 860200A6 */ lh $v0, 0xa6($s0) -/* 31E9F0 802BDC80 27A60034 */ addiu $a2, $sp, 0x34 -/* 31E9F4 802BDC84 44820000 */ mtc1 $v0, $f0 -/* 31E9F8 802BDC88 00000000 */ nop -/* 31E9FC 802BDC8C 46800020 */ cvt.s.w $f0, $f0 -/* 31EA00 802BDC90 E7A00018 */ swc1 $f0, 0x18($sp) -/* 31EA04 802BDC94 8E040080 */ lw $a0, 0x80($s0) -/* 31EA08 802BDC98 0C0371DE */ jal npc_raycast_down_around -/* 31EA0C 802BDC9C 27A70038 */ addiu $a3, $sp, 0x38 -/* 31EA10 802BDCA0 1040001D */ beqz $v0, .L802BDD18 -/* 31EA14 802BDCA4 00000000 */ nop -/* 31EA18 802BDCA8 868200B0 */ lh $v0, 0xb0($s4) -/* 31EA1C 802BDCAC 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EA20 802BDCB0 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EA24 802BDCB4 00021040 */ sll $v0, $v0, 1 -/* 31EA28 802BDCB8 44821000 */ mtc1 $v0, $f2 -/* 31EA2C 802BDCBC 00000000 */ nop -/* 31EA30 802BDCC0 468010A0 */ cvt.s.w $f2, $f2 -/* 31EA34 802BDCC4 46020001 */ sub.s $f0, $f0, $f2 -/* 31EA38 802BDCC8 C6040064 */ lwc1 $f4, 0x64($s0) -/* 31EA3C 802BDCCC 46040001 */ sub.s $f0, $f0, $f4 -/* 31EA40 802BDCD0 3C013DCC */ lui $at, 0x3dcc -/* 31EA44 802BDCD4 3421CCCD */ ori $at, $at, 0xcccd -/* 31EA48 802BDCD8 44811000 */ mtc1 $at, $f2 -/* 31EA4C 802BDCDC 00000000 */ nop -/* 31EA50 802BDCE0 46020502 */ mul.s $f20, $f0, $f2 -/* 31EA54 802BDCE4 00000000 */ nop -/* 31EA58 802BDCE8 C7A20034 */ lwc1 $f2, 0x34($sp) -/* 31EA5C 802BDCEC 46142100 */ add.s $f4, $f4, $f20 -/* 31EA60 802BDCF0 3C0140A0 */ lui $at, 0x40a0 -/* 31EA64 802BDCF4 44810000 */ mtc1 $at, $f0 -/* 31EA68 802BDCF8 00000000 */ nop -/* 31EA6C 802BDCFC 46001080 */ add.s $f2, $f2, $f0 -/* 31EA70 802BDD00 4602203C */ c.lt.s $f4, $f2 -/* 31EA74 802BDD04 00000000 */ nop -/* 31EA78 802BDD08 45000015 */ bc1f .L802BDD60 -/* 31EA7C 802BDD0C E6040064 */ swc1 $f4, 0x64($s0) -/* 31EA80 802BDD10 080AF758 */ j .L802BDD60 -/* 31EA84 802BDD14 E6020064 */ swc1 $f2, 0x64($s0) -.L802BDD18: -/* 31EA88 802BDD18 868200B0 */ lh $v0, 0xb0($s4) -/* 31EA8C 802BDD1C 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EA90 802BDD20 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EA94 802BDD24 00021040 */ sll $v0, $v0, 1 -/* 31EA98 802BDD28 44821000 */ mtc1 $v0, $f2 -/* 31EA9C 802BDD2C 00000000 */ nop -/* 31EAA0 802BDD30 468010A0 */ cvt.s.w $f2, $f2 -/* 31EAA4 802BDD34 46020001 */ sub.s $f0, $f0, $f2 -/* 31EAA8 802BDD38 C6020064 */ lwc1 $f2, 0x64($s0) -/* 31EAAC 802BDD3C 46020001 */ sub.s $f0, $f0, $f2 -/* 31EAB0 802BDD40 3C013DCC */ lui $at, 0x3dcc -/* 31EAB4 802BDD44 3421CCCD */ ori $at, $at, 0xcccd -/* 31EAB8 802BDD48 44812000 */ mtc1 $at, $f4 -/* 31EABC 802BDD4C 00000000 */ nop -/* 31EAC0 802BDD50 46040502 */ mul.s $f20, $f0, $f4 -/* 31EAC4 802BDD54 00000000 */ nop -/* 31EAC8 802BDD58 46141080 */ add.s $f2, $f2, $f20 -/* 31EACC 802BDD5C E6020064 */ swc1 $f2, 0x64($s0) -.L802BDD60: -/* 31EAD0 802BDD60 3C022AAA */ lui $v0, 0x2aaa -/* 31EAD4 802BDD64 3C11802C */ lui $s1, %hi(bss_802BFEE8) -/* 31EAD8 802BDD68 2631FEE8 */ addiu $s1, $s1, %lo(bss_802BFEE8) -/* 31EADC 802BDD6C 8E240000 */ lw $a0, ($s1) -/* 31EAE0 802BDD70 3442AAAB */ ori $v0, $v0, 0xaaab -/* 31EAE4 802BDD74 00820018 */ mult $a0, $v0 -/* 31EAE8 802BDD78 00041FC3 */ sra $v1, $a0, 0x1f -/* 31EAEC 802BDD7C 00004010 */ mfhi $t0 -/* 31EAF0 802BDD80 01031823 */ subu $v1, $t0, $v1 -/* 31EAF4 802BDD84 00031040 */ sll $v0, $v1, 1 -/* 31EAF8 802BDD88 00431021 */ addu $v0, $v0, $v1 -/* 31EAFC 802BDD8C 00021040 */ sll $v0, $v0, 1 -/* 31EB00 802BDD90 14820015 */ bne $a0, $v0, .L802BDDE8 -/* 31EB04 802BDD94 00000000 */ nop -/* 31EB08 802BDD98 860200A8 */ lh $v0, 0xa8($s0) -/* 31EB0C 802BDD9C 3C013F00 */ lui $at, 0x3f00 -/* 31EB10 802BDDA0 44810000 */ mtc1 $at, $f0 -/* 31EB14 802BDDA4 44821000 */ mtc1 $v0, $f2 -/* 31EB18 802BDDA8 00000000 */ nop -/* 31EB1C 802BDDAC 468010A0 */ cvt.s.w $f2, $f2 -/* 31EB20 802BDDB0 46001082 */ mul.s $f2, $f2, $f0 -/* 31EB24 802BDDB4 00000000 */ nop -/* 31EB28 802BDDB8 C6040064 */ lwc1 $f4, 0x64($s0) -/* 31EB2C 802BDDBC 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EB30 802BDDC0 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EB34 802BDDC4 46040001 */ sub.s $f0, $f0, $f4 -/* 31EB38 802BDDC8 46022100 */ add.s $f4, $f4, $f2 -/* 31EB3C 802BDDCC 46020001 */ sub.s $f0, $f0, $f2 -/* 31EB40 802BDDD0 44062000 */ mfc1 $a2, $f4 -/* 31EB44 802BDDD4 E7A00010 */ swc1 $f0, 0x10($sp) -/* 31EB48 802BDDD8 8E050038 */ lw $a1, 0x38($s0) -/* 31EB4C 802BDDDC 8E070040 */ lw $a3, 0x40($s0) -/* 31EB50 802BDDE0 0C01C16C */ jal fx_rising_bubble -/* 31EB54 802BDDE4 0000202D */ daddu $a0, $zero, $zero -.L802BDDE8: -/* 31EB58 802BDDE8 8E220000 */ lw $v0, ($s1) -/* 31EB5C 802BDDEC 24110001 */ addiu $s1, $zero, 1 -/* 31EB60 802BDDF0 14510007 */ bne $v0, $s1, .L802BDE10 -/* 31EB64 802BDDF4 00000000 */ nop -/* 31EB68 802BDDF8 3C040008 */ lui $a0, 8 -/* 31EB6C 802BDDFC 0C037FDE */ jal suggest_player_anim_setUnkFlag -/* 31EB70 802BDE00 34840010 */ ori $a0, $a0, 0x10 -/* 31EB74 802BDE04 3C020007 */ lui $v0, 7 -/* 31EB78 802BDE08 3442000A */ ori $v0, $v0, 0xa -/* 31EB7C 802BDE0C AE020028 */ sw $v0, 0x28($s0) -.L802BDE10: -/* 31EB80 802BDE10 3C03802C */ lui $v1, %hi(bss_802BFEF4) -/* 31EB84 802BDE14 2463FEF4 */ addiu $v1, $v1, %lo(bss_802BFEF4) -/* 31EB88 802BDE18 8C620000 */ lw $v0, ($v1) -/* 31EB8C 802BDE1C 14400023 */ bnez $v0, .L802BDEAC -/* 31EB90 802BDE20 00000000 */ nop -/* 31EB94 802BDE24 868200B0 */ lh $v0, 0xb0($s4) -/* 31EB98 802BDE28 3C013F00 */ lui $at, 0x3f00 -/* 31EB9C 802BDE2C 44811000 */ mtc1 $at, $f2 -/* 31EBA0 802BDE30 44820000 */ mtc1 $v0, $f0 -/* 31EBA4 802BDE34 00000000 */ nop -/* 31EBA8 802BDE38 46800020 */ cvt.s.w $f0, $f0 -/* 31EBAC 802BDE3C 46020002 */ mul.s $f0, $f0, $f2 -/* 31EBB0 802BDE40 00000000 */ nop -/* 31EBB4 802BDE44 C682002C */ lwc1 $f2, 0x2c($s4) -/* 31EBB8 802BDE48 46001080 */ add.s $f2, $f2, $f0 -/* 31EBBC 802BDE4C 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EBC0 802BDE50 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EBC4 802BDE54 4600103C */ c.lt.s $f2, $f0 -/* 31EBC8 802BDE58 00000000 */ nop -/* 31EBCC 802BDE5C 45000013 */ bc1f .L802BDEAC -/* 31EBD0 802BDE60 24050004 */ addiu $a1, $zero, 4 -/* 31EBD4 802BDE64 24060002 */ addiu $a2, $zero, 2 -/* 31EBD8 802BDE68 0000382D */ daddu $a3, $zero, $zero -/* 31EBDC 802BDE6C 8E8400A4 */ lw $a0, 0xa4($s4) -/* 31EBE0 802BDE70 2402000D */ addiu $v0, $zero, 0xd -/* 31EBE4 802BDE74 AC710000 */ sw $s1, ($v1) -/* 31EBE8 802BDE78 A28200BE */ sb $v0, 0xbe($s4) -/* 31EBEC 802BDE7C AFA00010 */ sw $zero, 0x10($sp) -/* 31EBF0 802BDE80 AFA00014 */ sw $zero, 0x14($sp) -/* 31EBF4 802BDE84 0C0B77FE */ jal func_802DDFF8 -/* 31EBF8 802BDE88 AFA00018 */ sw $zero, 0x18($sp) -/* 31EBFC 802BDE8C 0200202D */ daddu $a0, $s0, $zero -/* 31EC00 802BDE90 24050004 */ addiu $a1, $zero, 4 -/* 31EC04 802BDE94 24060002 */ addiu $a2, $zero, 2 -/* 31EC08 802BDE98 0000382D */ daddu $a3, $zero, $zero -/* 31EC0C 802BDE9C AFA00010 */ sw $zero, 0x10($sp) -/* 31EC10 802BDEA0 AFA00014 */ sw $zero, 0x14($sp) -/* 31EC14 802BDEA4 0C00F589 */ jal func_8003D624 -/* 31EC18 802BDEA8 AFA00018 */ sw $zero, 0x18($sp) -.L802BDEAC: -/* 31EC1C 802BDEAC 3C03802C */ lui $v1, %hi(bss_802BFEE8) -/* 31EC20 802BDEB0 8C63FEE8 */ lw $v1, %lo(bss_802BFEE8)($v1) -/* 31EC24 802BDEB4 2862000A */ slti $v0, $v1, 0xa -/* 31EC28 802BDEB8 14400011 */ bnez $v0, .L802BDF00 -/* 31EC2C 802BDEBC 00000000 */ nop -/* 31EC30 802BDEC0 8EA20008 */ lw $v0, 8($s5) -/* 31EC34 802BDEC4 30420004 */ andi $v0, $v0, 4 -/* 31EC38 802BDEC8 10400003 */ beqz $v0, .L802BDED8 -/* 31EC3C 802BDECC 2862001E */ slti $v0, $v1, 0x1e -/* 31EC40 802BDED0 1440000B */ bnez $v0, .L802BDF00 -/* 31EC44 802BDED4 00000000 */ nop -.L802BDED8: -/* 31EC48 802BDED8 3C020007 */ lui $v0, 7 -/* 31EC4C 802BDEDC 3442000C */ ori $v0, $v0, 0xc -/* 31EC50 802BDEE0 24040694 */ addiu $a0, $zero, 0x694 -/* 31EC54 802BDEE4 0000282D */ daddu $a1, $zero, $zero -/* 31EC58 802BDEE8 2406FFFC */ addiu $a2, $zero, -4 -/* 31EC5C 802BDEEC 0C052742 */ jal sfx_play_sound_at_npc -/* 31EC60 802BDEF0 AE020028 */ sw $v0, 0x28($s0) -/* 31EC64 802BDEF4 24020003 */ addiu $v0, $zero, 3 -/* 31EC68 802BDEF8 3C01802C */ lui $at, %hi(bss_802BFEE4) -/* 31EC6C 802BDEFC AC22FEE4 */ sw $v0, %lo(bss_802BFEE4)($at) -.L802BDF00: -/* 31EC70 802BDF00 860200A8 */ lh $v0, 0xa8($s0) -/* 31EC74 802BDF04 C6020038 */ lwc1 $f2, 0x38($s0) -/* 31EC78 802BDF08 3C013F00 */ lui $at, 0x3f00 -/* 31EC7C 802BDF0C 4481A000 */ mtc1 $at, $f20 -/* 31EC80 802BDF10 44820000 */ mtc1 $v0, $f0 -/* 31EC84 802BDF14 00000000 */ nop -/* 31EC88 802BDF18 46800020 */ cvt.s.w $f0, $f0 -/* 31EC8C 802BDF1C 868200B0 */ lh $v0, 0xb0($s4) -/* 31EC90 802BDF20 46140002 */ mul.s $f0, $f0, $f20 -/* 31EC94 802BDF24 00000000 */ nop -/* 31EC98 802BDF28 E7A20030 */ swc1 $f2, 0x30($sp) -/* 31EC9C 802BDF2C C6040064 */ lwc1 $f4, 0x64($s0) -/* 31ECA0 802BDF30 C6060040 */ lwc1 $f6, 0x40($s0) -/* 31ECA4 802BDF34 44821000 */ mtc1 $v0, $f2 -/* 31ECA8 802BDF38 00000000 */ nop -/* 31ECAC 802BDF3C 468010A0 */ cvt.s.w $f2, $f2 -/* 31ECB0 802BDF40 27A2003C */ addiu $v0, $sp, 0x3c -/* 31ECB4 802BDF44 46020000 */ add.s $f0, $f0, $f2 -/* 31ECB8 802BDF48 E7A40034 */ swc1 $f4, 0x34($sp) -/* 31ECBC 802BDF4C E7A60038 */ swc1 $f6, 0x38($sp) -/* 31ECC0 802BDF50 E7A0003C */ swc1 $f0, 0x3c($sp) -/* 31ECC4 802BDF54 AFA20010 */ sw $v0, 0x10($sp) -/* 31ECC8 802BDF58 C600000C */ lwc1 $f0, 0xc($s0) -/* 31ECCC 802BDF5C E7A00014 */ swc1 $f0, 0x14($sp) -/* 31ECD0 802BDF60 860200A6 */ lh $v0, 0xa6($s0) -/* 31ECD4 802BDF64 3C013E99 */ lui $at, 0x3e99 -/* 31ECD8 802BDF68 3421999A */ ori $at, $at, 0x999a -/* 31ECDC 802BDF6C 44811000 */ mtc1 $at, $f2 -/* 31ECE0 802BDF70 44820000 */ mtc1 $v0, $f0 -/* 31ECE4 802BDF74 00000000 */ nop -/* 31ECE8 802BDF78 46800020 */ cvt.s.w $f0, $f0 -/* 31ECEC 802BDF7C 46020002 */ mul.s $f0, $f0, $f2 -/* 31ECF0 802BDF80 00000000 */ nop -/* 31ECF4 802BDF84 27A50030 */ addiu $a1, $sp, 0x30 -/* 31ECF8 802BDF88 27A60034 */ addiu $a2, $sp, 0x34 -/* 31ECFC 802BDF8C E7A00018 */ swc1 $f0, 0x18($sp) -/* 31ED00 802BDF90 8E040080 */ lw $a0, 0x80($s0) -/* 31ED04 802BDF94 0C03748A */ jal npc_raycast_up_corners -/* 31ED08 802BDF98 27A70038 */ addiu $a3, $sp, 0x38 -/* 31ED0C 802BDF9C 04400039 */ bltz $v0, .L802BE084 -/* 31ED10 802BDFA0 24020003 */ addiu $v0, $zero, 3 -/* 31ED14 802BDFA4 860200A8 */ lh $v0, 0xa8($s0) -/* 31ED18 802BDFA8 44822000 */ mtc1 $v0, $f4 -/* 31ED1C 802BDFAC 00000000 */ nop -/* 31ED20 802BDFB0 46802120 */ cvt.s.w $f4, $f4 -/* 31ED24 802BDFB4 46142102 */ mul.s $f4, $f4, $f20 -/* 31ED28 802BDFB8 00000000 */ nop -/* 31ED2C 802BDFBC C6060064 */ lwc1 $f6, 0x64($s0) -/* 31ED30 802BDFC0 C7A00034 */ lwc1 $f0, 0x34($sp) -/* 31ED34 802BDFC4 C7A2003C */ lwc1 $f2, 0x3c($sp) -/* 31ED38 802BDFC8 46003001 */ sub.s $f0, $f6, $f0 -/* 31ED3C 802BDFCC 3C04802C */ lui $a0, %hi(bss_802BFEE8) -/* 31ED40 802BDFD0 8C84FEE8 */ lw $a0, %lo(bss_802BFEE8)($a0) -/* 31ED44 802BDFD4 868200B0 */ lh $v0, 0xb0($s4) -/* 31ED48 802BDFD8 46020000 */ add.s $f0, $f0, $f2 -/* 31ED4C 802BDFDC 44821000 */ mtc1 $v0, $f2 -/* 31ED50 802BDFE0 00000000 */ nop -/* 31ED54 802BDFE4 468010A0 */ cvt.s.w $f2, $f2 -/* 31ED58 802BDFE8 3C0238E3 */ lui $v0, 0x38e3 -/* 31ED5C 802BDFEC 34428E39 */ ori $v0, $v0, 0x8e39 -/* 31ED60 802BDFF0 00820018 */ mult $a0, $v0 -/* 31ED64 802BDFF4 46022100 */ add.s $f4, $f4, $f2 -/* 31ED68 802BDFF8 46040001 */ sub.s $f0, $f0, $f4 -/* 31ED6C 802BDFFC 3C013E4C */ lui $at, 0x3e4c -/* 31ED70 802BE000 3421CCCD */ ori $at, $at, 0xcccd -/* 31ED74 802BE004 44811000 */ mtc1 $at, $f2 -/* 31ED78 802BE008 00000000 */ nop -/* 31ED7C 802BE00C 46020002 */ mul.s $f0, $f0, $f2 -/* 31ED80 802BE010 00000000 */ nop -/* 31ED84 802BE014 000417C3 */ sra $v0, $a0, 0x1f -/* 31ED88 802BE018 00004010 */ mfhi $t0 -/* 31ED8C 802BE01C 00081843 */ sra $v1, $t0, 1 -/* 31ED90 802BE020 00621823 */ subu $v1, $v1, $v0 -/* 31ED94 802BE024 46003180 */ add.s $f6, $f6, $f0 -/* 31ED98 802BE028 000310C0 */ sll $v0, $v1, 3 -/* 31ED9C 802BE02C 00431021 */ addu $v0, $v0, $v1 -/* 31EDA0 802BE030 14820086 */ bne $a0, $v0, .L802BE24C -/* 31EDA4 802BE034 E6060064 */ swc1 $f6, 0x64($s0) -/* 31EDA8 802BE038 860200A8 */ lh $v0, 0xa8($s0) -/* 31EDAC 802BE03C 44821000 */ mtc1 $v0, $f2 -/* 31EDB0 802BE040 00000000 */ nop -/* 31EDB4 802BE044 468010A0 */ cvt.s.w $f2, $f2 -/* 31EDB8 802BE048 46141082 */ mul.s $f2, $f2, $f20 -/* 31EDBC 802BE04C 00000000 */ nop -/* 31EDC0 802BE050 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EDC4 802BE054 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EDC8 802BE058 46060001 */ sub.s $f0, $f0, $f6 -/* 31EDCC 802BE05C 46023180 */ add.s $f6, $f6, $f2 -/* 31EDD0 802BE060 46020001 */ sub.s $f0, $f0, $f2 -/* 31EDD4 802BE064 44063000 */ mfc1 $a2, $f6 -/* 31EDD8 802BE068 E7A00010 */ swc1 $f0, 0x10($sp) -/* 31EDDC 802BE06C 8E050038 */ lw $a1, 0x38($s0) -/* 31EDE0 802BE070 8E070040 */ lw $a3, 0x40($s0) -/* 31EDE4 802BE074 0C01C16C */ jal fx_rising_bubble -/* 31EDE8 802BE078 0000202D */ daddu $a0, $zero, $zero -/* 31EDEC 802BE07C 080AF893 */ j .L802BE24C -/* 31EDF0 802BE080 00000000 */ nop -.L802BE084: -/* 31EDF4 802BE084 3C12802C */ lui $s2, %hi(bss_802BFEE4) -/* 31EDF8 802BE088 2652FEE4 */ addiu $s2, $s2, %lo(bss_802BFEE4) -/* 31EDFC 802BE08C 8E430000 */ lw $v1, ($s2) -/* 31EE00 802BE090 1462006E */ bne $v1, $v0, .L802BE24C -/* 31EE04 802BE094 00000000 */ nop -/* 31EE08 802BE098 3C03802C */ lui $v1, %hi(D_802BFF08) -/* 31EE0C 802BE09C 2463FF08 */ addiu $v1, $v1, %lo(D_802BFF08) -/* 31EE10 802BE0A0 C4600000 */ lwc1 $f0, ($v1) -/* 31EE14 802BE0A4 3C01802C */ lui $at, %hi(D_802BFE58_320BC8) -/* 31EE18 802BE0A8 D422FE58 */ ldc1 $f2, %lo(D_802BFE58_320BC8)($at) -/* 31EE1C 802BE0AC 46000021 */ cvt.d.s $f0, $f0 -/* 31EE20 802BE0B0 46220000 */ add.d $f0, $f0, $f2 -/* 31EE24 802BE0B4 3C01802C */ lui $at, %hi(D_802BFE60_320BD0) -/* 31EE28 802BE0B8 D424FE60 */ ldc1 $f4, %lo(D_802BFE60_320BD0)($at) -/* 31EE2C 802BE0BC 46200020 */ cvt.s.d $f0, $f0 -/* 31EE30 802BE0C0 460000A1 */ cvt.d.s $f2, $f0 -/* 31EE34 802BE0C4 4622203C */ c.lt.d $f4, $f2 -/* 31EE38 802BE0C8 00000000 */ nop -/* 31EE3C 802BE0CC 45000006 */ bc1f .L802BE0E8 -/* 31EE40 802BE0D0 E4600000 */ swc1 $f0, ($v1) -/* 31EE44 802BE0D4 3C013FE6 */ lui $at, 0x3fe6 -/* 31EE48 802BE0D8 34216666 */ ori $at, $at, 0x6666 -/* 31EE4C 802BE0DC 44810000 */ mtc1 $at, $f0 -/* 31EE50 802BE0E0 00000000 */ nop -/* 31EE54 802BE0E4 E4600000 */ swc1 $f0, ($v1) -.L802BE0E8: -/* 31EE58 802BE0E8 3C0238E3 */ lui $v0, 0x38e3 -/* 31EE5C 802BE0EC 3C04802C */ lui $a0, %hi(bss_802BFEE8) -/* 31EE60 802BE0F0 8C84FEE8 */ lw $a0, %lo(bss_802BFEE8)($a0) -/* 31EE64 802BE0F4 34428E39 */ ori $v0, $v0, 0x8e39 -/* 31EE68 802BE0F8 00820018 */ mult $a0, $v0 -/* 31EE6C 802BE0FC C6020064 */ lwc1 $f2, 0x64($s0) -/* 31EE70 802BE100 C4600000 */ lwc1 $f0, ($v1) -/* 31EE74 802BE104 46001100 */ add.s $f4, $f2, $f0 -/* 31EE78 802BE108 000417C3 */ sra $v0, $a0, 0x1f -/* 31EE7C 802BE10C 00004010 */ mfhi $t0 -/* 31EE80 802BE110 00081843 */ sra $v1, $t0, 1 -/* 31EE84 802BE114 00621823 */ subu $v1, $v1, $v0 -/* 31EE88 802BE118 000310C0 */ sll $v0, $v1, 3 -/* 31EE8C 802BE11C 00431021 */ addu $v0, $v0, $v1 -/* 31EE90 802BE120 14820012 */ bne $a0, $v0, .L802BE16C -/* 31EE94 802BE124 E6040064 */ swc1 $f4, 0x64($s0) -/* 31EE98 802BE128 860200A8 */ lh $v0, 0xa8($s0) -/* 31EE9C 802BE12C 44821000 */ mtc1 $v0, $f2 -/* 31EEA0 802BE130 00000000 */ nop -/* 31EEA4 802BE134 468010A0 */ cvt.s.w $f2, $f2 -/* 31EEA8 802BE138 46141082 */ mul.s $f2, $f2, $f20 -/* 31EEAC 802BE13C 00000000 */ nop -/* 31EEB0 802BE140 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31EEB4 802BE144 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31EEB8 802BE148 46040001 */ sub.s $f0, $f0, $f4 -/* 31EEBC 802BE14C 46022100 */ add.s $f4, $f4, $f2 -/* 31EEC0 802BE150 46020001 */ sub.s $f0, $f0, $f2 -/* 31EEC4 802BE154 44062000 */ mfc1 $a2, $f4 -/* 31EEC8 802BE158 E7A00010 */ swc1 $f0, 0x10($sp) -/* 31EECC 802BE15C 8E050038 */ lw $a1, 0x38($s0) -/* 31EED0 802BE160 8E070040 */ lw $a3, 0x40($s0) -/* 31EED4 802BE164 0C01C16C */ jal fx_rising_bubble -/* 31EED8 802BE168 0000202D */ daddu $a0, $zero, $zero -.L802BE16C: -/* 31EEDC 802BE16C 860200A8 */ lh $v0, 0xa8($s0) -/* 31EEE0 802BE170 44822000 */ mtc1 $v0, $f4 -/* 31EEE4 802BE174 00000000 */ nop -/* 31EEE8 802BE178 46802120 */ cvt.s.w $f4, $f4 -/* 31EEEC 802BE17C 46142102 */ mul.s $f4, $f4, $f20 -/* 31EEF0 802BE180 00000000 */ nop -/* 31EEF4 802BE184 3C11802C */ lui $s1, %hi(OriginalPlayerY) -/* 31EEF8 802BE188 2631FEE0 */ addiu $s1, $s1, %lo(OriginalPlayerY) -/* 31EEFC 802BE18C C6200000 */ lwc1 $f0, ($s1) -/* 31EF00 802BE190 C6020064 */ lwc1 $f2, 0x64($s0) -/* 31EF04 802BE194 46020001 */ sub.s $f0, $f0, $f2 -/* 31EF08 802BE198 46040001 */ sub.s $f0, $f0, $f4 -/* 31EF0C 802BE19C 44801000 */ mtc1 $zero, $f2 -/* 31EF10 802BE1A0 00000000 */ nop -/* 31EF14 802BE1A4 4602003E */ c.le.s $f0, $f2 -/* 31EF18 802BE1A8 00000000 */ nop -/* 31EF1C 802BE1AC 45000027 */ bc1f .L802BE24C -/* 31EF20 802BE1B0 00000000 */ nop -/* 31EF24 802BE1B4 3C03802C */ lui $v1, %hi(bss_802BFEF4) -/* 31EF28 802BE1B8 2463FEF4 */ addiu $v1, $v1, %lo(bss_802BFEF4) -/* 31EF2C 802BE1BC 8C620000 */ lw $v0, ($v1) -/* 31EF30 802BE1C0 10400012 */ beqz $v0, .L802BE20C -/* 31EF34 802BE1C4 3C040001 */ lui $a0, 1 -/* 31EF38 802BE1C8 34840002 */ ori $a0, $a0, 2 -/* 31EF3C 802BE1CC 0000282D */ daddu $a1, $zero, $zero -/* 31EF40 802BE1D0 00A0302D */ daddu $a2, $a1, $zero -/* 31EF44 802BE1D4 00A0382D */ daddu $a3, $a1, $zero -/* 31EF48 802BE1D8 AC600000 */ sw $zero, ($v1) -/* 31EF4C 802BE1DC AFA00010 */ sw $zero, 0x10($sp) -/* 31EF50 802BE1E0 AFA00014 */ sw $zero, 0x14($sp) -/* 31EF54 802BE1E4 0C0B77FE */ jal func_802DDFF8 -/* 31EF58 802BE1E8 AFA00018 */ sw $zero, 0x18($sp) -/* 31EF5C 802BE1EC 0200202D */ daddu $a0, $s0, $zero -/* 31EF60 802BE1F0 0000282D */ daddu $a1, $zero, $zero -/* 31EF64 802BE1F4 00A0302D */ daddu $a2, $a1, $zero -/* 31EF68 802BE1F8 00A0382D */ daddu $a3, $a1, $zero -/* 31EF6C 802BE1FC AFA00010 */ sw $zero, 0x10($sp) -/* 31EF70 802BE200 AFA00014 */ sw $zero, 0x14($sp) -/* 31EF74 802BE204 0C00F589 */ jal func_8003D624 -/* 31EF78 802BE208 AFA00018 */ sw $zero, 0x18($sp) -.L802BE20C: -/* 31EF7C 802BE20C 860200A8 */ lh $v0, 0xa8($s0) -/* 31EF80 802BE210 3C030007 */ lui $v1, 7 -/* 31EF84 802BE214 44821000 */ mtc1 $v0, $f2 -/* 31EF88 802BE218 00000000 */ nop -/* 31EF8C 802BE21C 468010A0 */ cvt.s.w $f2, $f2 -/* 31EF90 802BE220 46141082 */ mul.s $f2, $f2, $f20 -/* 31EF94 802BE224 00000000 */ nop -/* 31EF98 802BE228 3463000A */ ori $v1, $v1, 0xa -/* 31EF9C 802BE22C 3C040008 */ lui $a0, 8 -/* 31EFA0 802BE230 C6200000 */ lwc1 $f0, ($s1) -/* 31EFA4 802BE234 3484000F */ ori $a0, $a0, 0xf -/* 31EFA8 802BE238 46020001 */ sub.s $f0, $f0, $f2 -/* 31EFAC 802BE23C AE400000 */ sw $zero, ($s2) -/* 31EFB0 802BE240 AE030028 */ sw $v1, 0x28($s0) -/* 31EFB4 802BE244 0C037FDE */ jal suggest_player_anim_setUnkFlag -/* 31EFB8 802BE248 E6000064 */ swc1 $f0, 0x64($s0) -.L802BE24C: -/* 31EFBC 802BE24C 8FBF0058 */ lw $ra, 0x58($sp) -/* 31EFC0 802BE250 8FB50054 */ lw $s5, 0x54($sp) -/* 31EFC4 802BE254 8FB40050 */ lw $s4, 0x50($sp) -/* 31EFC8 802BE258 8FB3004C */ lw $s3, 0x4c($sp) -/* 31EFCC 802BE25C 8FB20048 */ lw $s2, 0x48($sp) -/* 31EFD0 802BE260 8FB10044 */ lw $s1, 0x44($sp) -/* 31EFD4 802BE264 8FB00040 */ lw $s0, 0x40($sp) -/* 31EFD8 802BE268 D7BA0078 */ ldc1 $f26, 0x78($sp) -/* 31EFDC 802BE26C D7B80070 */ ldc1 $f24, 0x70($sp) -/* 31EFE0 802BE270 D7B60068 */ ldc1 $f22, 0x68($sp) -/* 31EFE4 802BE274 D7B40060 */ ldc1 $f20, 0x60($sp) -/* 31EFE8 802BE278 03E00008 */ jr $ra -/* 31EFEC 802BE27C 27BD0080 */ addiu $sp, $sp, 0x80 diff --git a/ver/us/asm/nonmatchings/world/partner/sushie/func_802BE3A4_31F114.s b/ver/us/asm/nonmatchings/world/partner/sushie/func_802BE3A4_31F114.s deleted file mode 100644 index 1a76201e20..0000000000 --- a/ver/us/asm/nonmatchings/world/partner/sushie/func_802BE3A4_31F114.s +++ /dev/null @@ -1,1173 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -.section .rodata - -dlabel jtbl_802BFE68_320BD8 -.word .L802BE474_31F1E4, .L802BEB18_31F888, .L802BF4F0_320260, .L802BF204_31FF74, .L802BF21C_31FF8C, .L802BF24C_31FFBC, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF400_320170, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BF4F0_320260, .L802BE58C_31F2FC, .L802BE77C_31F4EC, .L802BE9D8_31F748, .L802BE998_31F708, .L802BE9D8_31F748, .L802BE9E4_31F754 - -dlabel D_802BFED0_320C40 -.double 0.6 - -.section .text - -glabel func_802BE3A4_31F114 -/* 31F114 802BE3A4 27BDFF90 */ addiu $sp, $sp, -0x70 -/* 31F118 802BE3A8 AFB5005C */ sw $s5, 0x5c($sp) -/* 31F11C 802BE3AC 0080A82D */ daddu $s5, $a0, $zero -/* 31F120 802BE3B0 AFB20050 */ sw $s2, 0x50($sp) -/* 31F124 802BE3B4 3C128011 */ lui $s2, %hi(gPlayerStatus) -/* 31F128 802BE3B8 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus) -/* 31F12C 802BE3BC AFB00048 */ sw $s0, 0x48($sp) -/* 31F130 802BE3C0 3C108011 */ lui $s0, %hi(gPlayerData) -/* 31F134 802BE3C4 2610F290 */ addiu $s0, $s0, %lo(gPlayerData) -/* 31F138 802BE3C8 AFB60060 */ sw $s6, 0x60($sp) -/* 31F13C 802BE3CC 3C168016 */ lui $s6, %hi(gCollisionStatus) -/* 31F140 802BE3D0 26D6A550 */ addiu $s6, $s6, %lo(gCollisionStatus) -/* 31F144 802BE3D4 AFB40058 */ sw $s4, 0x58($sp) -/* 31F148 802BE3D8 3C148011 */ lui $s4, %hi(gPartnerActionStatus) -/* 31F14C 802BE3DC 2694EBB0 */ addiu $s4, $s4, %lo(gPartnerActionStatus) -/* 31F150 802BE3E0 AFBF0064 */ sw $ra, 0x64($sp) -/* 31F154 802BE3E4 AFB30054 */ sw $s3, 0x54($sp) -/* 31F158 802BE3E8 AFB1004C */ sw $s1, 0x4c($sp) -/* 31F15C 802BE3EC F7B40068 */ sdc1 $f20, 0x68($sp) -/* 31F160 802BE3F0 8EB1014C */ lw $s1, 0x14c($s5) -/* 31F164 802BE3F4 10A0000F */ beqz $a1, .L802BE434 -/* 31F168 802BE3F8 3C04FFBF */ lui $a0, 0xffbf -/* 31F16C 802BE3FC 0C0AFE48 */ jal func_802BF920_320690 -/* 31F170 802BE400 0220202D */ daddu $a0, $s1, $zero -/* 31F174 802BE404 3C01802C */ lui $at, %hi(bss_802BFEFC) -/* 31F178 802BE408 AC20FEFC */ sw $zero, %lo(bss_802BFEFC)($at) -/* 31F17C 802BE40C 3C01802C */ lui $at, %hi(D_802BFEF8) -/* 31F180 802BE410 AC20FEF8 */ sw $zero, %lo(D_802BFEF8)($at) -/* 31F184 802BE414 3C01802C */ lui $at, %hi(D_802BFF00) -/* 31F188 802BE418 AC20FF00 */ sw $zero, %lo(D_802BFF00)($at) -/* 31F18C 802BE41C 3C01802C */ lui $at, %hi(D_802BFF04) -/* 31F190 802BE420 AC20FF04 */ sw $zero, %lo(D_802BFF04)($at) -/* 31F194 802BE424 3C01802C */ lui $at, %hi(D_802BFF08) -/* 31F198 802BE428 AC20FF08 */ sw $zero, %lo(D_802BFF08)($at) -/* 31F19C 802BE42C AEA00070 */ sw $zero, 0x70($s5) -/* 31F1A0 802BE430 3C04FFBF */ lui $a0, 0xffbf -.L802BE434: -/* 31F1A4 802BE434 3484FFFF */ ori $a0, $a0, 0xffff -/* 31F1A8 802BE438 8E020310 */ lw $v0, 0x310($s0) -/* 31F1AC 802BE43C 8E430004 */ lw $v1, 4($s2) -/* 31F1B0 802BE440 24420001 */ addiu $v0, $v0, 1 -/* 31F1B4 802BE444 00641824 */ and $v1, $v1, $a0 -/* 31F1B8 802BE448 AE020310 */ sw $v0, 0x310($s0) -/* 31F1BC 802BE44C AE430004 */ sw $v1, 4($s2) -/* 31F1C0 802BE450 8EA30070 */ lw $v1, 0x70($s5) -/* 31F1C4 802BE454 2C62001A */ sltiu $v0, $v1, 0x1a -/* 31F1C8 802BE458 10400425 */ beqz $v0, .L802BF4F0_320260 -/* 31F1CC 802BE45C 00031080 */ sll $v0, $v1, 2 -/* 31F1D0 802BE460 3C01802C */ lui $at, %hi(jtbl_802BFE68_320BD8) -/* 31F1D4 802BE464 00220821 */ addu $at, $at, $v0 -/* 31F1D8 802BE468 8C22FE68 */ lw $v0, %lo(jtbl_802BFE68_320BD8)($at) -/* 31F1DC 802BE46C 00400008 */ jr $v0 -/* 31F1E0 802BE470 00000000 */ nop -.L802BE474_31F1E4: -/* 31F1E4 802BE474 3C138007 */ lui $s3, %hi(gGameStatusPtr) -/* 31F1E8 802BE478 2673419C */ addiu $s3, $s3, %lo(gGameStatusPtr) -/* 31F1EC 802BE47C 8E620000 */ lw $v0, ($s3) -/* 31F1F0 802BE480 8042007D */ lb $v0, 0x7d($v0) -/* 31F1F4 802BE484 14400012 */ bnez $v0, .L802BE4D0 -/* 31F1F8 802BE488 3C040008 */ lui $a0, 8 -/* 31F1FC 802BE48C 86C40012 */ lh $a0, 0x12($s6) -/* 31F200 802BE490 0480000A */ bltz $a0, .L802BE4BC -/* 31F204 802BE494 AFA40040 */ sw $a0, 0x40($sp) -/* 31F208 802BE498 30824000 */ andi $v0, $a0, 0x4000 -/* 31F20C 802BE49C 14400415 */ bnez $v0, .L802BF4F4 -/* 31F210 802BE4A0 24020001 */ addiu $v0, $zero, 1 -/* 31F214 802BE4A4 0C016F6A */ jal get_collider_flags -/* 31F218 802BE4A8 00000000 */ nop -/* 31F21C 802BE4AC 304200FF */ andi $v0, $v0, 0xff -/* 31F220 802BE4B0 24030004 */ addiu $v1, $zero, 4 -/* 31F224 802BE4B4 10430003 */ beq $v0, $v1, .L802BE4C4 -/* 31F228 802BE4B8 AFA20040 */ sw $v0, 0x40($sp) -.L802BE4BC: -/* 31F22C 802BE4BC 080AFD3D */ j .L802BF4F4 -/* 31F230 802BE4C0 24020001 */ addiu $v0, $zero, 1 -.L802BE4C4: -/* 31F234 802BE4C4 24020014 */ addiu $v0, $zero, 0x14 -/* 31F238 802BE4C8 080AFD3C */ j .L802BF4F0_320260 -/* 31F23C 802BE4CC AEA20070 */ sw $v0, 0x70($s5) -.L802BE4D0: -/* 31F240 802BE4D0 C622003C */ lwc1 $f2, 0x3c($s1) -/* 31F244 802BE4D4 3C014180 */ lui $at, 0x4180 -/* 31F248 802BE4D8 44810000 */ mtc1 $at, $f0 -/* 31F24C 802BE4DC 3484000F */ ori $a0, $a0, 0xf -/* 31F250 802BE4E0 46001000 */ add.s $f0, $f2, $f0 -/* 31F254 802BE4E4 24100001 */ addiu $s0, $zero, 1 -/* 31F258 802BE4E8 E6220064 */ swc1 $f2, 0x64($s1) -/* 31F25C 802BE4EC E640002C */ swc1 $f0, 0x2c($s2) -/* 31F260 802BE4F0 8E220000 */ lw $v0, ($s1) -/* 31F264 802BE4F4 2403FDFF */ addiu $v1, $zero, -0x201 -/* 31F268 802BE4F8 3C01802C */ lui $at, %hi(D_802BFEEC) -/* 31F26C 802BE4FC AC30FEEC */ sw $s0, %lo(D_802BFEEC)($at) -/* 31F270 802BE500 34420008 */ ori $v0, $v0, 8 -/* 31F274 802BE504 00431024 */ and $v0, $v0, $v1 -/* 31F278 802BE508 34420100 */ ori $v0, $v0, 0x100 -/* 31F27C 802BE50C 0C037FDE */ jal suggest_player_anim_setUnkFlag -/* 31F280 802BE510 AE220000 */ sw $v0, ($s1) -/* 31F284 802BE514 0C038039 */ jal disable_player_shadow -/* 31F288 802BE518 00000000 */ nop -/* 31F28C 802BE51C 0C00EAFF */ jal disable_npc_shadow -/* 31F290 802BE520 0220202D */ daddu $a0, $s1, $zero -/* 31F294 802BE524 0220202D */ daddu $a0, $s1, $zero -/* 31F298 802BE528 24050004 */ addiu $a1, $zero, 4 -/* 31F29C 802BE52C 24060002 */ addiu $a2, $zero, 2 -/* 31F2A0 802BE530 0000382D */ daddu $a3, $zero, $zero -/* 31F2A4 802BE534 AFA00010 */ sw $zero, 0x10($sp) -/* 31F2A8 802BE538 AFA00014 */ sw $zero, 0x14($sp) -/* 31F2AC 802BE53C 0C00F589 */ jal func_8003D624 -/* 31F2B0 802BE540 AFA00018 */ sw $zero, 0x18($sp) -/* 31F2B4 802BE544 3C020007 */ lui $v0, 7 -/* 31F2B8 802BE548 3442000A */ ori $v0, $v0, 0xa -/* 31F2BC 802BE54C AE220028 */ sw $v0, 0x28($s1) -/* 31F2C0 802BE550 C640005C */ lwc1 $f0, 0x5c($s2) -/* 31F2C4 802BE554 8E620000 */ lw $v0, ($s3) -/* 31F2C8 802BE558 AE200014 */ sw $zero, 0x14($s1) -/* 31F2CC 802BE55C E6200018 */ swc1 $f0, 0x18($s1) -/* 31F2D0 802BE560 A2900000 */ sb $s0, ($s4) -/* 31F2D4 802BE564 A040007D */ sb $zero, 0x7d($v0) -/* 31F2D8 802BE568 24020007 */ addiu $v0, $zero, 7 -/* 31F2DC 802BE56C A2820003 */ sb $v0, 3($s4) -/* 31F2E0 802BE570 3C01802C */ lui $at, %hi(bss_802BFEE4) -/* 31F2E4 802BE574 AC20FEE4 */ sw $zero, %lo(bss_802BFEE4)($at) -/* 31F2E8 802BE578 3C01802C */ lui $at, %hi(bss_802BFEE8) -/* 31F2EC 802BE57C AC20FEE8 */ sw $zero, %lo(bss_802BFEE8)($at) -/* 31F2F0 802BE580 AEA00078 */ sw $zero, 0x78($s5) -/* 31F2F4 802BE584 080AFD3C */ j .L802BF4F0_320260 -/* 31F2F8 802BE588 AEB00070 */ sw $s0, 0x70($s5) -.L802BE58C_31F2FC: -/* 31F2FC 802BE58C 86C40012 */ lh $a0, 0x12($s6) -/* 31F300 802BE590 0480FFCA */ bltz $a0, .L802BE4BC -/* 31F304 802BE594 27B00020 */ addiu $s0, $sp, 0x20 -/* 31F308 802BE598 0200282D */ daddu $a1, $s0, $zero -/* 31F30C 802BE59C 27B30024 */ addiu $s3, $sp, 0x24 -/* 31F310 802BE5A0 0260302D */ daddu $a2, $s3, $zero -/* 31F314 802BE5A4 27B40028 */ addiu $s4, $sp, 0x28 -/* 31F318 802BE5A8 0C016F84 */ jal get_collider_center -/* 31F31C 802BE5AC 0280382D */ daddu $a3, $s4, $zero -/* 31F320 802BE5B0 C7AC0020 */ lwc1 $f12, 0x20($sp) -/* 31F324 802BE5B4 C7AE0028 */ lwc1 $f14, 0x28($sp) -/* 31F328 802BE5B8 8E460028 */ lw $a2, 0x28($s2) -/* 31F32C 802BE5BC 0C00A720 */ jal atan2 -/* 31F330 802BE5C0 8E470030 */ lw $a3, 0x30($s2) -/* 31F334 802BE5C4 0000202D */ daddu $a0, $zero, $zero -/* 31F338 802BE5C8 0200282D */ daddu $a1, $s0, $zero -/* 31F33C 802BE5CC 0260302D */ daddu $a2, $s3, $zero -/* 31F340 802BE5D0 864200B2 */ lh $v0, 0xb2($s2) -/* 31F344 802BE5D4 0280382D */ daddu $a3, $s4, $zero -/* 31F348 802BE5D8 E7A0002C */ swc1 $f0, 0x2c($sp) -/* 31F34C 802BE5DC C6400028 */ lwc1 $f0, 0x28($s2) -/* 31F350 802BE5E0 C644002C */ lwc1 $f4, 0x2c($s2) -/* 31F354 802BE5E4 C6460030 */ lwc1 $f6, 0x30($s2) -/* 31F358 802BE5E8 3C013F00 */ lui $at, 0x3f00 -/* 31F35C 802BE5EC 4481A000 */ mtc1 $at, $f20 -/* 31F360 802BE5F0 44821000 */ mtc1 $v0, $f2 -/* 31F364 802BE5F4 00000000 */ nop -/* 31F368 802BE5F8 468010A0 */ cvt.s.w $f2, $f2 -/* 31F36C 802BE5FC 864200B2 */ lh $v0, 0xb2($s2) -/* 31F370 802BE600 46141082 */ mul.s $f2, $f2, $f20 -/* 31F374 802BE604 00000000 */ nop -/* 31F378 802BE608 E7A00020 */ swc1 $f0, 0x20($sp) -/* 31F37C 802BE60C E7A40024 */ swc1 $f4, 0x24($sp) -/* 31F380 802BE610 E7A60028 */ swc1 $f6, 0x28($sp) -/* 31F384 802BE614 44820000 */ mtc1 $v0, $f0 -/* 31F388 802BE618 00000000 */ nop -/* 31F38C 802BE61C 46800020 */ cvt.s.w $f0, $f0 -/* 31F390 802BE620 46000000 */ add.s $f0, $f0, $f0 -/* 31F394 802BE624 27A2002C */ addiu $v0, $sp, 0x2c -/* 31F398 802BE628 AFA20018 */ sw $v0, 0x18($sp) -/* 31F39C 802BE62C E7A00014 */ swc1 $f0, 0x14($sp) -/* 31F3A0 802BE630 0C0AF8A0 */ jal func_802BE280_31EFF0 -/* 31F3A4 802BE634 E7A20010 */ swc1 $f2, 0x10($sp) -/* 31F3A8 802BE638 2403FFFF */ addiu $v1, $zero, -1 -/* 31F3AC 802BE63C 04400004 */ bltz $v0, .L802BE650 -/* 31F3B0 802BE640 AFA20040 */ sw $v0, 0x40($sp) -/* 31F3B4 802BE644 0C016F6A */ jal get_collider_flags -/* 31F3B8 802BE648 0040202D */ daddu $a0, $v0, $zero -/* 31F3BC 802BE64C 304300FF */ andi $v1, $v0, 0xff -.L802BE650: -/* 31F3C0 802BE650 24020004 */ addiu $v0, $zero, 4 -/* 31F3C4 802BE654 146203A7 */ bne $v1, $v0, .L802BF4F4 -/* 31F3C8 802BE658 24020001 */ addiu $v0, $zero, 1 -/* 31F3CC 802BE65C 3C01802C */ lui $at, %hi(D_802BFEEC) -/* 31F3D0 802BE660 AC22FEEC */ sw $v0, %lo(D_802BFEEC)($at) -/* 31F3D4 802BE664 0C039769 */ jal set_action_state -/* 31F3D8 802BE668 24040021 */ addiu $a0, $zero, 0x21 -/* 31F3DC 802BE66C 0C038045 */ jal disable_player_static_collisions -/* 31F3E0 802BE670 00000000 */ nop -/* 31F3E4 802BE674 0C03805E */ jal disable_player_input -/* 31F3E8 802BE678 00000000 */ nop -/* 31F3EC 802BE67C 3C020008 */ lui $v0, 8 -/* 31F3F0 802BE680 AE220080 */ sw $v0, 0x80($s1) -/* 31F3F4 802BE684 C6400028 */ lwc1 $f0, 0x28($s2) -/* 31F3F8 802BE688 3C064220 */ lui $a2, 0x4220 -/* 31F3FC 802BE68C E6200060 */ swc1 $f0, 0x60($s1) -/* 31F400 802BE690 C640002C */ lwc1 $f0, 0x2c($s2) -/* 31F404 802BE694 E6200064 */ swc1 $f0, 0x64($s1) -/* 31F408 802BE698 C6420030 */ lwc1 $f2, 0x30($s2) -/* 31F40C 802BE69C C7A0002C */ lwc1 $f0, 0x2c($sp) -/* 31F410 802BE6A0 26240060 */ addiu $a0, $s1, 0x60 -/* 31F414 802BE6A4 E620000C */ swc1 $f0, 0xc($s1) -/* 31F418 802BE6A8 E6220068 */ swc1 $f2, 0x68($s1) -/* 31F41C 802BE6AC E6400080 */ swc1 $f0, 0x80($s2) -/* 31F420 802BE6B0 8E27000C */ lw $a3, 0xc($s1) -/* 31F424 802BE6B4 3C0142B4 */ lui $at, 0x42b4 -/* 31F428 802BE6B8 44810000 */ mtc1 $at, $f0 -/* 31F42C 802BE6BC 26250068 */ addiu $a1, $s1, 0x68 -/* 31F430 802BE6C0 0C00A7E7 */ jal add_vec2D_polar -/* 31F434 802BE6C4 E6200034 */ swc1 $f0, 0x34($s1) -/* 31F438 802BE6C8 C6200060 */ lwc1 $f0, 0x60($s1) -/* 31F43C 802BE6CC C6220064 */ lwc1 $f2, 0x64($s1) -/* 31F440 802BE6D0 C6240068 */ lwc1 $f4, 0x68($s1) -/* 31F444 802BE6D4 3C0142C8 */ lui $at, 0x42c8 -/* 31F448 802BE6D8 44813000 */ mtc1 $at, $f6 -/* 31F44C 802BE6DC 27A20030 */ addiu $v0, $sp, 0x30 -/* 31F450 802BE6E0 E7A00020 */ swc1 $f0, 0x20($sp) -/* 31F454 802BE6E4 E7A20024 */ swc1 $f2, 0x24($sp) -/* 31F458 802BE6E8 E7A40028 */ swc1 $f4, 0x28($sp) -/* 31F45C 802BE6EC E7A60030 */ swc1 $f6, 0x30($sp) -/* 31F460 802BE6F0 AFA20010 */ sw $v0, 0x10($sp) -/* 31F464 802BE6F4 C620000C */ lwc1 $f0, 0xc($s1) -/* 31F468 802BE6F8 0200282D */ daddu $a1, $s0, $zero -/* 31F46C 802BE6FC E7A00014 */ swc1 $f0, 0x14($sp) -/* 31F470 802BE700 862200A6 */ lh $v0, 0xa6($s1) -/* 31F474 802BE704 0260302D */ daddu $a2, $s3, $zero -/* 31F478 802BE708 44820000 */ mtc1 $v0, $f0 -/* 31F47C 802BE70C 00000000 */ nop -/* 31F480 802BE710 46800020 */ cvt.s.w $f0, $f0 -/* 31F484 802BE714 E7A00018 */ swc1 $f0, 0x18($sp) -/* 31F488 802BE718 8E240080 */ lw $a0, 0x80($s1) -/* 31F48C 802BE71C 0C0371DE */ jal npc_raycast_down_around -/* 31F490 802BE720 0280382D */ daddu $a3, $s4, $zero -/* 31F494 802BE724 3C050007 */ lui $a1, 7 -/* 31F498 802BE728 34A50003 */ ori $a1, $a1, 3 -/* 31F49C 802BE72C 862300A8 */ lh $v1, 0xa8($s1) -/* 31F4A0 802BE730 3C040001 */ lui $a0, 1 -/* 31F4A4 802BE734 44830000 */ mtc1 $v1, $f0 -/* 31F4A8 802BE738 00000000 */ nop -/* 31F4AC 802BE73C 46800020 */ cvt.s.w $f0, $f0 -/* 31F4B0 802BE740 46140002 */ mul.s $f0, $f0, $f20 -/* 31F4B4 802BE744 00000000 */ nop -/* 31F4B8 802BE748 C7A20024 */ lwc1 $f2, 0x24($sp) -/* 31F4BC 802BE74C 34840002 */ ori $a0, $a0, 2 -/* 31F4C0 802BE750 AFA20040 */ sw $v0, 0x40($sp) -/* 31F4C4 802BE754 2402000C */ addiu $v0, $zero, 0xc -/* 31F4C8 802BE758 46001081 */ sub.s $f2, $f2, $f0 -/* 31F4CC 802BE75C AE250028 */ sw $a1, 0x28($s1) -/* 31F4D0 802BE760 A622008E */ sh $v0, 0x8e($s1) -/* 31F4D4 802BE764 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31F4D8 802BE768 E6220064 */ swc1 $f2, 0x64($s1) -/* 31F4DC 802BE76C 8EA20070 */ lw $v0, 0x70($s5) -/* 31F4E0 802BE770 24420001 */ addiu $v0, $v0, 1 -/* 31F4E4 802BE774 080AFD3C */ j .L802BF4F0_320260 -/* 31F4E8 802BE778 AEA20070 */ sw $v0, 0x70($s5) -.L802BE77C_31F4EC: -/* 31F4EC 802BE77C C6200060 */ lwc1 $f0, 0x60($s1) -/* 31F4F0 802BE780 C62A0038 */ lwc1 $f10, 0x38($s1) -/* 31F4F4 802BE784 8622008E */ lh $v0, 0x8e($s1) -/* 31F4F8 802BE788 C6240064 */ lwc1 $f4, 0x64($s1) -/* 31F4FC 802BE78C C628003C */ lwc1 $f8, 0x3c($s1) -/* 31F500 802BE790 C6260040 */ lwc1 $f6, 0x40($s1) -/* 31F504 802BE794 44821000 */ mtc1 $v0, $f2 -/* 31F508 802BE798 00000000 */ nop -/* 31F50C 802BE79C 468010A0 */ cvt.s.w $f2, $f2 -/* 31F510 802BE7A0 0040202D */ daddu $a0, $v0, $zero -/* 31F514 802BE7A4 460A0001 */ sub.s $f0, $f0, $f10 -/* 31F518 802BE7A8 0080182D */ daddu $v1, $a0, $zero -/* 31F51C 802BE7AC 9622008E */ lhu $v0, 0x8e($s1) -/* 31F520 802BE7B0 46082101 */ sub.s $f4, $f4, $f8 -/* 31F524 802BE7B4 2442FFFF */ addiu $v0, $v0, -1 -/* 31F528 802BE7B8 A622008E */ sh $v0, 0x8e($s1) -/* 31F52C 802BE7BC 00021400 */ sll $v0, $v0, 0x10 -/* 31F530 802BE7C0 46020003 */ div.s $f0, $f0, $f2 -/* 31F534 802BE7C4 46005280 */ add.s $f10, $f10, $f0 -/* 31F538 802BE7C8 C6220068 */ lwc1 $f2, 0x68($s1) -/* 31F53C 802BE7CC 44840000 */ mtc1 $a0, $f0 -/* 31F540 802BE7D0 00000000 */ nop -/* 31F544 802BE7D4 46800020 */ cvt.s.w $f0, $f0 -/* 31F548 802BE7D8 46061081 */ sub.s $f2, $f2, $f6 -/* 31F54C 802BE7DC 46002103 */ div.s $f4, $f4, $f0 -/* 31F550 802BE7E0 44830000 */ mtc1 $v1, $f0 -/* 31F554 802BE7E4 00000000 */ nop -/* 31F558 802BE7E8 46800020 */ cvt.s.w $f0, $f0 -/* 31F55C 802BE7EC 46044200 */ add.s $f8, $f8, $f4 -/* 31F560 802BE7F0 00021C03 */ sra $v1, $v0, 0x10 -/* 31F564 802BE7F4 46001083 */ div.s $f2, $f2, $f0 -/* 31F568 802BE7F8 46023180 */ add.s $f6, $f6, $f2 -/* 31F56C 802BE7FC E62A0038 */ swc1 $f10, 0x38($s1) -/* 31F570 802BE800 E628003C */ swc1 $f8, 0x3c($s1) -/* 31F574 802BE804 1060000D */ beqz $v1, .L802BE83C -/* 31F578 802BE808 E6260040 */ swc1 $f6, 0x40($s1) -/* 31F57C 802BE80C 24020002 */ addiu $v0, $zero, 2 -/* 31F580 802BE810 14620338 */ bne $v1, $v0, .L802BF4F4 -/* 31F584 802BE814 0000102D */ daddu $v0, $zero, $zero -/* 31F588 802BE818 24042081 */ addiu $a0, $zero, 0x2081 -/* 31F58C 802BE81C 0000282D */ daddu $a1, $zero, $zero -/* 31F590 802BE820 0C052742 */ jal sfx_play_sound_at_npc -/* 31F594 802BE824 2406FFFC */ addiu $a2, $zero, -4 -/* 31F598 802BE828 3C040001 */ lui $a0, 1 -/* 31F59C 802BE82C 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31F5A0 802BE830 34840006 */ ori $a0, $a0, 6 -/* 31F5A4 802BE834 080AFD3D */ j .L802BF4F4 -/* 31F5A8 802BE838 0000102D */ daddu $v0, $zero, $zero -.L802BE83C: -/* 31F5AC 802BE83C 0220202D */ daddu $a0, $s1, $zero -/* 31F5B0 802BE840 8E220000 */ lw $v0, ($s1) -/* 31F5B4 802BE844 3C030001 */ lui $v1, 1 -/* 31F5B8 802BE848 AE230080 */ sw $v1, 0x80($s1) -/* 31F5BC 802BE84C 2403FDBF */ addiu $v1, $zero, -0x241 -/* 31F5C0 802BE850 34420008 */ ori $v0, $v0, 8 -/* 31F5C4 802BE854 00431024 */ and $v0, $v0, $v1 -/* 31F5C8 802BE858 0C00EAFF */ jal disable_npc_shadow -/* 31F5CC 802BE85C AE220000 */ sw $v0, ($s1) -/* 31F5D0 802BE860 0220202D */ daddu $a0, $s1, $zero -/* 31F5D4 802BE864 24050004 */ addiu $a1, $zero, 4 -/* 31F5D8 802BE868 24060002 */ addiu $a2, $zero, 2 -/* 31F5DC 802BE86C 0000382D */ daddu $a3, $zero, $zero -/* 31F5E0 802BE870 AFA00010 */ sw $zero, 0x10($sp) -/* 31F5E4 802BE874 AFA00014 */ sw $zero, 0x14($sp) -/* 31F5E8 802BE878 0C00F589 */ jal func_8003D624 -/* 31F5EC 802BE87C AFA00018 */ sw $zero, 0x18($sp) -/* 31F5F0 802BE880 3C020007 */ lui $v0, 7 -/* 31F5F4 802BE884 3442000A */ ori $v0, $v0, 0xa -/* 31F5F8 802BE888 3C030040 */ lui $v1, 0x40 -/* 31F5FC 802BE88C AE220028 */ sw $v0, 0x28($s1) -/* 31F600 802BE890 C64C0028 */ lwc1 $f12, 0x28($s2) -/* 31F604 802BE894 8E420000 */ lw $v0, ($s2) -/* 31F608 802BE898 C64E0030 */ lwc1 $f14, 0x30($s2) -/* 31F60C 802BE89C 00431025 */ or $v0, $v0, $v1 -/* 31F610 802BE8A0 AE420000 */ sw $v0, ($s2) -/* 31F614 802BE8A4 8E260060 */ lw $a2, 0x60($s1) -/* 31F618 802BE8A8 0C00A7B5 */ jal dist2D -/* 31F61C 802BE8AC 8E270068 */ lw $a3, 0x68($s1) -/* 31F620 802BE8B0 3C0140A0 */ lui $at, 0x40a0 -/* 31F624 802BE8B4 44811000 */ mtc1 $at, $f2 -/* 31F628 802BE8B8 3C013F19 */ lui $at, 0x3f19 -/* 31F62C 802BE8BC 3421999A */ ori $at, $at, 0x999a -/* 31F630 802BE8C0 44812000 */ mtc1 $at, $f4 -/* 31F634 802BE8C4 C6260064 */ lwc1 $f6, 0x64($s1) -/* 31F638 802BE8C8 E622001C */ swc1 $f2, 0x1c($s1) -/* 31F63C 802BE8CC E6240014 */ swc1 $f4, 0x14($s1) -/* 31F640 802BE8D0 C642002C */ lwc1 $f2, 0x2c($s2) -/* 31F644 802BE8D4 3C040001 */ lui $a0, 1 -/* 31F648 802BE8D8 46023181 */ sub.s $f6, $f6, $f2 -/* 31F64C 802BE8DC C622001C */ lwc1 $f2, 0x1c($s1) -/* 31F650 802BE8E0 34840007 */ ori $a0, $a0, 7 -/* 31F654 802BE8E4 46021080 */ add.s $f2, $f2, $f2 -/* 31F658 802BE8E8 E7A00030 */ swc1 $f0, 0x30($sp) -/* 31F65C 802BE8EC E7A60024 */ swc1 $f6, 0x24($sp) -/* 31F660 802BE8F0 46041083 */ div.s $f2, $f2, $f4 -/* 31F664 802BE8F4 4600140D */ trunc.w.s $f16, $f2 -/* 31F668 802BE8F8 44028000 */ mfc1 $v0, $f16 -/* 31F66C 802BE8FC 00000000 */ nop -/* 31F670 802BE900 A622008E */ sh $v0, 0x8e($s1) -/* 31F674 802BE904 00021400 */ sll $v0, $v0, 0x10 -/* 31F678 802BE908 00021403 */ sra $v0, $v0, 0x10 -/* 31F67C 802BE90C 44824000 */ mtc1 $v0, $f8 -/* 31F680 802BE910 00000000 */ nop -/* 31F684 802BE914 46804220 */ cvt.s.w $f8, $f8 -/* 31F688 802BE918 8623008E */ lh $v1, 0x8e($s1) -/* 31F68C 802BE91C C622001C */ lwc1 $f2, 0x1c($s1) -/* 31F690 802BE920 44832000 */ mtc1 $v1, $f4 -/* 31F694 802BE924 00000000 */ nop -/* 31F698 802BE928 46802120 */ cvt.s.w $f4, $f4 -/* 31F69C 802BE92C 46043183 */ div.s $f6, $f6, $f4 -/* 31F6A0 802BE930 46061080 */ add.s $f2, $f2, $f6 -/* 31F6A4 802BE934 46080003 */ div.s $f0, $f0, $f8 -/* 31F6A8 802BE938 E6200018 */ swc1 $f0, 0x18($s1) -/* 31F6AC 802BE93C 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31F6B0 802BE940 E622001C */ swc1 $f2, 0x1c($s1) -/* 31F6B4 802BE944 8EA20070 */ lw $v0, 0x70($s5) -/* 31F6B8 802BE948 24420001 */ addiu $v0, $v0, 1 -/* 31F6BC 802BE94C AEA20070 */ sw $v0, 0x70($s5) -/* 31F6C0 802BE950 862200A8 */ lh $v0, 0xa8($s1) -/* 31F6C4 802BE954 3C013F00 */ lui $at, 0x3f00 -/* 31F6C8 802BE958 44811000 */ mtc1 $at, $f2 -/* 31F6CC 802BE95C 44820000 */ mtc1 $v0, $f0 -/* 31F6D0 802BE960 00000000 */ nop -/* 31F6D4 802BE964 46800020 */ cvt.s.w $f0, $f0 -/* 31F6D8 802BE968 46020002 */ mul.s $f0, $f0, $f2 -/* 31F6DC 802BE96C 00000000 */ nop -/* 31F6E0 802BE970 C6220064 */ lwc1 $f2, 0x64($s1) -/* 31F6E4 802BE974 AFA00010 */ sw $zero, 0x10($sp) -/* 31F6E8 802BE978 46001080 */ add.s $f2, $f2, $f0 -/* 31F6EC 802BE97C 8E250038 */ lw $a1, 0x38($s1) -/* 31F6F0 802BE980 8E270040 */ lw $a3, 0x40($s1) -/* 31F6F4 802BE984 44061000 */ mfc1 $a2, $f2 -/* 31F6F8 802BE988 0C01C16C */ jal fx_rising_bubble -/* 31F6FC 802BE98C 0000202D */ daddu $a0, $zero, $zero -/* 31F700 802BE990 080AFD3D */ j .L802BF4F4 -/* 31F704 802BE994 0000102D */ daddu $v0, $zero, $zero -.L802BE998_31F708: -/* 31F708 802BE998 862200A8 */ lh $v0, 0xa8($s1) -/* 31F70C 802BE99C 3C013F00 */ lui $at, 0x3f00 -/* 31F710 802BE9A0 44811000 */ mtc1 $at, $f2 -/* 31F714 802BE9A4 44820000 */ mtc1 $v0, $f0 -/* 31F718 802BE9A8 00000000 */ nop -/* 31F71C 802BE9AC 46800020 */ cvt.s.w $f0, $f0 -/* 31F720 802BE9B0 46020002 */ mul.s $f0, $f0, $f2 -/* 31F724 802BE9B4 00000000 */ nop -/* 31F728 802BE9B8 C6220064 */ lwc1 $f2, 0x64($s1) -/* 31F72C 802BE9BC AFA00010 */ sw $zero, 0x10($sp) -/* 31F730 802BE9C0 46001080 */ add.s $f2, $f2, $f0 -/* 31F734 802BE9C4 8E250038 */ lw $a1, 0x38($s1) -/* 31F738 802BE9C8 8E270040 */ lw $a3, 0x40($s1) -/* 31F73C 802BE9CC 44061000 */ mfc1 $a2, $f2 -/* 31F740 802BE9D0 0C01C16C */ jal fx_rising_bubble -/* 31F744 802BE9D4 0000202D */ daddu $a0, $zero, $zero -.L802BE9D8_31F748: -/* 31F748 802BE9D8 8EA20070 */ lw $v0, 0x70($s5) -/* 31F74C 802BE9DC 24420001 */ addiu $v0, $v0, 1 -/* 31F750 802BE9E0 AEA20070 */ sw $v0, 0x70($s5) -.L802BE9E4_31F754: -/* 31F754 802BE9E4 C640002C */ lwc1 $f0, 0x2c($s2) -/* 31F758 802BE9E8 C622001C */ lwc1 $f2, 0x1c($s1) -/* 31F75C 802BE9EC 46020000 */ add.s $f0, $f0, $f2 -/* 31F760 802BE9F0 26440028 */ addiu $a0, $s2, 0x28 -/* 31F764 802BE9F4 E640002C */ swc1 $f0, 0x2c($s2) -/* 31F768 802BE9F8 C620001C */ lwc1 $f0, 0x1c($s1) -/* 31F76C 802BE9FC C6220014 */ lwc1 $f2, 0x14($s1) -/* 31F770 802BEA00 8E260018 */ lw $a2, 0x18($s1) -/* 31F774 802BEA04 46020001 */ sub.s $f0, $f0, $f2 -/* 31F778 802BEA08 8E27000C */ lw $a3, 0xc($s1) -/* 31F77C 802BEA0C 26450030 */ addiu $a1, $s2, 0x30 -/* 31F780 802BEA10 0C00A7E7 */ jal add_vec2D_polar -/* 31F784 802BEA14 E620001C */ swc1 $f0, 0x1c($s1) -/* 31F788 802BEA18 C622001C */ lwc1 $f2, 0x1c($s1) -/* 31F78C 802BEA1C 44800000 */ mtc1 $zero, $f0 -/* 31F790 802BEA20 00000000 */ nop -/* 31F794 802BEA24 4600103E */ c.le.s $f2, $f0 -/* 31F798 802BEA28 00000000 */ nop -/* 31F79C 802BEA2C 45000004 */ bc1f .L802BEA40 -/* 31F7A0 802BEA30 00000000 */ nop -/* 31F7A4 802BEA34 3C040001 */ lui $a0, 1 -/* 31F7A8 802BEA38 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31F7AC 802BEA3C 34840008 */ ori $a0, $a0, 8 -.L802BEA40: -/* 31F7B0 802BEA40 C6400028 */ lwc1 $f0, 0x28($s2) -/* 31F7B4 802BEA44 C642002C */ lwc1 $f2, 0x2c($s2) -/* 31F7B8 802BEA48 C6440030 */ lwc1 $f4, 0x30($s2) -/* 31F7BC 802BEA4C 3C02800B */ lui $v0, %hi(gCameras) -/* 31F7C0 802BEA50 24421D80 */ addiu $v0, $v0, %lo(gCameras) -/* 31F7C4 802BEA54 E4400060 */ swc1 $f0, 0x60($v0) -/* 31F7C8 802BEA58 E4420064 */ swc1 $f2, 0x64($v0) -/* 31F7CC 802BEA5C E4440068 */ swc1 $f4, 0x68($v0) -/* 31F7D0 802BEA60 8622008E */ lh $v0, 0x8e($s1) -/* 31F7D4 802BEA64 9623008E */ lhu $v1, 0x8e($s1) -/* 31F7D8 802BEA68 144002A0 */ bnez $v0, .L802BF4EC -/* 31F7DC 802BEA6C 2462FFFF */ addiu $v0, $v1, -1 -/* 31F7E0 802BEA70 0C039769 */ jal set_action_state -/* 31F7E4 802BEA74 24040021 */ addiu $a0, $zero, 0x21 -/* 31F7E8 802BEA78 0C038039 */ jal disable_player_shadow -/* 31F7EC 802BEA7C 00000000 */ nop -/* 31F7F0 802BEA80 3C03FFBF */ lui $v1, 0xffbf -/* 31F7F4 802BEA84 3463FFFF */ ori $v1, $v1, 0xffff -/* 31F7F8 802BEA88 3C040008 */ lui $a0, 8 -/* 31F7FC 802BEA8C 8E420000 */ lw $v0, ($s2) -/* 31F800 802BEA90 3484000F */ ori $a0, $a0, 0xf -/* 31F804 802BEA94 00431024 */ and $v0, $v0, $v1 -/* 31F808 802BEA98 0C037FDE */ jal suggest_player_anim_setUnkFlag -/* 31F80C 802BEA9C AE420000 */ sw $v0, ($s2) -/* 31F810 802BEAA0 24042013 */ addiu $a0, $zero, 0x2013 -/* 31F814 802BEAA4 0000282D */ daddu $a1, $zero, $zero -/* 31F818 802BEAA8 0C052742 */ jal sfx_play_sound_at_npc -/* 31F81C 802BEAAC 2406FFFC */ addiu $a2, $zero, -4 -/* 31F820 802BEAB0 C6200038 */ lwc1 $f0, 0x38($s1) -/* 31F824 802BEAB4 3C014040 */ lui $at, 0x4040 -/* 31F828 802BEAB8 44811000 */ mtc1 $at, $f2 -/* 31F82C 802BEABC 3C038007 */ lui $v1, %hi(gGameStatusPtr) -/* 31F830 802BEAC0 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1) -/* 31F834 802BEAC4 E6400028 */ swc1 $f0, 0x28($s2) -/* 31F838 802BEAC8 C620003C */ lwc1 $f0, 0x3c($s1) -/* 31F83C 802BEACC E640002C */ swc1 $f0, 0x2c($s2) -/* 31F840 802BEAD0 C6200040 */ lwc1 $f0, 0x40($s1) -/* 31F844 802BEAD4 E6400030 */ swc1 $f0, 0x30($s2) -/* 31F848 802BEAD8 C620000C */ lwc1 $f0, 0xc($s1) -/* 31F84C 802BEADC 24020001 */ addiu $v0, $zero, 1 -/* 31F850 802BEAE0 E6400080 */ swc1 $f0, 0x80($s2) -/* 31F854 802BEAE4 E6220018 */ swc1 $f2, 0x18($s1) -/* 31F858 802BEAE8 A2820000 */ sb $v0, ($s4) -/* 31F85C 802BEAEC 24020007 */ addiu $v0, $zero, 7 -/* 31F860 802BEAF0 A060007D */ sb $zero, 0x7d($v1) -/* 31F864 802BEAF4 A2820003 */ sb $v0, 3($s4) -/* 31F868 802BEAF8 24020001 */ addiu $v0, $zero, 1 -/* 31F86C 802BEAFC 3C01802C */ lui $at, %hi(bss_802BFEE4) -/* 31F870 802BEB00 AC20FEE4 */ sw $zero, %lo(bss_802BFEE4)($at) -/* 31F874 802BEB04 3C01802C */ lui $at, %hi(bss_802BFEE8) -/* 31F878 802BEB08 AC20FEE8 */ sw $zero, %lo(bss_802BFEE8)($at) -/* 31F87C 802BEB0C AEA00078 */ sw $zero, 0x78($s5) -/* 31F880 802BEB10 080AFD3C */ j .L802BF4F0_320260 -/* 31F884 802BEB14 AEA20070 */ sw $v0, 0x70($s5) -.L802BEB18_31F888: -/* 31F888 802BEB18 0220202D */ daddu $a0, $s1, $zero -/* 31F88C 802BEB1C 8E420004 */ lw $v0, 4($s2) -/* 31F890 802BEB20 3C030040 */ lui $v1, 0x40 -/* 31F894 802BEB24 00431025 */ or $v0, $v0, $v1 -/* 31F898 802BEB28 0C0AF505 */ jal func_802BD414_31E184 -/* 31F89C 802BEB2C AE420004 */ sw $v0, 4($s2) -/* 31F8A0 802BEB30 3C10802C */ lui $s0, %hi(bss_802BFEE4) -/* 31F8A4 802BEB34 2610FEE4 */ addiu $s0, $s0, %lo(bss_802BFEE4) -/* 31F8A8 802BEB38 8E020000 */ lw $v0, ($s0) -/* 31F8AC 802BEB3C 14400052 */ bnez $v0, .L802BEC88 -/* 31F8B0 802BEB40 00000000 */ nop -/* 31F8B4 802BEB44 8EA30078 */ lw $v1, 0x78($s5) -/* 31F8B8 802BEB48 24620001 */ addiu $v0, $v1, 1 -/* 31F8BC 802BEB4C AEA20078 */ sw $v0, 0x78($s5) -/* 31F8C0 802BEB50 28420015 */ slti $v0, $v0, 0x15 -/* 31F8C4 802BEB54 14400002 */ bnez $v0, .L802BEB60 -/* 31F8C8 802BEB58 2462FFD9 */ addiu $v0, $v1, -0x27 -/* 31F8CC 802BEB5C AEA20078 */ sw $v0, 0x78($s5) -.L802BEB60: -/* 31F8D0 802BEB60 8EA20078 */ lw $v0, 0x78($s5) -/* 31F8D4 802BEB64 3C013E00 */ lui $at, 0x3e00 -/* 31F8D8 802BEB68 44810000 */ mtc1 $at, $f0 -/* 31F8DC 802BEB6C 04420001 */ bltzl $v0, .L802BEB74 -/* 31F8E0 802BEB70 00021023 */ negu $v0, $v0 -.L802BEB74: -/* 31F8E4 802BEB74 44821000 */ mtc1 $v0, $f2 -/* 31F8E8 802BEB78 00000000 */ nop -/* 31F8EC 802BEB7C 468010A0 */ cvt.s.w $f2, $f2 -/* 31F8F0 802BEB80 46001082 */ mul.s $f2, $f2, $f0 -/* 31F8F4 802BEB84 00000000 */ nop -/* 31F8F8 802BEB88 C6200064 */ lwc1 $f0, 0x64($s1) -/* 31F8FC 802BEB8C 46020000 */ add.s $f0, $f0, $f2 -/* 31F900 802BEB90 E620003C */ swc1 $f0, 0x3c($s1) -/* 31F904 802BEB94 8EA30078 */ lw $v1, 0x78($s5) -/* 31F908 802BEB98 24020005 */ addiu $v0, $zero, 5 -/* 31F90C 802BEB9C 14620011 */ bne $v1, $v0, .L802BEBE4 -/* 31F910 802BEBA0 27A4002C */ addiu $a0, $sp, 0x2c -/* 31F914 802BEBA4 0C0AF483 */ jal func_802BD20C_31DF7C -/* 31F918 802BEBA8 27A50034 */ addiu $a1, $sp, 0x34 -/* 31F91C 802BEBAC 8E020000 */ lw $v0, ($s0) -/* 31F920 802BEBB0 1440000C */ bnez $v0, .L802BEBE4 -/* 31F924 802BEBB4 00000000 */ nop -/* 31F928 802BEBB8 C7A20034 */ lwc1 $f2, 0x34($sp) -/* 31F92C 802BEBBC 44800000 */ mtc1 $zero, $f0 -/* 31F930 802BEBC0 00000000 */ nop -/* 31F934 802BEBC4 46001032 */ c.eq.s $f2, $f0 -/* 31F938 802BEBC8 00000000 */ nop -/* 31F93C 802BEBCC 45010002 */ bc1t .L802BEBD8 -/* 31F940 802BEBD0 24042014 */ addiu $a0, $zero, 0x2014 -/* 31F944 802BEBD4 24042015 */ addiu $a0, $zero, 0x2015 -.L802BEBD8: -/* 31F948 802BEBD8 0000282D */ daddu $a1, $zero, $zero -/* 31F94C 802BEBDC 0C052742 */ jal sfx_play_sound_at_npc -/* 31F950 802BEBE0 2406FFFC */ addiu $a2, $zero, -4 -.L802BEBE4: -/* 31F954 802BEBE4 3C01802C */ lui $at, %hi(D_802BFEF8) -/* 31F958 802BEBE8 C420FEF8 */ lwc1 $f0, %lo(D_802BFEF8)($at) -/* 31F95C 802BEBEC 44802000 */ mtc1 $zero, $f4 -/* 31F960 802BEBF0 00000000 */ nop -/* 31F964 802BEBF4 46040032 */ c.eq.s $f0, $f4 -/* 31F968 802BEBF8 00000000 */ nop -/* 31F96C 802BEBFC 45000024 */ bc1f .L802BEC90 -/* 31F970 802BEC00 00000000 */ nop -/* 31F974 802BEC04 3C028007 */ lui $v0, %hi(gGameStatusPtr) -/* 31F978 802BEC08 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) -/* 31F97C 802BEC0C 94430134 */ lhu $v1, 0x134($v0) -/* 31F980 802BEC10 3C02CCCC */ lui $v0, 0xcccc -/* 31F984 802BEC14 3442CCCD */ ori $v0, $v0, 0xcccd -/* 31F988 802BEC18 00620019 */ multu $v1, $v0 -/* 31F98C 802BEC1C 00004810 */ mfhi $t1 -/* 31F990 802BEC20 000920C2 */ srl $a0, $t1, 3 -/* 31F994 802BEC24 00041080 */ sll $v0, $a0, 2 -/* 31F998 802BEC28 00441021 */ addu $v0, $v0, $a0 -/* 31F99C 802BEC2C 00021040 */ sll $v0, $v0, 1 -/* 31F9A0 802BEC30 00621823 */ subu $v1, $v1, $v0 -/* 31F9A4 802BEC34 3063FFFF */ andi $v1, $v1, 0xffff -/* 31F9A8 802BEC38 14600015 */ bnez $v1, .L802BEC90 -/* 31F9AC 802BEC3C 00000000 */ nop -/* 31F9B0 802BEC40 862200A8 */ lh $v0, 0xa8($s1) -/* 31F9B4 802BEC44 3C013F00 */ lui $at, 0x3f00 -/* 31F9B8 802BEC48 44811000 */ mtc1 $at, $f2 -/* 31F9BC 802BEC4C 44820000 */ mtc1 $v0, $f0 -/* 31F9C0 802BEC50 00000000 */ nop -/* 31F9C4 802BEC54 46800020 */ cvt.s.w $f0, $f0 -/* 31F9C8 802BEC58 46020002 */ mul.s $f0, $f0, $f2 -/* 31F9CC 802BEC5C 00000000 */ nop -/* 31F9D0 802BEC60 C6220064 */ lwc1 $f2, 0x64($s1) -/* 31F9D4 802BEC64 E7A40010 */ swc1 $f4, 0x10($sp) -/* 31F9D8 802BEC68 46001080 */ add.s $f2, $f2, $f0 -/* 31F9DC 802BEC6C 8E250038 */ lw $a1, 0x38($s1) -/* 31F9E0 802BEC70 8E270040 */ lw $a3, 0x40($s1) -/* 31F9E4 802BEC74 44061000 */ mfc1 $a2, $f2 -/* 31F9E8 802BEC78 0C01C16C */ jal fx_rising_bubble -/* 31F9EC 802BEC7C 0000202D */ daddu $a0, $zero, $zero -/* 31F9F0 802BEC80 080AFB24 */ j .L802BEC90 -/* 31F9F4 802BEC84 00000000 */ nop -.L802BEC88: -/* 31F9F8 802BEC88 C6200064 */ lwc1 $f0, 0x64($s1) -/* 31F9FC 802BEC8C E620003C */ swc1 $f0, 0x3c($s1) -.L802BEC90: -/* 31FA00 802BEC90 8E420004 */ lw $v0, 4($s2) -/* 31FA04 802BEC94 3C030040 */ lui $v1, 0x40 -/* 31FA08 802BEC98 00431024 */ and $v0, $v0, $v1 -/* 31FA0C 802BEC9C 14400003 */ bnez $v0, .L802BECAC -/* 31FA10 802BECA0 00000000 */ nop -/* 31FA14 802BECA4 0C0AF440 */ jal func_802BD100_31DE70 -/* 31FA18 802BECA8 00000000 */ nop -.L802BECAC: -/* 31FA1C 802BECAC 3C06802C */ lui $a2, %hi(bss_802BFEE4) -/* 31FA20 802BECB0 8CC6FEE4 */ lw $a2, %lo(bss_802BFEE4)($a2) -/* 31FA24 802BECB4 24020001 */ addiu $v0, $zero, 1 -/* 31FA28 802BECB8 14C20028 */ bne $a2, $v0, .L802BED5C -/* 31FA2C 802BECBC 00000000 */ nop -/* 31FA30 802BECC0 3C028007 */ lui $v0, %hi(gGameStatusPtr) -/* 31FA34 802BECC4 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) -/* 31FA38 802BECC8 94440134 */ lhu $a0, 0x134($v0) -/* 31FA3C 802BECCC 3C03AF28 */ lui $v1, 0xaf28 -/* 31FA40 802BECD0 34636BCB */ ori $v1, $v1, 0x6bcb -/* 31FA44 802BECD4 00830019 */ multu $a0, $v1 -/* 31FA48 802BECD8 00001810 */ mfhi $v1 -/* 31FA4C 802BECDC 00831023 */ subu $v0, $a0, $v1 -/* 31FA50 802BECE0 00021042 */ srl $v0, $v0, 1 -/* 31FA54 802BECE4 00621821 */ addu $v1, $v1, $v0 -/* 31FA58 802BECE8 00031902 */ srl $v1, $v1, 4 -/* 31FA5C 802BECEC 00031080 */ sll $v0, $v1, 2 -/* 31FA60 802BECF0 00431021 */ addu $v0, $v0, $v1 -/* 31FA64 802BECF4 00021080 */ sll $v0, $v0, 2 -/* 31FA68 802BECF8 00431023 */ subu $v0, $v0, $v1 -/* 31FA6C 802BECFC 00822023 */ subu $a0, $a0, $v0 -/* 31FA70 802BED00 3084FFFF */ andi $a0, $a0, 0xffff -/* 31FA74 802BED04 14800047 */ bnez $a0, .L802BEE24 -/* 31FA78 802BED08 00000000 */ nop -/* 31FA7C 802BED0C 862200A8 */ lh $v0, 0xa8($s1) -/* 31FA80 802BED10 3C013F00 */ lui $at, 0x3f00 -/* 31FA84 802BED14 44810000 */ mtc1 $at, $f0 -/* 31FA88 802BED18 44822000 */ mtc1 $v0, $f4 -/* 31FA8C 802BED1C 00000000 */ nop -/* 31FA90 802BED20 46802120 */ cvt.s.w $f4, $f4 -/* 31FA94 802BED24 46002102 */ mul.s $f4, $f4, $f0 -/* 31FA98 802BED28 00000000 */ nop -/* 31FA9C 802BED2C C622003C */ lwc1 $f2, 0x3c($s1) -/* 31FAA0 802BED30 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31FAA4 802BED34 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31FAA8 802BED38 46020001 */ sub.s $f0, $f0, $f2 -/* 31FAAC 802BED3C C6220064 */ lwc1 $f2, 0x64($s1) -/* 31FAB0 802BED40 E7A00010 */ swc1 $f0, 0x10($sp) -/* 31FAB4 802BED44 46041080 */ add.s $f2, $f2, $f4 -/* 31FAB8 802BED48 8E250038 */ lw $a1, 0x38($s1) -/* 31FABC 802BED4C 8E270040 */ lw $a3, 0x40($s1) -/* 31FAC0 802BED50 44061000 */ mfc1 $a2, $f2 -/* 31FAC4 802BED54 080AFB87 */ j .L802BEE1C -/* 31FAC8 802BED58 00000000 */ nop -.L802BED5C: -/* 31FACC 802BED5C 3C01802C */ lui $at, %hi(D_802BFEF8) -/* 31FAD0 802BED60 C420FEF8 */ lwc1 $f0, %lo(D_802BFEF8)($at) -/* 31FAD4 802BED64 44803000 */ mtc1 $zero, $f6 -/* 31FAD8 802BED68 00000000 */ nop -/* 31FADC 802BED6C 46060032 */ c.eq.s $f0, $f6 -/* 31FAE0 802BED70 00000000 */ nop -/* 31FAE4 802BED74 4501002B */ bc1t .L802BEE24 -/* 31FAE8 802BED78 28C20002 */ slti $v0, $a2, 2 -/* 31FAEC 802BED7C 10400029 */ beqz $v0, .L802BEE24 -/* 31FAF0 802BED80 3C032492 */ lui $v1, 0x2492 -/* 31FAF4 802BED84 3C028007 */ lui $v0, %hi(gGameStatusPtr) -/* 31FAF8 802BED88 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0) -/* 31FAFC 802BED8C 94440134 */ lhu $a0, 0x134($v0) -/* 31FB00 802BED90 34634925 */ ori $v1, $v1, 0x4925 -/* 31FB04 802BED94 00830019 */ multu $a0, $v1 -/* 31FB08 802BED98 00001810 */ mfhi $v1 -/* 31FB0C 802BED9C 00831023 */ subu $v0, $a0, $v1 -/* 31FB10 802BEDA0 00021042 */ srl $v0, $v0, 1 -/* 31FB14 802BEDA4 00621821 */ addu $v1, $v1, $v0 -/* 31FB18 802BEDA8 00031882 */ srl $v1, $v1, 2 -/* 31FB1C 802BEDAC 000310C0 */ sll $v0, $v1, 3 -/* 31FB20 802BEDB0 00431023 */ subu $v0, $v0, $v1 -/* 31FB24 802BEDB4 00822023 */ subu $a0, $a0, $v0 -/* 31FB28 802BEDB8 3084FFFF */ andi $a0, $a0, 0xffff -/* 31FB2C 802BEDBC 14800019 */ bnez $a0, .L802BEE24 -/* 31FB30 802BEDC0 26250038 */ addiu $a1, $s1, 0x38 -/* 31FB34 802BEDC4 862200A8 */ lh $v0, 0xa8($s1) -/* 31FB38 802BEDC8 3C013F00 */ lui $at, 0x3f00 -/* 31FB3C 802BEDCC 44811000 */ mtc1 $at, $f2 -/* 31FB40 802BEDD0 44820000 */ mtc1 $v0, $f0 -/* 31FB44 802BEDD4 00000000 */ nop -/* 31FB48 802BEDD8 46800020 */ cvt.s.w $f0, $f0 -/* 31FB4C 802BEDDC 46020002 */ mul.s $f0, $f0, $f2 -/* 31FB50 802BEDE0 00000000 */ nop -/* 31FB54 802BEDE4 C6220064 */ lwc1 $f2, 0x64($s1) -/* 31FB58 802BEDE8 26270040 */ addiu $a3, $s1, 0x40 -/* 31FB5C 802BEDEC 10C00007 */ beqz $a2, .L802BEE0C -/* 31FB60 802BEDF0 46001100 */ add.s $f4, $f2, $f0 -/* 31FB64 802BEDF4 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31FB68 802BEDF8 C420FEE0 */ lwc1 $f0, %lo(OriginalPlayerY)($at) -/* 31FB6C 802BEDFC C622003C */ lwc1 $f2, 0x3c($s1) -/* 31FB70 802BEE00 46020001 */ sub.s $f0, $f0, $f2 -/* 31FB74 802BEE04 080AFB84 */ j .L802BEE10 -/* 31FB78 802BEE08 E7A00010 */ swc1 $f0, 0x10($sp) -.L802BEE0C: -/* 31FB7C 802BEE0C E7A60010 */ swc1 $f6, 0x10($sp) -.L802BEE10: -/* 31FB80 802BEE10 8CA50000 */ lw $a1, ($a1) -/* 31FB84 802BEE14 44062000 */ mfc1 $a2, $f4 -/* 31FB88 802BEE18 8CE70000 */ lw $a3, ($a3) -.L802BEE1C: -/* 31FB8C 802BEE1C 0C01C16C */ jal fx_rising_bubble -/* 31FB90 802BEE20 0000202D */ daddu $a0, $zero, $zero -.L802BEE24: -/* 31FB94 802BEE24 C6200038 */ lwc1 $f0, 0x38($s1) -/* 31FB98 802BEE28 3C01802C */ lui $at, %hi(OriginalPlayerY) -/* 31FB9C 802BEE2C C422FEE0 */ lwc1 $f2, %lo(OriginalPlayerY)($at) -/* 31FBA0 802BEE30 3C03800B */ lui $v1, %hi(gCameras) -/* 31FBA4 802BEE34 24631D80 */ addiu $v1, $v1, %lo(gCameras) -/* 31FBA8 802BEE38 E4600060 */ swc1 $f0, 0x60($v1) -/* 31FBAC 802BEE3C E4620064 */ swc1 $f2, 0x64($v1) -/* 31FBB0 802BEE40 8E82000C */ lw $v0, 0xc($s4) -/* 31FBB4 802BEE44 C6200040 */ lwc1 $f0, 0x40($s1) -/* 31FBB8 802BEE48 30424004 */ andi $v0, $v0, 0x4004 -/* 31FBBC 802BEE4C 14400006 */ bnez $v0, .L802BEE68 -/* 31FBC0 802BEE50 E4600068 */ swc1 $f0, 0x68($v1) -/* 31FBC4 802BEE54 3C02802C */ lui $v0, %hi(bss_802BFEF0) -/* 31FBC8 802BEE58 8C42FEF0 */ lw $v0, %lo(bss_802BFEF0)($v0) -/* 31FBCC 802BEE5C 2842001E */ slti $v0, $v0, 0x1e -/* 31FBD0 802BEE60 144001A4 */ bnez $v0, .L802BF4F4 -/* 31FBD4 802BEE64 0000102D */ daddu $v0, $zero, $zero -.L802BEE68: -/* 31FBD8 802BEE68 3C02802C */ lui $v0, %hi(bss_802BFEF4) -/* 31FBDC 802BEE6C 8C42FEF4 */ lw $v0, %lo(bss_802BFEF4)($v0) -/* 31FBE0 802BEE70 144001A0 */ bnez $v0, .L802BF4F4 -/* 31FBE4 802BEE74 0000102D */ daddu $v0, $zero, $zero -/* 31FBE8 802BEE78 862200A8 */ lh $v0, 0xa8($s1) -/* 31FBEC 802BEE7C C6260038 */ lwc1 $f6, 0x38($s1) -/* 31FBF0 802BEE80 C6200064 */ lwc1 $f0, 0x64($s1) -/* 31FBF4 802BEE84 C6220040 */ lwc1 $f2, 0x40($s1) -/* 31FBF8 802BEE88 3C014120 */ lui $at, 0x4120 -/* 31FBFC 802BEE8C 44814000 */ mtc1 $at, $f8 -/* 31FC00 802BEE90 44822000 */ mtc1 $v0, $f4 -/* 31FC04 802BEE94 00000000 */ nop -/* 31FC08 802BEE98 46802120 */ cvt.s.w $f4, $f4 -/* 31FC0C 802BEE9C 46040000 */ add.s $f0, $f0, $f4 -/* 31FC10 802BEEA0 E7A60020 */ swc1 $f6, 0x20($sp) -/* 31FC14 802BEEA4 E7A20028 */ swc1 $f2, 0x28($sp) -/* 31FC18 802BEEA8 E7A00024 */ swc1 $f0, 0x24($sp) -/* 31FC1C 802BEEAC E7A80010 */ swc1 $f8, 0x10($sp) -/* 31FC20 802BEEB0 C620000C */ lwc1 $f0, 0xc($s1) -/* 31FC24 802BEEB4 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31FC28 802BEEB8 862200A8 */ lh $v0, 0xa8($s1) -/* 31FC2C 802BEEBC 27A50020 */ addiu $a1, $sp, 0x20 -/* 31FC30 802BEEC0 44820000 */ mtc1 $v0, $f0 -/* 31FC34 802BEEC4 00000000 */ nop -/* 31FC38 802BEEC8 46800020 */ cvt.s.w $f0, $f0 -/* 31FC3C 802BEECC E7A00018 */ swc1 $f0, 0x18($sp) -/* 31FC40 802BEED0 862200A6 */ lh $v0, 0xa6($s1) -/* 31FC44 802BEED4 27A60024 */ addiu $a2, $sp, 0x24 -/* 31FC48 802BEED8 44820000 */ mtc1 $v0, $f0 -/* 31FC4C 802BEEDC 00000000 */ nop -/* 31FC50 802BEEE0 46800020 */ cvt.s.w $f0, $f0 -/* 31FC54 802BEEE4 E7A0001C */ swc1 $f0, 0x1c($sp) -/* 31FC58 802BEEE8 8E240080 */ lw $a0, 0x80($s1) -/* 31FC5C 802BEEEC 0C0376B9 */ jal npc_test_move_taller_with_slipping -/* 31FC60 802BEEF0 27A70028 */ addiu $a3, $sp, 0x28 -/* 31FC64 802BEEF4 10400004 */ beqz $v0, .L802BEF08 -/* 31FC68 802BEEF8 2402FFFF */ addiu $v0, $zero, -1 -/* 31FC6C 802BEEFC 3C028011 */ lui $v0, %hi(D_8010C97A) -/* 31FC70 802BEF00 9442C97A */ lhu $v0, %lo(D_8010C97A)($v0) -/* 31FC74 802BEF04 A6220086 */ sh $v0, 0x86($s1) -.L802BEF08: -/* 31FC78 802BEF08 A6C20000 */ sh $v0, ($s6) -/* 31FC7C 802BEF0C 86240086 */ lh $a0, 0x86($s1) -/* 31FC80 802BEF10 96220086 */ lhu $v0, 0x86($s1) -/* 31FC84 802BEF14 04800009 */ bltz $a0, .L802BEF3C -/* 31FC88 802BEF18 30424000 */ andi $v0, $v0, 0x4000 -/* 31FC8C 802BEF1C 14400007 */ bnez $v0, .L802BEF3C -/* 31FC90 802BEF20 00000000 */ nop -/* 31FC94 802BEF24 0C016F6A */ jal get_collider_flags -/* 31FC98 802BEF28 00000000 */ nop -/* 31FC9C 802BEF2C 304200FF */ andi $v0, $v0, 0xff -/* 31FCA0 802BEF30 24030004 */ addiu $v1, $zero, 4 -/* 31FCA4 802BEF34 10430011 */ beq $v0, $v1, .L802BEF7C -/* 31FCA8 802BEF38 AFA20040 */ sw $v0, 0x40($sp) -.L802BEF3C: -/* 31FCAC 802BEF3C 3C03802C */ lui $v1, %hi(bss_802BFEE4) -/* 31FCB0 802BEF40 8C63FEE4 */ lw $v1, %lo(bss_802BFEE4)($v1) -/* 31FCB4 802BEF44 24020002 */ addiu $v0, $zero, 2 -/* 31FCB8 802BEF48 1462016A */ bne $v1, $v0, .L802BF4F4 -/* 31FCBC 802BEF4C 0000102D */ daddu $v0, $zero, $zero -/* 31FCC0 802BEF50 3C03802C */ lui $v1, %hi(bss_802BFEE8) -/* 31FCC4 802BEF54 8C63FEE8 */ lw $v1, %lo(bss_802BFEE8)($v1) -/* 31FCC8 802BEF58 24020001 */ addiu $v0, $zero, 1 -/* 31FCCC 802BEF5C 14620165 */ bne $v1, $v0, .L802BF4F4 -/* 31FCD0 802BEF60 0000102D */ daddu $v0, $zero, $zero -/* 31FCD4 802BEF64 24040294 */ addiu $a0, $zero, 0x294 -/* 31FCD8 802BEF68 0000282D */ daddu $a1, $zero, $zero -/* 31FCDC 802BEF6C 0C052742 */ jal sfx_play_sound_at_npc -/* 31FCE0 802BEF70 2406FFFC */ addiu $a2, $zero, -4 -/* 31FCE4 802BEF74 080AFD3D */ j .L802BF4F4 -/* 31FCE8 802BEF78 0000102D */ daddu $v0, $zero, $zero -.L802BEF7C: -/* 31FCEC 802BEF7C 27B00020 */ addiu $s0, $sp, 0x20 -/* 31FCF0 802BEF80 0200202D */ daddu $a0, $s0, $zero -/* 31FCF4 802BEF84 27B40028 */ addiu $s4, $sp, 0x28 -/* 31FCF8 802BEF88 3C064220 */ lui $a2, 0x4220 -/* 31FCFC 802BEF8C 8E27000C */ lw $a3, 0xc($s1) -/* 31FD00 802BEF90 C6240038 */ lwc1 $f4, 0x38($s1) -/* 31FD04 802BEF94 C6200064 */ lwc1 $f0, 0x64($s1) -/* 31FD08 802BEF98 3C0142C8 */ lui $at, 0x42c8 -/* 31FD0C 802BEF9C 4481A000 */ mtc1 $at, $f20 -/* 31FD10 802BEFA0 C6220040 */ lwc1 $f2, 0x40($s1) -/* 31FD14 802BEFA4 0280282D */ daddu $a1, $s4, $zero -/* 31FD18 802BEFA8 3C01802C */ lui $at, %hi(bss_802BFEF0) -/* 31FD1C 802BEFAC AC20FEF0 */ sw $zero, %lo(bss_802BFEF0)($at) -/* 31FD20 802BEFB0 46140000 */ add.s $f0, $f0, $f20 -/* 31FD24 802BEFB4 E7A40020 */ swc1 $f4, 0x20($sp) -/* 31FD28 802BEFB8 E7A20028 */ swc1 $f2, 0x28($sp) -/* 31FD2C 802BEFBC 0C00A7E7 */ jal add_vec2D_polar -/* 31FD30 802BEFC0 E7A00024 */ swc1 $f0, 0x24($sp) -/* 31FD34 802BEFC4 0200282D */ daddu $a1, $s0, $zero -/* 31FD38 802BEFC8 27B60030 */ addiu $s6, $sp, 0x30 -/* 31FD3C 802BEFCC 27B30024 */ addiu $s3, $sp, 0x24 -/* 31FD40 802BEFD0 E7B40030 */ swc1 $f20, 0x30($sp) -/* 31FD44 802BEFD4 AFB60010 */ sw $s6, 0x10($sp) -/* 31FD48 802BEFD8 C620000C */ lwc1 $f0, 0xc($s1) -/* 31FD4C 802BEFDC 0260302D */ daddu $a2, $s3, $zero -/* 31FD50 802BEFE0 AFA00018 */ sw $zero, 0x18($sp) -/* 31FD54 802BEFE4 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31FD58 802BEFE8 8E240080 */ lw $a0, 0x80($s1) -/* 31FD5C 802BEFEC 0C0371DE */ jal npc_raycast_down_around -/* 31FD60 802BEFF0 0280382D */ daddu $a3, $s4, $zero -/* 31FD64 802BEFF4 1040013E */ beqz $v0, .L802BF4F0_320260 -/* 31FD68 802BEFF8 AFA20040 */ sw $v0, 0x40($sp) -/* 31FD6C 802BEFFC 0200282D */ daddu $a1, $s0, $zero -/* 31FD70 802BF000 0260302D */ daddu $a2, $s3, $zero -/* 31FD74 802BF004 86240086 */ lh $a0, 0x86($s1) -/* 31FD78 802BF008 0C016F84 */ jal get_collider_center -/* 31FD7C 802BF00C 0280382D */ daddu $a3, $s4, $zero -/* 31FD80 802BF010 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 31FD84 802BF014 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 31FD88 802BF018 8FA60020 */ lw $a2, 0x20($sp) -/* 31FD8C 802BF01C 0C00A7B5 */ jal dist2D -/* 31FD90 802BF020 8FA70028 */ lw $a3, 0x28($sp) -/* 31FD94 802BF024 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 31FD98 802BF028 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 31FD9C 802BF02C 8FA60020 */ lw $a2, 0x20($sp) -/* 31FDA0 802BF030 8FA70028 */ lw $a3, 0x28($sp) -/* 31FDA4 802BF034 0C00A720 */ jal atan2 -/* 31FDA8 802BF038 E7A00030 */ swc1 $f0, 0x30($sp) -/* 31FDAC 802BF03C 3C0140C9 */ lui $at, 0x40c9 -/* 31FDB0 802BF040 34210FD0 */ ori $at, $at, 0xfd0 -/* 31FDB4 802BF044 44811000 */ mtc1 $at, $f2 -/* 31FDB8 802BF048 00000000 */ nop -/* 31FDBC 802BF04C 46020002 */ mul.s $f0, $f0, $f2 -/* 31FDC0 802BF050 00000000 */ nop -/* 31FDC4 802BF054 27A50038 */ addiu $a1, $sp, 0x38 -/* 31FDC8 802BF058 3C0143B4 */ lui $at, 0x43b4 -/* 31FDCC 802BF05C 44816000 */ mtc1 $at, $f12 -/* 31FDD0 802BF060 27A6003C */ addiu $a2, $sp, 0x3c -/* 31FDD4 802BF064 0C00A82D */ jal sin_cos_rad -/* 31FDD8 802BF068 460C0303 */ div.s $f12, $f0, $f12 -/* 31FDDC 802BF06C C7A60038 */ lwc1 $f6, 0x38($sp) -/* 31FDE0 802BF070 C7A20030 */ lwc1 $f2, 0x30($sp) -/* 31FDE4 802BF074 46023182 */ mul.s $f6, $f6, $f2 -/* 31FDE8 802BF078 00000000 */ nop -/* 31FDEC 802BF07C 3C01802C */ lui $at, %hi(D_802BFED0_320C40) -/* 31FDF0 802BF080 D420FED0 */ ldc1 $f0, %lo(D_802BFED0_320C40)($at) -/* 31FDF4 802BF084 460031A1 */ cvt.d.s $f6, $f6 -/* 31FDF8 802BF088 46203182 */ mul.d $f6, $f6, $f0 -/* 31FDFC 802BF08C 00000000 */ nop -/* 31FE00 802BF090 C7A4003C */ lwc1 $f4, 0x3c($sp) -/* 31FE04 802BF094 46022102 */ mul.s $f4, $f4, $f2 -/* 31FE08 802BF098 00000000 */ nop -/* 31FE0C 802BF09C 46002121 */ cvt.d.s $f4, $f4 -/* 31FE10 802BF0A0 46202102 */ mul.d $f4, $f4, $f0 -/* 31FE14 802BF0A4 00000000 */ nop -/* 31FE18 802BF0A8 C6220038 */ lwc1 $f2, 0x38($s1) -/* 31FE1C 802BF0AC 460010A1 */ cvt.d.s $f2, $f2 -/* 31FE20 802BF0B0 C6200040 */ lwc1 $f0, 0x40($s1) -/* 31FE24 802BF0B4 46261080 */ add.d $f2, $f2, $f6 -/* 31FE28 802BF0B8 0200282D */ daddu $a1, $s0, $zero -/* 31FE2C 802BF0BC 46000021 */ cvt.d.s $f0, $f0 -/* 31FE30 802BF0C0 46240001 */ sub.d $f0, $f0, $f4 -/* 31FE34 802BF0C4 E7B40030 */ swc1 $f20, 0x30($sp) -/* 31FE38 802BF0C8 462010A0 */ cvt.s.d $f2, $f2 -/* 31FE3C 802BF0CC 46200020 */ cvt.s.d $f0, $f0 -/* 31FE40 802BF0D0 E7A20020 */ swc1 $f2, 0x20($sp) -/* 31FE44 802BF0D4 E7A00028 */ swc1 $f0, 0x28($sp) -/* 31FE48 802BF0D8 AFB60010 */ sw $s6, 0x10($sp) -/* 31FE4C 802BF0DC C620000C */ lwc1 $f0, 0xc($s1) -/* 31FE50 802BF0E0 0260302D */ daddu $a2, $s3, $zero -/* 31FE54 802BF0E4 AFA00018 */ sw $zero, 0x18($sp) -/* 31FE58 802BF0E8 E7A00014 */ swc1 $f0, 0x14($sp) -/* 31FE5C 802BF0EC 8E240080 */ lw $a0, 0x80($s1) -/* 31FE60 802BF0F0 0C0371DE */ jal npc_raycast_down_around -/* 31FE64 802BF0F4 0280382D */ daddu $a3, $s4, $zero -/* 31FE68 802BF0F8 C7A00024 */ lwc1 $f0, 0x24($sp) -/* 31FE6C 802BF0FC C7A20020 */ lwc1 $f2, 0x20($sp) -/* 31FE70 802BF100 C7A40028 */ lwc1 $f4, 0x28($sp) -/* 31FE74 802BF104 E6200064 */ swc1 $f0, 0x64($s1) -/* 31FE78 802BF108 E6220060 */ swc1 $f2, 0x60($s1) -/* 31FE7C 802BF10C E6240068 */ swc1 $f4, 0x68($s1) -/* 31FE80 802BF110 C64C0028 */ lwc1 $f12, 0x28($s2) -/* 31FE84 802BF114 C64E0030 */ lwc1 $f14, 0x30($s2) -/* 31FE88 802BF118 44061000 */ mfc1 $a2, $f2 -/* 31FE8C 802BF11C 44072000 */ mfc1 $a3, $f4 -/* 31FE90 802BF120 0C00A720 */ jal atan2 -/* 31FE94 802BF124 00000000 */ nop -/* 31FE98 802BF128 E6400080 */ swc1 $f0, 0x80($s2) -/* 31FE9C 802BF12C E620000C */ swc1 $f0, 0xc($s1) -/* 31FEA0 802BF130 C64C0028 */ lwc1 $f12, 0x28($s2) -/* 31FEA4 802BF134 C64E0030 */ lwc1 $f14, 0x30($s2) -/* 31FEA8 802BF138 8E260060 */ lw $a2, 0x60($s1) -/* 31FEAC 802BF13C 0C00A7B5 */ jal dist2D -/* 31FEB0 802BF140 8E270068 */ lw $a3, 0x68($s1) -/* 31FEB4 802BF144 3C0140A0 */ lui $at, 0x40a0 -/* 31FEB8 802BF148 44811000 */ mtc1 $at, $f2 -/* 31FEBC 802BF14C 3C013F19 */ lui $at, 0x3f19 -/* 31FEC0 802BF150 3421999A */ ori $at, $at, 0x999a -/* 31FEC4 802BF154 44812000 */ mtc1 $at, $f4 -/* 31FEC8 802BF158 24042081 */ addiu $a0, $zero, 0x2081 -/* 31FECC 802BF15C E622001C */ swc1 $f2, 0x1c($s1) -/* 31FED0 802BF160 46021080 */ add.s $f2, $f2, $f2 -/* 31FED4 802BF164 0000282D */ daddu $a1, $zero, $zero -/* 31FED8 802BF168 E6240014 */ swc1 $f4, 0x14($s1) -/* 31FEDC 802BF16C 46041083 */ div.s $f2, $f2, $f4 -/* 31FEE0 802BF170 4600140D */ trunc.w.s $f16, $f2 -/* 31FEE4 802BF174 44028000 */ mfc1 $v0, $f16 -/* 31FEE8 802BF178 00000000 */ nop -/* 31FEEC 802BF17C A622008E */ sh $v0, 0x8e($s1) -/* 31FEF0 802BF180 00021400 */ sll $v0, $v0, 0x10 -/* 31FEF4 802BF184 00021403 */ sra $v0, $v0, 0x10 -/* 31FEF8 802BF188 44821000 */ mtc1 $v0, $f2 -/* 31FEFC 802BF18C 00000000 */ nop -/* 31FF00 802BF190 468010A0 */ cvt.s.w $f2, $f2 -/* 31FF04 802BF194 46020083 */ div.s $f2, $f0, $f2 -/* 31FF08 802BF198 E6220018 */ swc1 $f2, 0x18($s1) -/* 31FF0C 802BF19C C6220064 */ lwc1 $f2, 0x64($s1) -/* 31FF10 802BF1A0 C644002C */ lwc1 $f4, 0x2c($s2) -/* 31FF14 802BF1A4 8622008E */ lh $v0, 0x8e($s1) -/* 31FF18 802BF1A8 46041081 */ sub.s $f2, $f2, $f4 -/* 31FF1C 802BF1AC 44823000 */ mtc1 $v0, $f6 -/* 31FF20 802BF1B0 00000000 */ nop -/* 31FF24 802BF1B4 468031A0 */ cvt.s.w $f6, $f6 -/* 31FF28 802BF1B8 C624001C */ lwc1 $f4, 0x1c($s1) -/* 31FF2C 802BF1BC 46061083 */ div.s $f2, $f2, $f6 -/* 31FF30 802BF1C0 46022100 */ add.s $f4, $f4, $f2 -/* 31FF34 802BF1C4 2406FFFC */ addiu $a2, $zero, -4 -/* 31FF38 802BF1C8 E7A00030 */ swc1 $f0, 0x30($sp) -/* 31FF3C 802BF1CC 0C052742 */ jal sfx_play_sound_at_npc -/* 31FF40 802BF1D0 E624001C */ swc1 $f4, 0x1c($s1) -/* 31FF44 802BF1D4 3C040001 */ lui $a0, 1 -/* 31FF48 802BF1D8 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31FF4C 802BF1DC 34840006 */ ori $a0, $a0, 6 -/* 31FF50 802BF1E0 0C03802C */ jal enable_player_shadow -/* 31FF54 802BF1E4 00000000 */ nop -/* 31FF58 802BF1E8 8E420000 */ lw $v0, ($s2) -/* 31FF5C 802BF1EC 3C030040 */ lui $v1, 0x40 -/* 31FF60 802BF1F0 00431025 */ or $v0, $v0, $v1 -/* 31FF64 802BF1F4 AE420000 */ sw $v0, ($s2) -/* 31FF68 802BF1F8 24020003 */ addiu $v0, $zero, 3 -/* 31FF6C 802BF1FC 080AFD3C */ j .L802BF4F0_320260 -/* 31FF70 802BF200 AEA20070 */ sw $v0, 0x70($s5) -.L802BF204_31FF74: -/* 31FF74 802BF204 3C040001 */ lui $a0, 1 -/* 31FF78 802BF208 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31FF7C 802BF20C 34840007 */ ori $a0, $a0, 7 -/* 31FF80 802BF210 8EA20070 */ lw $v0, 0x70($s5) -/* 31FF84 802BF214 24420001 */ addiu $v0, $v0, 1 -/* 31FF88 802BF218 AEA20070 */ sw $v0, 0x70($s5) -.L802BF21C_31FF8C: -/* 31FF8C 802BF21C C622001C */ lwc1 $f2, 0x1c($s1) -/* 31FF90 802BF220 44800000 */ mtc1 $zero, $f0 -/* 31FF94 802BF224 00000000 */ nop -/* 31FF98 802BF228 4600103E */ c.le.s $f2, $f0 -/* 31FF9C 802BF22C 00000000 */ nop -/* 31FFA0 802BF230 45000006 */ bc1f .L802BF24C_31FFBC -/* 31FFA4 802BF234 3C040001 */ lui $a0, 1 -/* 31FFA8 802BF238 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31FFAC 802BF23C 34840008 */ ori $a0, $a0, 8 -/* 31FFB0 802BF240 8EA20070 */ lw $v0, 0x70($s5) -/* 31FFB4 802BF244 24420001 */ addiu $v0, $v0, 1 -/* 31FFB8 802BF248 AEA20070 */ sw $v0, 0x70($s5) -.L802BF24C_31FFBC: -/* 31FFBC 802BF24C C62C001C */ lwc1 $f12, 0x1c($s1) -/* 31FFC0 802BF250 44800000 */ mtc1 $zero, $f0 -/* 31FFC4 802BF254 00000000 */ nop -/* 31FFC8 802BF258 4600603E */ c.le.s $f12, $f0 -/* 31FFCC 802BF25C 00000000 */ nop -/* 31FFD0 802BF260 4500000C */ bc1f .L802BF294 -/* 31FFD4 802BF264 00000000 */ nop -/* 31FFD8 802BF268 0C038D45 */ jal player_check_collision_below -/* 31FFDC 802BF26C 27A50040 */ addiu $a1, $sp, 0x40 -/* 31FFE0 802BF270 8FA20040 */ lw $v0, 0x40($sp) -/* 31FFE4 802BF274 E7A00024 */ swc1 $f0, 0x24($sp) -/* 31FFE8 802BF278 18400009 */ blez $v0, .L802BF2A0 -/* 31FFEC 802BF27C E640002C */ swc1 $f0, 0x2c($s2) -/* 31FFF0 802BF280 3C040001 */ lui $a0, 1 -/* 31FFF4 802BF284 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 31FFF8 802BF288 34840009 */ ori $a0, $a0, 9 -/* 31FFFC 802BF28C 080AFCA8 */ j .L802BF2A0 -/* 320000 802BF290 00000000 */ nop -.L802BF294: -/* 320004 802BF294 C640002C */ lwc1 $f0, 0x2c($s2) -/* 320008 802BF298 460C0000 */ add.s $f0, $f0, $f12 -/* 32000C 802BF29C E640002C */ swc1 $f0, 0x2c($s2) -.L802BF2A0: -/* 320010 802BF2A0 C620001C */ lwc1 $f0, 0x1c($s1) -/* 320014 802BF2A4 C6220014 */ lwc1 $f2, 0x14($s1) -/* 320018 802BF2A8 46020001 */ sub.s $f0, $f0, $f2 -/* 32001C 802BF2AC 3C02800B */ lui $v0, %hi(gCameras) -/* 320020 802BF2B0 24421D80 */ addiu $v0, $v0, %lo(gCameras) -/* 320024 802BF2B4 E620001C */ swc1 $f0, 0x1c($s1) -/* 320028 802BF2B8 C6400028 */ lwc1 $f0, 0x28($s2) -/* 32002C 802BF2BC C642002C */ lwc1 $f2, 0x2c($s2) -/* 320030 802BF2C0 C6440030 */ lwc1 $f4, 0x30($s2) -/* 320034 802BF2C4 26440028 */ addiu $a0, $s2, 0x28 -/* 320038 802BF2C8 E4400060 */ swc1 $f0, 0x60($v0) -/* 32003C 802BF2CC E4420064 */ swc1 $f2, 0x64($v0) -/* 320040 802BF2D0 E4440068 */ swc1 $f4, 0x68($v0) -/* 320044 802BF2D4 8622008E */ lh $v0, 0x8e($s1) -/* 320048 802BF2D8 10400007 */ beqz $v0, .L802BF2F8 -/* 32004C 802BF2DC 26450030 */ addiu $a1, $s2, 0x30 -/* 320050 802BF2E0 8E260018 */ lw $a2, 0x18($s1) -/* 320054 802BF2E4 0C00A7E7 */ jal add_vec2D_polar -/* 320058 802BF2E8 8E27000C */ lw $a3, 0xc($s1) -/* 32005C 802BF2EC 9622008E */ lhu $v0, 0x8e($s1) -/* 320060 802BF2F0 080AFD3B */ j .L802BF4EC -/* 320064 802BF2F4 2442FFFF */ addiu $v0, $v0, -1 -.L802BF2F8: -/* 320068 802BF2F8 8FA20040 */ lw $v0, 0x40($sp) -/* 32006C 802BF2FC 0440007C */ bltz $v0, .L802BF4F0_320260 -/* 320070 802BF300 3C03FFBF */ lui $v1, 0xffbf -/* 320074 802BF304 3463FFFF */ ori $v1, $v1, 0xffff -/* 320078 802BF308 3C040001 */ lui $a0, 1 -/* 32007C 802BF30C 8E420000 */ lw $v0, ($s2) -/* 320080 802BF310 34840002 */ ori $a0, $a0, 2 -/* 320084 802BF314 00431024 */ and $v0, $v0, $v1 -/* 320088 802BF318 0C037FBF */ jal suggest_player_anim_clearUnkFlag -/* 32008C 802BF31C AE420000 */ sw $v0, ($s2) -/* 320090 802BF320 C62C0038 */ lwc1 $f12, 0x38($s1) -/* 320094 802BF324 C62E0040 */ lwc1 $f14, 0x40($s1) -/* 320098 802BF328 8E260060 */ lw $a2, 0x60($s1) -/* 32009C 802BF32C 8E220000 */ lw $v0, ($s1) -/* 3200A0 802BF330 8E270068 */ lw $a3, 0x68($s1) -/* 3200A4 802BF334 34420040 */ ori $v0, $v0, 0x40 -/* 3200A8 802BF338 0C00A7B5 */ jal dist2D -/* 3200AC 802BF33C AE220000 */ sw $v0, ($s1) -/* 3200B0 802BF340 864200B2 */ lh $v0, 0xb2($s2) -/* 3200B4 802BF344 3C013F00 */ lui $at, 0x3f00 -/* 3200B8 802BF348 44811000 */ mtc1 $at, $f2 -/* 3200BC 802BF34C 3C014100 */ lui $at, 0x4100 -/* 3200C0 802BF350 44814000 */ mtc1 $at, $f8 -/* 3200C4 802BF354 3C013F80 */ lui $at, 0x3f80 -/* 3200C8 802BF358 44815000 */ mtc1 $at, $f10 -/* 3200CC 802BF35C C6260064 */ lwc1 $f6, 0x64($s1) -/* 3200D0 802BF360 44822000 */ mtc1 $v0, $f4 -/* 3200D4 802BF364 00000000 */ nop -/* 3200D8 802BF368 46802120 */ cvt.s.w $f4, $f4 -/* 3200DC 802BF36C 46022102 */ mul.s $f4, $f4, $f2 -/* 3200E0 802BF370 00000000 */ nop -/* 3200E4 802BF374 C622003C */ lwc1 $f2, 0x3c($s1) -/* 3200E8 802BF378 E628001C */ swc1 $f8, 0x1c($s1) -/* 3200EC 802BF37C 3C014080 */ lui $at, 0x4080 -/* 3200F0 802BF380 44814000 */ mtc1 $at, $f8 -/* 3200F4 802BF384 46023181 */ sub.s $f6, $f6, $f2 -/* 3200F8 802BF388 C622001C */ lwc1 $f2, 0x1c($s1) -/* 3200FC 802BF38C E62A0014 */ swc1 $f10, 0x14($s1) -/* 320100 802BF390 46021080 */ add.s $f2, $f2, $f2 -/* 320104 802BF394 E6280018 */ swc1 $f8, 0x18($s1) -/* 320108 802BF398 E7A60024 */ swc1 $f6, 0x24($sp) -/* 32010C 802BF39C 460A1083 */ div.s $f2, $f2, $f10 -/* 320110 802BF3A0 4600140D */ trunc.w.s $f16, $f2 -/* 320114 802BF3A4 44028000 */ mfc1 $v0, $f16 -/* 320118 802BF3A8 00000000 */ nop -/* 32011C 802BF3AC A622008E */ sh $v0, 0x8e($s1) -/* 320120 802BF3B0 00021400 */ sll $v0, $v0, 0x10 -/* 320124 802BF3B4 00021403 */ sra $v0, $v0, 0x10 -/* 320128 802BF3B8 46040000 */ add.s $f0, $f0, $f4 -/* 32012C 802BF3BC 44824000 */ mtc1 $v0, $f8 -/* 320130 802BF3C0 00000000 */ nop -/* 320134 802BF3C4 46804220 */ cvt.s.w $f8, $f8 -/* 320138 802BF3C8 2402000A */ addiu $v0, $zero, 0xa -/* 32013C 802BF3CC E7A00030 */ swc1 $f0, 0x30($sp) -/* 320140 802BF3D0 8623008E */ lh $v1, 0x8e($s1) -/* 320144 802BF3D4 C622001C */ lwc1 $f2, 0x1c($s1) -/* 320148 802BF3D8 44832000 */ mtc1 $v1, $f4 -/* 32014C 802BF3DC 00000000 */ nop -/* 320150 802BF3E0 46802120 */ cvt.s.w $f4, $f4 -/* 320154 802BF3E4 46043183 */ div.s $f6, $f6, $f4 -/* 320158 802BF3E8 46061080 */ add.s $f2, $f2, $f6 -/* 32015C 802BF3EC 46080003 */ div.s $f0, $f0, $f8 -/* 320160 802BF3F0 E6200018 */ swc1 $f0, 0x18($s1) -/* 320164 802BF3F4 E622001C */ swc1 $f2, 0x1c($s1) -/* 320168 802BF3F8 080AFD3C */ j .L802BF4F0_320260 -/* 32016C 802BF3FC AEA20070 */ sw $v0, 0x70($s5) -.L802BF400_320170: -/* 320170 802BF400 26240038 */ addiu $a0, $s1, 0x38 -/* 320174 802BF404 C624003C */ lwc1 $f4, 0x3c($s1) -/* 320178 802BF408 C620001C */ lwc1 $f0, 0x1c($s1) -/* 32017C 802BF40C 8E260018 */ lw $a2, 0x18($s1) -/* 320180 802BF410 46002100 */ add.s $f4, $f4, $f0 -/* 320184 802BF414 C6220014 */ lwc1 $f2, 0x14($s1) -/* 320188 802BF418 8E27000C */ lw $a3, 0xc($s1) -/* 32018C 802BF41C 46020001 */ sub.s $f0, $f0, $f2 -/* 320190 802BF420 26250040 */ addiu $a1, $s1, 0x40 -/* 320194 802BF424 E624003C */ swc1 $f4, 0x3c($s1) -/* 320198 802BF428 0C00A7E7 */ jal add_vec2D_polar -/* 32019C 802BF42C E620001C */ swc1 $f0, 0x1c($s1) -/* 3201A0 802BF430 8622008E */ lh $v0, 0x8e($s1) -/* 3201A4 802BF434 9623008E */ lhu $v1, 0x8e($s1) -/* 3201A8 802BF438 1440002C */ bnez $v0, .L802BF4EC -/* 3201AC 802BF43C 2462FFFF */ addiu $v0, $v1, -1 -/* 3201B0 802BF440 0C038050 */ jal enable_player_static_collisions -/* 3201B4 802BF444 00000000 */ nop -/* 3201B8 802BF448 0C038069 */ jal enable_player_input -/* 3201BC 802BF44C 00000000 */ nop -/* 3201C0 802BF450 0C039769 */ jal set_action_state -/* 3201C4 802BF454 0000202D */ daddu $a0, $zero, $zero -/* 3201C8 802BF458 0C00EAE8 */ jal enable_npc_shadow -/* 3201CC 802BF45C 0220202D */ daddu $a0, $s1, $zero -/* 3201D0 802BF460 0C03BD17 */ jal partner_clear_player_tracking -/* 3201D4 802BF464 0220202D */ daddu $a0, $s1, $zero -/* 3201D8 802BF468 3C040001 */ lui $a0, 1 -/* 3201DC 802BF46C 34840002 */ ori $a0, $a0, 2 -/* 3201E0 802BF470 0000282D */ daddu $a1, $zero, $zero -/* 3201E4 802BF474 00A0302D */ daddu $a2, $a1, $zero -/* 3201E8 802BF478 00A0382D */ daddu $a3, $a1, $zero -/* 3201EC 802BF47C 8E220000 */ lw $v0, ($s1) -/* 3201F0 802BF480 3C088007 */ lui $t0, %hi(gGameStatusPtr) -/* 3201F4 802BF484 8D08419C */ lw $t0, %lo(gGameStatusPtr)($t0) -/* 3201F8 802BF488 2403FFF7 */ addiu $v1, $zero, -9 -/* 3201FC 802BF48C 3C01802C */ lui $at, %hi(D_802BFEEC) -/* 320200 802BF490 AC20FEEC */ sw $zero, %lo(D_802BFEEC)($at) -/* 320204 802BF494 00431024 */ and $v0, $v0, $v1 -/* 320208 802BF498 34420200 */ ori $v0, $v0, 0x200 -/* 32020C 802BF49C 2403FFBF */ addiu $v1, $zero, -0x41 -/* 320210 802BF4A0 00431024 */ and $v0, $v0, $v1 -/* 320214 802BF4A4 AE220000 */ sw $v0, ($s1) -/* 320218 802BF4A8 A100007D */ sb $zero, 0x7d($t0) -/* 32021C 802BF4AC A2800000 */ sb $zero, ($s4) -/* 320220 802BF4B0 A2800003 */ sb $zero, 3($s4) -/* 320224 802BF4B4 AFA00010 */ sw $zero, 0x10($sp) -/* 320228 802BF4B8 AFA00014 */ sw $zero, 0x14($sp) -/* 32022C 802BF4BC 0C0B77FE */ jal func_802DDFF8 -/* 320230 802BF4C0 AFA00018 */ sw $zero, 0x18($sp) -/* 320234 802BF4C4 0220202D */ daddu $a0, $s1, $zero -/* 320238 802BF4C8 0000282D */ daddu $a1, $zero, $zero -/* 32023C 802BF4CC 00A0302D */ daddu $a2, $a1, $zero -/* 320240 802BF4D0 00A0382D */ daddu $a3, $a1, $zero -/* 320244 802BF4D4 AFA00010 */ sw $zero, 0x10($sp) -/* 320248 802BF4D8 AFA00014 */ sw $zero, 0x14($sp) -/* 32024C 802BF4DC 0C00F589 */ jal func_8003D624 -/* 320250 802BF4E0 AFA00018 */ sw $zero, 0x18($sp) -/* 320254 802BF4E4 080AFD3D */ j .L802BF4F4 -/* 320258 802BF4E8 24020001 */ addiu $v0, $zero, 1 -.L802BF4EC: -/* 32025C 802BF4EC A622008E */ sh $v0, 0x8e($s1) -.L802BF4F0_320260: -/* 320260 802BF4F0 0000102D */ daddu $v0, $zero, $zero -.L802BF4F4: -/* 320264 802BF4F4 8FBF0064 */ lw $ra, 0x64($sp) -/* 320268 802BF4F8 8FB60060 */ lw $s6, 0x60($sp) -/* 32026C 802BF4FC 8FB5005C */ lw $s5, 0x5c($sp) -/* 320270 802BF500 8FB40058 */ lw $s4, 0x58($sp) -/* 320274 802BF504 8FB30054 */ lw $s3, 0x54($sp) -/* 320278 802BF508 8FB20050 */ lw $s2, 0x50($sp) -/* 32027C 802BF50C 8FB1004C */ lw $s1, 0x4c($sp) -/* 320280 802BF510 8FB00048 */ lw $s0, 0x48($sp) -/* 320284 802BF514 D7B40068 */ ldc1 $f20, 0x68($sp) -/* 320288 802BF518 03E00008 */ jr $ra -/* 32028C 802BF51C 27BD0070 */ addiu $sp, $sp, 0x70 diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index 9d12ba7711..2334ef5dfe 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -55,8 +55,8 @@ segments: - [0x6240, c, fio] - [0x6E40, c, curtains] - [0x7340, c, crash_screen] - - [0x7E40, c, os/nusys/nuGfxTaskMgr, -fforce-addr] - - [0x8230, c, os/nusys/nuSiMgr] + - [0x7E40, c, os/nusys/nugfxtaskmgr, -fforce-addr] + - [0x8230, c, os/nusys/nusimgr] - [0x8560, c] - [0x8800, c] - [0x9D10, c, 9d10_len_1080] @@ -99,36 +99,36 @@ segments: - [0x362A0, c, collision] - [0x38F00, c, 38F00] - [0x39210, c, 39210_len_aa0] - - [0x39CB0, c, os/39cb0_len_100] - - [0x39DB0, c, os/nusys/nuSched] - - [0x3A650, c, os/nusys/nuGfxFuncSet] - - [0x3A690, c, os/nusys/nuGfxPreNMIFuncSet] - - [0x3A6D0, c, os/nusys/nuGfxTaskAllEndWait] - - [0x3A6F0, c, os/nusys/nuGfxSetCfb] - - [0x3A800, c, os/nusys/nuGfxDisplayOff] - - [0x3A830, c, os/nusys/nuGfxDisplayOn] - - [0x3A850, c, os/nusys/nuPiInit] - - [0x3A890, c, os/nusys/nuPiReadRom] - - [0x3A960, c, os/nusys/nuGfxInit] - - [0x3AA10, c, os/nusys/nuContInit] - - [0x3AA50, c, os/nusys/nuContDataGet] - - [0x3AAB0, c, os/nusys/nuContPakMgr] - - [0x3AD20, c, os/nusys/nuContRmbMgr] - - [0x3B290, c, os/nusys/nuContRmbStart] - - [0x3B2F0, c, os/nusys/nuContRmbCheck] - - [0x3B390, c, os/nusys/nuContRmbModeSet] - - [0x3B4A0, c, os/nusys/nuContRmbForceStop] - - [0x3B4C0, c, os/nusys/nuContRmbForceStopEnd] - - [0x3B4E0, c, os/nusys/nuPiReadRomOverlay] - - [0x3B5F0, c, os/nusys/nuGfxThread] - - [0x3B710, c, os/nusys/nuGfxSwapCfbFuncSet] - - [0x3B750, c, os/nusys/nuGfxSwapCfb] - - [0x3B770, c, os/nusys/nuGfxRetraceWait] - - [0x3B7F0, c, os/nusys/nuSiCallBackAdd] - - [0x3B890, c, os/nusys/nuSiCallBackRemove] - - [0x3B910, c, os/nusys/nuContMgr] - - [0x3BCC0, c, os/nusys/nuContDataLock] - - [0x3BD20, c, os/nusys/nuContQueryRead] + - [0x39cB0, c, os/nusys/nuboot] + - [0x39DB0, c, os/nusys/nusched] + - [0x3A650, c, os/nusys/nugfxfuncset] + - [0x3A690, c, os/nusys/nugfxprenmifuncset] + - [0x3A6D0, c, os/nusys/nugfxtaskallendwait] + - [0x3A6F0, c, os/nusys/nugfxsetcfb] + - [0x3A800, c, os/nusys/nugfxdisplayoff] + - [0x3A830, c, os/nusys/nugfxdisplayon] + - [0x3A850, c, os/nusys/nupiinit] + - [0x3A890, c, os/nusys/nupireadrom] + - [0x3A960, c, os/nusys/nugfxinit] + - [0x3AA10, c, os/nusys/nucontinit] + - [0x3AA50, c, os/nusys/nucontdataget] + - [0x3AAB0, c, os/nusys/nucontpakmgr] + - [0x3AD20, c, os/nusys/nucontrmbmgr] + - [0x3B290, c, os/nusys/nucontrmbstart] + - [0x3B2F0, c, os/nusys/nucontrmbcheck] + - [0x3B390, c, os/nusys/nucontrmbmodeset] + - [0x3B4A0, c, os/nusys/nucontrmbforcestop] + - [0x3B4C0, c, os/nusys/nucontrmbforcestopend] + - [0x3B4E0, c, os/nusys/nupireadromoverlay] + - [0x3B5F0, c, os/nusys/nugfxthread] + - [0x3B710, c, os/nusys/nugfxswapcfbfuncset] + - [0x3B750, c, os/nusys/nugfxswapcfb] + - [0x3B770, c, os/nusys/nugfxretracewait] + - [0x3B7F0, c, os/nusys/nusicallbackadd] + - [0x3B890, c, os/nusys/nusicallbackremove] + - [0x3B910, c, os/nusys/nucontmgr] + - [0x3BCC0, c, os/nusys/nucontdatalock] + - [0x3BD20, c, os/nusys/nucontqueryread] - [0x3BD40, hasm, os/osSetIntMask] - [0x3BDE0, c, os/pimgr, gcc_272 -O3] - [0x3BF70, c, os/epirawdma, gcc_272 -O3] @@ -314,8 +314,8 @@ segments: - [0x51540, ia8, ui/no_controller, 128, 32] - [0x52540] - [0x52610, .data, crash_screen] - - [0x527F0, .data, os/nusys/nuGfxTaskMgr] - - [0x52800, .data, os/nusys/nuSiMgr] + - [0x527F0, .data, os/nusys/nugfxtaskmgr] + - [0x52800, .data, os/nusys/nusimgr] - [0x52810, .data, camera] - [0x52820, .data, game_modes] - [0x52CA0, .data, state_battle] @@ -338,12 +338,12 @@ segments: - [0x5B320, .data, 5B320] - [0x6B360, .data, world/world] - [0x6EAC0, .data, 38F00] - - [0x6EF80, .data, os/nusys/nuSched] - - [0x6EFA0, .data, os/nusys/nuGfxInit] - - [0x6F0A0, .data, os/nusys/nuContPakMgr] - - [0x6F0E0, .data, os/nusys/nuContRmbMgr] - - [0x6F110, .data, os/nusys/nuGfxFuncSet] - - [0x6F120, .data, os/nusys/nuContMgr] + - [0x6EF80, .data, os/nusys/nusched] + - [0x6EFA0, .data, os/nusys/nugfxinit] + - [0x6F0A0, .data, os/nusys/nucontpakmgr] + - [0x6F0E0, .data, os/nusys/nucontrmbmgr] + - [0x6F110, .data, os/nusys/nugfxfuncset] + - [0x6F120, .data, os/nusys/nucontmgr] - [0x6F120, .data, os/pimgr] - [0x6F120, .data, os/epirawdma] - [0x6F180, .data, os/cartrominit] @@ -16273,19 +16273,19 @@ segments: # - [0x199BB00, bin] # Princess Peach sprites - [0x19E0970, bin] # Player sprite Yay0 table (offsets to the following 13 entries) - - { start: 0x19E09A8, type: Yay0, align: 8 } - - { start: 0x19E1390, type: Yay0, align: 8 } - - { start: 0x19E1888, type: Yay0, align: 8 } - - { start: 0x19E2330, type: Yay0, align: 8 } - - { start: 0x19E2DE0, type: Yay0, align: 8 } - - { start: 0x19E3208, type: Yay0, align: 8 } - - { start: 0x19E3BA8, type: Yay0, align: 8 } - - { start: 0x19E3FD8, type: Yay0, align: 8 } - - { start: 0x19E4828, type: Yay0, align: 8 } - - { start: 0x19E4BE0, type: Yay0, align: 8 } - - { start: 0x19E5758, type: Yay0, align: 8 } - - { start: 0x19E5950, type: Yay0, align: 8 } - - { start: 0x19E62A0, type: Yay0, align: 8 } + - { start: 0x19E09A8, type: yay0, align: 8 } + - { start: 0x19E1390, type: yay0, align: 8 } + - { start: 0x19E1888, type: yay0, align: 8 } + - { start: 0x19E2330, type: yay0, align: 8 } + - { start: 0x19E2DE0, type: yay0, align: 8 } + - { start: 0x19E3208, type: yay0, align: 8 } + - { start: 0x19E3BA8, type: yay0, align: 8 } + - { start: 0x19E3FD8, type: yay0, align: 8 } + - { start: 0x19E4828, type: yay0, align: 8 } + - { start: 0x19E4BE0, type: yay0, align: 8 } + - { start: 0x19E5758, type: yay0, align: 8 } + - { start: 0x19E5950, type: yay0, align: 8 } + - { start: 0x19E62A0, type: yay0, align: 8 } - start: 0x19E67B8 align: 8 diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index a6ecb3892d..5b11477ed6 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -2415,7 +2415,7 @@ D_80093CE4 = 0x80093CE4; // type:data rom:0x6F0E4 nuContRmbCallBack = 0x80093D00; // rom:0x6F100 nuGfxFunc = 0x80093D10; // rom:0x6F110 nuGfxPreNMIFunc = 0x80093D14; // rom:0x6F114 -D_80093D20 = 0x80093D20; // type:data rom:0x6F120 +nuContReadFunc = 0x80093D20; // type:data rom:0x6F120 D_80093D24 = 0x80093D24; // type:data rom:0x6F124 D_80093D34 = 0x80093D34; // type:data rom:0x6F134 nuContCallBack = 0x80093D38; // type:data rom:0x6F138 @@ -2875,10 +2875,10 @@ gCollisionNormalZ = 0x800A4260; // type:data rom:0x7F660 gCollisionDataBackup = 0x800A4264; // type:data rom:0x7F664 gCollisionDataZoneBackup = 0x800A4268; // type:data rom:0x7F668 D_800A426C = 0x800A426C; // type:data rom:0x7F66C -D_800A4270 = 0x800A4270; // type:data rom:0x7F670 +IdleThread = 0x800A4270; // type:data rom:0x7F670 check_input_spin = 0x800E6268; // type:func rom:0x7F718 peach_set_disguise_anim = 0x800E636C; // type:func rom:0x7F81C -D_800A4420 = 0x800A4420; // type:data rom:0x7F820 +MainThread = 0x800A4420; // type:data rom:0x7F820 peach_force_disguise_action = 0x800E63A4; // type:func rom:0x7F854 peach_check_for_parasol_input = 0x800E6428; // type:func rom:0x7F8D8 peach_sync_disguise_npc = 0x800E6500; // type:func rom:0x7F9B0 @@ -16132,7 +16132,7 @@ func_8024366C_8B36DC = 0x8024366C; // type:func rom:0x8B36DC kmr_02_UnkFunc42 = 0x802436FC; // type:func rom:0x8B376C kmr_02_foliage_setup_shear_mtx = 0x80243760; // type:func rom:0x8B37D0 kmr_02_TransformFoliage = 0x802437D0; // type:func rom:0x8B3840 -func_802439A0_8B3A10 = 0x802439A0; // type:func rom:0x8B3A10 +kmr_02_LoadPartyImage = 0x802439A0; // type:func rom:0x8B3A10 D_80244B2C_8B4B9C = 0x80244B2C; // type:data rom:0x8B4B9C kmr_02_varStash = 0x802455D0; // type:data rom:0x8B5640 kmr_02_Quizmo_Answers = 0x80245634; // type:data rom:0x8B56A4 @@ -17802,9 +17802,7 @@ dup2_nok_02_ItemChoice_HasSelectedItem = 0x80252400; // type:data rom:0x9E9420 dup2_nok_02_ItemChoice_SelectedItemID = 0x80252404; // type:data rom:0x9E9424 nok_02_varStash = 0x80252720; // type:data rom:0x9E9740 D_80252784_9E97A4 = 0x80252784; // type:data rom:0x9E97A4 -D_80252794_9E97B4 = 0x80252794; // type:data rom:0x9E97B4 -D_80252798_9E97B8 = 0x80252798; // type:data rom:0x9E97B8 -D_8025279C_9E97BC = 0x8025279C; // type:data rom:0x9E97BC +D_80252784_9E97A4 + 0x10 = 0x80252794; // type:data rom:0x9E97B4 D_802529B4_9E99D4 = 0x802529B4; // type:data rom:0x9E99D4 D_80254620_9EB640 = 0x80254620; // type:data rom:0x9EB640 D_80254628_9EB648 = 0x80254628; // type:data rom:0x9EB648 @@ -17830,7 +17828,7 @@ func_802406C4_9EE2B4 = 0x802406C4; // type:func rom:0x9EE2B4 func_80240814_9EE404 = 0x80240814; // type:func rom:0x9EE404 func_80240E4C_9EEA3C = 0x80240E4C; // type:func rom:0x9EEA3C func_80240E70_9EEA60 = 0x80240E70; // type:func rom:0x9EEA60 -func_80240E90_9EEA80 = 0x80240E90; // type:func rom:0x9EEA80 +nok_04_LoadPartyImage = 0x80240E90; // type:func rom:0x9EEA80 D_802413F8_9EEFE8 = 0x802413F8; // type:data rom:0x9EEFE8 D_80241438_9EF028 = 0x80241438; // type:data rom:0x9EF028 D_8024143C_9EF02C = 0x8024143C; // type:data rom:0x9EF02C @@ -19427,7 +19425,7 @@ jan_04_IsItemBadge = 0x802405B8; // type:func rom:0xB44D28 jan_04_ChangeNpcToPartner = 0x80240610; // type:func rom:0xB44D80 jan_04_foliage_setup_shear_mtx = 0x802407A0; // type:func rom:0xB44F10 jan_04_TransformFoliage = 0x80240810; // type:func rom:0xB44F80 -func_802409E0_B45150 = 0x802409E0; // type:func rom:0xB45150 +jan_04_LoadPartyImage = 0x802409E0; // type:func rom:0xB45150 jan_04_SetEntityPositionF = 0x80240A80; // type:func rom:0xB451F0 jan_04_GetEntityPosition = 0x80240B48; // type:func rom:0xB452B8 func_80240BE8_B45358 = 0x80240BE8; // type:func rom:0xB45358 @@ -20060,7 +20058,7 @@ D_80244FEC_BD885C = 0x80244FEC; // type:data rom:0xBD885C obk_09_ChangeNpcToPartner = 0x80240000; // type:func rom:0xBDA7B0 func_80240190_BDA940 = 0x80240190; // type:func rom:0xBDA940 func_80240248_BDA9F8 = 0x80240248; // type:func rom:0xBDA9F8 -func_80240350_BDAB00 = 0x80240350; // type:func rom:0xBDAB00 +obk_09_LoadPartyImage = 0x80240350; // type:func rom:0xBDAB00 func_802403F0_BDABA0 = 0x802403F0; // type:func rom:0xBDABA0 D_802429E8_BDD198 = 0x802429E8; // type:data rom:0xBDD198 arn_02_CleftAI_CanSeePlayer = 0x80240000; // type:func rom:0xBDD1B0 @@ -24839,7 +24837,7 @@ omo_12_SetCamera0Flag1000 = 0x802402DC; // type:func rom:0xDDF5EC omo_12_UnsetCamera0Flag1000 = 0x802402F8; // type:func rom:0xDDF608 func_80240314_DDF624 = 0x80240314; // type:func rom:0xDDF624 func_802403D8_DDF6E8 = 0x802403D8; // type:func rom:0xDDF6E8 -func_80240420_DDF730 = 0x80240420; // type:func rom:0xDDF730 +omo_12_LoadPartyImage = 0x80240420; // type:func rom:0xDDF730 D_80243168_DE2478 = 0x80243168; // type:data rom:0xDE2478 func_80240000_DE2490 = 0x80240000; // type:func rom:0xDE2490 omo_13_ShyGuyWanderAI_14 = 0x80240280; // type:func rom:0xDE2710