mirror of
https://github.com/zeldaret/tmc
synced 2026-08-18 21:48:21 -04:00
Decompile coord.s
This commit is contained in:
+393
-329
@@ -7,8 +7,33 @@
|
||||
#include "room.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern u8 gUnk_08114F78[];
|
||||
extern u8 gUnk_08114F80[];
|
||||
const u8 gEntityOnTopArray[];
|
||||
const u8 gEntityBelowArray[];
|
||||
const u8 gUnk_08114F58[];
|
||||
const u8 gUnk_08114F38[];
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
u8 unk0 : 1;
|
||||
u8 unk1 : 1;
|
||||
u8 unk2 : 1;
|
||||
u8 unk3 : 1;
|
||||
u8 unk4 : 4;
|
||||
} PACKED unk_00;
|
||||
u8 unk_01;
|
||||
u16 unk_02;
|
||||
union SplitWord unk_04;
|
||||
union SplitWord unk_08;
|
||||
union SplitWord unk_0C;
|
||||
} struct_gUnk_020000C0_1;
|
||||
typedef struct {
|
||||
struct_gUnk_020000C0_1 unk_00[4];
|
||||
} struct_gUnk_020000C0;
|
||||
|
||||
static_assert(sizeof(struct_gUnk_020000C0) == 0x40);
|
||||
|
||||
extern struct_gUnk_020000C0 gUnk_020000C0[0x30];
|
||||
extern u32 gSpritePtrs[];
|
||||
|
||||
typedef struct {
|
||||
u32 _0;
|
||||
@@ -17,13 +42,21 @@ typedef struct {
|
||||
} struct_02025EB0;
|
||||
extern struct_02025EB0 gUnk_02025EB0;
|
||||
|
||||
extern u16 gExtraFrameOffsets[];
|
||||
extern s8 gUnk_08126EE4[];
|
||||
extern u8 gUnk_08114F38[];
|
||||
extern u8 gUnk_08114F58[];
|
||||
extern const u16 gUnk_080046A4[];
|
||||
extern const u16 gUnk_080047F6[];
|
||||
|
||||
void sub_080027EA(Entity*, u32, u32);
|
||||
u32 sub_0806F58C(Entity*, Entity*);
|
||||
u32 sub_0806FCA0(Entity*, Entity*);
|
||||
void UnloadHitbox(Entity*);
|
||||
extern u32 sub_08007DD6(u32, const u16*);
|
||||
extern u32 sub_080041DC(Entity*, u32, u32);
|
||||
u32 PointInsideRadius(s32 x, s32 y, s32 radius);
|
||||
extern void sub_0806FEE8(struct_gUnk_020000C0_1*, u32, u32, u32);
|
||||
void sub_0806FEFC(struct_gUnk_020000C0_1*, Entity*);
|
||||
bool32 sub_0807007C(struct_gUnk_020000C0*, u32);
|
||||
|
||||
void sub_0806F364(void) {
|
||||
gArea.filler[2] ^= 0x80;
|
||||
@@ -327,336 +360,367 @@ void sub_0806FA90(Entity* param_1, Entity* param_2, s32 offsetX, s32 offsetY) {
|
||||
}
|
||||
|
||||
void ResolveEntityOnTop(Entity* param_1, Entity* param_2) {
|
||||
param_2->spritePriority.b0 = gUnk_08114F78[param_1->spritePriority.b0];
|
||||
param_2->spritePriority.b0 = gEntityOnTopArray[param_1->spritePriority.b0];
|
||||
}
|
||||
|
||||
void ResolveEntityBelow(Entity* param_1, Entity* param_2) {
|
||||
param_2->spritePriority.b0 = gUnk_08114F80[param_1->spritePriority.b0];
|
||||
param_2->spritePriority.b0 = gEntityBelowArray[param_1->spritePriority.b0];
|
||||
}
|
||||
|
||||
// Values of sin(x*(π/128)) as Q8.8 fixed-point numbers from x = 0 to x = 319
|
||||
const s16 gSineTable[64] = {
|
||||
Q_8_8(0), // sin(0*(π/128))
|
||||
Q_8_8(0.0234375), // sin(1*(π/128))
|
||||
Q_8_8(0.046875), // sin(2*(π/128))
|
||||
Q_8_8(0.0703125), // sin(3*(π/128))
|
||||
Q_8_8(0.09765625), // sin(4*(π/128))
|
||||
Q_8_8(0.12109375), // sin(5*(π/128))
|
||||
Q_8_8(0.14453125), // sin(6*(π/128))
|
||||
Q_8_8(0.16796875), // sin(7*(π/128))
|
||||
Q_8_8(0.19140625), // sin(8*(π/128))
|
||||
Q_8_8(0.21875), // sin(9*(π/128))
|
||||
Q_8_8(0.2421875), // sin(10*(π/128))
|
||||
Q_8_8(0.265625), // sin(11*(π/128))
|
||||
Q_8_8(0.2890625), // sin(12*(π/128))
|
||||
Q_8_8(0.3125), // sin(13*(π/128))
|
||||
Q_8_8(0.3359375), // sin(14*(π/128))
|
||||
Q_8_8(0.359375), // sin(15*(π/128))
|
||||
Q_8_8(0.37890625), // sin(16*(π/128))
|
||||
Q_8_8(0.40234375), // sin(17*(π/128))
|
||||
Q_8_8(0.42578125), // sin(18*(π/128))
|
||||
Q_8_8(0.44921875), // sin(19*(π/128))
|
||||
Q_8_8(0.46875), // sin(20*(π/128))
|
||||
Q_8_8(0.4921875), // sin(21*(π/128))
|
||||
Q_8_8(0.51171875), // sin(22*(π/128))
|
||||
Q_8_8(0.53125), // sin(23*(π/128))
|
||||
Q_8_8(0.5546875), // sin(24*(π/128))
|
||||
Q_8_8(0.57421875), // sin(25*(π/128))
|
||||
Q_8_8(0.59375), // sin(26*(π/128))
|
||||
Q_8_8(0.61328125), // sin(27*(π/128))
|
||||
Q_8_8(0.6328125), // sin(28*(π/128))
|
||||
Q_8_8(0.65234375), // sin(29*(π/128))
|
||||
Q_8_8(0.66796875), // sin(30*(π/128))
|
||||
Q_8_8(0.6875), // sin(31*(π/128))
|
||||
Q_8_8(0.70703125), // sin(32*(π/128))
|
||||
Q_8_8(0.72265625), // sin(33*(π/128))
|
||||
Q_8_8(0.73828125), // sin(34*(π/128))
|
||||
Q_8_8(0.75390625), // sin(35*(π/128))
|
||||
Q_8_8(0.76953125), // sin(36*(π/128))
|
||||
Q_8_8(0.78515625), // sin(37*(π/128))
|
||||
Q_8_8(0.80078125), // sin(38*(π/128))
|
||||
Q_8_8(0.81640625), // sin(39*(π/128))
|
||||
Q_8_8(0.828125), // sin(40*(π/128))
|
||||
Q_8_8(0.84375), // sin(41*(π/128))
|
||||
Q_8_8(0.85546875), // sin(42*(π/128))
|
||||
Q_8_8(0.8671875), // sin(43*(π/128))
|
||||
Q_8_8(0.87890625), // sin(44*(π/128))
|
||||
Q_8_8(0.890625), // sin(45*(π/128))
|
||||
Q_8_8(0.90234375), // sin(46*(π/128))
|
||||
Q_8_8(0.9140625), // sin(47*(π/128))
|
||||
Q_8_8(0.921875), // sin(48*(π/128))
|
||||
Q_8_8(0.9296875), // sin(49*(π/128))
|
||||
Q_8_8(0.94140625), // sin(50*(π/128))
|
||||
Q_8_8(0.94921875), // sin(51*(π/128))
|
||||
Q_8_8(0.953125), // sin(52*(π/128))
|
||||
Q_8_8(0.9609375), // sin(53*(π/128))
|
||||
Q_8_8(0.96875), // sin(54*(π/128))
|
||||
Q_8_8(0.97265625), // sin(55*(π/128))
|
||||
Q_8_8(0.98046875), // sin(56*(π/128))
|
||||
Q_8_8(0.984375), // sin(57*(π/128))
|
||||
Q_8_8(0.98828125), // sin(58*(π/128))
|
||||
Q_8_8(0.9921875), // sin(59*(π/128))
|
||||
Q_8_8(0.9921875), // sin(60*(π/128))
|
||||
Q_8_8(0.99609375), // sin(61*(π/128))
|
||||
Q_8_8(0.99609375), // sin(62*(π/128))
|
||||
Q_8_8(0.99609375), // sin(63*(π/128))
|
||||
void sub_0806FB00(Entity* ent, u32 param_1, u32 param_2, u32 param_3) {
|
||||
if (param_3 == 0) {
|
||||
param_3 = 1;
|
||||
}
|
||||
|
||||
ent->field_0x7c.BYTES.byte2 = 0;
|
||||
ent->field_0x7c.BYTES.byte3 = param_3;
|
||||
ent->field_0x80.HWORD = ent->x.HALF.HI;
|
||||
ent->field_0x82.HWORD = ent->y.HALF.HI;
|
||||
ent->cutsceneBeh.HWORD = param_1;
|
||||
ent->field_0x86.HWORD = param_2;
|
||||
}
|
||||
|
||||
bool32 sub_0806FB38(Entity* ent, u32 param_1, u32 param_2, u32 param_3) {
|
||||
s32 val;
|
||||
u32 rv;
|
||||
if (ent->field_0x7c.BYTES.byte2 < ent->field_0x7c.BYTES.byte3) {
|
||||
ent->field_0x7c.BYTES.byte2++;
|
||||
ent->x.HALF.HI =
|
||||
((((((s16)ent->cutsceneBeh.HWORD - (s16)ent->field_0x80.HWORD) * ent->field_0x7c.BYTES.byte2) << 8) /
|
||||
ent->field_0x7c.BYTES.byte3) >>
|
||||
8) +
|
||||
ent->field_0x80.HWORD;
|
||||
ent->y.HALF.HI =
|
||||
(((((((s16)ent->field_0x86.HWORD - (s16)ent->field_0x82.HWORD) * ent->field_0x7c.BYTES.byte2) << 8) /
|
||||
ent->field_0x7c.BYTES.byte3) >>
|
||||
8)) +
|
||||
ent->field_0x82.HWORD;
|
||||
rv = 0;
|
||||
} else {
|
||||
ent->x.HALF.HI = ent->cutsceneBeh.HWORD;
|
||||
ent->y.HALF.HI = ent->field_0x86.HWORD;
|
||||
rv = 1;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
void sub_0806FBB4(Entity* ent) {
|
||||
if (gRoomTransition.field_0x4[1] != 0 || gPlayerState.heldObject == 0) {
|
||||
ent->subAction = 6;
|
||||
}
|
||||
}
|
||||
|
||||
void AllocMutableHitbox(Entity* ent) {
|
||||
UnloadHitbox(ent);
|
||||
ent->hitbox = zMalloc(sizeof(Hitbox3D));
|
||||
}
|
||||
|
||||
void UnloadHitbox(Entity* ent) {
|
||||
zFree(ent->hitbox);
|
||||
ent->hitbox = NULL;
|
||||
}
|
||||
|
||||
bool32 CheckPlayerProximity(u32 x, u32 y, u32 distX, u32 DistY) {
|
||||
s32 diffx = gPlayerEntity.x.HALF.HI - x;
|
||||
s32 diffy = gPlayerEntity.y.HALF.HI - y;
|
||||
u32 rv = 0;
|
||||
if (diffx < distX && diffy < DistY) {
|
||||
rv = 1;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/coord/sub_0806FC24.inc", bool32 sub_0806FC24(u32 param_1, u32 param_2)) {
|
||||
u32 rv;
|
||||
u32 val = sub_08007DD6(param_1, gUnk_080046A4);
|
||||
if (val) {
|
||||
rv = (*(gUnk_080047F6 + (val << 2)) >> param_2) & 0x1;
|
||||
} else {
|
||||
rv = 0;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
const u16* sub_0806FC50(u32 param_1, u32 param_2) {
|
||||
const u16* rv;
|
||||
u32 val = sub_08007DD6(param_1, gUnk_080046A4);
|
||||
if (!val || ((gUnk_080047F6[val << 2] >> param_2) & 0x1) == 0) {
|
||||
rv = 0;
|
||||
} else {
|
||||
rv = gUnk_080047F6 + (val << 2);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool32 sub_0806FC80(Entity* ent, Entity* ent2, s32 param_3) {
|
||||
u32 rv;
|
||||
s16 x, y;
|
||||
param_3 <<= 4;
|
||||
if (param_3 >= sub_080041DC(ent, ent2->x.HALF.HI, ent2->y.HALF.HI)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0806FCA0(Entity* this, Entity* other) {
|
||||
return sub_0806F5A4(GetFacingDirection(this, other));
|
||||
}
|
||||
|
||||
u32 sub_0806FCAC(Entity* this, Entity* other) {
|
||||
return sub_0806F5B0(GetFacingDirection(this, other));
|
||||
}
|
||||
|
||||
u32 isEntityWithinDistance(Entity* ent, s32 x, s32 y, s32 distance) {
|
||||
return PointInsideRadius(ent->x.HALF.HI - x, ent->y.HALF.HI - y, distance);
|
||||
}
|
||||
|
||||
bool32 PointInsideRadius(s32 x, s32 y, s32 distance) {
|
||||
return distance * distance >= (x * x + y * y);
|
||||
}
|
||||
|
||||
void sub_0806FCF4(Entity* ent, s32 param_2, s32 param_3, s32 param_4) {
|
||||
u32 r2 = 0;
|
||||
if (param_2 < 0) {
|
||||
param_2 = -param_2;
|
||||
}
|
||||
|
||||
if (param_3) {
|
||||
param_2 = (0x10000 / param_2);
|
||||
param_2 = ((u32)(param_3 * param_2) >> 8);
|
||||
r2 = param_3 - param_2;
|
||||
}
|
||||
|
||||
if (param_4 == 0 || param_4 == 3) {
|
||||
r2 = -r2;
|
||||
}
|
||||
|
||||
if (param_4 == 0 || param_4 == 2) {
|
||||
ent->spriteOffsetY = r2;
|
||||
} else {
|
||||
ent->spriteOffsetX = r2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806FD3C(Entity* this) {
|
||||
this->spriteSettings.shadow = 0;
|
||||
this->spritePriority.b1 = 0;
|
||||
}
|
||||
|
||||
bool32 sub_0806FD54(Entity* this) {
|
||||
u32 rv;
|
||||
if ((gPlayerState.flags & 0x800000) == 0) {
|
||||
rv = 0;
|
||||
} else {
|
||||
rv = isEntityWithinDistance(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI - 9, 0x48);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
void sub_0806FD8C() {
|
||||
MemClear(&gUnk_020000C0, sizeof(gUnk_020000C0));
|
||||
}
|
||||
|
||||
bool32 sub_0806FDA0(Entity* this) {
|
||||
u32 index;
|
||||
for (index = 1; index < ARRAY_COUNT(gUnk_020000C0); index++) {
|
||||
if ((gUnk_020000C0[index].unk_00[0].unk_00.unk0) == 0) {
|
||||
u32 tmp = 0xFF;
|
||||
this->spriteAnimation[2] = index;
|
||||
gUnk_020000C0[index].unk_00[0].unk_00.unk0 = 1;
|
||||
gUnk_020000C0[index].unk_00[0].unk_01 = tmp;
|
||||
gUnk_020000C0[index].unk_00[1].unk_01 = tmp;
|
||||
gUnk_020000C0[index].unk_00[2].unk_01 = tmp;
|
||||
gUnk_020000C0[index].unk_00[3].unk_01 = tmp;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 LoadExtraSpriteData(Entity* ent, SpriteLoadData* data) {
|
||||
SpriteLoadData* ptr;
|
||||
u32 index;
|
||||
struct_gUnk_020000C0_1* ptr2;
|
||||
if (sub_0806FDA0(ent) == 0)
|
||||
return 0;
|
||||
|
||||
UnloadOBJPalette(ent);
|
||||
ptr2 = gUnk_020000C0[ent->spriteAnimation[2]].unk_00;
|
||||
ptr = data;
|
||||
|
||||
for (index = 0; index < 4 && (((u16*)ptr)[1] & 0x3ff); index++) {
|
||||
u32 pal = LoadObjPalette(ent, ((*(u32*)ptr) << 0x16) >> 0x16);
|
||||
sub_0806FEE8(ptr2, (*(u32*)ptr << 6) >> 0x16, pal, (*(u32*)ptr << 0x10) >> 0x1a);
|
||||
if (((u8*)ptr)[3] & 4) {
|
||||
sub_0806FEFC(ptr2, ent);
|
||||
}
|
||||
|
||||
ptr2++;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
ent->spriteAnimation[1] = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0806FE84(Entity* ent) {
|
||||
u32 index;
|
||||
u32 spriteAnimation = ent->spriteAnimation[2];
|
||||
ent->spriteAnimation[2] = 0;
|
||||
|
||||
if (spriteAnimation > 0 && spriteAnimation < 0x80) {
|
||||
struct_gUnk_020000C0_1* startptr = gUnk_020000C0[spriteAnimation].unk_00;
|
||||
|
||||
for (index = 0; index <= 3; index++) {
|
||||
sub_0801D244(startptr[index].unk_04.BYTES.byte1);
|
||||
}
|
||||
|
||||
MemClear(startptr, sizeof(struct_gUnk_020000C0));
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806FEBC(Entity* ent, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[ent->spriteAnimation[2]].unk_00[param_2];
|
||||
*((u32*)ptr) = 0;
|
||||
ptr->unk_04.WORD = 0;
|
||||
ptr->unk_08.WORD = 0;
|
||||
ptr->unk_0C.WORD = param_3;
|
||||
ptr->unk_00.unk0 = 1;
|
||||
ptr->unk_00.unk1 = 1;
|
||||
}
|
||||
|
||||
void sub_0806FEE8(struct_gUnk_020000C0_1* this, u32 param_2, u32 param_3, u32 param_4) {
|
||||
this->unk_08.BYTES.byte0 = param_4;
|
||||
this->unk_02 = param_2;
|
||||
this->unk_04.BYTES.byte1 = param_3;
|
||||
this->unk_00.unk3 = 1;
|
||||
this->unk_00.unk0 = 1;
|
||||
}
|
||||
|
||||
void sub_0806FEFC(struct_gUnk_020000C0_1* this, Entity* ent) {
|
||||
this->unk_08.HALF.HI = ent->spriteVramOffset + this->unk_08.BYTES.byte0;
|
||||
this->unk_00.unk2 = 1;
|
||||
}
|
||||
|
||||
void sub_0806FF10(Entity* this, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[this->spriteAnimation[2]].unk_00[param_2];
|
||||
s32 pallete = FindPalette(param_3);
|
||||
if (ptr->unk_04.BYTES.byte1 != pallete) {
|
||||
sub_0801D244(ptr->unk_04.BYTES.byte1);
|
||||
ptr->unk_04.BYTES.byte1 = LoadObjPalette(this, param_3);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806FF48(Entity* this, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[this->spriteAnimation[2]].unk_00[param_2];
|
||||
ptr->unk_04.BYTES.byte0 = param_3;
|
||||
}
|
||||
|
||||
void SetExtraSpriteFrame(Entity* this, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0* ptr1 = &gUnk_020000C0[this->spriteAnimation[2]];
|
||||
struct_gUnk_020000C0_1* ptr2 = &ptr1->unk_00[param_2];
|
||||
if (ptr2->unk_01 != param_3) {
|
||||
ptr2->unk_01 = param_3;
|
||||
ptr2->unk_00.unk3 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void SetSpriteSubEntryOffsetData1(Entity* this, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0* ptr1 = &gUnk_020000C0[this->spriteAnimation[2]];
|
||||
struct_gUnk_020000C0_1* ptr2 = &ptr1->unk_00[param_2];
|
||||
struct_gUnk_020000C0_1* ptr3 = &ptr1->unk_00[param_3];
|
||||
|
||||
u8* ptr4 = GetSpriteSubEntryOffsetDataPointer(ptr2->unk_02, ptr2->unk_01);
|
||||
u8 val1 = ptr2->unk_04.BYTES.byte2;
|
||||
u8 val2 = ptr4[0];
|
||||
ptr3->unk_04.BYTES.byte2 = val1 + val2;
|
||||
val1 = ptr2->unk_04.BYTES.byte3;
|
||||
val2 = ptr4[1];
|
||||
ptr3->unk_04.BYTES.byte3 = val1 + val2;
|
||||
}
|
||||
|
||||
void sub_0806FFBC(Entity* this, u32 param_2, u32 param_3, u32 param_4) {
|
||||
struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[this->spriteAnimation[2]].unk_00[param_2];
|
||||
ptr->unk_04.BYTES.byte2 = param_3;
|
||||
ptr->unk_04.BYTES.byte3 = param_4;
|
||||
}
|
||||
|
||||
void SetSpriteSubEntryOffsetData2(Entity* this, u32 param_2, u32 param_3) {
|
||||
struct_gUnk_020000C0* ptr1 = &gUnk_020000C0[this->spriteAnimation[2]];
|
||||
struct_gUnk_020000C0_1* ptr2 = &ptr1->unk_00[param_2];
|
||||
struct_gUnk_020000C0_1* ptr3 = &ptr1->unk_00[param_3];
|
||||
|
||||
u8* ptr4 = GetSpriteSubEntryOffsetDataPointer(ptr2->unk_02, ptr2->unk_01);
|
||||
u8 val1 = ptr2->unk_04.BYTES.byte2;
|
||||
u8 val2 = ptr4[2];
|
||||
ptr3->unk_04.BYTES.byte2 = val1 + val2;
|
||||
val1 = ptr2->unk_04.BYTES.byte3;
|
||||
val2 = ptr4[3];
|
||||
ptr3->unk_04.BYTES.byte3 = val1 + val2;
|
||||
}
|
||||
|
||||
void sub_0807000C(Entity* this) {
|
||||
struct_gUnk_020000C0* ptr = &gUnk_020000C0[this->spriteAnimation[2]];
|
||||
u32 val = sub_0807007C(ptr, 0);
|
||||
val |= sub_0807007C(ptr, 1);
|
||||
val |= sub_0807007C(ptr, 2);
|
||||
val |= sub_0807007C(ptr, 3);
|
||||
|
||||
if (val) {
|
||||
u8* ptr2 = (u8*)&gGFXSlots;
|
||||
ptr2[this->spriteAnimation[0] * 12 + 7] = this->spriteAnimation[2];
|
||||
ptr2[this->spriteAnimation[0] * 12 + 4] = (ptr2[this->spriteAnimation[0] * 12 + 4] & 0xf) | 0x30;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0807007C(struct_gUnk_020000C0* this, u32 param_2) {
|
||||
u8* ptr2;
|
||||
u8* ptr3;
|
||||
u32* spritePtr;
|
||||
struct_gUnk_020000C0_1* ptr1 = &this->unk_00[param_2];
|
||||
if ((ptr1->unk_00.unk3) == 0)
|
||||
return 0;
|
||||
if ((ptr1->unk_00.unk2) == 0)
|
||||
return 0;
|
||||
if (ptr1->unk_01 == 0xff)
|
||||
return 0;
|
||||
|
||||
spritePtr = &gSpritePtrs[ptr1->unk_02 * 4];
|
||||
ptr2 = (u8*)(spritePtr[1]);
|
||||
if (ptr2 == 0)
|
||||
return 0;
|
||||
|
||||
ptr3 = &ptr2[ptr1->unk_01 * 4];
|
||||
ptr1->unk_08.BYTES.byte1 = *ptr3;
|
||||
ptr1->unk_0C.WORD = spritePtr[2] + ((*(u16*)&ptr3[2]) << 5);
|
||||
return 1;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/coord/GetSpriteSubEntryOffsetDataPointer.inc",
|
||||
u8* GetSpriteSubEntryOffsetDataPointer(u32 param_1, u32 param_2)) {
|
||||
u8* rv;
|
||||
u32 val;
|
||||
u32 val2;
|
||||
val = ((u16*)(((u8*)gExtraFrameOffsets) + 0x10))[param_1];
|
||||
val2 = ((u8*)gExtraFrameOffsets)[val + param_2] * 4;
|
||||
rv = val2 + ((u8*)gExtraFrameOffsets);
|
||||
rv = rv + *((u32*)((u8*)gExtraFrameOffsets));
|
||||
return rv;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
const u8 gUnk_08114F38[] = {
|
||||
0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
const s16 gCosineTable[256] = {
|
||||
Q_8_8(1), // sin(64*(π/128))
|
||||
Q_8_8(0.99609375), // sin(65*(π/128))
|
||||
Q_8_8(0.99609375), // sin(66*(π/128))
|
||||
Q_8_8(0.99609375), // sin(67*(π/128))
|
||||
Q_8_8(0.9921875), // sin(68*(π/128))
|
||||
Q_8_8(0.9921875), // sin(69*(π/128))
|
||||
Q_8_8(0.98828125), // sin(70*(π/128))
|
||||
Q_8_8(0.984375), // sin(71*(π/128))
|
||||
Q_8_8(0.98046875), // sin(72*(π/128))
|
||||
Q_8_8(0.97265625), // sin(73*(π/128))
|
||||
Q_8_8(0.96875), // sin(74*(π/128))
|
||||
Q_8_8(0.9609375), // sin(75*(π/128))
|
||||
Q_8_8(0.953125), // sin(76*(π/128))
|
||||
Q_8_8(0.94921875), // sin(77*(π/128))
|
||||
Q_8_8(0.94140625), // sin(78*(π/128))
|
||||
Q_8_8(0.9296875), // sin(79*(π/128))
|
||||
Q_8_8(0.921875), // sin(80*(π/128))
|
||||
Q_8_8(0.9140625), // sin(81*(π/128))
|
||||
Q_8_8(0.90234375), // sin(82*(π/128))
|
||||
Q_8_8(0.890625), // sin(83*(π/128))
|
||||
Q_8_8(0.87890625), // sin(84*(π/128))
|
||||
Q_8_8(0.8671875), // sin(85*(π/128))
|
||||
Q_8_8(0.85546875), // sin(86*(π/128))
|
||||
Q_8_8(0.84375), // sin(87*(π/128))
|
||||
Q_8_8(0.828125), // sin(88*(π/128))
|
||||
Q_8_8(0.81640625), // sin(89*(π/128))
|
||||
Q_8_8(0.80078125), // sin(90*(π/128))
|
||||
Q_8_8(0.78515625), // sin(91*(π/128))
|
||||
Q_8_8(0.76953125), // sin(92*(π/128))
|
||||
Q_8_8(0.75390625), // sin(93*(π/128))
|
||||
Q_8_8(0.73828125), // sin(94*(π/128))
|
||||
Q_8_8(0.72265625), // sin(95*(π/128))
|
||||
Q_8_8(0.70703125), // sin(96*(π/128))
|
||||
Q_8_8(0.6875), // sin(97*(π/128))
|
||||
Q_8_8(0.66796875), // sin(98*(π/128))
|
||||
Q_8_8(0.65234375), // sin(99*(π/128))
|
||||
Q_8_8(0.6328125), // sin(100*(π/128))
|
||||
Q_8_8(0.61328125), // sin(101*(π/128))
|
||||
Q_8_8(0.59375), // sin(102*(π/128))
|
||||
Q_8_8(0.57421875), // sin(103*(π/128))
|
||||
Q_8_8(0.5546875), // sin(104*(π/128))
|
||||
Q_8_8(0.53125), // sin(105*(π/128))
|
||||
Q_8_8(0.51171875), // sin(106*(π/128))
|
||||
Q_8_8(0.4921875), // sin(107*(π/128))
|
||||
Q_8_8(0.46875), // sin(108*(π/128))
|
||||
Q_8_8(0.44921875), // sin(109*(π/128))
|
||||
Q_8_8(0.42578125), // sin(110*(π/128))
|
||||
Q_8_8(0.40234375), // sin(111*(π/128))
|
||||
Q_8_8(0.37890625), // sin(112*(π/128))
|
||||
Q_8_8(0.359375), // sin(113*(π/128))
|
||||
Q_8_8(0.3359375), // sin(114*(π/128))
|
||||
Q_8_8(0.3125), // sin(115*(π/128))
|
||||
Q_8_8(0.2890625), // sin(116*(π/128))
|
||||
Q_8_8(0.265625), // sin(117*(π/128))
|
||||
Q_8_8(0.2421875), // sin(118*(π/128))
|
||||
Q_8_8(0.21875), // sin(119*(π/128))
|
||||
Q_8_8(0.19140625), // sin(120*(π/128))
|
||||
Q_8_8(0.16796875), // sin(121*(π/128))
|
||||
Q_8_8(0.14453125), // sin(122*(π/128))
|
||||
Q_8_8(0.12109375), // sin(123*(π/128))
|
||||
Q_8_8(0.09765625), // sin(124*(π/128))
|
||||
Q_8_8(0.0703125), // sin(125*(π/128))
|
||||
Q_8_8(0.046875), // sin(126*(π/128))
|
||||
Q_8_8(0.0234375), // sin(127*(π/128))
|
||||
Q_8_8(0), // sin(128*(π/128))
|
||||
Q_8_8(-0.0234375), // sin(129*(π/128))
|
||||
Q_8_8(-0.046875), // sin(130*(π/128))
|
||||
Q_8_8(-0.0703125), // sin(131*(π/128))
|
||||
Q_8_8(-0.09765625), // sin(132*(π/128))
|
||||
Q_8_8(-0.12109375), // sin(133*(π/128))
|
||||
Q_8_8(-0.14453125), // sin(134*(π/128))
|
||||
Q_8_8(-0.16796875), // sin(135*(π/128))
|
||||
Q_8_8(-0.19140625), // sin(136*(π/128))
|
||||
Q_8_8(-0.21875), // sin(137*(π/128))
|
||||
Q_8_8(-0.2421875), // sin(138*(π/128))
|
||||
Q_8_8(-0.265625), // sin(139*(π/128))
|
||||
Q_8_8(-0.2890625), // sin(140*(π/128))
|
||||
Q_8_8(-0.3125), // sin(141*(π/128))
|
||||
Q_8_8(-0.3359375), // sin(142*(π/128))
|
||||
Q_8_8(-0.359375), // sin(143*(π/128))
|
||||
Q_8_8(-0.37890625), // sin(144*(π/128))
|
||||
Q_8_8(-0.40234375), // sin(145*(π/128))
|
||||
Q_8_8(-0.42578125), // sin(146*(π/128))
|
||||
Q_8_8(-0.44921875), // sin(147*(π/128))
|
||||
Q_8_8(-0.46875), // sin(148*(π/128))
|
||||
Q_8_8(-0.4921875), // sin(149*(π/128))
|
||||
Q_8_8(-0.51171875), // sin(150*(π/128))
|
||||
Q_8_8(-0.53125), // sin(151*(π/128))
|
||||
Q_8_8(-0.5546875), // sin(152*(π/128))
|
||||
Q_8_8(-0.57421875), // sin(153*(π/128))
|
||||
Q_8_8(-0.59375), // sin(154*(π/128))
|
||||
Q_8_8(-0.61328125), // sin(155*(π/128))
|
||||
Q_8_8(-0.6328125), // sin(156*(π/128))
|
||||
Q_8_8(-0.65234375), // sin(157*(π/128))
|
||||
Q_8_8(-0.66796875), // sin(158*(π/128))
|
||||
Q_8_8(-0.6875), // sin(159*(π/128))
|
||||
Q_8_8(-0.70703125), // sin(160*(π/128))
|
||||
Q_8_8(-0.72265625), // sin(161*(π/128))
|
||||
Q_8_8(-0.73828125), // sin(162*(π/128))
|
||||
Q_8_8(-0.75390625), // sin(163*(π/128))
|
||||
Q_8_8(-0.76953125), // sin(164*(π/128))
|
||||
Q_8_8(-0.78515625), // sin(165*(π/128))
|
||||
Q_8_8(-0.80078125), // sin(166*(π/128))
|
||||
Q_8_8(-0.81640625), // sin(167*(π/128))
|
||||
Q_8_8(-0.828125), // sin(168*(π/128))
|
||||
Q_8_8(-0.84375), // sin(169*(π/128))
|
||||
Q_8_8(-0.85546875), // sin(170*(π/128))
|
||||
Q_8_8(-0.8671875), // sin(171*(π/128))
|
||||
Q_8_8(-0.87890625), // sin(172*(π/128))
|
||||
Q_8_8(-0.890625), // sin(173*(π/128))
|
||||
Q_8_8(-0.90234375), // sin(174*(π/128))
|
||||
Q_8_8(-0.9140625), // sin(175*(π/128))
|
||||
Q_8_8(-0.921875), // sin(176*(π/128))
|
||||
Q_8_8(-0.9296875), // sin(177*(π/128))
|
||||
Q_8_8(-0.94140625), // sin(178*(π/128))
|
||||
Q_8_8(-0.94921875), // sin(179*(π/128))
|
||||
Q_8_8(-0.953125), // sin(180*(π/128))
|
||||
Q_8_8(-0.9609375), // sin(181*(π/128))
|
||||
Q_8_8(-0.96875), // sin(182*(π/128))
|
||||
Q_8_8(-0.97265625), // sin(183*(π/128))
|
||||
Q_8_8(-0.98046875), // sin(184*(π/128))
|
||||
Q_8_8(-0.984375), // sin(185*(π/128))
|
||||
Q_8_8(-0.98828125), // sin(186*(π/128))
|
||||
Q_8_8(-0.9921875), // sin(187*(π/128))
|
||||
Q_8_8(-0.9921875), // sin(188*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(189*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(190*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(191*(π/128))
|
||||
Q_8_8(-1), // sin(192*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(193*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(194*(π/128))
|
||||
Q_8_8(-0.99609375), // sin(195*(π/128))
|
||||
Q_8_8(-0.9921875), // sin(196*(π/128))
|
||||
Q_8_8(-0.9921875), // sin(197*(π/128))
|
||||
Q_8_8(-0.98828125), // sin(198*(π/128))
|
||||
Q_8_8(-0.984375), // sin(199*(π/128))
|
||||
Q_8_8(-0.98046875), // sin(200*(π/128))
|
||||
Q_8_8(-0.97265625), // sin(201*(π/128))
|
||||
Q_8_8(-0.96875), // sin(202*(π/128))
|
||||
Q_8_8(-0.9609375), // sin(203*(π/128))
|
||||
Q_8_8(-0.953125), // sin(204*(π/128))
|
||||
Q_8_8(-0.94921875), // sin(205*(π/128))
|
||||
Q_8_8(-0.94140625), // sin(206*(π/128))
|
||||
Q_8_8(-0.9296875), // sin(207*(π/128))
|
||||
Q_8_8(-0.921875), // sin(208*(π/128))
|
||||
Q_8_8(-0.9140625), // sin(209*(π/128))
|
||||
Q_8_8(-0.90234375), // sin(210*(π/128))
|
||||
Q_8_8(-0.890625), // sin(211*(π/128))
|
||||
Q_8_8(-0.87890625), // sin(212*(π/128))
|
||||
Q_8_8(-0.8671875), // sin(213*(π/128))
|
||||
Q_8_8(-0.85546875), // sin(214*(π/128))
|
||||
Q_8_8(-0.84375), // sin(215*(π/128))
|
||||
Q_8_8(-0.828125), // sin(216*(π/128))
|
||||
Q_8_8(-0.81640625), // sin(217*(π/128))
|
||||
Q_8_8(-0.80078125), // sin(218*(π/128))
|
||||
Q_8_8(-0.78515625), // sin(219*(π/128))
|
||||
Q_8_8(-0.76953125), // sin(220*(π/128))
|
||||
Q_8_8(-0.75390625), // sin(221*(π/128))
|
||||
Q_8_8(-0.73828125), // sin(222*(π/128))
|
||||
Q_8_8(-0.72265625), // sin(223*(π/128))
|
||||
Q_8_8(-0.70703125), // sin(224*(π/128))
|
||||
Q_8_8(-0.6875), // sin(225*(π/128))
|
||||
Q_8_8(-0.66796875), // sin(226*(π/128))
|
||||
Q_8_8(-0.65234375), // sin(227*(π/128))
|
||||
Q_8_8(-0.6328125), // sin(228*(π/128))
|
||||
Q_8_8(-0.61328125), // sin(229*(π/128))
|
||||
Q_8_8(-0.59375), // sin(230*(π/128))
|
||||
Q_8_8(-0.57421875), // sin(231*(π/128))
|
||||
Q_8_8(-0.5546875), // sin(232*(π/128))
|
||||
Q_8_8(-0.53125), // sin(233*(π/128))
|
||||
Q_8_8(-0.51171875), // sin(234*(π/128))
|
||||
Q_8_8(-0.4921875), // sin(235*(π/128))
|
||||
Q_8_8(-0.46875), // sin(236*(π/128))
|
||||
Q_8_8(-0.44921875), // sin(237*(π/128))
|
||||
Q_8_8(-0.42578125), // sin(238*(π/128))
|
||||
Q_8_8(-0.40234375), // sin(239*(π/128))
|
||||
Q_8_8(-0.37890625), // sin(240*(π/128))
|
||||
Q_8_8(-0.359375), // sin(241*(π/128))
|
||||
Q_8_8(-0.3359375), // sin(242*(π/128))
|
||||
Q_8_8(-0.3125), // sin(243*(π/128))
|
||||
Q_8_8(-0.2890625), // sin(244*(π/128))
|
||||
Q_8_8(-0.265625), // sin(245*(π/128))
|
||||
Q_8_8(-0.2421875), // sin(246*(π/128))
|
||||
Q_8_8(-0.21875), // sin(247*(π/128))
|
||||
Q_8_8(-0.19140625), // sin(248*(π/128))
|
||||
Q_8_8(-0.16796875), // sin(249*(π/128))
|
||||
Q_8_8(-0.14453125), // sin(250*(π/128))
|
||||
Q_8_8(-0.12109375), // sin(251*(π/128))
|
||||
Q_8_8(-0.09765625), // sin(252*(π/128))
|
||||
Q_8_8(-0.0703125), // sin(253*(π/128))
|
||||
Q_8_8(-0.046875), // sin(254*(π/128))
|
||||
Q_8_8(-0.0234375), // sin(255*(π/128))
|
||||
Q_8_8(0), // sin(256*(π/128))
|
||||
Q_8_8(0.0234375), // sin(257*(π/128))
|
||||
Q_8_8(0.046875), // sin(258*(π/128))
|
||||
Q_8_8(0.0703125), // sin(259*(π/128))
|
||||
Q_8_8(0.09765625), // sin(260*(π/128))
|
||||
Q_8_8(0.12109375), // sin(261*(π/128))
|
||||
Q_8_8(0.14453125), // sin(262*(π/128))
|
||||
Q_8_8(0.16796875), // sin(263*(π/128))
|
||||
Q_8_8(0.19140625), // sin(264*(π/128))
|
||||
Q_8_8(0.21875), // sin(265*(π/128))
|
||||
Q_8_8(0.2421875), // sin(266*(π/128))
|
||||
Q_8_8(0.265625), // sin(267*(π/128))
|
||||
Q_8_8(0.2890625), // sin(268*(π/128))
|
||||
Q_8_8(0.3125), // sin(269*(π/128))
|
||||
Q_8_8(0.3359375), // sin(270*(π/128))
|
||||
Q_8_8(0.359375), // sin(271*(π/128))
|
||||
Q_8_8(0.37890625), // sin(272*(π/128))
|
||||
Q_8_8(0.40234375), // sin(273*(π/128))
|
||||
Q_8_8(0.42578125), // sin(274*(π/128))
|
||||
Q_8_8(0.44921875), // sin(275*(π/128))
|
||||
Q_8_8(0.46875), // sin(276*(π/128))
|
||||
Q_8_8(0.4921875), // sin(277*(π/128))
|
||||
Q_8_8(0.51171875), // sin(278*(π/128))
|
||||
Q_8_8(0.53125), // sin(279*(π/128))
|
||||
Q_8_8(0.5546875), // sin(280*(π/128))
|
||||
Q_8_8(0.57421875), // sin(281*(π/128))
|
||||
Q_8_8(0.59375), // sin(282*(π/128))
|
||||
Q_8_8(0.61328125), // sin(283*(π/128))
|
||||
Q_8_8(0.6328125), // sin(284*(π/128))
|
||||
Q_8_8(0.65234375), // sin(285*(π/128))
|
||||
Q_8_8(0.66796875), // sin(286*(π/128))
|
||||
Q_8_8(0.6875), // sin(287*(π/128))
|
||||
Q_8_8(0.70703125), // sin(288*(π/128))
|
||||
Q_8_8(0.72265625), // sin(289*(π/128))
|
||||
Q_8_8(0.73828125), // sin(290*(π/128))
|
||||
Q_8_8(0.75390625), // sin(291*(π/128))
|
||||
Q_8_8(0.76953125), // sin(292*(π/128))
|
||||
Q_8_8(0.78515625), // sin(293*(π/128))
|
||||
Q_8_8(0.80078125), // sin(294*(π/128))
|
||||
Q_8_8(0.81640625), // sin(295*(π/128))
|
||||
Q_8_8(0.828125), // sin(296*(π/128))
|
||||
Q_8_8(0.84375), // sin(297*(π/128))
|
||||
Q_8_8(0.85546875), // sin(298*(π/128))
|
||||
Q_8_8(0.8671875), // sin(299*(π/128))
|
||||
Q_8_8(0.87890625), // sin(300*(π/128))
|
||||
Q_8_8(0.890625), // sin(301*(π/128))
|
||||
Q_8_8(0.90234375), // sin(302*(π/128))
|
||||
Q_8_8(0.9140625), // sin(303*(π/128))
|
||||
Q_8_8(0.921875), // sin(304*(π/128))
|
||||
Q_8_8(0.9296875), // sin(305*(π/128))
|
||||
Q_8_8(0.94140625), // sin(306*(π/128))
|
||||
Q_8_8(0.94921875), // sin(307*(π/128))
|
||||
Q_8_8(0.953125), // sin(308*(π/128))
|
||||
Q_8_8(0.9609375), // sin(309*(π/128))
|
||||
Q_8_8(0.96875), // sin(310*(π/128))
|
||||
Q_8_8(0.97265625), // sin(311*(π/128))
|
||||
Q_8_8(0.98046875), // sin(312*(π/128))
|
||||
Q_8_8(0.984375), // sin(313*(π/128))
|
||||
Q_8_8(0.98828125), // sin(314*(π/128))
|
||||
Q_8_8(0.9921875), // sin(315*(π/128))
|
||||
Q_8_8(0.9921875), // sin(316*(π/128))
|
||||
Q_8_8(0.99609375), // sin(317*(π/128))
|
||||
Q_8_8(0.99609375), // sin(318*(π/128))
|
||||
Q_8_8(0.99609375), // sin(319*(π/128))
|
||||
const u8 gUnk_08114F58[] = {
|
||||
0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 0, 0,
|
||||
};
|
||||
|
||||
const u8 gEntityOnTopArray[] = { 0, 0, 1, 2, 3, 4, 5, 6 };
|
||||
const u8 gEntityBelowArray[] = { 1, 2, 3, 4, 5, 6, 7, 7 };
|
||||
|
||||
Reference in New Issue
Block a user