curtains.c data work, assorted funcs, new file, etc and cleanup: misc decomp (#360)

* PlayEffect progress, two insane funcs

* PartnerActionStatus struct and some cleanup

* file split

* physics funcs

* data migration, some decomp

* curtains data, etc

* git subrepo pull (merge) --force tools/splat

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

* git subrepo pull tools/splat

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

* PR comments
This commit is contained in:
Ethan Roseman 2021-08-14 02:27:57 +09:00 committed by GitHub
parent 3dfb922ce0
commit 3c887e6ac3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
177 changed files with 1679 additions and 1993 deletions

View File

@ -13,7 +13,8 @@
"includePath": [
"${workspaceFolder}/include",
"${workspaceFolder}/ver/us/build/include",
"${workspaceFolder}/src"
"${workspaceFolder}/src",
"${workspaceFolder}/assets/us",
],
"defines": [
"F3DEX_GBI_2",

View File

@ -1442,13 +1442,13 @@ typedef struct ActorPart {
} ActorPart; // size = 0xC4
typedef struct ColliderTriangle {
/* 0x00 */ f32* v1[3]; /* note: the order of v1,2,3 is reversed from the ijk in the hit file */
/* 0x04 */ f32* v2[3];
/* 0x08 */ f32* v3[3];
/* 0x0C */ f32 e13[3]; /* = v3 - v1 */
/* 0x18 */ f32 e21[3]; /* = v1 - v2 */
/* 0x24 */ f32 e32[3]; /* = v2 - v3 */
/* 0x30 */ f32 normal[3];
/* 0x00 */ Vec3f* v1; /* note: the order of v1,2,3 is reversed from the ijk in the hit file */
/* 0x04 */ Vec3f* v2;
/* 0x08 */ Vec3f* v3;
/* 0x0C */ Vec3f e13; /* = v3 - v1 */
/* 0x18 */ Vec3f e21; /* = v1 - v2 */
/* 0x24 */ Vec3f e32; /* = v2 - v3 */
/* 0x30 */ Vec3f normal;
/* 0x3C */ s16 oneSided; /* 1 = yes, 0 = no */
/* 0x3E */ char unk_3E[2];
} ColliderTriangle; // size = 0x40
@ -2147,20 +2147,21 @@ typedef struct Temp8010F250 {
/* 0x30 */ SoundID unk_30;
} Temp8010F250; // size = 0x34
typedef struct Temp8010EBB0 {
/* 0x000 */ s8 unk_00;
/* 0x001 */ s8 unk_01;
/* 0x002 */ s8 unk_02;
/* 0x003 */ s8 unk_03;
/* 0x004 */ char unk_04[0x4];
/* 0x008 */ s32 unk_08;
/* 0x009 */ s32 unk_0C;
/* 0x010 */ char unk_10[0x4];
/* 0x014 */ s8 unk_14;
typedef struct PartnerActionStatus {
/* 0x000 */ union {
/* */ s32 i;
/* */ s8 b[4];
} actionState;
/* 0x004 */ s16 stickX;
/* 0x006 */ s16 stickY;
/* 0x008 */ s32 currentButtons;
/* 0x00C */ s32 pressedButtons;
/* 0x010 */ s32 heldButtons;
/* 0x014 */ s8 inputDisabled;
/* 0x015 */ char unk_15[0x343];
/* 0x358 */ s32 unk_358;
/* 0x35C */ char unk_35C[0x4];
} Temp8010EBB0; // size = 0x360
} PartnerActionStatus; // size = 0x360
typedef struct Temp8025D160 {
/* 0x00 */ s32 unk_00;

View File

@ -16,11 +16,11 @@ void fx_land(s32, f32, f32, f32, f32);
void fx_walk(s32, f32, f32, f32, f32, f32);
void playFX_08(f32, f32, f32, f32);
void playFX_09(s32, f32, f32, f32, f32, f32);
EffectInstance* playFX_0A(f32, f32, s32, s32, f32, f32);
EffectInstance* playFX_0A(f32, f32, f32, f32);
EffectInstance* playFX_0B(s32, f32, f32, f32);
EffectInstance* playFX_0C(f32, f32, f32, f32, f32);
EffectInstance* playFX_0D(s32, f32, f32, f32, s32);
EffectInstance* playFX_0E(f32, f32, s32, s32, f32, s32);
EffectInstance* playFX_0E(f32, f32, f32, s32);
void playFX_0F(s32, f32, f32, f32, f32, f32, f32, f32);
void fx_emote(s32, Npc*, f32, f32, f32, f32, f32, s32, s32*);
void playFX_11(s32, f32, f32, f32, f32);
@ -33,12 +33,12 @@ void playFX_17(s32, f32, f32, f32);
void playFX_18(s32, f32, f32, f32, f32, f32, f32, s32);
void playFX_19(s32, f32, f32, f32);
EffectInstance* playFX_1A(s32, f32, f32, f32, s32);
EffectInstance* playFX_1B(s32, f32, f32, f32, f32, EffectInstanceData**);
EffectInstance* playFX_1B(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_1C(s32, f32, f32, f32, s32);
void playFX_1D(s32, f32, f32, f32, f32, s32, f32, s32);
EffectInstance* playFX_1E(s32, f32, f32, f32, f32, f32, s32, s32*);
EffectInstance* playFX_1F(s32, f32, f32, f32, f32, f32, f32, f32);
EffectInstance* playFX_20(s32, f32, f32, f32, f32, EffectInstanceData**);
EffectInstance* playFX_20(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_21(s32, f32, f32, f32, f32, f32, s32);
void playFX_22(s32, f32, f32, f32, f32, f32, s32, s32);
EffectInstance* playFX_23(u32, f32, f32, f32, f32);
@ -47,26 +47,26 @@ EffectInstance* playFX_25(s32, f32, f32, f32);
void playFX_26(s32, f32, f32, f32);
EffectInstance* playFX_27(s32, f32, f32, f32, f32, s32);
void fx_sweat(s32, f32 x, f32 y, f32 z, f32, f32, s32);
void fx_sleep_bubble(s32, f32, f32, f32, f32, f32, EffectInstanceData**);
void fx_sleep_bubble(s32, f32, f32, f32, f32, f32, s32);
EffectInstance* playFX_2A(s32, f32, f32, f32);
EffectInstance* playFX_2B(s32, f32, f32, f32);
EffectInstance* playFX_2C(s32, f32, f32, f32);
void playFX_2D(s32, f32, f32, f32, s32, s32);
void playFX_2E(s32, f32, f32, f32, f32, s32);
void playFX_2F(s32, f32, f32, f32, f32, s32, EffectInstanceData**);
void playFX_2F(s32, f32, f32, f32, f32, s32, s32);
void playFX_30(s32, f32, f32, f32);
void playFX_31(s32, f32, f32, f32);
void playFX_32(s32, f32, f32, f32, f32);
EffectInstance* playFX_33(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_34(s32, f32, f32, f32, f32, EffectInstanceData**);
EffectInstance* playFX_35(s32, f32, f32, f32, f32, EffectInstanceData**);
EffectInstance* playFX_34(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_35(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_36(s32, f32, f32, f32, f32, f32);
EffectInstance* playFX_37(s32, f32, f32, f32, f32, f32, f32, s32, s32, s32);
EffectInstance* playFX_38(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_39(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_3A(s32, f32, f32, f32, f32, f32, s32, s32);
void playFX_3B(s32, f32, f32, f32, f32, EffectInstanceData**);
EffectInstance* playFX_3C(s32, f32, f32, f32, f32, EffectInstanceData**);
void playFX_3B(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_3C(s32, f32, f32, f32, f32, s32);
void playFX_3D(s32, f32, f32, f32, f32, f32, f32, s32, s32*);
EffectInstance* playFX_3E(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_3F(s32, f32, f32, f32, s32);
@ -101,7 +101,7 @@ EffectInstance* playFX_5B(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_5C(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_5D(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_5E(s32, f32, f32, f32, f32, f32, f32, f32, s32);
void playFX_5F(s32, f32 x, f32 y, f32 z, f32 scale /* maybe */, s32);
EffectInstance* playFX_5F(s32, f32 x, f32 y, f32 z, f32 scale /* maybe */, s32);
EffectInstance* playFX_60(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_61(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_62(s32, f32, f32, f32, f32, s32);
@ -136,7 +136,7 @@ EffectInstance* playFX_7E(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_7F(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_80(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_81(s32, f32 x, f32 y, f32 z, f32, s32);
void playFX_82(s32, f32, f32, f32, f32, s32 time);
EffectInstance* playFX_82(s32, f32, f32, f32, f32, s32 time);
EffectInstance* playFX_83(s32, f32, f32, f32, f32, s32);
EffectInstance* playFX_84(s32, f32, f32, f32, f32, f32);
EffectInstance* playFX_85(s32, f32, f32, f32, f32, s32);

View File

@ -194,6 +194,10 @@ s32 battle_heap_create(void);
void filemenu_init(s32);
s32 test_ray_zones(f32, f32, f32, f32*, f32*, f32*, f32*, f32*, f32*, f32*);
s32 test_ray_colliders(s32 ignoreFlags, f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ, f32* hitX,
f32* hitY, f32* hitZ, f32* hitDepth, f32* hitNx, f32* hitNy, f32* hitNz);
s32 test_ray_entities(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ, f32* hitX, f32* hitY, f32* hitZ,
f32* hitDepth, f32* hitNx, f32* hitNy, f32* hitNz);
void mem_clear(s8* data, s32 numBytes);

14
include/mips.h Normal file
View File

@ -0,0 +1,14 @@
#ifndef _MIPS_H_
#define _MIPS_H_
#define JAL 0x03
#define ADDIU 0x09
#define LUI 0x0F
#define LW 0x23
#define LOWER(x) ((x) & 0xFFFF)
#define UPPER(x) ((x) >> 16)
#define OPCODE(x) ((x) >> 26)
#define GET_RS(x) ((x >> 0x15) & 0x1F)
#define GET_RT(x) (UPPER(x) & 0x1F)
#endif

View File

@ -288,8 +288,9 @@ extern f32 D_800F7B40;
extern s32 D_800F7B44;
extern f32 D_8010C938;
extern f32 D_8010C990;
extern s32 D_8010C978;
extern Temp8010EBB0 D_8010EBB0; // something with partners
extern PartnerActionStatus gPartnerActionStatus; // something with partners
extern Temp8010F250 D_8010F250; // sfx_play_sound state struct?
// Effects

View File

@ -1,3 +1,53 @@
#include "common.h"
#include "nu/nusys.h"
#include "ld_addrs.h"
#include "mips.h"
INCLUDE_ASM(s32, "316C00", func_802AE000_316C00);
extern s32 D_7012BC11[];
void func_802AE000_316C00(void) {
s32(*readFunc)(OSPiHandle*, u32, u32*);
UNK_FUN_PTR(generalHeapCreate);
u32 thisInsn;
u32* it;
u32 prevInsn;
s32 seed;
u32 blah;
u32 hash;
readFunc = osEPiReadIo;
seed = 0x4BF15BF6; // 0x3C016C07 + 0xFEFEFEF;
generalHeapCreate = D_7012BC11; // 0x8002AC00 - 0xFEFEFEF (the former address being that of general_heap_create)
hash = 0;
readFunc(nuPiCartHandle, 0xB0000574, &thisInsn);
seed -= thisInsn; // thisInsn = 0x3C016C07 here
prevInsn = 0;
for (it = _316A70_ROM_START; it < _316A70_ROM_END; it++) {
readFunc(nuPiCartHandle, it, &thisInsn);
hash += LOWER(thisInsn) + UPPER(thisInsn);
if (OPCODE(prevInsn) == LUI && (OPCODE(thisInsn) == ADDIU || OPCODE(thisInsn) == LW)) {
if (GET_RS(thisInsn) == GET_RT(prevInsn) && GET_RS(thisInsn) == GET_RT(thisInsn)) {
hash -= LOWER(thisInsn);
hash -= LOWER(prevInsn);
}
}
if (OPCODE(thisInsn) == JAL) {
hash -= LOWER(thisInsn) + (UPPER(thisInsn) & 0xFC00);
}
prevInsn = thisInsn;
}
generalHeapCreate += seed + 0x2499BF - hash;
// If the function's address is 0x8XXXXXXX
if (((u32)generalHeapCreate >> 0x1C) == 8) {
// Call the function that ends up being generalHeapCreate
(generalHeapCreate)();
}
}

View File

@ -1,3 +1,54 @@
#include "common.h"
#include "nu/nusys.h"
#include "ld_addrs.h"
#include "mips.h"
INCLUDE_ASM(s32, "316d90", func_802AE000);
extern s32 D_7012ACA1[];
void func_802AE000(void) {
s32(*readFunc)(OSPiHandle*, u32, u32*);
UNK_FUN_PTR(aFunction);
u32 thisInsn;
u32* it;
u32 prevInsn;
s32 seed;
u32 blah;
u32 hash;
readFunc = osEPiReadIo;
seed = 0x33F50000;
aFunction = D_7012ACA1;
hash = 0;
readFunc(nuPiCartHandle, 0xB0000800, &thisInsn);
seed -= thisInsn;
prevInsn = 0;
for (it = _316C00_ROM_START; it < _316C00_ROM_END; it++) {
readFunc(nuPiCartHandle, it, &thisInsn);
hash += LOWER(thisInsn) + UPPER(thisInsn);
if (OPCODE(prevInsn) == LUI && (OPCODE(thisInsn) == ADDIU || OPCODE(thisInsn) == LW)) {
if (GET_RS(thisInsn) == GET_RT(prevInsn) && GET_RS(thisInsn) == GET_RT(thisInsn)) {
hash -= LOWER(thisInsn);
hash -= LOWER(prevInsn);
}
}
if (OPCODE(thisInsn) == JAL) {
hash -= LOWER(thisInsn) + (UPPER(thisInsn) & 0xFC00);
}
prevInsn = thisInsn;
}
aFunction += seed + 0x291993 - hash;
// If the function's address is 0x8XXXXXXX
if (((u32)aFunction >> 0x1C) == 8) {
(aFunction)();
} else {
_heap_create(&D_803DA800, 0x10000);
}
}

View File

@ -17,7 +17,7 @@ void func_802B203C(void) {
void func_802B2078(void) {
dma_copy(_316C00_ROM_START, _316C00_ROM_END, _316C00_VRAM);
func_802AE000();
func_802AE000_316C00();
}
void func_802B20B4(void) {

View File

@ -67,7 +67,20 @@ INCLUDE_ASM(void, "362a0_len_2f70", load_hit_data, s32 idx, HitAsset* hit);
INCLUDE_ASM(void, "362a0_len_2f70", parent_collider_to_model, s32 colliderID, s16 modelIndex);
INCLUDE_ASM(s32, "362a0_len_2f70", _add_hit_vert_to_buffer);
void _add_hit_vert_to_buffer(f32** buf, f32* vert, s32* bufSize) {
s32 i;
for (i = 0; i < *bufSize; i++) {
if (buf[i] == vert) {
break;
}
}
if (i == *bufSize) {
buf[i] = vert;
(*bufSize)++;
}
}
s32 _get_hit_vert_index_from_buffer(f32** buffer, f32* vert, s32* bufferSize) {
s32 i;
@ -84,40 +97,110 @@ s32 _get_hit_vert_index_from_buffer(f32** buffer, f32* vert, s32* bufferSize) {
INCLUDE_ASM(void, "362a0_len_2f70", update_collider_transform, s16 colliderID);
// Simon says there's a struct size issue here which is causing the subu/addu issue
#ifdef NON_MATCHING
s32 get_collider_type_by_id(s32 colliderID) {
if (colliderID & 0x4000) {
return 0;
} else {
return gCollisionData.collider_list[colliderID].flags;
return gCollisionData.colliderList[colliderID].flags;
}
}
#else
INCLUDE_ASM(s32, "362a0_len_2f70", get_collider_type_by_id);
#endif
INCLUDE_ASM(s32, "362a0_len_2f70", get_flat_collider_normal);
void get_flat_collider_normal(s32 colliderID, f32* x, f32* y, f32* z) {
ColliderTriangle* triangle = &gCollisionData.colliderList[colliderID].triangleTable[0];
INCLUDE_ASM(void, "362a0_len_2f70", get_collider_center, s32 colliderID, f32* x, f32* y, f32* z);
*x = triangle->normal.x;
*y = triangle->normal.y;
*z = triangle->normal.z;
}
void get_collider_center(s32 colliderID, f32* x, f32* y, f32* z) {
ColliderBoundingBox* aabb = gCollisionData.colliderList[colliderID].aabb;
*x = (aabb->min[0] + aabb->max[0]) * 0.5f;
*y = (aabb->min[1] + aabb->max[1]) * 0.5f;
*z = (aabb->min[2] + aabb->max[2]) * 0.5f;
}
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_triangle_general);
INCLUDE_ASM(s32, "362a0_len_2f70", test_down_ray_triangle);
INCLUDE_ASM(s32, "362a0_len_2f70", test_up_ray_triangle);
s32 test_up_ray_triangle(ColliderTriangle* triangle, f32* vertices);
INCLUDE_ASM(s32, "362a0_len_2f70", test_up_ray_triangle, ColliderTriangle* triangle, f32* vertices);
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_colliders);
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_colliders, s32 ignoreFlags, f32 startX, f32 startY, f32 startZ, f32 dirX,
f32 dirY, f32 dirZ, f32* hitX, f32* hitY, f32* hitZ, f32* hitDepth, f32* hitNx, f32* hitNy, f32* hitNz);
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_zones, f32 arg0, f32 arg1, f32 arg2, f32* arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7, f32* arg8, f32* arg9);
INCLUDE_ASM(s32, "362a0_len_2f70", test_up_ray_collider);
//s32 test_up_ray_collider(s32 ignoreFlags, s32 colliderID, f32 x, f32 y, f32 z, f32 length, f32 yaw);
// Close, but no cigar
extern f32 D_800A4230;
extern f32 D_800A4234;
extern f32 D_800A4238;
extern f32 D_800A423C;
extern s32 D_800A4240;
extern f32 D_800A4244;
extern f32 D_800A4254;
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_entities);
#ifdef NON_MATCHING
f32 test_up_ray_collider(s32 ignoreFlags, s32 colliderID, f32 x, f32 y, f32 z, f32 length, f32 yaw) {
CollisionData* collisionData = &gCollisionData;
f32 cosTheta;
f32 sinTheta;
Collider* collider;
ColliderTriangle* triangleTable;
s32 i;
f32 ret;
sin_cos_rad(yaw * TAU / 360.0f, &sinTheta, &cosTheta);
collider = &collisionData->colliderList[colliderID];
D_800A4240 = 0;
D_800A4230 = x;
D_800A4234 = y;
D_800A4238 = z;
D_800A4254 = length;
D_800A423C = sinTheta;
D_800A4244 = -cosTheta;
ret = -1.0f;
if (!(collider->flags & ignoreFlags)) {
if (collider->numTriangles != 0) {
triangleTable = collider->triangleTable;
for (i = 0; i < collider->numTriangles; i++) {
if (test_up_ray_triangle(&triangleTable[i], collisionData->vertices)) {
ret = D_800A4254;
}
}
}
}
return ret;
}
#else
INCLUDE_ASM(s32, "362a0_len_2f70", test_up_ray_collider, s32 ignoreFlags, s32 colliderID, f32 x, f32 y, f32 z, f32 length, f32 yaw);
#endif
INCLUDE_ASM(s32, "362a0_len_2f70", test_ray_entities, f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ,
f32* hitX, f32* hitY, f32* hitZ, f32* hitDepth, f32* hitNx, f32* hitNy, f32* hitNz);
INCLUDE_ASM(s32, "362a0_len_2f70", func_8005DB00);
INCLUDE_ASM(s32, "362a0_len_2f70", func_8005DD54);
ApiStatus func_8005DD54(ScriptInstance* script, s32 isInitialCall) {
f32 angle = clamp_angle(script->varTable[0]);
script->varTable[0] = angle;
if (angle >= 180.0f) {
angle -= 180.0f;
}
if (angle >= 90.0f) {
angle = 180.0f - angle;
}
script->varTable[2] = (s32) (((90.0f - angle) * 95.0f) / 90.0f) + 160;
return ApiStatus_DONE2;
}
s32 func_8005DDF0(void) {
return ~gCurrentEncounter.unk_08 != 0;

View File

@ -10,28 +10,141 @@ INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_down_sides, s32 arg0, f32* arg1,
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_up);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_up_corner);
s32 npc_raycast_up_corner(s32 ignoreFlags, f32* x, f32* y, f32* z, f32* length);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_up_corner, s32 ignoreFlags, f32* x, f32* y, f32* z, f32* length);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_up_corners);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_general);
s32 npc_raycast_general(s32 ignoreFlags, f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ, f32* hitX,
f32* hitY, f32* hitZ, f32* outDepth, f32* hitNx, f32* hitNy, f32* hitNz);
// Dumb float regalloc
#ifdef NON_MATCHING
s32 npc_raycast_general(s32 flags, f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ, f32* hitX,
f32* hitY, f32* hitZ, f32* outDepth, f32* hitNx, f32* hitNy, f32* hitNz) {
s32 entityID;
s32 ret;
void npc_get_slip_vector(f32* arg0, f32* arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
f32 temp = (arg2 * arg4) + (arg3 * arg5);
ret = -1;
if (flags & 0x100000) {
entityID = test_ray_entities(startX, startY, startZ, dirX, dirY, dirZ, hitX, hitY, hitZ, outDepth, hitNx, hitNy,
hitNz);
if (entityID >= 0) {
ret = entityID | 0x4000;
}
} else {
ret = test_ray_colliders(flags, startX, startY, startZ, dirX, dirY, dirZ, hitX, hitY, hitZ, outDepth, hitNx,
hitNy, hitNz);
if (flags & 0x40000) {
return ret;
}
*arg0 = (arg2 - (temp * arg4)) * 0.5f;
*arg1 = (arg3 - (temp * arg5)) * 0.5f;
entityID = test_ray_entities(startX, startY, startZ, dirX, dirY, dirZ, hitX, hitY, hitZ, outDepth, hitNx,
hitNy, hitNz);
if (entityID >= 0) {
ret = entityID | 0x4000;
}
}
return ret;
}
#else
INCLUDE_ASM(s32, "759b0_len_61b0", npc_raycast_general, s32 ignoreFlags, f32 startX, f32 startY, f32 startZ, f32 dirX,
f32 dirY, f32 dirZ, f32* hitX, f32* hitY, f32* hitZ, f32* outDepth, f32* hitNx, f32* hitNy, f32* hitNz);
#endif
void npc_get_slip_vector(f32* outX, f32* outZ, f32 aX, f32 aZ, f32 bX, f32 bZ) {
f32 dotProduct = (aX * bX) + (aZ * bZ);
*outX = (aX - (dotProduct * bX)) * 0.5f;
*outZ = (aZ - (dotProduct * bZ)) * 0.5f;
}
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_with_slipping);
s32 npc_test_move_with_slipping(s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 radius);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_with_slipping, s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 radius);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_without_slipping);
s32 npc_test_move_without_slipping(s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 radius) {
s32 ret = -1;
f32 depth;
f32 originalDepth;
f32 dirY;
f32 cosTheta;
f32 hitNx, hitNy, hitNz;
f32 hitX, hitY, hitZ;
s32 hitID;
f32 temp1;
f32 temp2;
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_taller_with_slipping);
sin_cos_rad(yaw * TAU / 360.0f, &dirY, &cosTheta);
cosTheta = -cosTheta;
originalDepth = length + radius + (radius * 0.5f);
depth = originalDepth;
temp1 = length * dirY;
temp2 = length * cosTheta;
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_simple_with_slipping, s32 arg0, f32* arg1, f32* arg2, f32* arg3, f32 arg4, f32 arg5,
f32 arg6, f32 arg7);
hitID = npc_raycast_general(ignoreFlags, *x - (radius * dirY * 0.5f), *y, *z - (radius * cosTheta * 0.5f), dirY,
0.0f, cosTheta, &hitX, &hitY, &hitZ, &depth, &hitNx, &hitNy, &hitNz);
if (hitID >= 0 && depth <= originalDepth) {
f32 depthDiff = depth - originalDepth;
f32 cosThetaTemp = cosTheta; // needed to match
*x += depthDiff * dirY;
*z += depthDiff * cosThetaTemp;
D_8010C978 = hitID;
ret = hitID;
}
*x += temp1;
*z += temp2;
return ret;
}
s32 npc_test_move_taller_with_slipping(s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 height,
f32 radius) {
f32 xTemp = *x;
f32 yTemp = *y + height - 1.0f;
f32 zTemp = *z;
s32 ret;
radius *= 0.5f;
if (npc_test_move_with_slipping(ignoreFlags, &xTemp, &yTemp, &zTemp, fabsf(length), yaw, radius) < 0) {
xTemp = *x;
yTemp = *y + 10.01f;
zTemp = *z;
ret = npc_test_move_with_slipping(ignoreFlags, &xTemp, &yTemp, &zTemp, fabsf(length), yaw, radius) >= 0;
*x = xTemp;
*z = zTemp;
} else {
ret = 1;
*x = xTemp;
*z = zTemp;
}
return ret;
}
s32 npc_test_move_simple_with_slipping(s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 height,
f32 radius) {
f32 tempX = *x;
f32 tempY = *y + 10.01f;
f32 tempZ = *z;
s32 hitID = npc_test_move_with_slipping(ignoreFlags, &tempX, &tempY, &tempZ, fabsf(length), yaw, radius * 0.5f);
*x = tempX;
*z = tempZ;
return hitID >= 0;
}
s32 npc_test_move_simple_without_slipping(s32 ignoreFlags, f32* x, f32* y, f32* z, f32 length, f32 yaw, f32 height,
f32 radius) {
f32 tempX = *x;
f32 tempY = *y + 10.01f;
f32 tempZ = *z;
s32 hitID = npc_test_move_without_slipping(ignoreFlags, &tempX, &tempY, &tempZ, fabsf(length), yaw, radius * 0.5f);
*x = tempX;
*z = tempZ;
return hitID >= 0;
}
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_simple_without_slipping);
INCLUDE_ASM(s32, "759b0_len_61b0", npc_test_move_complex_with_slipping);

View File

@ -350,9 +350,10 @@ void player_reset_data(void) {
}
s32 func_800DFCF4(void) {
if (D_8010EBB0.unk_00 == 1 &&
(D_8010EBB0.unk_03 == 6 || D_8010EBB0.unk_03 == 9 || D_8010EBB0.unk_03 == 7 || D_8010EBB0.unk_03 == 4 ||
D_8010EBB0.unk_03 == 8)) {
if (gPartnerActionStatus.actionState.b[0] == 1 &&
(gPartnerActionStatus.actionState.b[3] == 6 || gPartnerActionStatus.actionState.b[3] == 9 ||
gPartnerActionStatus.actionState.b[3] == 7 || gPartnerActionStatus.actionState.b[3] == 4 ||
gPartnerActionStatus.actionState.b[3] == 8)) {
return 0;
}
return 1;
@ -455,7 +456,7 @@ s32 func_800E0208(void) {
s32 ret = 0;
if (gGameStatusPtr->disableScripts && (gGameStatusPtr->currentButtons & 0x10)) {
if (D_8010EBB0.unk_00 == 0) {
if (gPartnerActionStatus.actionState.b[0] == 0) {
set_action_state(ACTION_STATE_IDLE);
}
ret = 1;

317
src/7E9D0.c Normal file
View File

@ -0,0 +1,317 @@
#include "common.h"
#include "world/partners.h"
extern s32 D_8010C924;
extern s32 D_8010C964;
extern s32 D_8010C96C; // npc list index
extern s32 gSpinHistoryBufferPos;
extern s16 D_8010C9B0;
extern s32 gSpinHistoryPosY[5];
extern s32 gSpinHistoryPosX[5];
extern s32 gSpinHistoryPosZ[5];
extern s16 gSpinHistoryPosAngle[5];
void func_800E5520(void) {
D_8010C9B0 = 0;
}
INCLUDE_ASM(void, "7bb60_len_41b0", phys_adjust_cam_on_landing);
void phys_clear_spin_history(void) {
s32 i;
gSpinHistoryBufferPos = 0;
for (i = 0; i < ARRAY_COUNT(gSpinHistoryPosY); i++) {
gSpinHistoryPosAngle[i] = 180;
gSpinHistoryPosY[i] = 0x80000000;
}
}
f32 phys_get_spin_history(s32 lag, s32* x, s32* y, s32* z) {
s32 idx = gSpinHistoryBufferPos;
// Can't get this if/else to match otherwise...
if (idx - lag >= 0) {
idx -= lag;
} else {
idx = gSpinHistoryBufferPos - lag + 5;
}
*x = gSpinHistoryPosX[idx];
*y = gSpinHistoryPosY[idx];
*z = gSpinHistoryPosZ[idx];
return gSpinHistoryPosAngle[idx];
}
void phys_reset_spin_history(void) {
s32 i;
mem_clear(&D_8010F250, sizeof(Temp8010F250));
gSpinHistoryBufferPos = 0;
for (i = 0; i < ARRAY_COUNT(gSpinHistoryPosAngle); i++) {
gSpinHistoryPosAngle[i] = 0;
gSpinHistoryPosX[i] = 0;
gSpinHistoryPosY[i] = 0;
gSpinHistoryPosZ[i] = 0;
}
D_8010C964 = 0;
D_8010C924 = 0;
}
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_update_action_state);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_peach_update);
void set_action_state(s32 actionState) {
PlayerStatus* playerStatus = &gPlayerStatus;
PlayerData* playerData = &gPlayerData;
UNK_TYPE* unknownStruct = &D_8010F250;
if (playerStatus->flags & 0x200) {
playerStatus->flags &= ~0x200;
enable_player_input();
}
if (playerStatus->animFlags & 0x4000) {
// TODO figure this out
#ifdef NON_MATCHING
if (
actionState == ACTION_STATE_IDLE || actionState == ACTION_STATE_WALK ||
actionState == ACTION_STATE_RUN || actionState == ACTION_STATE_JUMP ||
actionState == ACTION_STATE_BOUNCE || actionState == ACTION_STATE_HOP ||
actionState == ACTION_STATE_LAUNCH || actionState == ACTION_STATE_LAND_ON_SWITCH ||
actionState == ACTION_STATE_FALLING || actionState == ACTION_STATE_STEP_DOWN ||
actionState == ACTION_STATE_LAND || actionState == ACTION_STATE_STEP_DOWN_LAND
) {
#else
if (actionState < ACTION_STATE_TALK)
if (actionState >= 0) {
#endif
playerStatus->prevActionState = playerStatus->actionState;
playerStatus->actionState = actionState;
playerStatus->flags |= 0x80000000;
}
return;
}
if (actionState == ACTION_STATE_HIT_FIRE || actionState == ACTION_STATE_HIT_LAVA) {
PartnerID partner;
if (playerStatus->unk_BF == 3) {
actionState = ACTION_STATE_HIT_FIRE;
}
// Whilst Sushie, Lakilester, Parakarry's ability is active, hazards have no effect.
partner = playerData->currentPartner;
if (partner == PARTNER_SUSHIE || partner == PARTNER_LAKILESTER || partner == PARTNER_PARAKARRY) {
if (gPartnerActionStatus.actionState.b[0] != 0) {
playerStatus->animFlags |= 0x4;
playerStatus->flags |= 0x800;
return;
}
}
}
if (actionState == ACTION_STATE_SLIDE) {
playerStatus->flags |= 0x10;
playerStatus->moveFrames = 0;
playerStatus->flags &= ~0x4000;
}
playerStatus->prevActionState = playerStatus->actionState;
if (actionState == ACTION_STATE_USE_TWEESTER) {
playerStatus->prevActionState = ACTION_STATE_IDLE;
}
if (actionState == ACTION_STATE_ENEMY_FIRST_STRIKE) {
playerStatus->animFlags |= 4;
}
playerStatus->actionState = actionState;
playerStatus->flags |= 0x80000000;
if (playerStatus->actionState == ACTION_STATE_SPIN) {
return;
}
playerStatus->flags &= ~0x20000;
playerStatus->animFlags &= ~0x10000;
if (unknownStruct[0xC]) {
sfx_stop_sound(unknownStruct[0xC]);
}
if (playerStatus->unk_D8) {
playerStatus->unk_D8[3][9] = 0xA;
playerStatus->unk_D8 = NULL;
}
}
void update_locomotion_state(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
do { } while (0); // required to match
set_action_state((!is_ability_active(ABILITY_SLOW_GO)
&& (SQ(playerStatus->stickAxis[0]) + SQ(playerStatus->stickAxis[1]) >= 0xBD2)) ? ACTION_STATE_RUN : ACTION_STATE_WALK);
}
void start_falling(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_FALLING);
playerStatus->gravityIntegrator[0] = 0.1143f;
playerStatus->gravityIntegrator[1] = -0.2871f;
playerStatus->gravityIntegrator[2] = -0.1823f;
playerStatus->gravityIntegrator[3] = 0.01152f;
}
void start_bounce_a(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_BOUNCE);
playerStatus->gravityIntegrator[0] = 10.0f;
playerStatus->gravityIntegrator[1] = -2.0f;
playerStatus->gravityIntegrator[2] = 0.8f;
playerStatus->gravityIntegrator[3] = -0.75f;
}
void start_bounce_b(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_BOUNCE);
playerStatus->gravityIntegrator[0] = 8.0f;
playerStatus->gravityIntegrator[1] = -1.0f;
playerStatus->gravityIntegrator[2] = 0;
playerStatus->gravityIntegrator[3] = 0;
playerStatus->flags |= 0x800000;
}
// TODO playerData isn't used
s32 check_input_hammer(void) {
PlayerData* playerData = &gPlayerData;
if (gPlayerStatus.pressedButtons & BUTTON_B) {
if (!(gPlayerStatus.flags & 4)) {
if (gPartnerActionStatus.actionState.b[0] != 1 || gPlayerData.currentPartner != PARTNER_WATT) {
if (gPlayerData.hammerLevel != -1) {
set_action_state(ACTION_STATE_HAMMER);
return TRUE;
}
}
}
}
return FALSE;
}
INCLUDE_ASM(s32, "7bb60_len_41b0", check_input_jump);
void check_input_spin(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010F250* temp_8010F250 = &D_8010F250;
Temp8010F250* temp2 = temp_8010F250;
if (!(playerStatus->flags & (PLAYER_ANIM_FLAG_8BIT_MARIO | PLAYER_ANIM_FLAG_PEACH_PHYSICS)) &&
!(playerStatus->animFlags & 1) &&
!(playerStatus->currentButtons & D_CBUTTONS) &&
!is_ability_active(ABILITY_SLOW_GO)) {
s32 actionState = playerStatus->actionState;
s32 btnPressed = playerStatus->pressedButtons & Z_TRIG;
// TODO
if (actionState != 0x21) {
if (actionState < 0x22) {
if (actionState < 3) {
if (actionState >= 0 && !(playerStatus->animFlags & 0x10000)) {
if (btnPressed || temp_8010F250->unk_01) {
set_action_state(ACTION_STATE_SPIN);
if (temp_8010F250->unk_01 != 0) {
if (temp_8010F250->unk_08 != 0 || temp_8010F250->unk_0C != 0) {
playerStatus->prevActionState = temp2->unk_07;
} else {
playerStatus->prevActionState = ACTION_STATE_IDLE;
}
}
}
}
}
}
}
}
}
void peach_set_disguise_anim(s32 arg0) {
s32 listIndex = D_8010C96C;
if (listIndex >= 0) {
get_npc_by_index(listIndex)->currentAnim.w = arg0;
}
}
void func_800E63A4(s32 arg0) {
PlayerStatus* playerStatus = &gPlayerStatus;
if (arg0 != 0) {
set_action_state(ACTION_STATE_SNEAKY_PARASOL);
} else {
playerStatus->animFlags &= ~PLAYER_ANIM_FLAG_IN_DISGUISE;
gGameStatusPtr->peachFlags &= ~0x2;
playerStatus->peachDisguise = 0;
free_npc_by_index(D_8010C96C);
set_action_state(ACTION_STATE_IDLE);
playerStatus->colliderHeight = 55;
playerStatus->colliderDiameter = 38;
}
}
void peach_check_for_parasol_input(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 actionState = playerStatus->actionState;
Npc* disguiseNpc;
if (actionState == ACTION_STATE_IDLE || actionState == ACTION_STATE_WALK || actionState == ACTION_STATE_RUN) {
if (D_8010C92C != 0) {
D_8010C92C--;
if (D_8010C92C == 0) {
if (gGameStatusPtr->peachFlags & 2) {
playerStatus->animFlags |= PLAYER_ANIM_FLAG_IN_DISGUISE;
gGameStatusPtr->peachFlags |= 2;
disguiseNpc = peach_make_disguise_npc(gGameStatusPtr->peachDisguise);
if (disguiseNpc != NULL) {
disguiseNpc->flags &= ~NPC_FLAG_40000;
}
}
}
} else if (gGameStatusPtr->peachFlags & 4 && playerStatus->pressedButtons & B_BUTTON) {
set_action_state(ACTION_STATE_SNEAKY_PARASOL);
}
}
}
void peach_sync_disguise_npc(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
if (D_8010C96C >= 0) {
Npc* npc = get_npc_by_index(D_8010C96C);
if (npc->flags & NPC_FLAG_40000) {
npc->renderYaw = playerStatus->spriteFacingAngle;
} else {
npc->yaw = playerStatus->targetYaw;
}
npc->pos.x = playerStatus->position.x;
npc->pos.y = playerStatus->position.y;
npc->pos.z = playerStatus->position.z;
}
}
INCLUDE_ASM(Npc*, "7bb60_len_41b0", peach_make_disguise_npc, s32 peachDisguise);
INCLUDE_ASM(s32, "7bb60_len_41b0", peach_disguise_check_overlaps);

View File

@ -1,9 +1,6 @@
#include "common.h"
#include "world/partners.h"
extern s32 D_8010C96C; // npc list index
extern s16 D_8010C9B0;
void record_jump_apex(void) {
gPlayerStatus.jumpApexHeight = gPlayerStatus.position.y;
}
@ -11,7 +8,7 @@ void record_jump_apex(void) {
s32 can_trigger_loading_zone(void) {
PlayerData* playerData = &gPlayerData;
s32 actionState = gPlayerStatusPtr->actionState;
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
if (actionState == ACTION_STATE_IDLE ||
actionState == ACTION_STATE_WALK ||
@ -24,17 +21,17 @@ s32 can_trigger_loading_zone(void) {
if (actionState == ACTION_STATE_RIDE) {
if (playerData->currentPartner == PARTNER_LAKILESTER || playerData->currentPartner == PARTNER_BOW) {
if (temp_8010EBB0->unk_00 != 0) {
if (partnerActionStatus->actionState.b[0] != 0) {
return TRUE;
} else {
gPlayerStatusPtr->animFlags |= 4;
return FALSE;
}
} else {
if (temp_8010EBB0->unk_03 == 6 || temp_8010EBB0->unk_03 == 7) {
return temp_8010EBB0->unk_00 != 0;
if (partnerActionStatus->actionState.b[3] == 6 || partnerActionStatus->actionState.b[3] == 7) {
return partnerActionStatus->actionState.b[0] != 0;
}
if (temp_8010EBB0->unk_03 == 4) {
if (partnerActionStatus->actionState.b[3] == 4) {
gPlayerStatusPtr->animFlags |= 4;
return FALSE;
}
@ -43,8 +40,6 @@ s32 can_trigger_loading_zone(void) {
return FALSE;
}
void set_action_state(s32 actionState);
void move_player(s32 duration, f32 heading, f32 speed) {
gPlayerStatus.flags |= 0x4000;
gPlayerStatus.heading = heading;
@ -94,7 +89,7 @@ void phys_init_integrator_for_current_state() {
playerStatus->gravityIntegrator[0] = *temp_a0++;
playerStatus->gravityIntegrator[1] = *temp_a0++;
playerStatus->gravityIntegrator[2] = *temp_a0++;
playerStatus->gravityIntegrator[3] = *temp_a0;
playerStatus->gravityIntegrator[3] = *temp_a0++;
return;
}
@ -110,42 +105,25 @@ void phys_init_integrator_for_current_state() {
INCLUDE_ASM(void, "7bb60_len_41b0", phys_init_integrator_for_current_state);
#endif // NON_MATCHING
#ifdef NON_MATCHING
// void gravity_use_fall_parms(void) {
// f32* floats = D_800F7B60;
// do { } while (0);
// if (gPlayerStatus.flags & 0x40000) {
// gPlayerStatus.gravityIntegrator[0] = *floats++ / 12.0f;
// gPlayerStatus.gravityIntegrator[1] = *floats++ / 12.0f;
// gPlayerStatus.gravityIntegrator[2] = *floats++ / 12.0f;
// gPlayerStatus.gravityIntegrator[3] = *floats++ / 12.0f;
// } else {
// gPlayerStatus.gravityIntegrator[0] = *floats++;
// gPlayerStatus.gravityIntegrator[1] = *floats++;
// gPlayerStatus.gravityIntegrator[2] = *floats++;
// gPlayerStatus.gravityIntegrator[3] = *floats++;
// }
// }
// This function is wack. This weird stuff is needed to match
void gravity_use_fall_parms(void) {
PlayerStatus* playerStatus;
f32* floats = D_800F7B60;
PlayerStatus* playerStatus;
do {} while (0);
playerStatus = &gPlayerStatus;
if (playerStatus->flags & 0x40000) {
playerStatus->gravityIntegrator[0] = (*(floats++)) / 12.0f;
playerStatus->gravityIntegrator[1] = (*(floats++)) / 12.0f;
playerStatus->gravityIntegrator[2] = (*(floats++)) / 12.0f;
playerStatus->gravityIntegrator[3] = (*(floats++)) / 12.0f;
playerStatus->gravityIntegrator[0] = *floats++ / 12.0f;
playerStatus->gravityIntegrator[1] = *floats++ / 12.0f;
playerStatus->gravityIntegrator[2] = *floats++ / 12.0f;
playerStatus->gravityIntegrator[3] = *floats++ / 12.0f;
} else {
playerStatus->gravityIntegrator[0] = *(floats++);
playerStatus->gravityIntegrator[1] = *(floats++);
playerStatus->gravityIntegrator[2] = *(floats++);
playerStatus->gravityIntegrator[3] = *(floats++);
playerStatus->gravityIntegrator[0] = *floats++;
playerStatus->gravityIntegrator[1] = *floats++;
playerStatus->gravityIntegrator[2] = *floats++;
playerStatus->gravityIntegrator[3] = *floats++;
}
}
#else
INCLUDE_ASM(s32, "7bb60_len_41b0", gravity_use_fall_parms);
#endif
void phys_update_falling(void) {
if (gPlayerStatus.actionState != ACTION_STATE_LAND_ON_SWITCH && gPlayerStatus.actionState != ACTION_STATE_BOUNCE) {
@ -157,7 +135,54 @@ void phys_update_falling(void) {
}
}
// Matches but we need to decomp collision_main_lateral since there's a rodata padding issue
#ifdef NON_MATCHING
void func_800E315C(s32 colliderID) {
PlayerStatus* playerStatus = &gPlayerStatus;
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
if (colliderID >= 0) {
u8 colliderType = get_collider_type_by_id(colliderID);
switch (colliderType) {
case 1:
case 4:
case 5:
set_action_state(ACTION_STATE_LAND);
break;
case 3:
if ((partnerActionStatus->actionState.i & 0xFF0000FF) != 0x01000009) {
if (playerStatus->unk_10 == 0) {
if (playerStatus->actionState != ACTION_STATE_HIT_LAVA) {
playerStatus->unk_BF = 1;
set_action_state(ACTION_STATE_HIT_LAVA);
}
} else {
set_action_state(ACTION_STATE_UNKNOWN_16);
}
}
break;
case 2:
if ((partnerActionStatus->actionState.i & 0xFF0000FF) != 0x01000009) {
if (playerStatus->unk_10 == 0) {
if (playerStatus->actionState != ACTION_STATE_HIT_FIRE) {
playerStatus->unk_BF = 2;
set_action_state(ACTION_STATE_HIT_LAVA);
}
break;
}
set_action_state(ACTION_STATE_UNKNOWN_16);
}
break;
default:
phys_player_land();
break;
}
}
}
#else
INCLUDE_ASM(s32, "7bb60_len_41b0", func_800E315C);
#endif
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_player_land);
@ -266,7 +291,18 @@ void collision_check_player_overlaps(void) {
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_should_player_be_sliding);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_is_on_sloped_ground);
s32 phys_is_on_sloped_ground(void) {
Shadow* playerShadow = get_shadow_by_index(gPlayerStatus.shadowID);
f32 rotZ = playerShadow->rotation.z + 180.0;
f32 rotX = playerShadow->rotation.x + 180.0;
s32 ret = TRUE;
if (fabsf(rotZ) < 20.0f && fabsf(rotX) < 20.0f) {
ret = FALSE;
}
return ret;
}
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_main_collision_below);
@ -356,7 +392,26 @@ void phys_update_interact_collider(void) {
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_check_interactable_collision);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_can_player_interact);
s32 phys_can_player_interact(void) {
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
PlayerStatus* playerStatus = &gPlayerStatus;
s32 ret = TRUE;
if (gPartnerActionStatus.actionState.b[0] != 0) {
if (gPartnerActionStatus.actionState.b[3] == 3) {
if (gPartnerActionStatus.actionState.b[0] < 3) {
ret = FALSE;
}
} else {
ret = FALSE;
}
} else if (!(gPlayerStatus.actionState == ACTION_STATE_IDLE ||
gPlayerStatus.actionState == ACTION_STATE_WALK ||
gPlayerStatus.actionState == ACTION_STATE_RUN)) {
ret = FALSE;
}
return ret;
}
INCLUDE_ASM(f32, "7bb60_len_41b0", func_800E5348, void);
@ -379,270 +434,3 @@ void phys_save_ground_pos(void) {
playerStatus->lastGoodPosition.y = playerStatus->position.y;
playerStatus->lastGoodPosition.z = playerStatus->position.z;
}
void func_800E5520(void) {
D_8010C9B0 = 0;
}
INCLUDE_ASM(void, "7bb60_len_41b0", phys_adjust_cam_on_landing);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_clear_spin_history);
INCLUDE_ASM(f32, "7bb60_len_41b0", phys_get_spin_history, s32 lag, s32* x, s32* y, s32* z);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_reset_spin_history);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_update_action_state);
INCLUDE_ASM(s32, "7bb60_len_41b0", phys_peach_update);
void set_action_state(s32 actionState) {
PlayerStatus* playerStatus = &gPlayerStatus;
PlayerData* playerData = &gPlayerData;
UNK_TYPE* unknownStruct = &D_8010F250;
if (playerStatus->flags & 0x200) {
playerStatus->flags &= ~0x200;
enable_player_input();
}
if (playerStatus->animFlags & 0x4000) {
// TODO figure this out
#ifdef NON_MATCHING
if (
actionState == ACTION_STATE_IDLE || actionState == ACTION_STATE_WALK ||
actionState == ACTION_STATE_RUN || actionState == ACTION_STATE_JUMP ||
actionState == ACTION_STATE_BOUNCE || actionState == ACTION_STATE_HOP ||
actionState == ACTION_STATE_LAUNCH || actionState == ACTION_STATE_LAND_ON_SWITCH ||
actionState == ACTION_STATE_FALLING || actionState == ACTION_STATE_STEP_DOWN ||
actionState == ACTION_STATE_LAND || actionState == ACTION_STATE_STEP_DOWN_LAND
) {
#else
if (actionState < ACTION_STATE_TALK)
if (actionState >= 0) {
#endif
playerStatus->prevActionState = playerStatus->actionState;
playerStatus->actionState = actionState;
playerStatus->flags |= 0x80000000;
}
return;
}
if (actionState == ACTION_STATE_HIT_FIRE || actionState == ACTION_STATE_HIT_LAVA) {
PartnerID partner;
if (playerStatus->unk_BF == 3) {
actionState = ACTION_STATE_HIT_FIRE;
}
// Whilst Sushie, Lakilester, Parakarry's ability is active, hazards have no effect.
partner = playerData->currentPartner;
if (partner == PARTNER_SUSHIE || partner == PARTNER_LAKILESTER || partner == PARTNER_PARAKARRY) {
if (D_8010EBB0.unk_00 != 0) {
playerStatus->animFlags |= 0x4;
playerStatus->flags |= 0x800;
return;
}
}
}
if (actionState == ACTION_STATE_SLIDE) {
playerStatus->flags |= 0x10;
playerStatus->moveFrames = 0;
playerStatus->flags &= ~0x4000;
}
playerStatus->prevActionState = playerStatus->actionState;
if (actionState == ACTION_STATE_USE_TWEESTER) {
playerStatus->prevActionState = ACTION_STATE_IDLE;
}
if (actionState == ACTION_STATE_ENEMY_FIRST_STRIKE) {
playerStatus->animFlags |= 4;
}
playerStatus->actionState = actionState;
playerStatus->flags |= 0x80000000;
if (playerStatus->actionState == ACTION_STATE_SPIN) {
return;
}
playerStatus->flags &= ~0x20000;
playerStatus->animFlags &= ~0x10000;
if (unknownStruct[0xC]) {
sfx_stop_sound(unknownStruct[0xC]);
}
if (playerStatus->unk_D8) {
playerStatus->unk_D8[3][9] = 0xA;
playerStatus->unk_D8 = NULL;
}
}
void update_locomotion_state(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
do { } while (0); // required to match
set_action_state((!is_ability_active(ABILITY_SLOW_GO)
&& (SQ(playerStatus->stickAxis[0]) + SQ(playerStatus->stickAxis[1]) >= 0xBD2)) ? ACTION_STATE_RUN : ACTION_STATE_WALK);
}
void start_falling(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_FALLING);
playerStatus->gravityIntegrator[0] = 0.1143f;
playerStatus->gravityIntegrator[1] = -0.2871f;
playerStatus->gravityIntegrator[2] = -0.1823f;
playerStatus->gravityIntegrator[3] = 0.01152f;
}
void start_bounce_a(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_BOUNCE);
playerStatus->gravityIntegrator[0] = 10.0f;
playerStatus->gravityIntegrator[1] = -2.0f;
playerStatus->gravityIntegrator[2] = 0.8f;
playerStatus->gravityIntegrator[3] = -0.75f;
}
void start_bounce_b(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
set_action_state(ACTION_STATE_BOUNCE);
playerStatus->gravityIntegrator[0] = 8.0f;
playerStatus->gravityIntegrator[1] = -1.0f;
playerStatus->gravityIntegrator[2] = 0;
playerStatus->gravityIntegrator[3] = 0;
playerStatus->flags |= 0x800000;
}
// TODO playerData isn't used
s32 check_input_hammer(void) {
PlayerData* playerData = &gPlayerData;
if (gPlayerStatus.pressedButtons & BUTTON_B) {
if (!(gPlayerStatus.flags & 4)) {
if (D_8010EBB0.unk_00 != 1 || gPlayerData.currentPartner != PARTNER_WATT) {
if (gPlayerData.hammerLevel != -1) {
set_action_state(ACTION_STATE_HAMMER);
return TRUE;
}
}
}
}
return FALSE;
}
INCLUDE_ASM(s32, "7bb60_len_41b0", check_input_jump);
void check_input_spin(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010F250* temp_8010F250 = &D_8010F250;
Temp8010F250* temp2 = temp_8010F250;
if (!(playerStatus->flags & (PLAYER_ANIM_FLAG_8BIT_MARIO | PLAYER_ANIM_FLAG_PEACH_PHYSICS)) &&
!(playerStatus->animFlags & 1) &&
!(playerStatus->currentButtons & D_CBUTTONS) &&
!is_ability_active(ABILITY_SLOW_GO)) {
s32 actionState = playerStatus->actionState;
s32 btnPressed = playerStatus->pressedButtons & Z_TRIG;
// TODO
if (actionState != 0x21) {
if (actionState < 0x22) {
if (actionState < 3) {
if (actionState >= 0 && !(playerStatus->animFlags & 0x10000)) {
if (btnPressed || temp_8010F250->unk_01) {
set_action_state(ACTION_STATE_SPIN);
if (temp_8010F250->unk_01 != 0) {
if (temp_8010F250->unk_08 != 0 || temp_8010F250->unk_0C != 0) {
playerStatus->prevActionState = temp2->unk_07;
} else {
playerStatus->prevActionState = ACTION_STATE_IDLE;
}
}
}
}
}
}
}
}
}
void peach_set_disguise_anim(s32 arg0) {
s32 listIndex = D_8010C96C;
if (listIndex >= 0) {
get_npc_by_index(listIndex)->currentAnim.w = arg0;
}
}
void func_800E63A4(s32 arg0) {
PlayerStatus* playerStatus = &gPlayerStatus;
if (arg0 != 0) {
set_action_state(ACTION_STATE_SNEAKY_PARASOL);
} else {
playerStatus->animFlags &= ~PLAYER_ANIM_FLAG_IN_DISGUISE;
gGameStatusPtr->peachFlags &= ~0x2;
playerStatus->peachDisguise = 0;
free_npc_by_index(D_8010C96C);
set_action_state(ACTION_STATE_IDLE);
playerStatus->colliderHeight = 55;
playerStatus->colliderDiameter = 38;
}
}
void peach_check_for_parasol_input(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 actionState = playerStatus->actionState;
Npc* disguiseNpc;
if (actionState == ACTION_STATE_IDLE || actionState == ACTION_STATE_WALK || actionState == ACTION_STATE_RUN) {
if (D_8010C92C != 0) {
D_8010C92C--;
if (D_8010C92C == 0) {
if (gGameStatusPtr->peachFlags & 2) {
playerStatus->animFlags |= PLAYER_ANIM_FLAG_IN_DISGUISE;
gGameStatusPtr->peachFlags |= 2;
disguiseNpc = peach_make_disguise_npc(gGameStatusPtr->peachDisguise);
if (disguiseNpc != NULL) {
disguiseNpc->flags &= ~NPC_FLAG_40000;
}
}
}
} else if (gGameStatusPtr->peachFlags & 4 && playerStatus->pressedButtons & B_BUTTON) {
set_action_state(ACTION_STATE_SNEAKY_PARASOL);
}
}
}
void peach_sync_disguise_npc(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
if (D_8010C96C >= 0) {
Npc* npc = get_npc_by_index(D_8010C96C);
if (npc->flags & NPC_FLAG_40000) {
npc->renderYaw = playerStatus->spriteFacingAngle;
} else {
npc->yaw = playerStatus->targetYaw;
}
npc->pos.x = playerStatus->position.x;
npc->pos.y = playerStatus->position.y;
npc->pos.z = playerStatus->position.z;
}
}
INCLUDE_ASM(Npc*, "7bb60_len_41b0", peach_make_disguise_npc, s32 peachDisguise);
INCLUDE_ASM(s32, "7bb60_len_41b0", peach_disguise_check_overlaps);

View File

@ -3,7 +3,7 @@
void func_800E6860(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
if (D_8010EBB0.unk_00 != 0 && D_8010EBB0.unk_03 == 9) {
if (gPartnerActionStatus.actionState.b[0] != 0 && gPartnerActionStatus.actionState.b[3] == 9) {
Npc* partner = get_npc_unsafe(NPC_PARTNER);
func_802DDEE4(0, -1, 7, 0, 0, 0, playerStatus->alpha1, 0);
@ -15,25 +15,25 @@ void func_800E6860(void) {
// playerStatus getting coppied to a0 - how? inlining?
#ifdef NON_MATCHING
s32 func_800E6904(void) {
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
PlayerStatus* playerStatus = &gPlayerStatus;
s32 actionState = playerStatus->actionState;
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
//PlayerStatus* playerStatus = &gPlayerStatus; // doesn't change codegen to use it, so commented out for now
s32 actionState = gPlayerStatus.actionState;
if (!(playerStatus->animFlags & 0x100000)) {
if (temp_8010EBB0->unk_00 == 0) {
if (!(playerStatus->flags & 0x1000)) {
if (!(gPlayerStatus.animFlags & 0x100000)) {
if (partnerActionStatus->actionState.b[0] == 0) {
if (!(gPlayerStatus.flags & 0x1000)) {
if (actionState == ACTION_STATE_IDLE || actionState == ACTION_STATE_WALK || actionState == ACTION_STATE_RUN) {
return 1;
}
}
} else if (partner_player_can_pause()) {
if (temp_8010EBB0->unk_03 == 6) {
if (partnerActionStatus->actionState.b[3] == 6) {
return 1;
} else if (temp_8010EBB0->unk_03 == 9) {
} else if (partnerActionStatus->actionState.b[3] == 9) {
if (actionState == ACTION_STATE_RIDE) {
return 1;
}
} else if (temp_8010EBB0->unk_03 == 8) {
} else if (partnerActionStatus->actionState.b[3] == 8) {
if (actionState != ACTION_STATE_RIDE) {
sfx_play_sound(0x21D);
} else {

View File

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

View File

@ -1,14 +1,181 @@
#include "common.h"
#include "sprite/unk_checkers.png.h"
#include "sprite/curtains.png.h"
#include "sprite/checkers.png.h"
#include "ui/no_controller.png.h"
#include "ld_addrs.h"
#include "nu/nusys.h"
extern s32 D_80076078;
extern s32 D_800760C0;
#include "sprite/unk_checkers.png.inc.c"
Gfx D_800746E0[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock_4b(sprite_unk_checkers_png, G_IM_FMT_I, 16, 32, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPEndDisplayList(),
};
#include "sprite/curtains.png.inc.c"
Gfx D_80075730[] = {
gsDPSetTextureLUT(G_TT_NONE),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock(sprite_curtains_png, G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 0, G_TX_MIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPEndDisplayList(),
};
#include "sprite/checkers.png.inc.c"
#include "sprite/checkers.pal.inc.c"
Gfx D_800758A0[] = {
gsDPSetTextureLUT(G_TT_RGBA16),
gsDPLoadTLUT_pal16(0, sprite_checkers_pal),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock_4b(sprite_checkers_png, G_IM_FMT_CI, 32, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR |
G_TX_WRAP, 5, 4, G_TX_NOLOD, G_TX_NOLOD),
gsSPEndDisplayList(),
};
#include "vtx/curtains1.vtx.inc.c"
#include "vtx/curtains2.vtx.inc.c"
#include "vtx/curtains3.vtx.inc.c"
#include "vtx/curtains4.vtx.inc.c"
#include "vtx/curtains5.vtx.inc.c"
#include "vtx/curtains6.vtx.inc.c"
#include "vtx/curtains7.vtx.inc.c"
Gfx D_80075E60[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_PASS, G_RM_CLD_SURF2),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPDisplayList(D_80075730),
gsSPVertex(vtx_curtains7, 8, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0),
gsSPEndDisplayList(),
};
Gfx D_80075EA0[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPDisplayList(D_80075730),
gsSPVertex(vtx_curtains6, 31, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0),
gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0),
gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0),
gsSP2Triangles(15, 16, 17, 0, 15, 17, 18, 0),
gsSP2Triangles(19, 20, 21, 0, 19, 21, 22, 0),
gsSP2Triangles(13, 23, 24, 0, 13, 24, 14, 0),
gsSP2Triangles(23, 25, 26, 0, 23, 26, 24, 0),
gsSP2Triangles(25, 27, 28, 0, 25, 28, 26, 0),
gsSP2Triangles(27, 29, 30, 0, 27, 30, 28, 0),
gsSPEndDisplayList(),
};
Gfx D_80075F20[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2),
gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, SHADE, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPTexture(0x0080, 0x0080, 0, G_TX_RENDERTILE, G_OFF),
gsSPVertex(vtx_curtains4, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPVertex(vtx_curtains5, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSPEndDisplayList(),
};
Gfx D_80075F68[] = {
gsDPPipeSync(),
gsDPSetRenderMode(CVG_DST_FULL | ZMODE_OPA | FORCE_BL | G_RM_PASS, CVG_DST_FULL | ZMODE_OPA | FORCE_BL |
GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPDisplayList(D_800746E0),
gsSPVertex(vtx_curtains3, 25, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSP2Triangles(4, 5, 0, 0, 4, 0, 3, 0),
gsSP2Triangles(1, 6, 7, 0, 1, 7, 2, 0),
gsSP2Triangles(3, 8, 9, 0, 3, 9, 10, 0),
gsSP2Triangles(11, 4, 3, 0, 11, 3, 10, 0),
gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0),
gsSP2Triangles(8, 12, 15, 0, 8, 15, 9, 0),
gsSP2Triangles(6, 16, 13, 0, 6, 13, 7, 0),
gsSP2Triangles(14, 17, 18, 0, 19, 14, 18, 0),
gsSP2Triangles(20, 11, 21, 0, 11, 22, 21, 0),
gsSP2Triangles(23, 19, 18, 0, 23, 18, 24, 0),
gsSP2Triangles(22, 23, 24, 0, 22, 24, 21, 0),
gsSPEndDisplayList(),
};
Gfx D_80075FF8[] = {
gsDPPipeSync(),
gsDPSetRenderMode(CVG_DST_FULL | ZMODE_OPA | FORCE_BL | G_RM_PASS, CVG_DST_FULL | ZMODE_OPA | FORCE_BL |
GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPDisplayList(D_800758A0),
gsSPVertex(vtx_curtains2, 6, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0),
gsSPEndDisplayList(),
};
Gfx D_80076038[] = {
gsDPPipeSync(),
gsDPSetRenderMode(CVG_DST_FULL | ZMODE_OPA | FORCE_BL | G_RM_PASS, CVG_DST_FULL | ZMODE_OPA | FORCE_BL |
GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)),
gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED),
gsSPDisplayList(D_800758A0),
gsSPVertex(vtx_curtains1, 6, 0),
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0),
gsSPEndDisplayList(),
};
Gfx D_80076078[] ={
gsSPDisplayList(D_80075F68),
gsSPDisplayList(D_80076038),
gsSPDisplayList(D_80075FF8),
gsSPDisplayList(D_80075F20),
gsSPDisplayList(D_80075E60),
gsSPDisplayList(D_80075EA0),
gsSPEndDisplayList(),
};
Vp D_800760B0 = {
{
{(SCREEN_WIDTH/2)*4, (SCREEN_HEIGHT/2)*4, 0x200 - 1, 0},
{(SCREEN_WIDTH/2)*4, (SCREEN_HEIGHT/2)*4, 0x200 - 1, 0},
}
};
Gfx D_800760C0[] = {
gsSPViewport(&D_800760B0),
gsDPSetCycleType(G_CYC_2CYCLE),
gsDPSetTextureLOD(G_TL_TILE),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetCombineKey(G_CK_NONE),
gsDPSetAlphaCompare(G_AC_NONE),
gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, 320, 240),
gsDPSetColorDither(G_CD_MAGICSQ),
gsDPSetAlphaDither(G_AD_PATTERN),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
gsSPPerspNormalize(0x0014),
gsSPEndDisplayList(),
};
#include "ui/no_controller.png.inc.c"
Gfx D_80077140[] = {
gsDPPipeSync(),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPTexture(-1, -1, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCycleType(G_CYC_1CYCLE),
gsDPSetTexturePersp(G_TP_NONE),
gsDPSetTextureDetail(G_TD_CLAMP),

View File

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

View File

@ -78,7 +78,7 @@ void entity_HugeBlueSwitch_idle(Entity* entity) {
void entity_small_switch_idle(Entity* entity) {
struct802E1400* temp = entity->dataBuf;
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010EBB0* temp2 = &D_8010EBB0;
PartnerActionStatus* partnerActionStatus = &gPartnerActionStatus;
entity_switch_fall_down(entity);
@ -102,7 +102,7 @@ void entity_small_switch_idle(Entity* entity) {
return;
}
if (temp2->unk_03 == 4 && temp2->unk_00 != 0) {
if (partnerActionStatus->actionState.b[3] == 4 && partnerActionStatus->actionState.b[0] != 0) {
return;
}

View File

@ -1,4 +1,5 @@
#include "common.h"
#include "effects.h"
INCLUDE_ASM(void, "evt/fx_api", func_802D7460, f32 x, f32 y, f32 z, s32 arg3);
@ -126,481 +127,496 @@ INCLUDE_ASM(ApiStatus, "evt/fx_api", ShowSleepBubble, ScriptInstance* script, s3
INCLUDE_ASM(ApiStatus, "evt/fx_api", func_802D8248, ScriptInstance* script, s32 isInitialCall);
// So close aside from regalloc at the beginning
#ifdef NON_MATCHING
s32 PlayEffect(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Bytecode* floatArgs = args;
Bytecode* intArgs = args;
ApiStatus PlayEffect(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args;
Bytecode* intArgs;
Bytecode* floatArgs;
s32 effectID;
s32 fxReturn = 0;
s32 iArg1;
s32 iArg2;
s32 iArg3;
s32 iArg4;
s32 iArg5;
s32 iArg6;
s32 iArg7;
s32 iArg8;
s32 iArg9;
s32 iArg10;
s32 a7;
f32 fArg1;
f32 fArg2;
f32 fArg3;
f32 fArg4;
f32 fArg5;
f32 fArg6;
f32 fArg7;
f32 fArg8;
f32 fArg9;
f32 fArg10;
f32 fArg11;
EffectInstance* effectRet;
s32 a2;
s32* a6;
s32* a8;
s32 a6;
s32 a7;
s32 a8;
s32 a9;
s32 new_var;
s32 iVar1;
s32 iVar2;
s32 iVar3;
s32 iVar4;
s32 iVar5;
s32 iVar6;
s32 iVar7;
s32 iVar8;
s32 iVar9;
s32 iVar10;
f32 fVar1;
f32 fVar2;
f32 fVar3;
f32 fVar4;
f32 fVar5;
f32 fVar6;
f32 fVar7;
f32 fVar8;
f32 fVar9;
f32 fVar10;
f32 fVar11;
s32 sp3C;
EffectInstanceData* sp34;
s32 sp30;
s32 sp38;
effectID = get_variable(script, *args++);
args = script->ptrReadPos;
intArgs = script->ptrReadPos;
floatArgs = script->ptrReadPos;
effectID = get_variable(script, *args++); // todo maybe increment later on
get_variable(script, *intArgs++);
get_variable(script, *floatArgs++);
get_variable(script, *intArgs++);
iArg1 = get_variable(script, *intArgs++);
iArg2 = get_variable(script, *intArgs++);
iArg3 = get_variable(script, *intArgs++);
iArg4 = get_variable(script, *intArgs++);
iArg5 = get_variable(script, *intArgs++);
iArg6 = get_variable(script, *intArgs++);
iArg7 = get_variable(script, *intArgs++);
iArg8 = get_variable(script, *intArgs++);
iArg9 = get_variable(script, *intArgs++);
iArg10 = get_variable(script, *intArgs++);
new_var = get_variable(script, *intArgs++);
iVar2 = get_variable(script, *intArgs++);
iVar3 = get_variable(script, *intArgs++);
iVar4 = get_variable(script, *intArgs++);
iVar5 = get_variable(script, *intArgs++);
iVar6 = get_variable(script, *intArgs++);
iVar7 = get_variable(script, *intArgs++);
iVar8 = get_variable(script, *intArgs++);
iVar9 = get_variable(script, *intArgs++);
iVar10 = get_variable(script, *intArgs++);
get_variable(script, *intArgs++);
get_variable(script, *intArgs++);
get_variable(script, *intArgs++);
fArg1 = get_float_variable(script, *floatArgs++);
fArg2 = get_float_variable(script, *floatArgs++);
fArg3 = get_float_variable(script, *floatArgs++);
fArg4 = get_float_variable(script, *floatArgs++);
fArg5 = get_float_variable(script, *floatArgs++);
fArg6 = get_float_variable(script, *floatArgs++);
fArg7 = get_float_variable(script, *floatArgs++);
fArg8 = get_float_variable(script, *floatArgs++);
fArg9 = get_float_variable(script, *floatArgs++);
fArg10 = get_float_variable(script, *floatArgs++);
fArg11 = get_float_variable(script, *floatArgs++);
fVar1 = get_float_variable(script, *floatArgs++);
fVar2 = get_float_variable(script, *floatArgs++);
fVar3 = get_float_variable(script, *floatArgs++);
fVar4 = get_float_variable(script, *floatArgs++);
fVar5 = get_float_variable(script, *floatArgs++);
fVar6 = get_float_variable(script, *floatArgs++);
fVar7 = get_float_variable(script, *floatArgs++);
fVar8 = get_float_variable(script, *floatArgs++);
fVar9 = get_float_variable(script, *floatArgs++);
fVar10 = get_float_variable(script, *floatArgs++);
fVar11 = get_float_variable(script, *floatArgs++);
get_float_variable(script, *floatArgs++);
get_float_variable(script, *floatArgs++);
args++;
a2 = *args;
args++;
args++;
args++;
args++;
args++; // 1
a2 = *args++;
args++; // 3
args++; // 4
args++; // 5
a6 = *args++;
a7 = *args++;
a8 = *args++;
a9 = *args++;
iVar1 = new_var;
effectRet = NULL;
switch (effectID) {
case 0:
playFX_3E(0, fArg1, fArg2, fArg3, 3.0f, iArg5);
playFX_3E(0, fVar1, fVar2, fVar3, 3.0f, iVar5);
break;
case 1:
playFX_01(fArg1, fArg2, fArg3);
playFX_01(fVar1, fVar2, fVar3);
break;
case 6:
fx_land(iArg1, fArg2, fArg3, fArg4, fArg5);
fx_land(iVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 7:
fx_walk(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6);
fx_walk(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6);
break;
case 8:
playFX_08(fArg1, fArg2, fArg3, fArg4);
playFX_08(fVar1, fVar2, fVar3, fVar4);
break;
case 9:
playFX_09(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6);
playFX_09(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6);
break;
case 10:
playFX_0A(fArg1, fArg2, iArg1, a2, fArg3, fArg4);
playFX_0A(fVar1, fVar2, fVar3, fVar4);
break;
case 11:
playFX_0B(iArg1, fArg2, fArg3, fArg4);
playFX_0B(iVar1, fVar2, fVar3, fVar4);
break;
case 12:
playFX_0C(fArg1, fArg2, iArg1, a2, fArg3, fArg4, fArg5);
playFX_0C(fVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 13:
playFX_0D(0, fArg1, fArg2, fArg3, iArg4);
playFX_0D(0, fVar1, fVar2, fVar3, iVar4);
break;
case 14:
playFX_0E(fArg1, fArg2, iArg1, a2, fArg3, iArg4);
playFX_0E(fVar1, fVar2, fVar3, iVar4);
break;
case 15:
playFX_0F(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8);
playFX_0F(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8);
break;
case 16:
fx_emote(iArg1, a2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8, &sp30);
set_variable(script, *a8, sp30);
fx_emote(iVar1, (Npc* ) a2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8, &sp30);
set_variable(script, a8, sp30);
break;
case 17:
playFX_11(iArg1, fArg2, fArg3, fArg4, fArg5);
playFX_11(iVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 18:
playFX_12(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8);
playFX_12(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8);
break;
case 19:
playFX_13(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_13(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 20:
playFX_14(iArg1, fArg2, fArg3, fArg4, iArg5);
playFX_14(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 21:
playFX_15(iArg1, fArg2, fArg3, fArg4, iArg5);
playFX_15(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 22:
playFX_16(iArg1, fArg2, fArg3, fArg4, fArg5);
playFX_16(iVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 23:
playFX_17(iArg1, fArg2, fArg3, fArg4);
playFX_17(iVar1, fVar2, fVar3, fVar4);
break;
case 24:
playFX_18(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8);
playFX_18(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8);
break;
case 25:
playFX_19(iArg1, fArg2, fArg3, fArg4);
playFX_19(iVar1, fVar2, fVar3, fVar4);
break;
case 26:
playFX_1A(iArg1, fArg2, fArg3, fArg4, iArg5);
playFX_1A(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 27:
playFX_1B(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_1B(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 28:
playFX_1C(iArg1, fArg2, fArg3, fArg4, iArg5);
playFX_1C(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 29:
playFX_1D(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6, fArg7, iArg8);
playFX_1D(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6, fVar7, iVar8);
break;
case 30:
playFX_1E(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, iArg7, &sp30);
set_variable(script, *a8, sp30);
playFX_1E(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, iVar7, &sp30);
set_variable(script, a8, sp30);
break;
case 31:
playFX_1F(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8);
playFX_1F(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8);
break;
case 33:
playFX_21(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, iArg7);
playFX_21(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, iVar7);
break;
case 34:
playFX_22(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, iArg7, iArg8);
playFX_22(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, iVar7, iVar8);
break;
case 35:
playFX_23(iArg1, fArg2, fArg3, fArg4, fArg5);
playFX_23(iVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 36:
playFX_24(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_24(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 37:
playFX_25(iArg1, fArg2, fArg3, fArg4);
playFX_25(iVar1, fVar2, fVar3, fVar4);
break;
case 38:
playFX_26(iArg1, fArg2, fArg3, fArg4);
playFX_26(iVar1, fVar2, fVar3, fVar4);
break;
case 39:
playFX_27(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_27(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 40:
fx_sweat(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, iArg7);
fx_sweat(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, iVar7);
break;
case 41:
fx_sleep_bubble(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, &sp34);
set_variable(script, a7, sp34);
fx_sleep_bubble(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, &sp38);
set_variable(script, a7, sp38);
break;
case 43:
playFX_2B(iArg1, fArg2, fArg3, fArg4);
playFX_2B(iVar1, fVar2, fVar3, fVar4);
break;
case 32:
playFX_20(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_20(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 44:
playFX_2C(iArg1, fArg2, fArg3, fArg4);
playFX_2C(iVar1, fVar2, fVar3, fVar4);
break;
case 45:
playFX_2D(iArg1, fArg2, fArg3, fArg4, iArg5, iArg6);
playFX_2D(iVar1, fVar2, fVar3, fVar4, iVar5, iVar6);
break;
case 46:
playFX_2E(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_2E(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 47:
playFX_2F(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6, &sp34);
set_variable(script, a7, sp34);
playFX_2F(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6, &sp38);
set_variable(script, a7, sp38);
break;
case 48:
playFX_30(iArg1, fArg2, fArg3, fArg4);
playFX_30(iVar1, fVar2, fVar3, fVar4);
break;
case 49:
playFX_31(iArg1, fArg2, fArg3, fArg4);
playFX_31(iVar1, fVar2, fVar3, fVar4);
break;
case 50:
playFX_32(iArg1, fArg2, fArg3, fArg4, fArg5);
playFX_32(iVar1, fVar2, fVar3, fVar4, fVar5);
break;
case 51:
playFX_33(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_33(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 52:
playFX_34(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_34(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 53:
playFX_35(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_35(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 54:
fxReturn = playFX_36(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6);
effectRet = playFX_36(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6);
break;
case 55:
fxReturn = playFX_37(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8, iArg9, iArg10);
effectRet = playFX_37(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8, iVar9, iVar10);
break;
case 56:
playFX_38(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_38(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 57:
playFX_39(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_39(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 58:
playFX_3A(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, iArg7, iArg8);
playFX_3A(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, iVar7, iVar8);
break;
case 59:
playFX_3B(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_3B(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 60:
playFX_3C(iArg1, fArg2, fArg3, fArg4, fArg5, &sp34);
set_variable(script, *a6, sp34);
playFX_3C(iVar1, fVar2, fVar3, fVar4, fVar5, &sp38);
set_variable(script, a6, sp38);
break;
case 61:
playFX_3D(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8, &sp3C);
playFX_3D(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8, &sp3C);
set_variable(script, a9, sp3C);
break;
case 62:
playFX_3E(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
playFX_3E(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 63:
fxReturn = playFX_3F(iArg1, fArg2, fArg3, fArg4, iArg5);
effectRet = playFX_3F(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 64:
fxReturn = playFX_40(iArg1, fArg2, fArg3, fArg4, iArg5);
effectRet = playFX_40(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 65:
fxReturn = playFX_41(iArg1, fArg2, fArg3, fArg4, iArg5);
effectRet = playFX_41(iVar1, fVar2, fVar3, fVar4, iVar5);
break;
case 66:
fxReturn = playFX_42(iArg1, iArg2, iArg3, fArg4, iArg5, iArg6);
effectRet = playFX_42(iVar1, iVar2, iVar3, fVar4, iVar5, iVar6);
break;
case 67:
fxReturn = playFX_43(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_43(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 68:
fxReturn = playFX_44(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_44(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 69:
fxReturn = playFX_45(iArg1, iArg2);
effectRet = playFX_45(iVar1, iVar2);
break;
case 70:
fxReturn = playFX_46_whirlwind(iArg1, a2, fArg3, iArg4);
effectRet = playFX_46_whirlwind(iVar1, a2, fVar3, iVar4);
break;
case 71:
fxReturn = playFX_47(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_47(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 72:
fxReturn = playFX_48(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_48(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 73:
fxReturn = playFX_49(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_49(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 74:
fxReturn = playFX_4A(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6);
effectRet = playFX_4A(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6);
break;
case 75:
fxReturn = playFX_4B(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_4B(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 76:
fxReturn = playFX_4C(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9);
effectRet = playFX_4C(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9);
break;
case 77:
fxReturn = playFX_4D(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, fArg9, iArg10);
effectRet = playFX_4D(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, fVar9, iVar10);
break;
case 78:
fxReturn = playFX_4E(iArg1, fArg2, fArg3, fArg4);
effectRet = playFX_4E(iVar1, fVar2, fVar3, fVar4);
break;
case 79:
fxReturn = playFX_4F(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_4F(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 82:
fxReturn = playFX_52(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_52(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 83:
fxReturn = playFX_53(iArg1, fArg2, fArg3, fArg4);
effectRet = playFX_53(iVar1, fVar2, fVar3, fVar4);
break;
case 81:
fxReturn = playFX_51(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_51(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 86:
fxReturn = playFX_56(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_56(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 87:
fxReturn = playFX_57(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_57(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 88:
fxReturn = playFX_58(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_58(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 89:
fxReturn = playFX_59(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9);
effectRet = playFX_59(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9);
break;
case 90:
fxReturn = playFX_5A(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_5A(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 91:
fxReturn = playFX_5B(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_5B(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 92:
fxReturn = playFX_5C(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_5C(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 93:
fxReturn = playFX_5D(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_5D(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 94:
fxReturn = playFX_5E(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9);
effectRet = playFX_5E(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9);
break;
case 95:
fxReturn = playFX_5F(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_5F(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 96:
fxReturn = playFX_60(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_60(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 97:
fxReturn = playFX_61(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_61(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 98:
fxReturn = playFX_62(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_62(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 99:
fxReturn = playFX_63(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9, iArg10);
effectRet = playFX_63(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9, iVar10);
break;
case 100:
fxReturn = playFX_64(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9);
effectRet = playFX_64(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9);
break;
case 101:
fxReturn = playFX_65(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_65(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 102:
fxReturn = playFX_66(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_66(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 103:
fxReturn = playFX_67(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_67(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 104:
fxReturn = playFX_68(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_68(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 105:
fxReturn = playFX_69(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_69(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 107:
fxReturn = playFX_6B(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_6B(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 108:
fxReturn = playFX_6C(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_6C(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 109:
fxReturn = playFX_6D(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_6D(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 110:
fxReturn = playFX_6E(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8);
effectRet = playFX_6E(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8);
break;
case 111:
fxReturn = playFX_6F(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_6F(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 112:
fxReturn = playFX_70(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8, iArg9, fArg10, fArg11);
effectRet = playFX_70(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8, iVar9, fVar10, fVar11);
break;
case 113:
fxReturn = playFX_71(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_71(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 114:
fxReturn = playFX_72(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, iArg8, iArg9);
effectRet = playFX_72(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, iVar8, iVar9);
break;
case 115:
fxReturn = playFX_73(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6, iArg7);
effectRet = playFX_73(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6, iVar7);
break;
case 116:
fxReturn = playFX_74(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, fArg9);
effectRet = playFX_74(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, fVar9);
break;
case 117:
fxReturn = playFX_75(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_75(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 119:
fxReturn = playFX_77(iArg1, fArg2, fArg3, fArg4, fArg5, fArg6, fArg7, fArg8, iArg9);
effectRet = playFX_77(iVar1, fVar2, fVar3, fVar4, fVar5, fVar6, fVar7, fVar8, iVar9);
break;
case 120:
fxReturn = playFX_78(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_78(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 85:
fxReturn = playFX_55(iArg1, fArg2, fArg3, fArg4);
effectRet = playFX_55(iVar1, fVar2, fVar3, fVar4);
break;
case 121:
fxReturn = playFX_79(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_79(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 122:
fxReturn = playFX_7A(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7A(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 123:
fxReturn = playFX_7B(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7B(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 124:
fxReturn = playFX_7C(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7C(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 125:
fxReturn = playFX_7D(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7D(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 126:
fxReturn = playFX_7E(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7E(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 127:
fxReturn = playFX_7F(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_7F(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 128:
fxReturn = playFX_80(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_80(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 129:
fxReturn = playFX_81(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_81(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 130:
fxReturn = playFX_82(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_82(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 131:
fxReturn = playFX_83(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_83(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 132:
fxReturn = playFX_84(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_84(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 133:
fxReturn = playFX_85(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_85(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
case 134:
fxReturn = playFX_86(iArg1, fArg2, fArg3, fArg4, fArg5, iArg6);
effectRet = playFX_86(iVar1, fVar2, fVar3, fVar4, fVar5, iVar6);
break;
default:
PANIC();
}
if (fxReturn != 0) {
set_variable(script, SI_VAR(15), fxReturn);
if (effectRet != NULL) {
set_variable(script, SI_VAR(15), effectRet);
}
return ApiStatus_DONE2;

View File

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

View File

@ -1295,7 +1295,7 @@ void func_8003D624(Npc* npc, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s
#ifdef NON_MATCHING
// Rodata padding issue. Most likely belongs to a separate TU than the function above with the switch.
void func_8003D660(Npc* npc, s32 arg1) {
Temp8010EBB0* temp = &D_8010EBB0;
Temp8010EBB0* temp = &gPartnerActionStatus;
if ((npc->flags & (NPC_FLAG_400000 | NPC_FLAG_2)) == NPC_FLAG_400000) {
if (npc->moveSpeed != 0.0f) {

View File

@ -19,9 +19,9 @@ void func_802B6000_E28A30(void) {
}
if (playerStatus->animFlags & 0x400000) {
if (D_8010EBB0.unk_03 == 8) {
if (gPartnerActionStatus.actionState.b[3] == 8) {
func_802BD100_317020(playerStatus->flags);
} else if (D_8010EBB0.unk_03 == 7) {
} else if (gPartnerActionStatus.actionState.b[3] == 7) {
func_802BD100_317020(playerStatus->flags);
}
}

View File

@ -5,32 +5,29 @@ extern f32 D_8010C97C;
void func_802B6000_E24040() {
PlayerStatus* playerStatus = &gPlayerStatus;
CollisionStatus* collisionStatus;
CollisionStatus* collisionStatus = &gCollisionStatus;
s32 temp_v1;
playerStatus->fallState = 0;
playerStatus->decorationList = 0;
playerStatus->unk_C2 = 0;
playerStatus->flags &= 0x7FFFFFF7;
playerStatus->flags &= ~0x80000008;
playerStatus->flags |= 2;
playerStatus->unk_3C = playerStatus->position.x;
playerStatus->unk_40 = playerStatus->position.z;
playerStatus->unk_4C = playerStatus->position.y;
phys_init_integrator_for_current_state();
collisionStatus = &gCollisionStatus;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
temp_v1 = 0x90005;
}
else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
temp_v1 = 0x10007;
} else {
temp_v1 = 0x60009;
}
} else if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
temp_v1 = 0x10007;
} else {
temp_v1 = 0x60009;
}
suggest_player_anim_clearUnkFlag(temp_v1);
collisionStatus->lastTouchedFloor = collisionStatus->currentFloor;
collisionStatus->currentFloor = -1;
}
@ -61,29 +58,27 @@ void func_802B60B4_E240F4() {
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
phi_a0 = 0x90005;
} else if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10007;
} else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10007;
}
else {
phi_a0 = 0x60009;
}
phi_a0 = 0x60009;
}
suggest_player_anim_clearUnkFlag(phi_a0);
playerStatus->decorationList++;
}
void func_802B6198_E241D8() {
PlayerStatus* playerStatus = &gPlayerStatus;
CollisionStatus* collisionStatus = &gCollisionStatus;
Entity* entity;
s32 temp_s1;
s32 phi_a0;
temp_s1 = 0x80000000;
temp_s1 = 0x80000000; // weirdness with this - fake match
if (playerStatus->flags < 0) {
entity = get_entity_by_index(collisionStatus->currentFloor);
Entity* entity = get_entity_by_index(collisionStatus->currentFloor);
D_8010C960 = entity->position.x;
D_8010C97C = entity->position.z;
func_802B6000_E24040();
@ -92,31 +87,32 @@ void func_802B6198_E241D8() {
}
playerStatus->decorationList++;
if (playerStatus->fallState == 1) {
if (playerStatus->flags & 0x80000000) {
playerStatus->flags &= 0x7FFFFFF5;
playerStatus->flags |= 4;
phi_a0 = 0x6000A;
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
}
temp_s1 = phi_a0;
suggest_player_anim_clearUnkFlag(temp_s1);
gCameras[0].moveFlags |= 1;
}
} else {
if (playerStatus->fallState != 1) {
return;
}
if (playerStatus->flags & 0x80000000) {
playerStatus->flags &= ~0x8000000A;
playerStatus->flags |= 4;
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
} else {
phi_a0 = 0x6000A;
}
temp_s1 = phi_a0;
suggest_player_anim_clearUnkFlag(temp_s1);
gCameras[0].moveFlags |= 1;
}
playerStatus->fallState++;
}
void func_802B6294_E242D4() {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 phi_a0;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_PEACH_PHYSICS) {
func_802B647C_E244BC();
@ -124,18 +120,17 @@ void func_802B6294_E242D4() {
}
if (playerStatus->flags < 0) {
playerStatus->flags &= 0x7FFFFFF5;
s32 phi_a0;
playerStatus->flags &= ~0x8000000A;
playerStatus->flags |= 4;
if (playerStatus->animFlags & PLAYER_ANIM_FLAG_8BIT_MARIO) {
phi_a0 = 0x90005;
} else if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
} else {
if (!(playerStatus->animFlags & (PLAYER_ANIM_FLAG_HOLDING_ITEM | PLAYER_ANIM_FLAG_2))) {
phi_a0 = 0x10008;
}
else {
phi_a0 = 0x6000A;
}
phi_a0 = 0x6000A;
}
suggest_player_anim_clearUnkFlag(phi_a0);
gCameras[0].moveFlags |= 1;
@ -176,7 +171,7 @@ void func_802B6348_E24388() {
&sub_arg5, &sub_arg6, &sub_arg7, &sub_arg8)) & 0xFF) - 2 >= 2U) && check_input_jump()) {
set_action_state(ACTION_STATE_JUMP);
playerStatus->flags &= -0xF;
playerStatus->flags &= ~0xE;
func_802B60B4_E240F4();
}
}

View File

@ -224,7 +224,7 @@ s32 N(func_80240000_BDD1B0)(ScriptInstance* script, NpcAISettings* aiSettings, E
if (fabsf(npc->pos.y - gPlayerStatusPtr->position.y) >= 40.0f) {
ret = FALSE;
}
if (D_8010EBB0.unk_03 == 9) {
if (gPartnerActionStatus.actionState.b[3] == 9) {
ret = FALSE;
}
return ret;

View File

@ -671,7 +671,7 @@ s32 N(func_80242388_BE5B38)(ScriptInstance* script, NpcAISettings* aiSettings, E
if (fabsf(npc->pos.y - gPlayerStatusPtr->position.y) >= 40.0f) {
ret = FALSE;
}
if (D_8010EBB0.unk_03 == 9) {
if (gPartnerActionStatus.actionState.b[3] == 9) {
ret = FALSE;
}
return ret;

View File

@ -822,7 +822,7 @@ void N(func_80241954_BFF1D4)(ScriptInstance* script, NpcAISettings* aiSettings,
} else {
npc->rotation.y = 0.0f;
npc->flags &= ~0x00200000;
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
disable_player_input();
partner_disable_input();
npc->duration = 0;
@ -888,7 +888,7 @@ void N(func_80241E70_BFF6F0)(ScriptInstance* script, NpcAISettings* aiSettings,
npc->duration++;
if (npc->duration >= 3) {
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
npc->duration = 0;
script->functionTemp[0] = 100;
} else {

View File

@ -544,14 +544,14 @@ void N(func_80240958_C2F4F8)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);

View File

@ -1060,14 +1060,14 @@ void N(func_80241D04_C331E4)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);

View File

@ -721,7 +721,7 @@ void N(func_802417F8_C37D28)(ScriptInstance* script, NpcAISettings* aiSettings,
} else {
npc->rotation.y = 0.0f;
npc->flags &= ~0x00200000;
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
disable_player_input();
partner_disable_input();
npc->duration = 0;
@ -787,7 +787,7 @@ void N(func_80241D14_C38244)(ScriptInstance* script, NpcAISettings* aiSettings,
npc->duration++;
if (npc->duration >= 3) {
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
npc->duration = 0;
script->functionTemp[0] = 100;
} else {

View File

@ -394,14 +394,14 @@ void N(func_80240704_C3B114)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);

View File

@ -303,14 +303,14 @@ void N(func_802406A4_C3E294)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);

View File

@ -1494,7 +1494,7 @@ void N(func_80242F94_C42D44)(ScriptInstance* script, NpcAISettings* aiSettings,
} else {
npc->rotation.y = 0.0f;
npc->flags &= ~0x00200000;
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
disable_player_input();
partner_disable_input();
npc->duration = 0;
@ -1560,7 +1560,7 @@ void N(func_802434B0_C43260)(ScriptInstance* script, NpcAISettings* aiSettings,
npc->duration++;
if (npc->duration >= 3) {
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
npc->duration = 0;
script->functionTemp[0] = 100;
} else {

View File

@ -727,14 +727,14 @@ void N(func_80240958_C47538)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);
@ -1303,7 +1303,7 @@ void N(func_80242C1C_C497FC)(ScriptInstance* script, NpcAISettings* aiSettings,
} else {
npc->rotation.y = 0.0f;
npc->flags &= ~0x00200000;
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
disable_player_input();
partner_disable_input();
npc->duration = 0;
@ -1369,7 +1369,7 @@ void N(func_80243138_C49D18)(ScriptInstance* script, NpcAISettings* aiSettings,
npc->duration++;
if (npc->duration >= 3) {
if (D_8010EBB0.unk_03 != 9) {
if (gPartnerActionStatus.actionState.b[3] != 9) {
npc->duration = 0;
script->functionTemp[0] = 100;
} else {

View File

@ -660,14 +660,14 @@ void N(func_802406A4_C52BE4)(ScriptInstance* script, NpcAISettings* aiSettings,
}
if (playerData->currentPartner == 2) {
if (D_8010EBB0.unk_00 == playerData->currentPartner) {
if (gPartnerActionStatus.actionState.b[0] == playerData->currentPartner) {
phi_s2 = TRUE;
}
}
}
if (((playerData->currentPartner == 1) && (D_8010EBB0.unk_00 != 0)) ||
((playerData->currentPartner == 3) && (D_8010EBB0.unk_00 == 2))) {
if (((playerData->currentPartner == 1) && (gPartnerActionStatus.actionState.b[0] != 0)) ||
((playerData->currentPartner == 3) && (gPartnerActionStatus.actionState.b[0] == 2))) {
posX = npc->pos.x;
posZ = npc->pos.z;
add_vec2D_polar(&posX, &posZ, 0.0f, npc->yaw);

View File

@ -1575,7 +1575,7 @@ NpcGroupList N(npcGroupList_80245AEC) = {
#include "world/common/UnkTexturePanFunc2.inc.c"
void playFX_82();
EffectInstance* playFX_82();
ApiStatus N(func_80240B00_CE7200)(ScriptInstance* script, s32 isInitialCall) {
playFX_82(1, 0, 0, 0, 0, 0);

View File

@ -3,7 +3,7 @@
ApiStatus N(UnkFunc24)(ScriptInstance* script, s32 isInitialCall) {
script->varTable[0] = 0;
if ((D_8010EBB0.unk_00 != 0) && (D_8010EBB0.unk_03 == 3)) {
if ((gPartnerActionStatus.actionState.b[0] != 0) && (gPartnerActionStatus.actionState.b[3] == 3)) {
script->varTable[0] = 1;
}

View File

@ -3,7 +3,7 @@
ApiStatus N(UnkFunc40)(ScriptInstance* script, s32 isInitialCall) {
script->varTable[0] = 0;
if ((D_8010EBB0.unk_00 != 0) && (D_8010EBB0.unk_03 == 3)) {
if ((gPartnerActionStatus.actionState.b[0] != 0) && (gPartnerActionStatus.actionState.b[3] == 3)) {
script->varTable[0] = 1;
}
return ApiStatus_DONE2;

View File

@ -28,11 +28,11 @@ s32 N(UnkNpcAIFunc26)(ScriptInstance* script) {
ret = FALSE;
}
if (D_8010EBB0.unk_03 == 9) {
if (gPartnerActionStatus.actionState.b[3] == 9) {
ret = FALSE;
}
if (D_8010EBB0.unk_03 == 7) {
if (gPartnerActionStatus.actionState.b[3] == 7) {
ret = FALSE;
}

View File

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

View File

@ -29,7 +29,7 @@ INCLUDE_ASM(s32, "world/partner/goombario", func_802BD564_317484);
s32 world_goombario_can_pause(Npc* partner) {
s32 new_var;
if (D_8010EBB0.unk_00) {
if (gPartnerActionStatus.actionState.b[0] != 0) {
return FALSE;
}
@ -58,18 +58,18 @@ ApiStatus func_802BDB84(ScriptInstance* script, s32 isInitialCall) {
}
void world_goombario_pre_battle(Npc* partner) {
Temp8010EBB0* temp = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
if (temp->unk_00 != 0) {
if (actionStatus->actionState.b[0] != 0) {
set_time_freeze_mode(TIME_FREEZE_NORMAL);
enable_player_input();
CancelMessageAndBlock();
partner_clear_player_tracking(partner);
temp->unk_00 = 0;
temp->unk_03 = 0;
actionStatus->actionState.b[0] = 0;
actionStatus->actionState.b[3] = 0;
disable_npc_blur(partner);
}
temp->unk_03 = 1;
actionStatus->actionState.b[3] = 1;
}
s32 D_802BDC40_317B60[] = {

View File

@ -292,7 +292,7 @@ void remove_consumable(void) {
INCLUDE_ASM(s32, "world/partners", func_800EA4B0);
s32 partner_is_idle(Npc* partner) {
return D_8010EBB0.unk_00 == 0;
return gPartnerActionStatus.actionState.b[0] == 0;
}
s32 world_partner_can_player_pause_default(Npc* partner) {
@ -377,13 +377,13 @@ void switch_to_partner(s32 arg0) {
void partner_init_after_battle(s32 arg0) {
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
if (D_8010CFD8 != arg0) {
D_8010CFE0 = 1;
D_8010CFE4 = arg0;
temp8010EBB0->unk_00 = 0;
temp8010EBB0->unk_01 = 0;
actionStatus->actionState.b[0] = 0;
actionStatus->actionState.b[1] = 0;
if (D_8010CFD8 != 0 && arg0 != 0) {
D_8010CFE8 = 2;
@ -414,12 +414,12 @@ void func_800EB2A4(s32 arg0) {
}
s32 partner_use_ability(void) {
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
if (!is_starting_conversation() &&
wPartner != NULL &&
(wPartner->canUseAbility == NULL || wPartner->canUseAbility(wPartnerNpc))) {
if ((gGameStatusPtr->unk_81 != 0) && (temp8010EBB0->unk_08 & 0x4000)) {
if ((gGameStatusPtr->unk_81 != 0) && (actionStatus->currentButtons & 0x4000)) {
sfx_play_sound(0x21D);
} else if (D_8010CFD8 != 0) {
D_8010CFE0 = 1;
@ -449,7 +449,7 @@ void partner_reset_data(void) {
PlayerStatus* playerStatus = &gPlayerStatus;
s32 currentPartner = gPlayerData.currentPartner;
mem_clear(&D_8010EBB0, sizeof(D_8010EBB0));
mem_clear(&gPartnerActionStatus, sizeof(gPartnerActionStatus));
get_generic_entity(create_generic_entity_frontUI(_use_partner_ability, NULL));
D_8010CFE0 = 1;
@ -457,7 +457,7 @@ void partner_reset_data(void) {
D_8010CFD8 = currentPartner;
if (gGameStatusPtr->unk_7D != 0) {
D_8010EBB0.unk_00 = 1;
gPartnerActionStatus.actionState.b[0] = 1;
gGameStatusPtr->unk_7D = 0;
}
@ -478,18 +478,18 @@ void partner_reset_data(void) {
}
void partner_initialize_data(void) {
Temp8010EBB0* unk8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
D_8010CFD8 = 0;
D_8010CFE0 = 0;
D_8010CFE8 = 0;
D_8010CFC4 = 0;
unk8010EBB0->unk_03 = 0;
unk8010EBB0->unk_14 = 0;
unk8010EBB0->unk_01 = 0;
unk8010EBB0->unk_00 = 0;
unk8010EBB0->unk_358 = 0;
unk8010EBB0->unk_02 = 0;
actionStatus->actionState.b[3] = 0;
actionStatus->inputDisabled = 0;
actionStatus->actionState.b[1] = 0;
actionStatus->actionState.b[0] = 0;
actionStatus->unk_358 = 0;
actionStatus->actionState.b[2] = 0;
wPartner = NULL;
D_800F833C = 0;
D_800F8340 = 0;
@ -527,7 +527,7 @@ void partner_handle_before_battle(void) {
}
void partner_handle_after_battle(void) {
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
PlayerData* playerData = &gPlayerData;
if (D_8010CFD8 != 0) {
@ -542,10 +542,10 @@ void partner_handle_after_battle(void) {
D_8010CFE8 = 1;
if (playerData->currentPartner != PARTNER_WATT && temp8010EBB0->unk_03 == 6) {
if (playerData->currentPartner != PARTNER_WATT && actionStatus->actionState.b[3] == 6) {
gPlayerStatusPtr->animFlags &= ~1;
gPlayerStatusPtr->animFlags &= ~2;
temp8010EBB0->unk_03 = 0;
actionStatus->actionState.b[3] = 0;
}
if (wPartner->postBattle != NULL) {
@ -589,15 +589,15 @@ INCLUDE_ASM(void, "world/partners", partner_walking_update_player_tracking, Npc*
void partner_walking_update_motion(Npc* partner) {
PlayerStatus* playerStatus = &gPlayerStatus;
Temp8010EBB0* temp8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
if (gGameStatusPtr->unk_81 == 0 || playerStatus->flags & 0x3000 || temp8010EBB0->unk_14 != 0
|| temp8010EBB0->unk_02 != 0) {
if (gGameStatusPtr->unk_81 == 0 || playerStatus->flags & 0x3000 || actionStatus->inputDisabled != 0
|| actionStatus->actionState.b[2] != 0) {
if (!(playerStatus->animFlags & 0x800)) {
partner_walking_follow_player(partner);
}
if (temp8010EBB0->unk_0C & 0x6006) {
temp8010EBB0->unk_02 = 0;
if (actionStatus->pressedButtons & 0x6006) {
actionStatus->actionState.b[2] = 0;
}
}
@ -733,18 +733,18 @@ INCLUDE_ASM(s32, "world/partners", func_800EF4E0);
#endif
void partner_enable_input(void) {
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
temp_8010EBB0->unk_14--;
if (temp_8010EBB0->unk_14 < 0) {
temp_8010EBB0->unk_14 = 0;
actionStatus->inputDisabled--;
if (actionStatus->inputDisabled < 0) {
actionStatus->inputDisabled = 0;
}
}
void partner_disable_input(void) {
Temp8010EBB0* temp_8010EBB0 = &D_8010EBB0;
PartnerActionStatus* actionStatus = &gPartnerActionStatus;
temp_8010EBB0->unk_14++;
actionStatus->inputDisabled++;
}
INCLUDE_ASM(void, "world/partners", partner_do_player_collision, Npc* partner);

View File

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

View File

@ -10,7 +10,7 @@ from glob import glob
VERSIONS = ["us", "jp"]
DO_SHA1_CHECK = True
CPPFLAGS = "-w -Iver/$version/build/include -Iinclude -Isrc -D _LANGUAGE_C -D _FINALROM -D VERSION=$version " \
CPPFLAGS = "-w -Iver/$version/build/include -Iinclude -Isrc -Iassets/$version -D _LANGUAGE_C -D _FINALROM -D VERSION=$version " \
"-ffreestanding -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -MD -MF $out.d"
ASFLAGS = "-EB -G 0"
@ -183,7 +183,7 @@ class Configure:
modes = ["ld"]
if assets:
modes.extend(["bin", "Yay0", "img", "pm_map_data", "pm_msg", "pm_npc_sprites", "pm_charset",
modes.extend(["bin", "Yay0", "img", "vtx", "pm_map_data", "pm_msg", "pm_npc_sprites", "pm_charset",
"pm_charset_palettes", "pm_effect_loads", "pm_effect_shims"])
if code:
modes.extend(["code", "c", "data", "rodata"])

View File

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

View File

@ -10,6 +10,7 @@ from util import options
class N64SegC(N64SegCodeSubsegment):
defined_funcs: Set[str] = set()
global_asm_funcs: Set[str] = set()
STRIP_C_COMMENTS_RE = re.compile(
r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
@ -21,6 +22,11 @@ class N64SegC(N64SegCodeSubsegment):
re.MULTILINE
)
C_GLOBAL_ASM_RE = re.compile(
r"(INCLUDE|GLOBAL)_ASM\(\"(\w+\/)*(\w+)\.s\"\)",
re.MULTILINE
)
@staticmethod
def strip_c_comments(text):
def replacer(match):
@ -38,6 +44,12 @@ class N64SegC(N64SegCodeSubsegment):
return set(m.group(2) for m in N64SegC.C_FUNC_RE.finditer(text))
@staticmethod
def get_global_asm_funcs(c_file):
with open(c_file, "r") as f:
text = N64SegC.strip_c_comments(f.read())
return set(m.group(3) for m in N64SegC.C_GLOBAL_ASM_RE.finditer(text))
def out_path(self) -> Optional[Path]:
return options.get_src_path() / self.dir / f"{self.name}.c"
@ -49,6 +61,7 @@ class N64SegC(N64SegCodeSubsegment):
# TODO run cpp?
self.defined_funcs = self.get_funcs_defined_in_c(path)
self.mark_c_funcs_as_defined(self.defined_funcs)
self.global_asm_funcs = self.get_global_asm_funcs(path)
self.funcs_text = self.disassemble_code(rom_bytes)
@ -60,7 +73,7 @@ class N64SegC(N64SegCodeSubsegment):
for func in self.funcs_text:
func_name = self.parent.get_symbol(func, type="func", local_only=True).name
if func_name not in self.defined_funcs:
if func_name in self.global_asm_funcs:
self.create_c_asm_file(self.funcs_text, func, asm_out_dir, func_name)
c_path = self.out_path()
@ -79,7 +92,7 @@ class N64SegC(N64SegCodeSubsegment):
def get_c_preamble(self):
ret = []
preamble = options.get("generated_c_preamble", "#include \"common.h\"")
preamble = options.get_generated_c_premble()
ret.append(preamble)
ret.append("")

View File

@ -0,0 +1,72 @@
"""
N64 Vtx struct splitter
Dumps out Vtx as a .inc.c file.
Originally written by Mark Street (https://github.com/mkst)
"""
import re
import struct
from typing import Optional
from pathlib import Path
from util.log import error
from util import options
from segtypes.n64.codesubsegment import N64SegCodeSubsegment
class N64SegVtx(N64SegCodeSubsegment):
def __init__(self, rom_start, rom_end, type, name, vram_start, extract,
given_subalign, given_is_overlay, given_dir, args = [], yaml = {}):
super().__init__(rom_start, rom_end, type, name, vram_start, extract,
given_subalign, given_is_overlay, given_dir, args, yaml)
self.file_text = None
def get_linker_section(self) -> str:
return '.data'
def out_path(self) -> Path:
return options.get_asset_path() / self.dir / f"{self.name}.vtx.inc.c"
def scan(self, rom_bytes: bytes):
self.file_text = self.disassemble_data(rom_bytes)
def disassemble_data(self, rom_bytes):
vertex_data = rom_bytes[self.rom_start:self.rom_end]
segment_length = len(vertex_data)
if (segment_length) % 16 != 0:
error(f"Error: Vtx segment {self.name} length ({segment_length}) is not a multiple of 16!")
lines = []
preamble = options.get_generated_c_premble()
lines.append(preamble)
lines.append("")
vertex_count = segment_length // 16
cname = re.sub(r"[^0-9a-zA-Z_]", "_", self.name)
lines.append(f"Vtx {cname}[{vertex_count}] = {{")
for vtx in struct.iter_unpack(">hhhHhhBBBB", vertex_data):
x, y, z, flg, t, c, r, g, b, a = vtx
vtx_string = f" {{{{{{ {x:5}, {y:5}, {z:5} }}, {flg}, {{ {t:5}, {c:5} }}, {{ {r:3}, {g:3}, {b:3}, {a:3} }}}}}},"
if flg != 0:
self.warn(f"Non-zero flag found in vertex data {self.name}!")
lines.append(vtx_string)
lines.append("};")
# enforce newline at end of file
lines.append("")
return "\n".join(lines)
def split(self, rom_bytes: bytes):
if self.file_text and self.out_path():
self.out_path().parent.mkdir(parents=True, exist_ok=True)
with open(self.out_path(), "w", newline="\n") as f:
f.write(self.file_text)
def should_scan(self) -> bool:
return options.mode_active("vtx") and self.rom_start != "auto" and self.rom_end != "auto"
def should_split(self) -> bool:
return self.extract and options.mode_active("vtx")

View File

@ -1,4 +1,6 @@
import importlib
import importlib.util
from typing import Dict, TYPE_CHECKING, Type, Union, Optional, List
from pathlib import Path
@ -102,7 +104,7 @@ class Segment:
else:
return str(cls.get_default_name(rom_start))
def __init__(self, rom_start, rom_end, type, name, vram_start, extract = True,
def __init__(self, rom_start, rom_end, type, name, vram_start, extract = True,
given_subalign = options.get_subalign(), given_is_overlay: Optional[bool] = False, given_dir: Path = Path(), args = [], yaml = {}):
self.rom_start = rom_start
self.rom_end = rom_end
@ -128,7 +130,7 @@ class Segment:
if self.rom_start == "auto":
self.extract = False
if self.type.startswith("."):
self.extract = False
@ -152,7 +154,7 @@ class Segment:
args:List[str] = [] if isinstance(yaml, dict) else yaml[3:]
return cls(rom_start, rom_end, type, name, vram_start, extract, given_subalign, given_is_overlay, given_dir, args, yaml)
@property
def needs_symbols(self) -> bool:
return False
@ -163,14 +165,14 @@ class Segment:
return self.parent.dir / self.given_dir
else:
return self.given_dir
@property
def subalign(self) -> int:
if self.parent:
return self.parent.subalign
else:
return self.given_subalign
@property
def is_overlay(self) -> bool:
if self.parent:
@ -239,10 +241,10 @@ class Segment:
def should_scan(self) -> bool:
return self.should_split()
def should_split(self) -> bool:
return self.extract and options.mode_active(self.type)
def scan(self, rom_bytes: bytes):
pass

View File

@ -38,6 +38,9 @@ def get_header_encoding() -> str:
def get_subalign() -> int:
return opts.get("subalign", 16)
def get_generated_c_premble() -> str:
return opts.get("generated_c_preamble", '#include "common.h"')
def mode_active(mode):
return mode in opts["modes"] or "all" in opts["modes"]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -55,8 +55,8 @@ glabel check_conversation_trigger
/* 1E6A4 800432A4 E7A6003C */ swc1 $f6, 0x3c($sp)
/* 1E6A8 800432A8 E7A80040 */ swc1 $f8, 0x40($sp)
/* 1E6AC 800432AC C6860028 */ lwc1 $f6, 0x28($s4)
/* 1E6B0 800432B0 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 1E6B4 800432B4 8042EBB0 */ lb $v0, %lo(D_8010EBB0)($v0)
/* 1E6B0 800432B0 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 1E6B4 800432B4 8042EBB0 */ lb $v0, %lo(gPartnerActionStatus)($v0)
/* 1E6B8 800432B8 E7A60030 */ swc1 $f6, 0x30($sp)
/* 1E6BC 800432BC C688002C */ lwc1 $f8, 0x2c($s4)
/* 1E6C0 800432C0 E7A80034 */ swc1 $f8, 0x34($sp)

View File

@ -436,8 +436,8 @@ glabel update_encounters_neutral
/* 1B1E8 8003FDE8 30820040 */ andi $v0, $a0, 0x40
/* 1B1EC 8003FDEC 144002B6 */ bnez $v0, .L800408C8
/* 1B1F0 8003FDF0 24020009 */ addiu $v0, $zero, 9
/* 1B1F4 8003FDF4 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 1B1F8 8003FDF8 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 1B1F4 8003FDF4 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 1B1F8 8003FDF8 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 1B1FC 8003FDFC 106202B2 */ beq $v1, $v0, .L800408C8
/* 1B200 8003FE00 00000000 */ nop
/* 1B204 8003FE04 8E220000 */ lw $v0, ($s1)

View File

@ -149,8 +149,8 @@ glabel update_encounters_post_battle
/* 1D510 80042110 0C03ADB1 */ jal partner_handle_after_battle
/* 1D514 80042114 00000000 */ nop
.L80042118:
/* 1D518 80042118 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 1D51C 8004211C 2442EBB0 */ addiu $v0, $v0, %lo(D_8010EBB0)
/* 1D518 80042118 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 1D51C 8004211C 2442EBB0 */ addiu $v0, $v0, %lo(gPartnerActionStatus)
/* 1D520 80042120 80420001 */ lb $v0, 1($v0)
/* 1D524 80042124 3C03800A */ lui $v1, %hi(D_8009A63C)
/* 1D528 80042128 2463A63C */ addiu $v1, $v1, %lo(D_8009A63C)

View File

@ -36,8 +36,8 @@ glabel func_800490B4
/* 24508 80049108 30420002 */ andi $v0, $v0, 2
/* 2450C 8004910C 144000AC */ bnez $v0, .L800493C0
/* 24510 80049110 0000102D */ daddu $v0, $zero, $zero
/* 24514 80049114 3C048011 */ lui $a0, %hi(D_8010EBB0)
/* 24518 80049118 2484EBB0 */ addiu $a0, $a0, %lo(D_8010EBB0)
/* 24514 80049114 3C048011 */ lui $a0, %hi(gPartnerActionStatus)
/* 24518 80049118 2484EBB0 */ addiu $a0, $a0, %lo(gPartnerActionStatus)
/* 2451C 8004911C 80830003 */ lb $v1, 3($a0)
/* 24520 80049120 24020009 */ addiu $v0, $zero, 9
/* 24524 80049124 14620008 */ bne $v1, $v0, .L80049148

View File

@ -1,110 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802AE000_316C00
/* 316C00 802AE000 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 316C04 802AE004 AFB40028 */ sw $s4, 0x28($sp)
/* 316C08 802AE008 3C144BF1 */ lui $s4, 0x4bf1
/* 316C0C 802AE00C 36945BF6 */ ori $s4, $s4, 0x5bf6
/* 316C10 802AE010 AFB30024 */ sw $s3, 0x24($sp)
/* 316C14 802AE014 3C137013 */ lui $s3, 0x7013
/* 316C18 802AE018 2673BC11 */ addiu $s3, $s3, -0x43ef
/* 316C1C 802AE01C AFB00018 */ sw $s0, 0x18($sp)
/* 316C20 802AE020 0000802D */ daddu $s0, $zero, $zero
/* 316C24 802AE024 3C05B000 */ lui $a1, 0xb000
/* 316C28 802AE028 34A50574 */ ori $a1, $a1, 0x574
/* 316C2C 802AE02C 3C04800A */ lui $a0, %hi(nuPiCartHandle)
/* 316C30 802AE030 8C84A638 */ lw $a0, %lo(nuPiCartHandle)($a0)
/* 316C34 802AE034 27A60010 */ addiu $a2, $sp, 0x10
/* 316C38 802AE038 AFB20020 */ sw $s2, 0x20($sp)
/* 316C3C 802AE03C 0200902D */ daddu $s2, $s0, $zero
/* 316C40 802AE040 AFB5002C */ sw $s5, 0x2c($sp)
/* 316C44 802AE044 3C158006 */ lui $s5, %hi(osEPiReadIo)
/* 316C48 802AE048 26B50DC0 */ addiu $s5, $s5, %lo(osEPiReadIo)
/* 316C4C 802AE04C AFBF003C */ sw $ra, 0x3c($sp)
/* 316C50 802AE050 AFBE0038 */ sw $fp, 0x38($sp)
/* 316C54 802AE054 AFB70034 */ sw $s7, 0x34($sp)
/* 316C58 802AE058 AFB60030 */ sw $s6, 0x30($sp)
/* 316C5C 802AE05C 02A0F809 */ jalr $s5
/* 316C60 802AE060 AFB1001C */ sw $s1, 0x1c($sp)
/* 316C64 802AE064 3C110031 */ lui $s1, 0x31
/* 316C68 802AE068 26316A70 */ addiu $s1, $s1, 0x6a70
/* 316C6C 802AE06C 8FA20010 */ lw $v0, 0x10($sp)
/* 316C70 802AE070 3C030031 */ lui $v1, 0x31
/* 316C74 802AE074 24636C00 */ addiu $v1, $v1, 0x6c00
/* 316C78 802AE078 0282A023 */ subu $s4, $s4, $v0
/* 316C7C 802AE07C 0223102B */ sltu $v0, $s1, $v1
/* 316C80 802AE080 1040002B */ beqz $v0, .L802AE130
/* 316C84 802AE084 241E0023 */ addiu $fp, $zero, 0x23
/* 316C88 802AE088 24170003 */ addiu $s7, $zero, 3
/* 316C8C 802AE08C 0060B02D */ daddu $s6, $v1, $zero
.L802AE090:
/* 316C90 802AE090 0220282D */ daddu $a1, $s1, $zero
/* 316C94 802AE094 3C04800A */ lui $a0, %hi(nuPiCartHandle)
/* 316C98 802AE098 8C84A638 */ lw $a0, %lo(nuPiCartHandle)($a0)
/* 316C9C 802AE09C 02A0F809 */ jalr $s5
/* 316CA0 802AE0A0 27A60010 */ addiu $a2, $sp, 0x10
/* 316CA4 802AE0A4 8FA30010 */ lw $v1, 0x10($sp)
/* 316CA8 802AE0A8 2407000F */ addiu $a3, $zero, 0xf
/* 316CAC 802AE0AC 3065FFFF */ andi $a1, $v1, 0xffff
/* 316CB0 802AE0B0 00032402 */ srl $a0, $v1, 0x10
/* 316CB4 802AE0B4 00A41021 */ addu $v0, $a1, $a0
/* 316CB8 802AE0B8 02028021 */ addu $s0, $s0, $v0
/* 316CBC 802AE0BC 00121682 */ srl $v0, $s2, 0x1a
/* 316CC0 802AE0C0 1447000F */ bne $v0, $a3, .L802AE100
/* 316CC4 802AE0C4 00031682 */ srl $v0, $v1, 0x1a
/* 316CC8 802AE0C8 24070009 */ addiu $a3, $zero, 9
/* 316CCC 802AE0CC 50470003 */ beql $v0, $a3, .L802AE0DC
/* 316CD0 802AE0D0 00031542 */ srl $v0, $v1, 0x15
/* 316CD4 802AE0D4 145E000A */ bne $v0, $fp, .L802AE100
/* 316CD8 802AE0D8 00031542 */ srl $v0, $v1, 0x15
.L802AE0DC:
/* 316CDC 802AE0DC 3043001F */ andi $v1, $v0, 0x1f
/* 316CE0 802AE0E0 00121402 */ srl $v0, $s2, 0x10
/* 316CE4 802AE0E4 3042001F */ andi $v0, $v0, 0x1f
/* 316CE8 802AE0E8 14620005 */ bne $v1, $v0, .L802AE100
/* 316CEC 802AE0EC 3082001F */ andi $v0, $a0, 0x1f
/* 316CF0 802AE0F0 14620003 */ bne $v1, $v0, .L802AE100
/* 316CF4 802AE0F4 3242FFFF */ andi $v0, $s2, 0xffff
/* 316CF8 802AE0F8 02058023 */ subu $s0, $s0, $a1
/* 316CFC 802AE0FC 02028023 */ subu $s0, $s0, $v0
.L802AE100:
/* 316D00 802AE100 8FA40010 */ lw $a0, 0x10($sp)
/* 316D04 802AE104 00041682 */ srl $v0, $a0, 0x1a
/* 316D08 802AE108 14570006 */ bne $v0, $s7, .L802AE124
/* 316D0C 802AE10C 26310004 */ addiu $s1, $s1, 4
/* 316D10 802AE110 3083FFFF */ andi $v1, $a0, 0xffff
/* 316D14 802AE114 00041402 */ srl $v0, $a0, 0x10
/* 316D18 802AE118 3042FC00 */ andi $v0, $v0, 0xfc00
/* 316D1C 802AE11C 00621821 */ addu $v1, $v1, $v0
/* 316D20 802AE120 02038023 */ subu $s0, $s0, $v1
.L802AE124:
/* 316D24 802AE124 0236102B */ sltu $v0, $s1, $s6
/* 316D28 802AE128 1440FFD9 */ bnez $v0, .L802AE090
/* 316D2C 802AE12C 0080902D */ daddu $s2, $a0, $zero
.L802AE130:
/* 316D30 802AE130 3C02FFDB */ lui $v0, 0xffdb
/* 316D34 802AE134 34426641 */ ori $v0, $v0, 0x6641
/* 316D38 802AE138 02021021 */ addu $v0, $s0, $v0
/* 316D3C 802AE13C 02821023 */ subu $v0, $s4, $v0
/* 316D40 802AE140 02629821 */ addu $s3, $s3, $v0
/* 316D44 802AE144 00131F02 */ srl $v1, $s3, 0x1c
/* 316D48 802AE148 24020008 */ addiu $v0, $zero, 8
/* 316D4C 802AE14C 14620003 */ bne $v1, $v0, .L802AE15C
/* 316D50 802AE150 00000000 */ nop
/* 316D54 802AE154 0260F809 */ jalr $s3
/* 316D58 802AE158 00000000 */ nop
.L802AE15C:
/* 316D5C 802AE15C 8FBF003C */ lw $ra, 0x3c($sp)
/* 316D60 802AE160 8FBE0038 */ lw $fp, 0x38($sp)
/* 316D64 802AE164 8FB70034 */ lw $s7, 0x34($sp)
/* 316D68 802AE168 8FB60030 */ lw $s6, 0x30($sp)
/* 316D6C 802AE16C 8FB5002C */ lw $s5, 0x2c($sp)
/* 316D70 802AE170 8FB40028 */ lw $s4, 0x28($sp)
/* 316D74 802AE174 8FB30024 */ lw $s3, 0x24($sp)
/* 316D78 802AE178 8FB20020 */ lw $s2, 0x20($sp)
/* 316D7C 802AE17C 8FB1001C */ lw $s1, 0x1c($sp)
/* 316D80 802AE180 8FB00018 */ lw $s0, 0x18($sp)
/* 316D84 802AE184 03E00008 */ jr $ra
/* 316D88 802AE188 27BD0040 */ addiu $sp, $sp, 0x40
/* 316D8C 802AE18C 00000000 */ nop

View File

@ -1,115 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802AE000
/* 316D90 802AE000 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 316D94 802AE004 AFB40028 */ sw $s4, 0x28($sp)
/* 316D98 802AE008 3C1433F5 */ lui $s4, 0x33f5
/* 316D9C 802AE00C AFB30024 */ sw $s3, 0x24($sp)
/* 316DA0 802AE010 3C137013 */ lui $s3, 0x7013
/* 316DA4 802AE014 2673ACA1 */ addiu $s3, $s3, -0x535f
/* 316DA8 802AE018 AFB00018 */ sw $s0, 0x18($sp)
/* 316DAC 802AE01C 0000802D */ daddu $s0, $zero, $zero
/* 316DB0 802AE020 3C05B000 */ lui $a1, 0xb000
/* 316DB4 802AE024 34A50800 */ ori $a1, $a1, 0x800
/* 316DB8 802AE028 3C04800A */ lui $a0, %hi(nuPiCartHandle)
/* 316DBC 802AE02C 8C84A638 */ lw $a0, %lo(nuPiCartHandle)($a0)
/* 316DC0 802AE030 27A60010 */ addiu $a2, $sp, 0x10
/* 316DC4 802AE034 AFB20020 */ sw $s2, 0x20($sp)
/* 316DC8 802AE038 0200902D */ daddu $s2, $s0, $zero
/* 316DCC 802AE03C AFB5002C */ sw $s5, 0x2c($sp)
/* 316DD0 802AE040 3C158006 */ lui $s5, %hi(osEPiReadIo)
/* 316DD4 802AE044 26B50DC0 */ addiu $s5, $s5, %lo(osEPiReadIo)
/* 316DD8 802AE048 AFBF003C */ sw $ra, 0x3c($sp)
/* 316DDC 802AE04C AFBE0038 */ sw $fp, 0x38($sp)
/* 316DE0 802AE050 AFB70034 */ sw $s7, 0x34($sp)
/* 316DE4 802AE054 AFB60030 */ sw $s6, 0x30($sp)
/* 316DE8 802AE058 02A0F809 */ jalr $s5
/* 316DEC 802AE05C AFB1001C */ sw $s1, 0x1c($sp)
/* 316DF0 802AE060 3C110031 */ lui $s1, 0x31
/* 316DF4 802AE064 26316C00 */ addiu $s1, $s1, 0x6c00
/* 316DF8 802AE068 8FA20010 */ lw $v0, 0x10($sp)
/* 316DFC 802AE06C 3C030031 */ lui $v1, 0x31
/* 316E00 802AE070 24636D90 */ addiu $v1, $v1, 0x6d90
/* 316E04 802AE074 0282A023 */ subu $s4, $s4, $v0
/* 316E08 802AE078 0223102B */ sltu $v0, $s1, $v1
/* 316E0C 802AE07C 1040002B */ beqz $v0, .L802AE12C
/* 316E10 802AE080 241E0023 */ addiu $fp, $zero, 0x23
/* 316E14 802AE084 24170003 */ addiu $s7, $zero, 3
/* 316E18 802AE088 0060B02D */ daddu $s6, $v1, $zero
.L802AE08C:
/* 316E1C 802AE08C 0220282D */ daddu $a1, $s1, $zero
/* 316E20 802AE090 3C04800A */ lui $a0, %hi(nuPiCartHandle)
/* 316E24 802AE094 8C84A638 */ lw $a0, %lo(nuPiCartHandle)($a0)
/* 316E28 802AE098 02A0F809 */ jalr $s5
/* 316E2C 802AE09C 27A60010 */ addiu $a2, $sp, 0x10
/* 316E30 802AE0A0 8FA30010 */ lw $v1, 0x10($sp)
/* 316E34 802AE0A4 2407000F */ addiu $a3, $zero, 0xf
/* 316E38 802AE0A8 3065FFFF */ andi $a1, $v1, 0xffff
/* 316E3C 802AE0AC 00032402 */ srl $a0, $v1, 0x10
/* 316E40 802AE0B0 00A41021 */ addu $v0, $a1, $a0
/* 316E44 802AE0B4 02028021 */ addu $s0, $s0, $v0
/* 316E48 802AE0B8 00121682 */ srl $v0, $s2, 0x1a
/* 316E4C 802AE0BC 1447000F */ bne $v0, $a3, .L802AE0FC
/* 316E50 802AE0C0 00031682 */ srl $v0, $v1, 0x1a
/* 316E54 802AE0C4 24070009 */ addiu $a3, $zero, 9
/* 316E58 802AE0C8 50470003 */ beql $v0, $a3, .L802AE0D8
/* 316E5C 802AE0CC 00031542 */ srl $v0, $v1, 0x15
/* 316E60 802AE0D0 145E000A */ bne $v0, $fp, .L802AE0FC
/* 316E64 802AE0D4 00031542 */ srl $v0, $v1, 0x15
.L802AE0D8:
/* 316E68 802AE0D8 3043001F */ andi $v1, $v0, 0x1f
/* 316E6C 802AE0DC 00121402 */ srl $v0, $s2, 0x10
/* 316E70 802AE0E0 3042001F */ andi $v0, $v0, 0x1f
/* 316E74 802AE0E4 14620005 */ bne $v1, $v0, .L802AE0FC
/* 316E78 802AE0E8 3082001F */ andi $v0, $a0, 0x1f
/* 316E7C 802AE0EC 14620003 */ bne $v1, $v0, .L802AE0FC
/* 316E80 802AE0F0 3242FFFF */ andi $v0, $s2, 0xffff
/* 316E84 802AE0F4 02058023 */ subu $s0, $s0, $a1
/* 316E88 802AE0F8 02028023 */ subu $s0, $s0, $v0
.L802AE0FC:
/* 316E8C 802AE0FC 8FA40010 */ lw $a0, 0x10($sp)
/* 316E90 802AE100 00041682 */ srl $v0, $a0, 0x1a
/* 316E94 802AE104 14570006 */ bne $v0, $s7, .L802AE120
/* 316E98 802AE108 26310004 */ addiu $s1, $s1, 4
/* 316E9C 802AE10C 3083FFFF */ andi $v1, $a0, 0xffff
/* 316EA0 802AE110 00041402 */ srl $v0, $a0, 0x10
/* 316EA4 802AE114 3042FC00 */ andi $v0, $v0, 0xfc00
/* 316EA8 802AE118 00621821 */ addu $v1, $v1, $v0
/* 316EAC 802AE11C 02038023 */ subu $s0, $s0, $v1
.L802AE120:
/* 316EB0 802AE120 0236102B */ sltu $v0, $s1, $s6
/* 316EB4 802AE124 1440FFD9 */ bnez $v0, .L802AE08C
/* 316EB8 802AE128 0080902D */ daddu $s2, $a0, $zero
.L802AE12C:
/* 316EBC 802AE12C 3C02FFD6 */ lui $v0, 0xffd6
/* 316EC0 802AE130 3442E66D */ ori $v0, $v0, 0xe66d
/* 316EC4 802AE134 02021021 */ addu $v0, $s0, $v0
/* 316EC8 802AE138 02821023 */ subu $v0, $s4, $v0
/* 316ECC 802AE13C 02629821 */ addu $s3, $s3, $v0
/* 316ED0 802AE140 00131F02 */ srl $v1, $s3, 0x1c
/* 316ED4 802AE144 24020008 */ addiu $v0, $zero, 8
/* 316ED8 802AE148 14620005 */ bne $v1, $v0, .L802AE160
/* 316EDC 802AE14C 00000000 */ nop
/* 316EE0 802AE150 0260F809 */ jalr $s3
/* 316EE4 802AE154 00000000 */ nop
/* 316EE8 802AE158 080AB85C */ j .L802AE170
/* 316EEC 802AE15C 00000000 */ nop
.L802AE160:
/* 316EF0 802AE160 3C04803E */ lui $a0, %hi(D_803DA800)
/* 316EF4 802AE164 2484A800 */ addiu $a0, $a0, %lo(D_803DA800)
/* 316EF8 802AE168 0C00A40C */ jal _heap_create
/* 316EFC 802AE16C 3C050001 */ lui $a1, 1
.L802AE170:
/* 316F00 802AE170 8FBF003C */ lw $ra, 0x3c($sp)
/* 316F04 802AE174 8FBE0038 */ lw $fp, 0x38($sp)
/* 316F08 802AE178 8FB70034 */ lw $s7, 0x34($sp)
/* 316F0C 802AE17C 8FB60030 */ lw $s6, 0x30($sp)
/* 316F10 802AE180 8FB5002C */ lw $s5, 0x2c($sp)
/* 316F14 802AE184 8FB40028 */ lw $s4, 0x28($sp)
/* 316F18 802AE188 8FB30024 */ lw $s3, 0x24($sp)
/* 316F1C 802AE18C 8FB20020 */ lw $s2, 0x20($sp)
/* 316F20 802AE190 8FB1001C */ lw $s1, 0x1c($sp)
/* 316F24 802AE194 8FB00018 */ lw $s0, 0x18($sp)
/* 316F28 802AE198 03E00008 */ jr $ra
/* 316F2C 802AE19C 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,28 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel _add_hit_vert_to_buffer
/* 36DA0 8005B9A0 8CC80000 */ lw $t0, ($a2)
/* 36DA4 8005B9A4 19000009 */ blez $t0, .L8005B9CC
/* 36DA8 8005B9A8 0000182D */ daddu $v1, $zero, $zero
/* 36DAC 8005B9AC 0080382D */ daddu $a3, $a0, $zero
.L8005B9B0:
/* 36DB0 8005B9B0 8CE20000 */ lw $v0, ($a3)
/* 36DB4 8005B9B4 10450005 */ beq $v0, $a1, .L8005B9CC
/* 36DB8 8005B9B8 00000000 */ nop
/* 36DBC 8005B9BC 24630001 */ addiu $v1, $v1, 1
/* 36DC0 8005B9C0 0068102A */ slt $v0, $v1, $t0
/* 36DC4 8005B9C4 1440FFFA */ bnez $v0, .L8005B9B0
/* 36DC8 8005B9C8 24E70004 */ addiu $a3, $a3, 4
.L8005B9CC:
/* 36DCC 8005B9CC 8CC20000 */ lw $v0, ($a2)
/* 36DD0 8005B9D0 14620006 */ bne $v1, $v0, .L8005B9EC
/* 36DD4 8005B9D4 00031080 */ sll $v0, $v1, 2
/* 36DD8 8005B9D8 00441021 */ addu $v0, $v0, $a0
/* 36DDC 8005B9DC AC450000 */ sw $a1, ($v0)
/* 36DE0 8005B9E0 8CC20000 */ lw $v0, ($a2)
/* 36DE4 8005B9E4 24420001 */ addiu $v0, $v0, 1
/* 36DE8 8005B9E8 ACC20000 */ sw $v0, ($a2)
.L8005B9EC:
/* 36DEC 8005B9EC 03E00008 */ jr $ra
/* 36DF0 8005B9F0 00000000 */ nop

View File

@ -56,8 +56,8 @@ glabel func_8005DB00
/* 38FC4 8005DBC4 0801774D */ j .L8005DD34
/* 38FC8 8005DBC8 AE420070 */ sw $v0, 0x70($s2)
.L8005DBCC:
/* 38FCC 8005DBCC 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 38FD0 8005DBD0 2442EBB0 */ addiu $v0, $v0, %lo(D_8010EBB0)
/* 38FCC 8005DBCC 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 38FD0 8005DBD0 2442EBB0 */ addiu $v0, $v0, %lo(gPartnerActionStatus)
/* 38FD4 8005DBD4 80430003 */ lb $v1, 3($v0)
/* 38FD8 8005DBD8 24020009 */ addiu $v0, $zero, 9
/* 38FDC 8005DBDC 10620056 */ beq $v1, $v0, .L8005DD38

View File

@ -1,45 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8005DD54
/* 39154 8005DD54 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 39158 8005DD58 AFB00010 */ sw $s0, 0x10($sp)
/* 3915C 8005DD5C 0080802D */ daddu $s0, $a0, $zero
/* 39160 8005DD60 AFBF0014 */ sw $ra, 0x14($sp)
/* 39164 8005DD64 C60C0084 */ lwc1 $f12, 0x84($s0)
/* 39168 8005DD68 0C00A6C9 */ jal clamp_angle
/* 3916C 8005DD6C 46806320 */ cvt.s.w $f12, $f12
/* 39170 8005DD70 3C014334 */ lui $at, 0x4334
/* 39174 8005DD74 44811000 */ mtc1 $at, $f2
/* 39178 8005DD78 4600018D */ trunc.w.s $f6, $f0
/* 3917C 8005DD7C E6060084 */ swc1 $f6, 0x84($s0)
/* 39180 8005DD80 4600103E */ c.le.s $f2, $f0
/* 39184 8005DD84 00000000 */ nop
/* 39188 8005DD88 45030001 */ bc1tl .L8005DD90
/* 3918C 8005DD8C 46020001 */ sub.s $f0, $f0, $f2
.L8005DD90:
/* 39190 8005DD90 3C0142B4 */ lui $at, 0x42b4
/* 39194 8005DD94 44812000 */ mtc1 $at, $f4
/* 39198 8005DD98 00000000 */ nop
/* 3919C 8005DD9C 4600203E */ c.le.s $f4, $f0
/* 391A0 8005DDA0 00000000 */ nop
/* 391A4 8005DDA4 45030001 */ bc1tl .L8005DDAC
/* 391A8 8005DDA8 46001001 */ sub.s $f0, $f2, $f0
.L8005DDAC:
/* 391AC 8005DDAC 46002001 */ sub.s $f0, $f4, $f0
/* 391B0 8005DDB0 3C0142BE */ lui $at, 0x42be
/* 391B4 8005DDB4 44811000 */ mtc1 $at, $f2
/* 391B8 8005DDB8 00000000 */ nop
/* 391BC 8005DDBC 46020002 */ mul.s $f0, $f0, $f2
/* 391C0 8005DDC0 00000000 */ nop
/* 391C4 8005DDC4 46040003 */ div.s $f0, $f0, $f4
/* 391C8 8005DDC8 4600018D */ trunc.w.s $f6, $f0
/* 391CC 8005DDCC 44023000 */ mfc1 $v0, $f6
/* 391D0 8005DDD0 00000000 */ nop
/* 391D4 8005DDD4 244200A0 */ addiu $v0, $v0, 0xa0
/* 391D8 8005DDD8 AE02008C */ sw $v0, 0x8c($s0)
/* 391DC 8005DDDC 8FBF0014 */ lw $ra, 0x14($sp)
/* 391E0 8005DDE0 8FB00010 */ lw $s0, 0x10($sp)
/* 391E4 8005DDE4 24020002 */ addiu $v0, $zero, 2
/* 391E8 8005DDE8 03E00008 */ jr $ra
/* 391EC 8005DDEC 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,33 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel get_collider_center
/* 37210 8005BE10 000410C0 */ sll $v0, $a0, 3
/* 37214 8005BE14 00441023 */ subu $v0, $v0, $a0
/* 37218 8005BE18 3C03800B */ lui $v1, %hi(gCollisionData+0x4)
/* 3721C 8005BE1C 8C6342E4 */ lw $v1, %lo(gCollisionData+0x4)($v1)
/* 37220 8005BE20 00021080 */ sll $v0, $v0, 2
/* 37224 8005BE24 00431021 */ addu $v0, $v0, $v1
/* 37228 8005BE28 8C420010 */ lw $v0, 0x10($v0)
/* 3722C 8005BE2C C4400000 */ lwc1 $f0, ($v0)
/* 37230 8005BE30 C442000C */ lwc1 $f2, 0xc($v0)
/* 37234 8005BE34 46020000 */ add.s $f0, $f0, $f2
/* 37238 8005BE38 3C013F00 */ lui $at, 0x3f00
/* 3723C 8005BE3C 44812000 */ mtc1 $at, $f4
/* 37240 8005BE40 00000000 */ nop
/* 37244 8005BE44 46040002 */ mul.s $f0, $f0, $f4
/* 37248 8005BE48 00000000 */ nop
/* 3724C 8005BE4C E4A00000 */ swc1 $f0, ($a1)
/* 37250 8005BE50 C4400004 */ lwc1 $f0, 4($v0)
/* 37254 8005BE54 C4420010 */ lwc1 $f2, 0x10($v0)
/* 37258 8005BE58 46020000 */ add.s $f0, $f0, $f2
/* 3725C 8005BE5C 46040002 */ mul.s $f0, $f0, $f4
/* 37260 8005BE60 00000000 */ nop
/* 37264 8005BE64 E4C00000 */ swc1 $f0, ($a2)
/* 37268 8005BE68 C4400008 */ lwc1 $f0, 8($v0)
/* 3726C 8005BE6C C4420014 */ lwc1 $f2, 0x14($v0)
/* 37270 8005BE70 46020000 */ add.s $f0, $f0, $f2
/* 37274 8005BE74 46040002 */ mul.s $f0, $f0, $f4
/* 37278 8005BE78 00000000 */ nop
/* 3727C 8005BE7C 03E00008 */ jr $ra
/* 37280 8005BE80 E4E00000 */ swc1 $f0, ($a3)

View File

@ -1,17 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel get_collider_type_by_id
/* 371A8 8005BDA8 30824000 */ andi $v0, $a0, 0x4000
/* 371AC 8005BDAC 14400008 */ bnez $v0, .L8005BDD0
/* 371B0 8005BDB0 000410C0 */ sll $v0, $a0, 3
/* 371B4 8005BDB4 00441023 */ subu $v0, $v0, $a0
/* 371B8 8005BDB8 3C03800B */ lui $v1, %hi(gCollisionData+0x4)
/* 371BC 8005BDBC 8C6342E4 */ lw $v1, %lo(gCollisionData+0x4)($v1)
/* 371C0 8005BDC0 00021080 */ sll $v0, $v0, 2
/* 371C4 8005BDC4 00431021 */ addu $v0, $v0, $v1
/* 371C8 8005BDC8 03E00008 */ jr $ra
/* 371CC 8005BDCC 8C420000 */ lw $v0, ($v0)
.L8005BDD0:
/* 371D0 8005BDD0 03E00008 */ jr $ra
/* 371D4 8005BDD4 0000102D */ daddu $v0, $zero, $zero

View File

@ -1,18 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel get_flat_collider_normal
/* 371D8 8005BDD8 000410C0 */ sll $v0, $a0, 3
/* 371DC 8005BDDC 00441023 */ subu $v0, $v0, $a0
/* 371E0 8005BDE0 3C03800B */ lui $v1, %hi(gCollisionData+0x4)
/* 371E4 8005BDE4 8C6342E4 */ lw $v1, %lo(gCollisionData+0x4)($v1)
/* 371E8 8005BDE8 00021080 */ sll $v0, $v0, 2
/* 371EC 8005BDEC 00431021 */ addu $v0, $v0, $v1
/* 371F0 8005BDF0 8C42000C */ lw $v0, 0xc($v0)
/* 371F4 8005BDF4 C4400030 */ lwc1 $f0, 0x30($v0)
/* 371F8 8005BDF8 E4A00000 */ swc1 $f0, ($a1)
/* 371FC 8005BDFC C4400034 */ lwc1 $f0, 0x34($v0)
/* 37200 8005BE00 E4C00000 */ swc1 $f0, ($a2)
/* 37204 8005BE04 C4400038 */ lwc1 $f0, 0x38($v0)
/* 37208 8005BE08 03E00008 */ jr $ra
/* 3720C 8005BE0C E4E00000 */ swc1 $f0, ($a3)

View File

@ -1,46 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_test_move_simple_with_slipping
/* 770F4 800DDC44 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 770F8 800DDC48 AFB10034 */ sw $s1, 0x34($sp)
/* 770FC 800DDC4C 00A0882D */ daddu $s1, $a1, $zero
/* 77100 800DDC50 AFBF0038 */ sw $ra, 0x38($sp)
/* 77104 800DDC54 AFB00030 */ sw $s0, 0x30($sp)
/* 77108 800DDC58 C6200000 */ lwc1 $f0, ($s1)
/* 7710C 800DDC5C C7A40050 */ lwc1 $f4, 0x50($sp)
/* 77110 800DDC60 C7A80054 */ lwc1 $f8, 0x54($sp)
/* 77114 800DDC64 C7A6005C */ lwc1 $f6, 0x5c($sp)
/* 77118 800DDC68 3C014120 */ lui $at, 0x4120
/* 7711C 800DDC6C 342128F6 */ ori $at, $at, 0x28f6
/* 77120 800DDC70 44811000 */ mtc1 $at, $f2
/* 77124 800DDC74 E7A00020 */ swc1 $f0, 0x20($sp)
/* 77128 800DDC78 C4C00000 */ lwc1 $f0, ($a2)
/* 7712C 800DDC7C 00E0802D */ daddu $s0, $a3, $zero
/* 77130 800DDC80 46020000 */ add.s $f0, $f0, $f2
/* 77134 800DDC84 3C013F00 */ lui $at, 0x3f00
/* 77138 800DDC88 44811000 */ mtc1 $at, $f2
/* 7713C 800DDC8C 27A50020 */ addiu $a1, $sp, 0x20
/* 77140 800DDC90 46023182 */ mul.s $f6, $f6, $f2
/* 77144 800DDC94 00000000 */ nop
/* 77148 800DDC98 27A70028 */ addiu $a3, $sp, 0x28
/* 7714C 800DDC9C 27A60024 */ addiu $a2, $sp, 0x24
/* 77150 800DDCA0 E7A00024 */ swc1 $f0, 0x24($sp)
/* 77154 800DDCA4 C6000000 */ lwc1 $f0, ($s0)
/* 77158 800DDCA8 46002105 */ abs.s $f4, $f4
/* 7715C 800DDCAC E7A00028 */ swc1 $f0, 0x28($sp)
/* 77160 800DDCB0 E7A40010 */ swc1 $f4, 0x10($sp)
/* 77164 800DDCB4 E7A80014 */ swc1 $f8, 0x14($sp)
/* 77168 800DDCB8 0C037586 */ jal npc_test_move_with_slipping
/* 7716C 800DDCBC E7A60018 */ swc1 $f6, 0x18($sp)
/* 77170 800DDCC0 C7A00020 */ lwc1 $f0, 0x20($sp)
/* 77174 800DDCC4 E6200000 */ swc1 $f0, ($s1)
/* 77178 800DDCC8 C7A00028 */ lwc1 $f0, 0x28($sp)
/* 7717C 800DDCCC 00021027 */ nor $v0, $zero, $v0
/* 77180 800DDCD0 E6000000 */ swc1 $f0, ($s0)
/* 77184 800DDCD4 8FBF0038 */ lw $ra, 0x38($sp)
/* 77188 800DDCD8 8FB10034 */ lw $s1, 0x34($sp)
/* 7718C 800DDCDC 8FB00030 */ lw $s0, 0x30($sp)
/* 77190 800DDCE0 000217C2 */ srl $v0, $v0, 0x1f
/* 77194 800DDCE4 03E00008 */ jr $ra
/* 77198 800DDCE8 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,46 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_test_move_simple_without_slipping
/* 7719C 800DDCEC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 771A0 800DDCF0 AFB10034 */ sw $s1, 0x34($sp)
/* 771A4 800DDCF4 00A0882D */ daddu $s1, $a1, $zero
/* 771A8 800DDCF8 AFBF0038 */ sw $ra, 0x38($sp)
/* 771AC 800DDCFC AFB00030 */ sw $s0, 0x30($sp)
/* 771B0 800DDD00 C6200000 */ lwc1 $f0, ($s1)
/* 771B4 800DDD04 C7A40050 */ lwc1 $f4, 0x50($sp)
/* 771B8 800DDD08 C7A80054 */ lwc1 $f8, 0x54($sp)
/* 771BC 800DDD0C C7A6005C */ lwc1 $f6, 0x5c($sp)
/* 771C0 800DDD10 3C014120 */ lui $at, 0x4120
/* 771C4 800DDD14 342128F6 */ ori $at, $at, 0x28f6
/* 771C8 800DDD18 44811000 */ mtc1 $at, $f2
/* 771CC 800DDD1C E7A00020 */ swc1 $f0, 0x20($sp)
/* 771D0 800DDD20 C4C00000 */ lwc1 $f0, ($a2)
/* 771D4 800DDD24 00E0802D */ daddu $s0, $a3, $zero
/* 771D8 800DDD28 46020000 */ add.s $f0, $f0, $f2
/* 771DC 800DDD2C 3C013F00 */ lui $at, 0x3f00
/* 771E0 800DDD30 44811000 */ mtc1 $at, $f2
/* 771E4 800DDD34 27A50020 */ addiu $a1, $sp, 0x20
/* 771E8 800DDD38 46023182 */ mul.s $f6, $f6, $f2
/* 771EC 800DDD3C 00000000 */ nop
/* 771F0 800DDD40 27A70028 */ addiu $a3, $sp, 0x28
/* 771F4 800DDD44 27A60024 */ addiu $a2, $sp, 0x24
/* 771F8 800DDD48 E7A00024 */ swc1 $f0, 0x24($sp)
/* 771FC 800DDD4C C6000000 */ lwc1 $f0, ($s0)
/* 77200 800DDD50 46002105 */ abs.s $f4, $f4
/* 77204 800DDD54 E7A00028 */ swc1 $f0, 0x28($sp)
/* 77208 800DDD58 E7A40010 */ swc1 $f4, 0x10($sp)
/* 7720C 800DDD5C E7A80014 */ swc1 $f8, 0x14($sp)
/* 77210 800DDD60 0C03763F */ jal npc_test_move_without_slipping
/* 77214 800DDD64 E7A60018 */ swc1 $f6, 0x18($sp)
/* 77218 800DDD68 C7A00020 */ lwc1 $f0, 0x20($sp)
/* 7721C 800DDD6C E6200000 */ swc1 $f0, ($s1)
/* 77220 800DDD70 C7A00028 */ lwc1 $f0, 0x28($sp)
/* 77224 800DDD74 00021027 */ nor $v0, $zero, $v0
/* 77228 800DDD78 E6000000 */ swc1 $f0, ($s0)
/* 7722C 800DDD7C 8FBF0038 */ lw $ra, 0x38($sp)
/* 77230 800DDD80 8FB10034 */ lw $s1, 0x34($sp)
/* 77234 800DDD84 8FB00030 */ lw $s0, 0x30($sp)
/* 77238 800DDD88 000217C2 */ srl $v0, $v0, 0x1f
/* 7723C 800DDD8C 03E00008 */ jr $ra
/* 77240 800DDD90 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,94 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_test_move_taller_with_slipping
/* 76F94 800DDAE4 27BDFF98 */ addiu $sp, $sp, -0x68
/* 76F98 800DDAE8 F7B40050 */ sdc1 $f20, 0x50($sp)
/* 76F9C 800DDAEC C7B40084 */ lwc1 $f20, 0x84($sp)
/* 76FA0 800DDAF0 C7A40078 */ lwc1 $f4, 0x78($sp)
/* 76FA4 800DDAF4 AFB60048 */ sw $s6, 0x48($sp)
/* 76FA8 800DDAF8 0080B02D */ daddu $s6, $a0, $zero
/* 76FAC 800DDAFC AFB3003C */ sw $s3, 0x3c($sp)
/* 76FB0 800DDB00 00A0982D */ daddu $s3, $a1, $zero
/* 76FB4 800DDB04 AFB50044 */ sw $s5, 0x44($sp)
/* 76FB8 800DDB08 00C0A82D */ daddu $s5, $a2, $zero
/* 76FBC 800DDB0C AFB40040 */ sw $s4, 0x40($sp)
/* 76FC0 800DDB10 00E0A02D */ daddu $s4, $a3, $zero
/* 76FC4 800DDB14 F7B80060 */ sdc1 $f24, 0x60($sp)
/* 76FC8 800DDB18 C7B8007C */ lwc1 $f24, 0x7c($sp)
/* 76FCC 800DDB1C C7A20080 */ lwc1 $f2, 0x80($sp)
/* 76FD0 800DDB20 AFBF004C */ sw $ra, 0x4c($sp)
/* 76FD4 800DDB24 AFB20038 */ sw $s2, 0x38($sp)
/* 76FD8 800DDB28 AFB10034 */ sw $s1, 0x34($sp)
/* 76FDC 800DDB2C AFB00030 */ sw $s0, 0x30($sp)
/* 76FE0 800DDB30 F7B60058 */ sdc1 $f22, 0x58($sp)
/* 76FE4 800DDB34 C6600000 */ lwc1 $f0, ($s3)
/* 76FE8 800DDB38 27B20020 */ addiu $s2, $sp, 0x20
/* 76FEC 800DDB3C E7A00020 */ swc1 $f0, 0x20($sp)
/* 76FF0 800DDB40 C6A00000 */ lwc1 $f0, ($s5)
/* 76FF4 800DDB44 0240282D */ daddu $a1, $s2, $zero
/* 76FF8 800DDB48 46020000 */ add.s $f0, $f0, $f2
/* 76FFC 800DDB4C 3C013F80 */ lui $at, 0x3f80
/* 77000 800DDB50 44811000 */ mtc1 $at, $f2
/* 77004 800DDB54 27B10024 */ addiu $s1, $sp, 0x24
/* 77008 800DDB58 46020001 */ sub.s $f0, $f0, $f2
/* 7700C 800DDB5C 3C013F00 */ lui $at, 0x3f00
/* 77010 800DDB60 44811000 */ mtc1 $at, $f2
/* 77014 800DDB64 0220302D */ daddu $a2, $s1, $zero
/* 77018 800DDB68 4602A502 */ mul.s $f20, $f20, $f2
/* 7701C 800DDB6C 00000000 */ nop
/* 77020 800DDB70 27B00028 */ addiu $s0, $sp, 0x28
/* 77024 800DDB74 0200382D */ daddu $a3, $s0, $zero
/* 77028 800DDB78 E7A00024 */ swc1 $f0, 0x24($sp)
/* 7702C 800DDB7C C6800000 */ lwc1 $f0, ($s4)
/* 77030 800DDB80 46002585 */ abs.s $f22, $f4
/* 77034 800DDB84 E7A00028 */ swc1 $f0, 0x28($sp)
/* 77038 800DDB88 E7B60010 */ swc1 $f22, 0x10($sp)
/* 7703C 800DDB8C E7B80014 */ swc1 $f24, 0x14($sp)
/* 77040 800DDB90 0C037586 */ jal npc_test_move_with_slipping
/* 77044 800DDB94 E7B40018 */ swc1 $f20, 0x18($sp)
/* 77048 800DDB98 04430019 */ bgezl $v0, .L800DDC00
/* 7704C 800DDB9C 24020001 */ addiu $v0, $zero, 1
/* 77050 800DDBA0 C6600000 */ lwc1 $f0, ($s3)
/* 77054 800DDBA4 3C014120 */ lui $at, 0x4120
/* 77058 800DDBA8 342128F6 */ ori $at, $at, 0x28f6
/* 7705C 800DDBAC 44811000 */ mtc1 $at, $f2
/* 77060 800DDBB0 E7A00020 */ swc1 $f0, 0x20($sp)
/* 77064 800DDBB4 C6A00000 */ lwc1 $f0, ($s5)
/* 77068 800DDBB8 02C0202D */ daddu $a0, $s6, $zero
/* 7706C 800DDBBC 46020000 */ add.s $f0, $f0, $f2
/* 77070 800DDBC0 0240282D */ daddu $a1, $s2, $zero
/* 77074 800DDBC4 0220302D */ daddu $a2, $s1, $zero
/* 77078 800DDBC8 E7A00024 */ swc1 $f0, 0x24($sp)
/* 7707C 800DDBCC C6800000 */ lwc1 $f0, ($s4)
/* 77080 800DDBD0 0200382D */ daddu $a3, $s0, $zero
/* 77084 800DDBD4 E7A00028 */ swc1 $f0, 0x28($sp)
/* 77088 800DDBD8 E7B60010 */ swc1 $f22, 0x10($sp)
/* 7708C 800DDBDC E7B80014 */ swc1 $f24, 0x14($sp)
/* 77090 800DDBE0 0C037586 */ jal npc_test_move_with_slipping
/* 77094 800DDBE4 E7B40018 */ swc1 $f20, 0x18($sp)
/* 77098 800DDBE8 C7A00020 */ lwc1 $f0, 0x20($sp)
/* 7709C 800DDBEC 00021027 */ nor $v0, $zero, $v0
/* 770A0 800DDBF0 E6600000 */ swc1 $f0, ($s3)
/* 770A4 800DDBF4 C7A00028 */ lwc1 $f0, 0x28($sp)
/* 770A8 800DDBF8 08037703 */ j .L800DDC0C
/* 770AC 800DDBFC 000217C2 */ srl $v0, $v0, 0x1f
.L800DDC00:
/* 770B0 800DDC00 C7A00020 */ lwc1 $f0, 0x20($sp)
/* 770B4 800DDC04 E6600000 */ swc1 $f0, ($s3)
/* 770B8 800DDC08 C7A00028 */ lwc1 $f0, 0x28($sp)
.L800DDC0C:
/* 770BC 800DDC0C E6800000 */ swc1 $f0, ($s4)
/* 770C0 800DDC10 8FBF004C */ lw $ra, 0x4c($sp)
/* 770C4 800DDC14 8FB60048 */ lw $s6, 0x48($sp)
/* 770C8 800DDC18 8FB50044 */ lw $s5, 0x44($sp)
/* 770CC 800DDC1C 8FB40040 */ lw $s4, 0x40($sp)
/* 770D0 800DDC20 8FB3003C */ lw $s3, 0x3c($sp)
/* 770D4 800DDC24 8FB20038 */ lw $s2, 0x38($sp)
/* 770D8 800DDC28 8FB10034 */ lw $s1, 0x34($sp)
/* 770DC 800DDC2C 8FB00030 */ lw $s0, 0x30($sp)
/* 770E0 800DDC30 D7B80060 */ ldc1 $f24, 0x60($sp)
/* 770E4 800DDC34 D7B60058 */ ldc1 $f22, 0x58($sp)
/* 770E8 800DDC38 D7B40050 */ ldc1 $f20, 0x50($sp)
/* 770EC 800DDC3C 03E00008 */ jr $ra
/* 770F0 800DDC40 27BD0068 */ addiu $sp, $sp, 0x68

View File

@ -1,127 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel npc_test_move_without_slipping
/* 76DAC 800DD8FC 27BDFF68 */ addiu $sp, $sp, -0x98
/* 76DB0 800DD900 C7AC00AC */ lwc1 $f12, 0xac($sp)
/* 76DB4 800DD904 3C0140C9 */ lui $at, 0x40c9
/* 76DB8 800DD908 34210FD0 */ ori $at, $at, 0xfd0
/* 76DBC 800DD90C 44810000 */ mtc1 $at, $f0
/* 76DC0 800DD910 AFB10064 */ sw $s1, 0x64($sp)
/* 76DC4 800DD914 0080882D */ daddu $s1, $a0, $zero
/* 76DC8 800DD918 AFB3006C */ sw $s3, 0x6c($sp)
/* 76DCC 800DD91C 00A0982D */ daddu $s3, $a1, $zero
/* 76DD0 800DD920 AFB00060 */ sw $s0, 0x60($sp)
/* 76DD4 800DD924 00C0802D */ daddu $s0, $a2, $zero
/* 76DD8 800DD928 AFB40070 */ sw $s4, 0x70($sp)
/* 76DDC 800DD92C 00E0A02D */ daddu $s4, $a3, $zero
/* 76DE0 800DD930 F7B60080 */ sdc1 $f22, 0x80($sp)
/* 76DE4 800DD934 C7B600A8 */ lwc1 $f22, 0xa8($sp)
/* 76DE8 800DD938 27A50038 */ addiu $a1, $sp, 0x38
/* 76DEC 800DD93C F7B40078 */ sdc1 $f20, 0x78($sp)
/* 76DF0 800DD940 C7B400B0 */ lwc1 $f20, 0xb0($sp)
/* 76DF4 800DD944 46006302 */ mul.s $f12, $f12, $f0
/* 76DF8 800DD948 00000000 */ nop
/* 76DFC 800DD94C 3C0143B4 */ lui $at, 0x43b4
/* 76E00 800DD950 44810000 */ mtc1 $at, $f0
/* 76E04 800DD954 27A6003C */ addiu $a2, $sp, 0x3c
/* 76E08 800DD958 AFBF0074 */ sw $ra, 0x74($sp)
/* 76E0C 800DD95C AFB20068 */ sw $s2, 0x68($sp)
/* 76E10 800DD960 F7BA0090 */ sdc1 $f26, 0x90($sp)
/* 76E14 800DD964 F7B80088 */ sdc1 $f24, 0x88($sp)
/* 76E18 800DD968 0C00A82D */ jal sin_cos_rad
/* 76E1C 800DD96C 46006303 */ div.s $f12, $f12, $f0
/* 76E20 800DD970 3C013F00 */ lui $at, 0x3f00
/* 76E24 800DD974 44813000 */ mtc1 $at, $f6
/* 76E28 800DD978 00000000 */ nop
/* 76E2C 800DD97C 4606A082 */ mul.s $f2, $f20, $f6
/* 76E30 800DD980 00000000 */ nop
/* 76E34 800DD984 4614B000 */ add.s $f0, $f22, $f20
/* 76E38 800DD988 46020600 */ add.s $f24, $f0, $f2
/* 76E3C 800DD98C C7A00038 */ lwc1 $f0, 0x38($sp)
/* 76E40 800DD990 4600B682 */ mul.s $f26, $f22, $f0
/* 76E44 800DD994 00000000 */ nop
/* 76E48 800DD998 2412FFFF */ addiu $s2, $zero, -1
/* 76E4C 800DD99C 27A20040 */ addiu $v0, $sp, 0x40
/* 76E50 800DD9A0 C7A2003C */ lwc1 $f2, 0x3c($sp)
/* 76E54 800DD9A4 46001087 */ neg.s $f2, $f2
/* 76E58 800DD9A8 4600A102 */ mul.s $f4, $f20, $f0
/* 76E5C 800DD9AC 00000000 */ nop
/* 76E60 800DD9B0 E7A2003C */ swc1 $f2, 0x3c($sp)
/* 76E64 800DD9B4 E7B8004C */ swc1 $f24, 0x4c($sp)
/* 76E68 800DD9B8 C6680000 */ lwc1 $f8, ($s3)
/* 76E6C 800DD9BC C68A0000 */ lwc1 $f10, ($s4)
/* 76E70 800DD9C0 4602A502 */ mul.s $f20, $f20, $f2
/* 76E74 800DD9C4 00000000 */ nop
/* 76E78 800DD9C8 AFA2001C */ sw $v0, 0x1c($sp)
/* 76E7C 800DD9CC 27A20044 */ addiu $v0, $sp, 0x44
/* 76E80 800DD9D0 AFA20020 */ sw $v0, 0x20($sp)
/* 76E84 800DD9D4 27A20048 */ addiu $v0, $sp, 0x48
/* 76E88 800DD9D8 AFA20024 */ sw $v0, 0x24($sp)
/* 76E8C 800DD9DC 27A2004C */ addiu $v0, $sp, 0x4c
/* 76E90 800DD9E0 46062102 */ mul.s $f4, $f4, $f6
/* 76E94 800DD9E4 00000000 */ nop
/* 76E98 800DD9E8 AFA20028 */ sw $v0, 0x28($sp)
/* 76E9C 800DD9EC 27A20050 */ addiu $v0, $sp, 0x50
/* 76EA0 800DD9F0 AFA2002C */ sw $v0, 0x2c($sp)
/* 76EA4 800DD9F4 27A20054 */ addiu $v0, $sp, 0x54
/* 76EA8 800DD9F8 4606A502 */ mul.s $f20, $f20, $f6
/* 76EAC 800DD9FC 00000000 */ nop
/* 76EB0 800DDA00 AFA20030 */ sw $v0, 0x30($sp)
/* 76EB4 800DDA04 27A20058 */ addiu $v0, $sp, 0x58
/* 76EB8 800DDA08 E7A00010 */ swc1 $f0, 0x10($sp)
/* 76EBC 800DDA0C AFA00014 */ sw $zero, 0x14($sp)
/* 76EC0 800DDA10 46044201 */ sub.s $f8, $f8, $f4
/* 76EC4 800DDA14 E7A20018 */ swc1 $f2, 0x18($sp)
/* 76EC8 800DDA18 AFA20034 */ sw $v0, 0x34($sp)
/* 76ECC 800DDA1C 46145281 */ sub.s $f10, $f10, $f20
/* 76ED0 800DDA20 8E060000 */ lw $a2, ($s0)
/* 76ED4 800DDA24 44054000 */ mfc1 $a1, $f8
/* 76ED8 800DDA28 44075000 */ mfc1 $a3, $f10
/* 76EDC 800DDA2C 4602B582 */ mul.s $f22, $f22, $f2
/* 76EE0 800DDA30 00000000 */ nop
/* 76EE4 800DDA34 0C037513 */ jal npc_raycast_general
/* 76EE8 800DDA38 0220202D */ daddu $a0, $s1, $zero
/* 76EEC 800DDA3C 04400016 */ bltz $v0, .L800DDA98
/* 76EF0 800DDA40 00000000 */ nop
/* 76EF4 800DDA44 C7A4004C */ lwc1 $f4, 0x4c($sp)
/* 76EF8 800DDA48 4618203E */ c.le.s $f4, $f24
/* 76EFC 800DDA4C 00000000 */ nop
/* 76F00 800DDA50 45000011 */ bc1f .L800DDA98
/* 76F04 800DDA54 00000000 */ nop
/* 76F08 800DDA58 46182101 */ sub.s $f4, $f4, $f24
/* 76F0C 800DDA5C C7A00038 */ lwc1 $f0, 0x38($sp)
/* 76F10 800DDA60 46002002 */ mul.s $f0, $f4, $f0
/* 76F14 800DDA64 00000000 */ nop
/* 76F18 800DDA68 C6620000 */ lwc1 $f2, ($s3)
/* 76F1C 800DDA6C 46001080 */ add.s $f2, $f2, $f0
/* 76F20 800DDA70 C7A0003C */ lwc1 $f0, 0x3c($sp)
/* 76F24 800DDA74 46002102 */ mul.s $f4, $f4, $f0
/* 76F28 800DDA78 00000000 */ nop
/* 76F2C 800DDA7C E6620000 */ swc1 $f2, ($s3)
/* 76F30 800DDA80 C6800000 */ lwc1 $f0, ($s4)
/* 76F34 800DDA84 46040000 */ add.s $f0, $f0, $f4
/* 76F38 800DDA88 0040902D */ daddu $s2, $v0, $zero
/* 76F3C 800DDA8C E6800000 */ swc1 $f0, ($s4)
/* 76F40 800DDA90 3C018011 */ lui $at, %hi(D_8010C978)
/* 76F44 800DDA94 AC32C978 */ sw $s2, %lo(D_8010C978)($at)
.L800DDA98:
/* 76F48 800DDA98 C6600000 */ lwc1 $f0, ($s3)
/* 76F4C 800DDA9C 461A0000 */ add.s $f0, $f0, $f26
/* 76F50 800DDAA0 E6600000 */ swc1 $f0, ($s3)
/* 76F54 800DDAA4 C6800000 */ lwc1 $f0, ($s4)
/* 76F58 800DDAA8 46160000 */ add.s $f0, $f0, $f22
/* 76F5C 800DDAAC 0240102D */ daddu $v0, $s2, $zero
/* 76F60 800DDAB0 E6800000 */ swc1 $f0, ($s4)
/* 76F64 800DDAB4 8FBF0074 */ lw $ra, 0x74($sp)
/* 76F68 800DDAB8 8FB40070 */ lw $s4, 0x70($sp)
/* 76F6C 800DDABC 8FB3006C */ lw $s3, 0x6c($sp)
/* 76F70 800DDAC0 8FB20068 */ lw $s2, 0x68($sp)
/* 76F74 800DDAC4 8FB10064 */ lw $s1, 0x64($sp)
/* 76F78 800DDAC8 8FB00060 */ lw $s0, 0x60($sp)
/* 76F7C 800DDACC D7BA0090 */ ldc1 $f26, 0x90($sp)
/* 76F80 800DDAD0 D7B80088 */ ldc1 $f24, 0x88($sp)
/* 76F84 800DDAD4 D7B60080 */ ldc1 $f22, 0x80($sp)
/* 76F88 800DDAD8 D7B40078 */ ldc1 $f20, 0x78($sp)
/* 76F8C 800DDADC 03E00008 */ jr $ra
/* 76F90 800DDAE0 27BD0098 */ addiu $sp, $sp, 0x98

View File

@ -7,8 +7,8 @@ glabel get_overriding_player_anim
/* 79200 800DFD50 0080802D */ daddu $s0, $a0, $zero
/* 79204 800DFD54 3C058011 */ lui $a1, %hi(gPlayerStatus)
/* 79208 800DFD58 24A5EFC8 */ addiu $a1, $a1, %lo(gPlayerStatus)
/* 7920C 800DFD5C 3C048011 */ lui $a0, %hi(D_8010EBB0)
/* 79210 800DFD60 2484EBB0 */ addiu $a0, $a0, %lo(D_8010EBB0)
/* 7920C 800DFD5C 3C048011 */ lui $a0, %hi(gPartnerActionStatus)
/* 79210 800DFD60 2484EBB0 */ addiu $a0, $a0, %lo(gPartnerActionStatus)
/* 79214 800DFD64 AFBF0014 */ sw $ra, 0x14($sp)
/* 79218 800DFD68 80A300B4 */ lb $v1, 0xb4($a1)
/* 7921C 800DFD6C 2402001D */ addiu $v0, $zero, 0x1d

View File

@ -4,8 +4,8 @@
glabel update_player_blink
/* 7947C 800DFFCC 3C058011 */ lui $a1, %hi(gPlayerStatus)
/* 79480 800DFFD0 24A5EFC8 */ addiu $a1, $a1, %lo(gPlayerStatus)
/* 79484 800DFFD4 3C048011 */ lui $a0, %hi(D_8010EBB0)
/* 79488 800DFFD8 2484EBB0 */ addiu $a0, $a0, %lo(D_8010EBB0)
/* 79484 800DFFD4 3C048011 */ lui $a0, %hi(gPartnerActionStatus)
/* 79488 800DFFD8 2484EBB0 */ addiu $a0, $a0, %lo(gPartnerActionStatus)
/* 7948C 800DFFDC 80830003 */ lb $v1, 3($a0)
/* 79490 800DFFE0 24020009 */ addiu $v0, $zero, 9
/* 79494 800DFFE4 14620003 */ bne $v1, $v0, .L800DFFF4

View File

@ -14,8 +14,8 @@ glabel func_800E315C
/* 7C614 800E3164 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* 7C618 800E3168 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* 7C61C 800E316C AFB10014 */ sw $s1, 0x14($sp)
/* 7C620 800E3170 3C118011 */ lui $s1, %hi(D_8010EBB0)
/* 7C624 800E3174 2631EBB0 */ addiu $s1, $s1, %lo(D_8010EBB0)
/* 7C620 800E3170 3C118011 */ lui $s1, %hi(gPartnerActionStatus)
/* 7C624 800E3174 2631EBB0 */ addiu $s1, $s1, %lo(gPartnerActionStatus)
/* 7C628 800E3178 0480003A */ bltz $a0, .L800E3264
/* 7C62C 800E317C AFBF0018 */ sw $ra, 0x18($sp)
/* 7C630 800E3180 0C016F6A */ jal get_collider_type_by_id

View File

@ -1,42 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel gravity_use_fall_parms
/* 7C51C 800E306C 3C04800F */ lui $a0, %hi(D_800F7B60)
/* 7C520 800E3070 24847B60 */ addiu $a0, $a0, %lo(D_800F7B60)
/* 7C524 800E3074 3C068011 */ lui $a2, %hi(gPlayerStatus)
/* 7C528 800E3078 24C6EFC8 */ addiu $a2, $a2, %lo(gPlayerStatus)
/* 7C52C 800E307C 8CC20000 */ lw $v0, ($a2)
/* 7C530 800E3080 3C030004 */ lui $v1, 4
/* 7C534 800E3084 00431024 */ and $v0, $v0, $v1
/* 7C538 800E3088 10400012 */ beqz $v0, .L800E30D4
/* 7C53C 800E308C 00C0282D */ daddu $a1, $a2, $zero
/* 7C540 800E3090 C4800000 */ lwc1 $f0, ($a0)
/* 7C544 800E3094 3C014140 */ lui $at, 0x4140
/* 7C548 800E3098 44811000 */ mtc1 $at, $f2
/* 7C54C 800E309C 24840004 */ addiu $a0, $a0, 4
/* 7C550 800E30A0 46020003 */ div.s $f0, $f0, $f2
/* 7C554 800E30A4 E4C00070 */ swc1 $f0, 0x70($a2)
/* 7C558 800E30A8 C4800000 */ lwc1 $f0, ($a0)
/* 7C55C 800E30AC 24840004 */ addiu $a0, $a0, 4
/* 7C560 800E30B0 46020003 */ div.s $f0, $f0, $f2
/* 7C564 800E30B4 E4C00074 */ swc1 $f0, 0x74($a2)
/* 7C568 800E30B8 C4800000 */ lwc1 $f0, ($a0)
/* 7C56C 800E30BC 46020003 */ div.s $f0, $f0, $f2
/* 7C570 800E30C0 E4C00078 */ swc1 $f0, 0x78($a2)
/* 7C574 800E30C4 C4800004 */ lwc1 $f0, 4($a0)
/* 7C578 800E30C8 46020003 */ div.s $f0, $f0, $f2
/* 7C57C 800E30CC 03E00008 */ jr $ra
/* 7C580 800E30D0 E4C0007C */ swc1 $f0, 0x7c($a2)
.L800E30D4:
/* 7C584 800E30D4 C4800000 */ lwc1 $f0, ($a0)
/* 7C588 800E30D8 24840004 */ addiu $a0, $a0, 4
/* 7C58C 800E30DC E4A00070 */ swc1 $f0, 0x70($a1)
/* 7C590 800E30E0 C4800000 */ lwc1 $f0, ($a0)
/* 7C594 800E30E4 24840004 */ addiu $a0, $a0, 4
/* 7C598 800E30E8 E4A00074 */ swc1 $f0, 0x74($a1)
/* 7C59C 800E30EC C4800000 */ lwc1 $f0, ($a0)
/* 7C5A0 800E30F0 E4A00078 */ swc1 $f0, 0x78($a1)
/* 7C5A4 800E30F4 C4800004 */ lwc1 $f0, 4($a0)
/* 7C5A8 800E30F8 03E00008 */ jr $ra
/* 7C5AC 800E30FC E4A0007C */ swc1 $f0, 0x7c($a1)

View File

@ -12,8 +12,8 @@ glabel phys_adjust_cam_on_landing
/* 7E9E0 800E5530 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7E9E4 800E5534 AFB00010 */ sw $s0, 0x10($sp)
/* 7E9E8 800E5538 AFB10014 */ sw $s1, 0x14($sp)
/* 7E9EC 800E553C 3C118011 */ lui $s1, %hi(D_8010EBB0)
/* 7E9F0 800E5540 2631EBB0 */ addiu $s1, $s1, %lo(D_8010EBB0)
/* 7E9EC 800E553C 3C118011 */ lui $s1, %hi(gPartnerActionStatus)
/* 7E9F0 800E5540 2631EBB0 */ addiu $s1, $s1, %lo(gPartnerActionStatus)
/* 7E9F4 800E5544 3C038007 */ lui $v1, %hi(gGameStatusPtr)
/* 7E9F8 800E5548 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 7E9FC 800E554C 3C058011 */ lui $a1, %hi(gPlayerStatus)

View File

@ -1,26 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel phys_can_player_interact
/* 7E7A8 800E52F8 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 7E7AC 800E52FC 2442EBB0 */ addiu $v0, $v0, %lo(D_8010EBB0)
/* 7E7B0 800E5300 80440000 */ lb $a0, ($v0)
/* 7E7B4 800E5304 10800008 */ beqz $a0, .L800E5328
/* 7E7B8 800E5308 24030001 */ addiu $v1, $zero, 1
/* 7E7BC 800E530C 80430003 */ lb $v1, 3($v0)
/* 7E7C0 800E5310 24020003 */ addiu $v0, $zero, 3
/* 7E7C4 800E5314 1462000A */ bne $v1, $v0, .L800E5340
/* 7E7C8 800E5318 0000182D */ daddu $v1, $zero, $zero
/* 7E7CC 800E531C 0082102A */ slt $v0, $a0, $v0
/* 7E7D0 800E5320 080394D0 */ j .L800E5340
/* 7E7D4 800E5324 38430001 */ xori $v1, $v0, 1
.L800E5328:
/* 7E7D8 800E5328 3C028011 */ lui $v0, %hi(gPlayerStatus)
/* 7E7DC 800E532C 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus)
/* 7E7E0 800E5330 904200B4 */ lbu $v0, 0xb4($v0)
/* 7E7E4 800E5334 2C420003 */ sltiu $v0, $v0, 3
/* 7E7E8 800E5338 50400001 */ beql $v0, $zero, .L800E5340
/* 7E7EC 800E533C 0000182D */ daddu $v1, $zero, $zero
.L800E5340:
/* 7E7F0 800E5340 03E00008 */ jr $ra
/* 7E7F4 800E5344 0060102D */ daddu $v0, $v1, $zero

View File

@ -1,23 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel phys_clear_spin_history
/* 7EDA0 800E58F0 3C018011 */ lui $at, %hi(D_8010C944)
/* 7EDA4 800E58F4 AC20C944 */ sw $zero, %lo(D_8010C944)($at)
/* 7EDA8 800E58F8 0000282D */ daddu $a1, $zero, $zero
/* 7EDAC 800E58FC 240700B4 */ addiu $a3, $zero, 0xb4
/* 7EDB0 800E5900 3C068000 */ lui $a2, 0x8000
/* 7EDB4 800E5904 3C048011 */ lui $a0, %hi(D_8010EF10)
/* 7EDB8 800E5908 2484EF10 */ addiu $a0, $a0, %lo(D_8010EF10)
/* 7EDBC 800E590C 3C038011 */ lui $v1, %hi(D_8010F6B8)
/* 7EDC0 800E5910 2463F6B8 */ addiu $v1, $v1, %lo(D_8010F6B8)
.L800E5914:
/* 7EDC4 800E5914 A4670000 */ sh $a3, ($v1)
/* 7EDC8 800E5918 AC860000 */ sw $a2, ($a0)
/* 7EDCC 800E591C 24840004 */ addiu $a0, $a0, 4
/* 7EDD0 800E5920 24A50001 */ addiu $a1, $a1, 1
/* 7EDD4 800E5924 28A20005 */ slti $v0, $a1, 5
/* 7EDD8 800E5928 1440FFFA */ bnez $v0, .L800E5914
/* 7EDDC 800E592C 24630002 */ addiu $v1, $v1, 2
/* 7EDE0 800E5930 03E00008 */ jr $ra
/* 7EDE4 800E5934 00000000 */ nop

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel phys_get_spin_history
/* 7EDE8 800E5938 3C088011 */ lui $t0, %hi(D_8010C944)
/* 7EDEC 800E593C 8D08C944 */ lw $t0, %lo(D_8010C944)($t0)
/* 7EDF0 800E5940 01044023 */ subu $t0, $t0, $a0
/* 7EDF4 800E5944 05020001 */ bltzl $t0, .L800E594C
/* 7EDF8 800E5948 25080005 */ addiu $t0, $t0, 5
.L800E594C:
/* 7EDFC 800E594C 00081880 */ sll $v1, $t0, 2
/* 7EE00 800E5950 3C028011 */ lui $v0, %hi(D_8010EF28)
/* 7EE04 800E5954 00431021 */ addu $v0, $v0, $v1
/* 7EE08 800E5958 8C42EF28 */ lw $v0, %lo(D_8010EF28)($v0)
/* 7EE0C 800E595C ACA20000 */ sw $v0, ($a1)
/* 7EE10 800E5960 3C028011 */ lui $v0, %hi(D_8010EF10)
/* 7EE14 800E5964 00431021 */ addu $v0, $v0, $v1
/* 7EE18 800E5968 8C42EF10 */ lw $v0, %lo(D_8010EF10)($v0)
/* 7EE1C 800E596C ACC20000 */ sw $v0, ($a2)
/* 7EE20 800E5970 3C028011 */ lui $v0, %hi(D_8010EF40)
/* 7EE24 800E5974 00431021 */ addu $v0, $v0, $v1
/* 7EE28 800E5978 8C42EF40 */ lw $v0, %lo(D_8010EF40)($v0)
/* 7EE2C 800E597C ACE20000 */ sw $v0, ($a3)
/* 7EE30 800E5980 00081040 */ sll $v0, $t0, 1
/* 7EE34 800E5984 3C018011 */ lui $at, %hi(D_8010F6B8)
/* 7EE38 800E5988 00220821 */ addu $at, $at, $v0
/* 7EE3C 800E598C 8422F6B8 */ lh $v0, %lo(D_8010F6B8)($at)
/* 7EE40 800E5990 44820000 */ mtc1 $v0, $f0
/* 7EE44 800E5994 00000000 */ nop
/* 7EE48 800E5998 03E00008 */ jr $ra
/* 7EE4C 800E599C 46800020 */ cvt.s.w $f0, $f0

View File

@ -1,43 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_8010BEE8
.double 180.0
.section .text
glabel phys_is_on_sloped_ground
/* 7DB78 800E46C8 3C048011 */ lui $a0, %hi(gPlayerStatus+0xCC)
/* 7DB7C 800E46CC 8C84F094 */ lw $a0, %lo(gPlayerStatus+0xCC)($a0)
/* 7DB80 800E46D0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 7DB84 800E46D4 AFBF0010 */ sw $ra, 0x10($sp)
/* 7DB88 800E46D8 0C044181 */ jal get_shadow_by_index
/* 7DB8C 800E46DC 00000000 */ nop
/* 7DB90 800E46E0 C4400030 */ lwc1 $f0, 0x30($v0)
/* 7DB94 800E46E4 3C018011 */ lui $at, %hi(D_8010BEE8)
/* 7DB98 800E46E8 D424BEE8 */ ldc1 $f4, %lo(D_8010BEE8)($at)
/* 7DB9C 800E46EC C4420028 */ lwc1 $f2, 0x28($v0)
/* 7DBA0 800E46F0 46000021 */ cvt.d.s $f0, $f0
/* 7DBA4 800E46F4 46240000 */ add.d $f0, $f0, $f4
/* 7DBA8 800E46F8 24020001 */ addiu $v0, $zero, 1
/* 7DBAC 800E46FC 460010A1 */ cvt.d.s $f2, $f2
/* 7DBB0 800E4700 46241080 */ add.d $f2, $f2, $f4
/* 7DBB4 800E4704 3C0141A0 */ lui $at, 0x41a0
/* 7DBB8 800E4708 44812000 */ mtc1 $at, $f4
/* 7DBBC 800E470C 46200020 */ cvt.s.d $f0, $f0
/* 7DBC0 800E4710 46000005 */ abs.s $f0, $f0
/* 7DBC4 800E4714 4604003C */ c.lt.s $f0, $f4
/* 7DBC8 800E4718 00000000 */ nop
/* 7DBCC 800E471C 45000006 */ bc1f .L800E4738
/* 7DBD0 800E4720 46201020 */ cvt.s.d $f0, $f2
/* 7DBD4 800E4724 46000005 */ abs.s $f0, $f0
/* 7DBD8 800E4728 4604003C */ c.lt.s $f0, $f4
/* 7DBDC 800E472C 00000000 */ nop
/* 7DBE0 800E4730 45030001 */ bc1tl .L800E4738
/* 7DBE4 800E4734 0000102D */ daddu $v0, $zero, $zero
.L800E4738:
/* 7DBE8 800E4738 8FBF0010 */ lw $ra, 0x10($sp)
/* 7DBEC 800E473C 03E00008 */ jr $ra
/* 7DBF0 800E4740 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -53,8 +53,8 @@ glabel phys_main_collision_below
/* 7DCB4 800E4804 0040882D */ daddu $s1, $v0, $zero
/* 7DCB8 800E4808 4614C502 */ mul.s $f20, $f24, $f20
/* 7DCBC 800E480C 00000000 */ nop
/* 7DCC0 800E4810 3C138011 */ lui $s3, %hi(D_8010EBB0)
/* 7DCC4 800E4814 2673EBB0 */ addiu $s3, $s3, %lo(D_8010EBB0)
/* 7DCC0 800E4810 3C138011 */ lui $s3, %hi(gPartnerActionStatus)
/* 7DCC4 800E4814 2673EBB0 */ addiu $s3, $s3, %lo(gPartnerActionStatus)
/* 7DCC8 800E4818 C7A20034 */ lwc1 $f2, 0x34($sp)
/* 7DCCC 800E481C 4614B500 */ add.s $f20, $f22, $f20
/* 7DCD0 800E4820 3C148016 */ lui $s4, %hi(gCollisionStatus)

View File

@ -1,40 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel phys_reset_spin_history
/* 7EE50 800E59A0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 7EE54 800E59A4 3C048011 */ lui $a0, %hi(D_8010F250)
/* 7EE58 800E59A8 2484F250 */ addiu $a0, $a0, %lo(D_8010F250)
/* 7EE5C 800E59AC AFBF0010 */ sw $ra, 0x10($sp)
/* 7EE60 800E59B0 0C00A580 */ jal mem_clear
/* 7EE64 800E59B4 24050034 */ addiu $a1, $zero, 0x34
/* 7EE68 800E59B8 0000382D */ daddu $a3, $zero, $zero
/* 7EE6C 800E59BC 3C068011 */ lui $a2, %hi(D_8010EF40)
/* 7EE70 800E59C0 24C6EF40 */ addiu $a2, $a2, %lo(D_8010EF40)
/* 7EE74 800E59C4 3C058011 */ lui $a1, %hi(D_8010EF10)
/* 7EE78 800E59C8 24A5EF10 */ addiu $a1, $a1, %lo(D_8010EF10)
/* 7EE7C 800E59CC 3C048011 */ lui $a0, %hi(D_8010EF28)
/* 7EE80 800E59D0 2484EF28 */ addiu $a0, $a0, %lo(D_8010EF28)
/* 7EE84 800E59D4 3C038011 */ lui $v1, %hi(D_8010F6B8)
/* 7EE88 800E59D8 2463F6B8 */ addiu $v1, $v1, %lo(D_8010F6B8)
/* 7EE8C 800E59DC 3C018011 */ lui $at, %hi(D_8010C944)
/* 7EE90 800E59E0 AC20C944 */ sw $zero, %lo(D_8010C944)($at)
.L800E59E4:
/* 7EE94 800E59E4 A4600000 */ sh $zero, ($v1)
/* 7EE98 800E59E8 AC800000 */ sw $zero, ($a0)
/* 7EE9C 800E59EC ACA00000 */ sw $zero, ($a1)
/* 7EEA0 800E59F0 ACC00000 */ sw $zero, ($a2)
/* 7EEA4 800E59F4 24C60004 */ addiu $a2, $a2, 4
/* 7EEA8 800E59F8 24A50004 */ addiu $a1, $a1, 4
/* 7EEAC 800E59FC 24840004 */ addiu $a0, $a0, 4
/* 7EEB0 800E5A00 24E70001 */ addiu $a3, $a3, 1
/* 7EEB4 800E5A04 28E20005 */ slti $v0, $a3, 5
/* 7EEB8 800E5A08 1440FFF6 */ bnez $v0, .L800E59E4
/* 7EEBC 800E5A0C 24630002 */ addiu $v1, $v1, 2
/* 7EEC0 800E5A10 8FBF0010 */ lw $ra, 0x10($sp)
/* 7EEC4 800E5A14 3C018011 */ lui $at, %hi(D_8010C964)
/* 7EEC8 800E5A18 AC20C964 */ sw $zero, %lo(D_8010C964)($at)
/* 7EECC 800E5A1C 3C018011 */ lui $at, %hi(D_8010C924)
/* 7EED0 800E5A20 AC20C924 */ sw $zero, %lo(D_8010C924)($at)
/* 7EED4 800E5A24 03E00008 */ jr $ra
/* 7EED8 800E5A28 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -6,8 +6,8 @@ glabel phys_update_action_state
/* 7EEE0 800E5A30 3C04800B */ lui $a0, %hi(gCameras)
/* 7EEE4 800E5A34 24841D80 */ addiu $a0, $a0, %lo(gCameras)
/* 7EEE8 800E5A38 AFB40020 */ sw $s4, 0x20($sp)
/* 7EEEC 800E5A3C 3C148011 */ lui $s4, %hi(D_8010EBB0)
/* 7EEF0 800E5A40 2694EBB0 */ addiu $s4, $s4, %lo(D_8010EBB0)
/* 7EEEC 800E5A3C 3C148011 */ lui $s4, %hi(gPartnerActionStatus)
/* 7EEF0 800E5A40 2694EBB0 */ addiu $s4, $s4, %lo(gPartnerActionStatus)
/* 7EEF4 800E5A44 AFB00010 */ sw $s0, 0x10($sp)
/* 7EEF8 800E5A48 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* 7EEFC 800E5A4C 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)

View File

@ -4,8 +4,8 @@
glabel can_pause
/* 7FE8C 800E69DC 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7FE90 800E69E0 AFB20018 */ sw $s2, 0x18($sp)
/* 7FE94 800E69E4 3C128011 */ lui $s2, %hi(D_8010EBB0)
/* 7FE98 800E69E8 2652EBB0 */ addiu $s2, $s2, %lo(D_8010EBB0)
/* 7FE94 800E69E4 3C128011 */ lui $s2, %hi(gPartnerActionStatus)
/* 7FE98 800E69E8 2652EBB0 */ addiu $s2, $s2, %lo(gPartnerActionStatus)
/* 7FE9C 800E69EC AFB10014 */ sw $s1, 0x14($sp)
/* 7FEA0 800E69F0 3C118011 */ lui $s1, %hi(gPlayerStatus)
/* 7FEA4 800E69F4 2631EFC8 */ addiu $s1, $s1, %lo(gPlayerStatus)

View File

@ -13,8 +13,8 @@ glabel check_input_open_menus
/* 80198 800E6CE8 8C63419C */ lw $v1, %lo(gGameStatusPtr)($v1)
/* 8019C 800E6CEC 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 801A0 800E6CF0 AFB3001C */ sw $s3, 0x1c($sp)
/* 801A4 800E6CF4 3C138011 */ lui $s3, %hi(D_8010EBB0)
/* 801A8 800E6CF8 2673EBB0 */ addiu $s3, $s3, %lo(D_8010EBB0)
/* 801A4 800E6CF4 3C138011 */ lui $s3, %hi(gPartnerActionStatus)
/* 801A8 800E6CF8 2673EBB0 */ addiu $s3, $s3, %lo(gPartnerActionStatus)
/* 801AC 800E6CFC AFB40020 */ sw $s4, 0x20($sp)
/* 801B0 800E6D00 3C148011 */ lui $s4, %hi(gPlayerStatus)
/* 801B4 800E6D04 2694EFC8 */ addiu $s4, $s4, %lo(gPlayerStatus)

View File

@ -4,8 +4,8 @@
glabel func_800E6904
/* 7FDB4 800E6904 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7FDB8 800E6908 AFB10014 */ sw $s1, 0x14($sp)
/* 7FDBC 800E690C 3C118011 */ lui $s1, %hi(D_8010EBB0)
/* 7FDC0 800E6910 2631EBB0 */ addiu $s1, $s1, %lo(D_8010EBB0)
/* 7FDBC 800E690C 3C118011 */ lui $s1, %hi(gPartnerActionStatus)
/* 7FDC0 800E6910 2631EBB0 */ addiu $s1, $s1, %lo(gPartnerActionStatus)
/* 7FDC4 800E6914 3C028011 */ lui $v0, %hi(gPlayerStatus)
/* 7FDC8 800E6918 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus)
/* 7FDCC 800E691C 0040202D */ daddu $a0, $v0, $zero

View File

@ -9,8 +9,8 @@ glabel test_item_player_collision
/* CA21C 80133B1C 3C118011 */ lui $s1, %hi(gPlayerStatus)
/* CA220 80133B20 2631EFC8 */ addiu $s1, $s1, %lo(gPlayerStatus)
/* CA224 80133B24 AFB40038 */ sw $s4, 0x38($sp)
/* CA228 80133B28 3C148011 */ lui $s4, %hi(D_8010EBB0)
/* CA22C 80133B2C 2694EBB0 */ addiu $s4, $s4, %lo(D_8010EBB0)
/* CA228 80133B28 3C148011 */ lui $s4, %hi(gPartnerActionStatus)
/* CA22C 80133B2C 2694EBB0 */ addiu $s4, $s4, %lo(gPartnerActionStatus)
/* CA230 80133B30 3C038007 */ lui $v1, %hi(gCurrentCameraID)
/* CA234 80133B34 8C637410 */ lw $v1, %lo(gCurrentCameraID)($v1)
/* CA238 80133B38 3C04800B */ lui $a0, %hi(gCameras)

View File

@ -27,8 +27,8 @@ glabel func_802B735C_E2290C
/* E22964 802B73B4 8C830024 */ lw $v1, 0x24($a0)
/* E22968 802B73B8 E4820004 */ swc1 $f2, 4($a0)
/* E2296C 802B73BC C4A00028 */ lwc1 $f0, 0x28($a1)
/* E22970 802B73C0 3C068011 */ lui $a2, %hi(D_8010EBB0)
/* E22974 802B73C4 24C6EBB0 */ addiu $a2, $a2, %lo(D_8010EBB0)
/* E22970 802B73C0 3C068011 */ lui $a2, %hi(gPartnerActionStatus)
/* E22974 802B73C4 24C6EBB0 */ addiu $a2, $a2, %lo(gPartnerActionStatus)
/* E22978 802B73C8 E4800000 */ swc1 $f0, ($a0)
/* E2297C 802B73CC C4A00030 */ lwc1 $f0, 0x30($a1)
/* E22980 802B73D0 24020001 */ addiu $v0, $zero, 1

View File

@ -40,8 +40,8 @@ glabel func_80032970
/* DDCC 800329CC 00431024 */ and $v0, $v0, $v1
/* DDD0 800329D0 10400007 */ beqz $v0, .L800329F0
/* DDD4 800329D4 00000000 */ nop
/* DDD8 800329D8 3C028011 */ lui $v0, %hi(D_8010EBB0+0x4)
/* DDDC 800329DC 8442EBB4 */ lh $v0, %lo(D_8010EBB0+0x4)($v0)
/* DDD8 800329D8 3C028011 */ lui $v0, %hi(gPartnerActionStatus+0x4)
/* DDDC 800329DC 8442EBB4 */ lh $v0, %lo(gPartnerActionStatus+0x4)($v0)
/* DDE0 800329E0 44824000 */ mtc1 $v0, $f8
/* DDE4 800329E4 00000000 */ nop
/* DDE8 800329E8 0800CA7E */ j .L800329F8

View File

@ -16,8 +16,8 @@ glabel func_802BB9E0_E2E310
/* E2E320 802BB9F0 AFB10024 */ sw $s1, 0x24($sp)
/* E2E324 802BB9F4 AFB00020 */ sw $s0, 0x20($sp)
/* E2E328 802BB9F8 8E500040 */ lw $s0, 0x40($s2)
/* E2E32C 802BB9FC 3C048011 */ lui $a0, %hi(D_8010EBB0)
/* E2E330 802BBA00 2484EBB0 */ addiu $a0, $a0, %lo(D_8010EBB0)
/* E2E32C 802BB9FC 3C048011 */ lui $a0, %hi(gPartnerActionStatus)
/* E2E330 802BBA00 2484EBB0 */ addiu $a0, $a0, %lo(gPartnerActionStatus)
/* E2E334 802BBA04 92030000 */ lbu $v1, ($s0)
/* E2E338 802BBA08 3C118011 */ lui $s1, %hi(gPlayerStatus)
/* E2E33C 802BBA0C 2631EFC8 */ addiu $s1, $s1, %lo(gPlayerStatus)

View File

@ -19,8 +19,8 @@ glabel func_802BBA60_E303B0
/* E303C0 802BBA70 3C128011 */ lui $s2, %hi(gPlayerStatus)
/* E303C4 802BBA74 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus)
/* E303C8 802BBA78 AFB3001C */ sw $s3, 0x1c($sp)
/* E303CC 802BBA7C 3C138011 */ lui $s3, %hi(D_8010EBB0)
/* E303D0 802BBA80 2673EBB0 */ addiu $s3, $s3, %lo(D_8010EBB0)
/* E303CC 802BBA7C 3C138011 */ lui $s3, %hi(gPartnerActionStatus)
/* E303D0 802BBA80 2673EBB0 */ addiu $s3, $s3, %lo(gPartnerActionStatus)
/* E303D4 802BBA84 AFBF0020 */ sw $ra, 0x20($sp)
/* E303D8 802BBA88 AFB00010 */ sw $s0, 0x10($sp)
/* E303DC 802BBA8C 0C009C64 */ jal get_time_freeze_mode

View File

@ -18,8 +18,8 @@ glabel func_8003D660
/* 18A78 8003D678 AFBF001C */ sw $ra, 0x1c($sp)
/* 18A7C 8003D67C AFB20018 */ sw $s2, 0x18($sp)
/* 18A80 8003D680 8E030000 */ lw $v1, ($s0)
/* 18A84 8003D684 3C128011 */ lui $s2, %hi(D_8010EBB0)
/* 18A88 8003D688 2652EBB0 */ addiu $s2, $s2, %lo(D_8010EBB0)
/* 18A84 8003D684 3C128011 */ lui $s2, %hi(gPartnerActionStatus)
/* 18A88 8003D688 2652EBB0 */ addiu $s2, $s2, %lo(gPartnerActionStatus)
/* 18A8C 8003D68C 00621824 */ and $v1, $v1, $v0
/* 18A90 8003D690 3C020040 */ lui $v0, 0x40
/* 18A94 8003D694 14620036 */ bne $v1, $v0, .L8003D770

View File

@ -110,8 +110,8 @@ glabel npc_do_other_npc_collision
/* 145A8 800391A8 00531024 */ and $v0, $v0, $s3
/* 145AC 800391AC 10400005 */ beqz $v0, .L800391C4
/* 145B0 800391B0 0000182D */ daddu $v1, $zero, $zero
/* 145B4 800391B4 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 145B8 800391B8 8042EBB0 */ lb $v0, %lo(D_8010EBB0)($v0)
/* 145B4 800391B4 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 145B8 800391B8 8042EBB0 */ lb $v0, %lo(gPartnerActionStatus)($v0)
/* 145BC 800391BC 0800E479 */ j .L800391E4
/* 145C0 800391C0 2C430001 */ sltiu $v1, $v0, 1
.L800391C4:
@ -119,8 +119,8 @@ glabel npc_do_other_npc_collision
/* 145C8 800391C8 00531024 */ and $v0, $v0, $s3
/* 145CC 800391CC 50400005 */ beql $v0, $zero, .L800391E4
/* 145D0 800391D0 24030001 */ addiu $v1, $zero, 1
/* 145D4 800391D4 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* 145D8 800391D8 8042EBB0 */ lb $v0, %lo(D_8010EBB0)($v0)
/* 145D4 800391D4 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* 145D8 800391D8 8042EBB0 */ lb $v0, %lo(gPartnerActionStatus)($v0)
/* 145DC 800391DC 50400001 */ beql $v0, $zero, .L800391E4
/* 145E0 800391E0 24030001 */ addiu $v1, $zero, 1
.L800391E4:

View File

@ -25,8 +25,8 @@ glabel func_802B6000_E28A30
/* E28A7C 802B604C 00431024 */ and $v0, $v0, $v1
/* E28A80 802B6050 1040000F */ beqz $v0, .L802B6090
/* E28A84 802B6054 00000000 */ nop
/* E28A88 802B6058 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* E28A8C 802B605C 2442EBB0 */ addiu $v0, $v0, %lo(D_8010EBB0)
/* E28A88 802B6058 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* E28A8C 802B605C 2442EBB0 */ addiu $v0, $v0, %lo(gPartnerActionStatus)
/* E28A90 802B6060 80430003 */ lb $v1, 3($v0)
/* E28A94 802B6064 24020008 */ addiu $v0, $zero, 8
/* E28A98 802B6068 14620005 */ bne $v1, $v0, .L802B6080

View File

@ -199,19 +199,19 @@ glabel func_802B6000_E25D60
/* E26010 802B62B0 E6200080 */ swc1 $f0, 0x80($s1)
/* E26014 802B62B4 E602001C */ swc1 $f2, 0x1c($s0)
.L802B62B8:
/* E26018 802B62B8 3C058011 */ lui $a1, %hi(D_8010C944)
/* E2601C 802B62BC 24A5C944 */ addiu $a1, $a1, %lo(D_8010C944)
/* E26020 802B62C0 3C068011 */ lui $a2, %hi(D_8010F6B8)
/* E26024 802B62C4 24C6F6B8 */ addiu $a2, $a2, %lo(D_8010F6B8)
/* E26018 802B62B8 3C058011 */ lui $a1, %hi(gSpinHistoryBufferPos)
/* E2601C 802B62BC 24A5C944 */ addiu $a1, $a1, %lo(gSpinHistoryBufferPos)
/* E26020 802B62C0 3C068011 */ lui $a2, %hi(gSpinHistoryPosAngle)
/* E26024 802B62C4 24C6F6B8 */ addiu $a2, $a2, %lo(gSpinHistoryPosAngle)
/* E26028 802B62C8 8CA20000 */ lw $v0, ($a1)
/* E2602C 802B62CC C62000A8 */ lwc1 $f0, 0xa8($s1)
/* E26030 802B62D0 00022040 */ sll $a0, $v0, 1
/* E26034 802B62D4 24420001 */ addiu $v0, $v0, 1
/* E26038 802B62D8 4600018D */ trunc.w.s $f6, $f0
/* E2603C 802B62DC 44033000 */ mfc1 $v1, $f6
/* E26040 802B62E0 3C018011 */ lui $at, %hi(D_8010F6B8)
/* E26040 802B62E0 3C018011 */ lui $at, %hi(gSpinHistoryPosAngle)
/* E26044 802B62E4 00240821 */ addu $at, $at, $a0
/* E26048 802B62E8 A423F6B8 */ sh $v1, %lo(D_8010F6B8)($at)
/* E26048 802B62E8 A423F6B8 */ sh $v1, %lo(gSpinHistoryPosAngle)($at)
/* E2604C 802B62EC ACA20000 */ sw $v0, ($a1)
/* E26050 802B62F0 28420006 */ slti $v0, $v0, 6
/* E26054 802B62F4 50400001 */ beql $v0, $zero, .L802B62FC
@ -221,23 +221,23 @@ glabel func_802B6000_E25D60
/* E26060 802B6300 C6200028 */ lwc1 $f0, 0x28($s1)
/* E26064 802B6304 00031080 */ sll $v0, $v1, 2
/* E26068 802B6308 4600018D */ trunc.w.s $f6, $f0
/* E2606C 802B630C 3C018011 */ lui $at, %hi(D_8010EF28)
/* E2606C 802B630C 3C018011 */ lui $at, %hi(gSpinHistoryPosX)
/* E26070 802B6310 00220821 */ addu $at, $at, $v0
/* E26074 802B6314 E426EF28 */ swc1 $f6, %lo(D_8010EF28)($at)
/* E26074 802B6314 E426EF28 */ swc1 $f6, %lo(gSpinHistoryPosX)($at)
/* E26078 802B6318 24640001 */ addiu $a0, $v1, 1
/* E2607C 802B631C C620002C */ lwc1 $f0, 0x2c($s1)
/* E26080 802B6320 00031840 */ sll $v1, $v1, 1
/* E26084 802B6324 4600018D */ trunc.w.s $f6, $f0
/* E26088 802B6328 3C018011 */ lui $at, %hi(D_8010EF10)
/* E26088 802B6328 3C018011 */ lui $at, %hi(gSpinHistoryPosY)
/* E2608C 802B632C 00220821 */ addu $at, $at, $v0
/* E26090 802B6330 E426EF10 */ swc1 $f6, %lo(D_8010EF10)($at)
/* E26090 802B6330 E426EF10 */ swc1 $f6, %lo(gSpinHistoryPosY)($at)
/* E26094 802B6334 C6200030 */ lwc1 $f0, 0x30($s1)
/* E26098 802B6338 00661821 */ addu $v1, $v1, $a2
/* E2609C 802B633C ACA40000 */ sw $a0, ($a1)
/* E260A0 802B6340 4600018D */ trunc.w.s $f6, $f0
/* E260A4 802B6344 3C018011 */ lui $at, %hi(D_8010EF40)
/* E260A4 802B6344 3C018011 */ lui $at, %hi(gSpinHistoryPosZ)
/* E260A8 802B6348 00220821 */ addu $at, $at, $v0
/* E260AC 802B634C E426EF40 */ swc1 $f6, %lo(D_8010EF40)($at)
/* E260AC 802B634C E426EF40 */ swc1 $f6, %lo(gSpinHistoryPosZ)($at)
/* E260B0 802B6350 C62000A8 */ lwc1 $f0, 0xa8($s1)
/* E260B4 802B6354 28840006 */ slti $a0, $a0, 6
/* E260B8 802B6358 4600018D */ trunc.w.s $f6, $f0

View File

@ -126,26 +126,26 @@ glabel func_802B6000_E26710
/* E268C8 802B61B8 00000000 */ nop
/* E268CC 802B61BC 45000009 */ bc1f .L802B61E4
/* E268D0 802B61C0 00000000 */ nop
/* E268D4 802B61C4 3C028011 */ lui $v0, %hi(D_8010C944)
/* E268D8 802B61C8 8C42C944 */ lw $v0, %lo(D_8010C944)($v0)
/* E268D4 802B61C4 3C028011 */ lui $v0, %hi(gSpinHistoryBufferPos)
/* E268D8 802B61C8 8C42C944 */ lw $v0, %lo(gSpinHistoryBufferPos)($v0)
/* E268DC 802B61CC C600002C */ lwc1 $f0, 0x2c($s0)
/* E268E0 802B61D0 00021080 */ sll $v0, $v0, 2
/* E268E4 802B61D4 4600020D */ trunc.w.s $f8, $f0
/* E268E8 802B61D8 3C018011 */ lui $at, %hi(D_8010EF10)
/* E268E8 802B61D8 3C018011 */ lui $at, %hi(gSpinHistoryPosY)
/* E268EC 802B61DC 00220821 */ addu $at, $at, $v0
/* E268F0 802B61E0 E428EF10 */ swc1 $f8, %lo(D_8010EF10)($at)
/* E268F0 802B61E0 E428EF10 */ swc1 $f8, %lo(gSpinHistoryPosY)($at)
.L802B61E4:
/* E268F4 802B61E4 3C058011 */ lui $a1, %hi(D_8010C944)
/* E268F8 802B61E8 24A5C944 */ addiu $a1, $a1, %lo(D_8010C944)
/* E268F4 802B61E4 3C058011 */ lui $a1, %hi(gSpinHistoryBufferPos)
/* E268F8 802B61E8 24A5C944 */ addiu $a1, $a1, %lo(gSpinHistoryBufferPos)
/* E268FC 802B61EC 8CA20000 */ lw $v0, ($a1)
/* E26900 802B61F0 C60000A8 */ lwc1 $f0, 0xa8($s0)
/* E26904 802B61F4 00022040 */ sll $a0, $v0, 1
/* E26908 802B61F8 24420001 */ addiu $v0, $v0, 1
/* E2690C 802B61FC 4600020D */ trunc.w.s $f8, $f0
/* E26910 802B6200 44034000 */ mfc1 $v1, $f8
/* E26914 802B6204 3C018011 */ lui $at, %hi(D_8010F6B8)
/* E26914 802B6204 3C018011 */ lui $at, %hi(gSpinHistoryPosAngle)
/* E26918 802B6208 00240821 */ addu $at, $at, $a0
/* E2691C 802B620C A423F6B8 */ sh $v1, %lo(D_8010F6B8)($at)
/* E2691C 802B620C A423F6B8 */ sh $v1, %lo(gSpinHistoryPosAngle)($at)
/* E26920 802B6210 ACA20000 */ sw $v0, ($a1)
/* E26924 802B6214 28420006 */ slti $v0, $v0, 6
/* E26928 802B6218 50400001 */ beql $v0, $zero, .L802B6220

View File

@ -99,8 +99,8 @@ glabel func_80240520_90FBD0
/* 90FD1C 8024066C 00000000 */ nop
/* 90FD20 80240670 4501001F */ bc1t .L802406F0
/* 90FD24 80240674 2402FFFF */ addiu $v0, $zero, -1
/* 90FD28 80240678 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 90FD2C 8024067C 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 90FD28 80240678 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 90FD2C 8024067C 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 90FD30 80240680 24020009 */ addiu $v0, $zero, 9
/* 90FD34 80240684 10620019 */ beq $v1, $v0, .L802406EC
/* 90FD38 80240688 24020007 */ addiu $v0, $zero, 7

View File

@ -116,8 +116,8 @@ glabel func_80241414_910AC4
/* 910C4C 8024159C 45030001 */ bc1tl .L802415A4
/* 910C50 802415A0 0000802D */ daddu $s0, $zero, $zero
.L802415A4:
/* 910C54 802415A4 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 910C58 802415A8 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 910C54 802415A4 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 910C58 802415A8 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 910C5C 802415AC 24020009 */ addiu $v0, $zero, 9
/* 910C60 802415B0 50620001 */ beql $v1, $v0, .L802415B8
/* 910C64 802415B4 0000802D */ daddu $s0, $zero, $zero

View File

@ -90,8 +90,8 @@ glabel func_802422C4_911974
/* 911A98 802423E8 45030001 */ bc1tl .L802423F0
/* 911A9C 802423EC 0000802D */ daddu $s0, $zero, $zero
.L802423F0:
/* 911AA0 802423F0 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 911AA4 802423F4 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 911AA0 802423F0 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 911AA4 802423F4 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 911AA8 802423F8 24020009 */ addiu $v0, $zero, 9
/* 911AAC 802423FC 50620001 */ beql $v1, $v0, .L80242404
/* 911AB0 80242400 0000802D */ daddu $s0, $zero, $zero

View File

@ -90,8 +90,8 @@ glabel func_80240000_915D70
/* 915E94 80240124 45030001 */ bc1tl .L8024012C
/* 915E98 80240128 0000802D */ daddu $s0, $zero, $zero
.L8024012C:
/* 915E9C 8024012C 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 915EA0 80240130 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 915E9C 8024012C 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 915EA0 80240130 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 915EA4 80240134 24020009 */ addiu $v0, $zero, 9
/* 915EA8 80240138 50620001 */ beql $v1, $v0, .L80240140
/* 915EAC 8024013C 0000802D */ daddu $s0, $zero, $zero

View File

@ -90,8 +90,8 @@ glabel func_80240340_918EF0
/* 919014 80240464 45030001 */ bc1tl .L8024046C
/* 919018 80240468 0000802D */ daddu $s0, $zero, $zero
.L8024046C:
/* 91901C 8024046C 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 919020 80240470 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 91901C 8024046C 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 919020 80240470 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 919024 80240474 24020009 */ addiu $v0, $zero, 9
/* 919028 80240478 50620001 */ beql $v1, $v0, .L80240480
/* 91902C 8024047C 0000802D */ daddu $s0, $zero, $zero

View File

@ -90,8 +90,8 @@ glabel func_80240080_91B960
/* 91BA84 802401A4 45030001 */ bc1tl .L802401AC
/* 91BA88 802401A8 0000802D */ daddu $s0, $zero, $zero
.L802401AC:
/* 91BA8C 802401AC 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* 91BA90 802401B0 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* 91BA8C 802401AC 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* 91BA90 802401B0 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* 91BA94 802401B4 24020009 */ addiu $v0, $zero, 9
/* 91BA98 802401B8 50620001 */ beql $v1, $v0, .L802401C0
/* 91BA9C 802401BC 0000802D */ daddu $s0, $zero, $zero

View File

@ -34,8 +34,8 @@ glabel func_80240000_B70860
/* B708D0 80240070 44073000 */ mfc1 $a3, $f6
/* B708D4 80240074 0C04DFB0 */ jal set_screen_overlay_center_worldpos
/* B708D8 80240078 0080282D */ daddu $a1, $a0, $zero
/* B708DC 8024007C 3C028011 */ lui $v0, %hi(D_8010EBB0)
/* B708E0 80240080 8042EBB0 */ lb $v0, %lo(D_8010EBB0)($v0)
/* B708DC 8024007C 3C028011 */ lui $v0, %hi(gPartnerActionStatus)
/* B708E0 80240080 8042EBB0 */ lb $v0, %lo(gPartnerActionStatus)($v0)
/* B708E4 80240084 10400012 */ beqz $v0, .L802400D0
/* B708E8 80240088 24020006 */ addiu $v0, $zero, 6
/* B708EC 8024008C 82230012 */ lb $v1, 0x12($s1)

View File

@ -2,8 +2,8 @@
.set noreorder # don't insert nops after branches
glabel func_802407DC_B7103C
/* B7103C 802407DC 3C038011 */ lui $v1, %hi(D_8010EBB0+0x3)
/* B71040 802407E0 8063EBB3 */ lb $v1, %lo(D_8010EBB0+0x3)($v1)
/* B7103C 802407DC 3C038011 */ lui $v1, %hi(gPartnerActionStatus+0x3)
/* B71040 802407E0 8063EBB3 */ lb $v1, %lo(gPartnerActionStatus+0x3)($v1)
/* B71044 802407E4 24020006 */ addiu $v0, $zero, 6
/* B71048 802407E8 54620003 */ bnel $v1, $v0, .L802407F8
/* B7104C 802407EC AC8000A8 */ sw $zero, 0xa8($a0)

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