mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-26 22:40:33 +00:00
TT_000 PSP more functions (#1148)
More PSP matches and a lot of fixes on types and symbols from the PSX counterpart. I am very happy with the results so far. `func_80173F74` has some weird `#ifdef VERSION_PSP` I cannot remove. Any help will be very welcomed.
This commit is contained in:
parent
c6e1f2517e
commit
bbdc1b31f0
@ -44,8 +44,11 @@ D_80170720 = 0x092EC9E8;
|
||||
g_Events = 0x092ECA28;
|
||||
g_EventQueue = 0x092ed358;
|
||||
g_ServantDesc = 0x092ED360;
|
||||
D_801748D8 = 0x092ED480;
|
||||
g_CurrentServant = 0x092ed808;
|
||||
g_CurrentRoomX = 0x092ed810;
|
||||
g_CurrentRoomY = 0x092ed818;
|
||||
D_80174D3C = 0x092ed828;
|
||||
D_80174D40 = 0x092ED820;
|
||||
D_80174D3C = 0x092ED828;
|
||||
D_80174C3C = 0x092ED830;
|
||||
D_80174C30 = 0x092ed930;
|
||||
|
@ -16,6 +16,7 @@ g_api_FreePrimitives = 0x091cf778;
|
||||
g_api_AllocPrimitives = 0x091cf77c;
|
||||
g_api_PlaySfx = 0x091cf7a0;
|
||||
g_api_func_8011A3AC = 0x091cf838;
|
||||
g_PrimBuf = 0x091CFAF8;
|
||||
D_8003C708 = 0x091e1308;
|
||||
g_Tilemap = 0x091e1628;
|
||||
g_Tilemap_tileDef = 0x091e162C;
|
||||
|
@ -1,6 +1,7 @@
|
||||
g_StageId = 0x091CE5B8;
|
||||
g_Player = 0x091CF030;
|
||||
g_api = 0x091CF738;
|
||||
g_PrimBuf = 0x091CFAF8;
|
||||
D_8003C708 = 0x091E1308;
|
||||
g_Tilemap = 0x091E1628;
|
||||
g_Entities = 0x091E1680;
|
||||
|
@ -1030,10 +1030,10 @@ typedef struct {
|
||||
/* 0x06 */ s16 height;
|
||||
/* 0x08 */ s16 clut;
|
||||
/* 0x0A */ s16 tpage;
|
||||
/* 0x0C */ u8 texLeft, dummyLeft;
|
||||
/* 0x0E */ u8 texTop, dummyTop;
|
||||
/* 0x10 */ u8 texRight, dummyRight;
|
||||
/* 0x12 */ u8 texBottom, dummyBottom;
|
||||
/* 0x0C */ s16 texLeft;
|
||||
/* 0x0E */ s16 texTop;
|
||||
/* 0x10 */ s16 texRight;
|
||||
/* 0x12 */ s16 texBottom;
|
||||
} Sprite; /* size=0x14 */
|
||||
|
||||
typedef struct {
|
||||
@ -1330,7 +1330,7 @@ typedef struct {
|
||||
/* 8003C86C */ void (*func_800F1FC4)(s32 arg0);
|
||||
/* 8003C870 */ void (*func_800F2288)(s32 arg0);
|
||||
/* 8003C874 */ void (*func_8011A3AC)(
|
||||
Entity* entity, s32 arg1, s32 arg2, Unkstruct_8011A3AC* arg3);
|
||||
Entity* entity, s32 spellId, s32 arg2, FamiliarStats* out);
|
||||
/* 8003C878 */ s32 (*func_800FF460)(s32 arg0);
|
||||
/* 8003C87C */ s32 (*func_800FF494)(EnemyDef* arg0);
|
||||
/* 8003C880 */ bool (*CdSoundCommandQueueEmpty)(void);
|
||||
@ -1404,7 +1404,7 @@ extern void (*g_api_func_8010BF64)(Unkstruct_8010BF64* arg0);
|
||||
extern void (*g_api_func_800F1FC4)(s32 arg0);
|
||||
extern void (*g_api_func_800F2288)(s32 arg0);
|
||||
extern void (*g_api_func_8011A3AC)(
|
||||
Entity* entity, s32 arg1, s32 arg2, Unkstruct_8011A3AC* arg3);
|
||||
Entity* entity, s32 spellId, s32 arg2, FamiliarStats* out);
|
||||
extern s32 (*g_api_func_800FF460)(s32 arg0);
|
||||
extern s32 (*g_api_func_800FF494)(EnemyDef* arg0);
|
||||
extern bool (*g_api_CdSoundCommandQueueEmpty)(void);
|
||||
@ -1704,7 +1704,6 @@ extern PlayerStatus g_Status;
|
||||
extern u8 D_80097B9C[];
|
||||
extern s32 subWeapon; // g_SubweaponId
|
||||
extern u8 g_SaveName[12] ALIGNED4;
|
||||
extern Unkstruct_8011A3AC D_80097C38[];
|
||||
extern u32 D_80097C40[];
|
||||
extern s32 D_80097C98;
|
||||
extern PlayerDraw g_PlayerDraw[0x10];
|
||||
|
@ -20,7 +20,11 @@ typedef enum {
|
||||
#define PLAYER g_Entities[PLAYER_CHARACTER]
|
||||
|
||||
#define SQ(x) ((x) * (x))
|
||||
#ifndef VERSION_PSP
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
#else
|
||||
#define ABS abs
|
||||
#endif
|
||||
#define ABS_ALT(x) ((x) >= 0 ? (x) : -(x))
|
||||
#define MIN(a, b) (a > b ? b : a)
|
||||
#define DECR(x) ((x) == 0 ? 0 : --(x))
|
||||
|
@ -9,7 +9,7 @@
|
||||
#define blendMode drawMode // maintained to easily migrate existing scratches
|
||||
typedef struct Primitive {
|
||||
/* 0x00 */ struct Primitive* next;
|
||||
#ifdef VERSION_PC
|
||||
#if defined(VERSION_PC) || defined(VERSION_PSP)
|
||||
u_long dummy;
|
||||
#endif
|
||||
/* 0x04 */ u8 r0;
|
||||
|
@ -53,11 +53,11 @@ typedef struct ServantEvent {
|
||||
extern ServantDesc g_ServantDesc;
|
||||
extern SpriteParts* D_80170040[];
|
||||
extern u16 D_80170448[];
|
||||
extern s32 D_801704A8[];
|
||||
extern s32 D_80170514[];
|
||||
extern s32 D_8017054C[];
|
||||
extern s32 D_801705EC[];
|
||||
extern s32* D_801705F4[];
|
||||
extern AnimationFrame D_801704A8[];
|
||||
extern AnimationFrame D_80170514[];
|
||||
extern AnimationFrame D_8017054C[];
|
||||
extern AnimationFrame D_801705EC[];
|
||||
extern AnimationFrame* D_801705F4[];
|
||||
extern Sprite D_80170608[];
|
||||
extern s32 D_80170658[][5];
|
||||
extern u16 D_80170720[];
|
||||
|
@ -95,12 +95,6 @@ typedef struct {
|
||||
/* 0x0C */ s32 unkC;
|
||||
} Unkstruct_800EA5E4;
|
||||
|
||||
typedef struct {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
} Unkstruct_8011A3AC;
|
||||
|
||||
typedef struct {
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
|
@ -1607,21 +1607,21 @@ void func_8011A328(Entity* entity, s32 arg1) {
|
||||
func_80118894(entity);
|
||||
}
|
||||
|
||||
void func_8011A3AC(Entity* arg0, s32 arg1, s32 arg2, Unkstruct_8011A3AC* arg3) {
|
||||
void func_8011A3AC(Entity* entity, s32 spellId, s32 arg2, FamiliarStats* out) {
|
||||
SpellDef spell;
|
||||
|
||||
*arg3 = D_80097C38[g_Servant];
|
||||
*out = g_Status.statsFamiliars[g_Servant - 1];
|
||||
if (arg2 != 0) {
|
||||
func_800FD9D4(&spell, arg1);
|
||||
arg0->attack = spell.attack;
|
||||
arg0->attackElement = spell.attackElement;
|
||||
arg0->hitboxState = spell.hitboxState;
|
||||
arg0->nFramesInvincibility = spell.nFramesInvincibility;
|
||||
arg0->stunFrames = spell.stunFrames;
|
||||
arg0->hitEffect = spell.hitEffect;
|
||||
arg0->entityRoomIndex = spell.entityRoomIndex;
|
||||
arg0->attack = spell.attack * ((arg3->unk0 * 4 / 95) + 1);
|
||||
func_80118894(arg0);
|
||||
func_800FD9D4(&spell, spellId);
|
||||
entity->attack = spell.attack;
|
||||
entity->attackElement = spell.attackElement;
|
||||
entity->hitboxState = spell.hitboxState;
|
||||
entity->nFramesInvincibility = spell.nFramesInvincibility;
|
||||
entity->stunFrames = spell.stunFrames;
|
||||
entity->hitEffect = spell.hitEffect;
|
||||
entity->entityRoomIndex = spell.entityRoomIndex;
|
||||
entity->attack = spell.attack * ((out->level * 4 / 95) + 1);
|
||||
func_80118894(entity);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -909,8 +909,7 @@ void func_80115C50(void);
|
||||
void func_80118894(Entity*);
|
||||
|
||||
void func_80118C28(s32 arg0);
|
||||
void func_8011A3AC(
|
||||
Entity* entity, s32 arg1, s32 arg2, Unkstruct_8011A3AC* arg3);
|
||||
void func_8011A3AC(Entity* entity, s32 spellId, s32 arg2, FamiliarStats* out);
|
||||
Entity* CreateEntFactoryFromEntity(Entity* entity, u32, s32);
|
||||
|
||||
// Forward declarations for all the entity updating functions
|
||||
|
@ -53,7 +53,7 @@ u32 CheckEquipmentItemCount(u32 itemId, u32 equipType);
|
||||
void func_8010BF64(Unkstruct_8010BF64* arg0);
|
||||
void func_800F1FC4(s32 arg0);
|
||||
void func_800F2288(void); // unknown signature
|
||||
void func_8011A3AC(Entity* arg0, s32 arg1, s32 arg2, Unkstruct_8011A3AC* arg3);
|
||||
void func_8011A3AC(Entity* entity, s32 spellId, s32 arg2, FamiliarStats* out);
|
||||
s32 func_800FF460(s32 arg0);
|
||||
s32 func_800FF494(EnemyDef* arg0);
|
||||
bool CdSoundCommandQueueEmpty(void);
|
||||
|
@ -35,7 +35,7 @@ s16 D_80174BCC[16];
|
||||
s16 D_80174BEC[16];
|
||||
s16 D_80174C0C[16];
|
||||
s32 D_80174C2C;
|
||||
Unkstruct_8011A3AC D_80174C30;
|
||||
FamiliarStats D_80174C30;
|
||||
Point16 D_80174C3C[4][16];
|
||||
s32 D_80174D3C;
|
||||
s32 D_80174D40;
|
||||
@ -68,6 +68,10 @@ ServantDesc g_ServantDesc = {
|
||||
|
||||
#ifdef VERSION_PSP
|
||||
extern s32 D_80174D3C;
|
||||
extern FamiliarStats D_80174C30;
|
||||
extern Point16 D_80174C3C[4][16];
|
||||
extern s32 D_801748D8[0x80];
|
||||
extern s32 D_80174D40;
|
||||
void DestroyEntity(Entity* entity);
|
||||
#endif
|
||||
|
||||
@ -96,7 +100,7 @@ Entity* func_8017110C(Entity* self) {
|
||||
e = &g_Entities[STAGE_ENTITY_START];
|
||||
for (i = 0; i < EntitySearchCount; i++, e++) {
|
||||
D_801748D8[i] = 0;
|
||||
if (e->entityId == 0) {
|
||||
if (!e->entityId) {
|
||||
continue;
|
||||
}
|
||||
if (e->hitboxState == 0) {
|
||||
@ -105,12 +109,11 @@ Entity* func_8017110C(Entity* self) {
|
||||
if (e->flags & FLAG_UNK_00200000) {
|
||||
continue;
|
||||
}
|
||||
|
||||
entityX = e->posX.i.hi;
|
||||
if (entityX < -0x10) {
|
||||
if (e->posX.i.hi < -0x10) {
|
||||
continue;
|
||||
}
|
||||
if (entityX > 0x110) {
|
||||
if (e->posX.i.hi > 0x110) {
|
||||
continue;
|
||||
}
|
||||
if (e->posY.i.hi > 0xF0) {
|
||||
@ -119,7 +122,7 @@ Entity* func_8017110C(Entity* self) {
|
||||
if (e->posY.i.hi < 0) {
|
||||
continue;
|
||||
}
|
||||
if (e->hitboxState & 8 && D_80170658[D_80174C30.unk0 / 10][4] == 0) {
|
||||
if (e->hitboxState & 8 && !D_80170658[D_80174C30.level / 10][4]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -145,20 +148,21 @@ Entity* func_8017110C(Entity* self) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(e->flags & FLAG_UNK_80000)) {
|
||||
if (e->flags & FLAG_UNK_80000) {
|
||||
if (e->hitPoints >= D_80170658[D_80174C30.level / 10][3]) {
|
||||
found++;
|
||||
D_801748D8[i] = 1;
|
||||
}
|
||||
} else {
|
||||
e->flags |= FLAG_UNK_80000;
|
||||
return e;
|
||||
}
|
||||
if (e->hitPoints >= D_80170658[D_80174C30.unk0 / 10][3]) {
|
||||
found++;
|
||||
D_801748D8[i] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (found > 0) {
|
||||
foundIndex = D_80174D40 % EntitySearchCount;
|
||||
for (i = 0; i < 0x80; i++) {
|
||||
if (D_801748D8[foundIndex] != 0) {
|
||||
if (D_801748D8[foundIndex]) {
|
||||
e = &g_Entities[STAGE_ENTITY_START + foundIndex];
|
||||
D_80174D40 = (foundIndex + 1) % EntitySearchCount;
|
||||
return e;
|
||||
@ -266,9 +270,6 @@ void func_8017160C(s32 amount, s32 entityId) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef VERSION_PSP
|
||||
INCLUDE_ASM("servant/tt_000/nonmatchings/10E8", func_8017170C);
|
||||
#else
|
||||
void func_8017170C(Entity* entity, s32 frameIndex) {
|
||||
Primitive* prim;
|
||||
s32 tpage;
|
||||
@ -282,7 +283,7 @@ void func_8017170C(Entity* entity, s32 frameIndex) {
|
||||
return;
|
||||
}
|
||||
index = frameIndex - 1;
|
||||
if (entity->facingLeft != 0) {
|
||||
if (entity->facingLeft) {
|
||||
x = entity->posX.i.hi + 2;
|
||||
} else {
|
||||
x = entity->posX.i.hi - 16;
|
||||
@ -294,11 +295,7 @@ void func_8017170C(Entity* entity, s32 frameIndex) {
|
||||
prim->x1 = prim->x3 = prim->x0 + D_80170608[index].width;
|
||||
prim->y2 = prim->y3 = prim->y0 + D_80170608[index].height;
|
||||
prim->clut = D_80170608[index].clut;
|
||||
tpage = D_80170608[index].tpage;
|
||||
if (tpage < 0) {
|
||||
tpage += 3;
|
||||
}
|
||||
prim->tpage = tpage >> 2;
|
||||
prim->tpage = D_80170608[index].tpage / 4;
|
||||
prim->u0 = prim->u2 = D_80170608[index].texLeft;
|
||||
prim->v0 = prim->v1 = D_80170608[index].texTop;
|
||||
prim->u1 = prim->u3 = D_80170608[index].texRight;
|
||||
@ -306,11 +303,7 @@ void func_8017170C(Entity* entity, s32 frameIndex) {
|
||||
prim->priority = entity->zPriority + 1;
|
||||
prim->drawMode = 0x102;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VERSION_PSP
|
||||
INCLUDE_ASM("servant/tt_000/nonmatchings/10E8", func_801718A0);
|
||||
#else
|
||||
void func_801718A0(Entity* entity) {
|
||||
Primitive* prim;
|
||||
s32 frame;
|
||||
@ -318,7 +311,7 @@ void func_801718A0(Entity* entity) {
|
||||
s32 x;
|
||||
|
||||
frame = 2;
|
||||
if (entity->facingLeft != 0) {
|
||||
if (entity->facingLeft) {
|
||||
x = entity->posX.i.hi + 2;
|
||||
} else {
|
||||
x = entity->posX.i.hi - 16;
|
||||
@ -334,17 +327,13 @@ void func_801718A0(Entity* entity) {
|
||||
prim->x1 = prim->x3 = prim->x0 + D_80170608[frame].width;
|
||||
prim->y2 = prim->y3 = prim->y0 + D_80170608[frame].height;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VERSION_PSP
|
||||
INCLUDE_ASM("servant/tt_000/nonmatchings/10E8", func_801719E0);
|
||||
#else
|
||||
void func_801719E0(Entity* self) {
|
||||
s32 i;
|
||||
|
||||
if (self->ext.bat.unk80 == 0) {
|
||||
self->ext.bat.unk8E = 0;
|
||||
if (!self->ext.bat.unk80) {
|
||||
self->ext.bat.unk82 = self->params;
|
||||
self->ext.bat.unk8E = 0;
|
||||
switch (self->entityId) {
|
||||
case 0xD1:
|
||||
self->primIndex = g_api.AllocPrimitives(PRIM_GT4, 1);
|
||||
@ -355,7 +344,7 @@ void func_801719E0(Entity* self) {
|
||||
func_8017170C(self, 0);
|
||||
self->flags = FLAG_UNK_08000000 | FLAG_UNK_04000000 |
|
||||
FLAG_HAS_PRIMS | FLAG_UNK_20000;
|
||||
func_801710E8(self, &D_801704A8);
|
||||
func_801710E8(self, D_801704A8);
|
||||
self->ext.bat.unk84 = rand() % 4096;
|
||||
self->ext.bat.unk86 = 0;
|
||||
self->ext.bat.unk88 = 0xC;
|
||||
@ -372,8 +361,8 @@ void func_801719E0(Entity* self) {
|
||||
func_8017170C(self, 0);
|
||||
self->flags = FLAG_UNK_08000000 | FLAG_UNK_04000000 |
|
||||
FLAG_UNK_02000000 | FLAG_HAS_PRIMS | FLAG_UNK_20000;
|
||||
func_801710E8(self, &D_801704A8);
|
||||
if (self->ext.bat.unk82 == 0) {
|
||||
func_801710E8(self, D_801704A8);
|
||||
if (!self->ext.bat.unk82) {
|
||||
self->ext.bat.follow = &PLAYER;
|
||||
} else {
|
||||
self->ext.bat.follow = &g_Entities[3 + self->ext.bat.unk82];
|
||||
@ -381,7 +370,7 @@ void func_801719E0(Entity* self) {
|
||||
self->ext.bat.cameraX = g_Tilemap.scrollX.i.hi;
|
||||
self->ext.bat.cameraY = g_Tilemap.scrollY.i.hi;
|
||||
|
||||
if (self->ext.bat.unk82 == 0) {
|
||||
if (!self->ext.bat.unk82) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
D_80174C3C[self->ext.bat.unk82][i].x =
|
||||
self->ext.bat.follow->posX.i.hi + self->ext.bat.cameraX;
|
||||
@ -418,15 +407,15 @@ void func_801719E0(Entity* self) {
|
||||
case 0xD1:
|
||||
self->flags = FLAG_UNK_08000000 | FLAG_UNK_04000000 |
|
||||
FLAG_HAS_PRIMS | FLAG_UNK_20000;
|
||||
func_801710E8(self, &D_801704A8);
|
||||
func_801710E8(self, D_801704A8);
|
||||
self->ext.bat.unk8C = rand() % 4096;
|
||||
self->step++;
|
||||
break;
|
||||
case 0xD2:
|
||||
self->flags = FLAG_UNK_08000000 | FLAG_UNK_04000000 |
|
||||
FLAG_UNK_02000000 | FLAG_HAS_PRIMS | FLAG_UNK_20000;
|
||||
func_801710E8(self, &D_801704A8);
|
||||
if (self->ext.bat.unk82 == 0) {
|
||||
func_801710E8(self, D_801704A8);
|
||||
if (!self->ext.bat.unk82) {
|
||||
self->ext.bat.follow = &PLAYER;
|
||||
} else {
|
||||
self->ext.bat.follow = &g_Entities[3 + self->ext.bat.unk82];
|
||||
@ -455,7 +444,6 @@ void func_801719E0(Entity* self) {
|
||||
self->ext.bat.unk80 = self->entityId;
|
||||
g_api.func_8011A3AC(self, 0, 0, &D_80174C30);
|
||||
}
|
||||
#endif
|
||||
|
||||
void func_80171ED4(s32 arg0) {
|
||||
u16* dst;
|
||||
@ -671,7 +659,7 @@ void func_80172120(Entity* self) {
|
||||
func_801710E8(self, D_8017054C);
|
||||
}
|
||||
self->ext.bat.unk8C++;
|
||||
if (D_80170658[D_80174C30.unk0 / 10][0] <
|
||||
if (D_80170658[D_80174C30.level / 10][0] <
|
||||
self->ext.bat.unk8C) {
|
||||
self->ext.bat.unk8C = 0;
|
||||
self->ext.bat.target = func_8017110C(self);
|
||||
@ -697,7 +685,7 @@ void func_80172120(Entity* self) {
|
||||
D_80174B20 = self->ext.bat.target->posY.i.hi;
|
||||
self->hitboxWidth = 5;
|
||||
self->hitboxHeight = 5;
|
||||
g_api.func_8011A3AC(self, 0xF, 1, &D_80174C30);
|
||||
g_api.func_8011A3AC(self, 15, 1, &D_80174C30);
|
||||
self->ext.bat.unk86 = 0xC00;
|
||||
func_801710E8(self, D_801705EC);
|
||||
func_80171568(self);
|
||||
@ -709,7 +697,7 @@ void func_80172120(Entity* self) {
|
||||
D_80174B20 = self->ext.bat.target->posY.i.hi;
|
||||
D_80174B0C = func_80173F30(self, (s16)D_80174B1C, (s16)D_80174B20);
|
||||
D_80174B10 = func_80173F74(D_80174B0C, self->ext.bat.unk86,
|
||||
(s16)D_80170658[D_80174C30.unk0 / 10][1]);
|
||||
(s16)D_80170658[D_80174C30.level / 10][1]);
|
||||
self->ext.bat.unk86 = D_80174B10;
|
||||
self->velocityX = rcos(D_80174B10) << 6;
|
||||
self->velocityY = -(rsin(D_80174B10) << 6);
|
||||
@ -793,7 +781,7 @@ void func_80172C30(Entity* self) {
|
||||
case 0:
|
||||
func_801719E0(self);
|
||||
if (self->ext.bat.unk82 == 0) {
|
||||
func_8017160C(D_80170658[D_80174C30.unk0 / 10][2], 0xD2);
|
||||
func_8017160C(D_80170658[D_80174C30.level / 10][2], 0xD2);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
@ -1145,43 +1133,44 @@ Entity* func_80173EB0(s32 rangeIndex, s32 entityId) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef VERSION_PSP
|
||||
INCLUDE_ASM("servant/tt_000/nonmatchings/10E8", func_80173F30);
|
||||
#else
|
||||
s32 func_80173F30(Entity* entity, s16 x, s16 y) {
|
||||
s16 diffx = x - entity->posX.i.hi;
|
||||
return ratan2(-(s16)(y - entity->posY.i.hi), diffx) & 0xFFF;
|
||||
s16 func_80173F30(Entity* entity, s16 x, s16 y) {
|
||||
s16 angle;
|
||||
s16 diffy;
|
||||
s16 diffx;
|
||||
|
||||
diffx = x - entity->posX.i.hi;
|
||||
diffy = y - entity->posY.i.hi;
|
||||
angle = ratan2(-diffy, diffx) & 0xFFF;
|
||||
|
||||
return angle;
|
||||
}
|
||||
#endif
|
||||
|
||||
s16 func_80173F74(s16 x1, s16 x2, s16 minDistance) {
|
||||
#ifdef VERSION_PSP
|
||||
INCLUDE_ASM("servant/tt_000/nonmatchings/10E8", func_80173F74);
|
||||
s16 diff = ABS(x2 - x1);
|
||||
#else
|
||||
s16 func_80173F74(s16 arg0, s16 arg1, s16 arg2) {
|
||||
s32 diffTmp = arg1 - arg0;
|
||||
s32 diffTmp = x2 - x1;
|
||||
s16 diff = ABS(diffTmp);
|
||||
s16 res;
|
||||
|
||||
if (arg2 > diff) {
|
||||
arg2 = diff;
|
||||
#endif
|
||||
if (minDistance > diff) {
|
||||
minDistance = diff;
|
||||
}
|
||||
|
||||
if (arg1 < arg0) {
|
||||
if (x2 < x1) {
|
||||
if (diff < 0x800) {
|
||||
res = arg1 + arg2;
|
||||
x2 += minDistance;
|
||||
} else {
|
||||
res = arg1 - arg2;
|
||||
x2 -= minDistance;
|
||||
}
|
||||
} else {
|
||||
if (diff < 0x800) {
|
||||
res = arg1 - arg2;
|
||||
x2 -= minDistance;
|
||||
} else {
|
||||
res = arg1 + arg2;
|
||||
x2 += minDistance;
|
||||
}
|
||||
}
|
||||
return res & 0xFFF;
|
||||
return x2 & 0xFFF;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef VERSION_PSP
|
||||
s32 func_80173FE8(Entity* entity, s32 x, s32 y) {
|
||||
|
@ -1,104 +1,104 @@
|
||||
#include "common.h"
|
||||
#include <game.h>
|
||||
|
||||
s32 D_801704A8[] = {
|
||||
/* 801704A8 */ 0x04150004,
|
||||
/* 801704AC */ 0x04160001,
|
||||
/* 801704B0 */ 0x04170001,
|
||||
/* 801704B4 */ 0x041E0001,
|
||||
/* 801704B8 */ 0x04180001,
|
||||
/* 801704BC */ 0x04190001,
|
||||
/* 801704C0 */ 0x041A0004,
|
||||
/* 801704C4 */ 0x041B0002,
|
||||
/* 801704C8 */ 0x041C0002,
|
||||
/* 801704CC */ 0x041D0002,
|
||||
/* 801704D0 */ 0x041E0001,
|
||||
/* 801704D4 */ 0x04170002,
|
||||
/* 801704D8 */ 0x04160002,
|
||||
/* 801704DC */ 0x00000000,
|
||||
AnimationFrame D_801704A8[] = {
|
||||
/* 801704A8 */ {4, 0x0415},
|
||||
/* 801704AC */ {1, 0x0416},
|
||||
/* 801704B0 */ {1, 0x0417},
|
||||
/* 801704B4 */ {1, 0x041E},
|
||||
/* 801704B8 */ {1, 0x0418},
|
||||
/* 801704BC */ {1, 0x0419},
|
||||
/* 801704C0 */ {4, 0x041A},
|
||||
/* 801704C4 */ {2, 0x041B},
|
||||
/* 801704C8 */ {2, 0x041C},
|
||||
/* 801704CC */ {2, 0x041D},
|
||||
/* 801704D0 */ {1, 0x041E},
|
||||
/* 801704D4 */ {2, 0x0417},
|
||||
/* 801704D8 */ {2, 0x0416},
|
||||
/* 801704DC */ {0, 0x0000},
|
||||
};
|
||||
|
||||
s32 D_801704E0[] = {
|
||||
/* 801704E0 */ 0x041F0005,
|
||||
/* 801704E4 */ 0x04200005,
|
||||
/* 801704E8 */ 0x041F0005,
|
||||
/* 801704EC */ 0x04200005,
|
||||
/* 801704F0 */ 0x041F0005,
|
||||
/* 801704F4 */ 0x04200005,
|
||||
/* 801704F8 */ 0x041F0004,
|
||||
/* 801704FC */ 0x04200004,
|
||||
/* 80170500 */ 0x041F0003,
|
||||
/* 80170504 */ 0x04200003,
|
||||
/* 80170508 */ 0x041F0002,
|
||||
/* 8017050C */ 0x04200010,
|
||||
/* 80170510 */ 0x00000000,
|
||||
AnimationFrame D_801704E0[] = {
|
||||
/* 801704E0 */ {5, 0x041F},
|
||||
/* 801704E4 */ {5, 0x0420},
|
||||
/* 801704E8 */ {5, 0x041F},
|
||||
/* 801704EC */ {5, 0x0420},
|
||||
/* 801704F0 */ {5, 0x041F},
|
||||
/* 801704F4 */ {5, 0x0420},
|
||||
/* 801704F8 */ {4, 0x041F},
|
||||
/* 801704FC */ {4, 0x0420},
|
||||
/* 80170500 */ {3, 0x041F},
|
||||
/* 80170504 */ {3, 0x0420},
|
||||
/* 80170508 */ {2, 0x041F},
|
||||
/* 8017050C */ {16, 0x0420},
|
||||
/* 80170510 */ {0, 0x0000},
|
||||
};
|
||||
|
||||
s32 D_80170514[] = {
|
||||
/* 80170514 */ 0x04150001,
|
||||
/* 80170518 */ 0x04160001,
|
||||
/* 8017051C */ 0x04170001,
|
||||
/* 80170520 */ 0x041E0001,
|
||||
/* 80170524 */ 0x04180001,
|
||||
/* 80170528 */ 0x04190001,
|
||||
/* 8017052C */ 0x041A0001,
|
||||
/* 80170530 */ 0x041B0001,
|
||||
/* 80170534 */ 0x041C0001,
|
||||
/* 80170538 */ 0x041D0001,
|
||||
/* 8017053C */ 0x041E0001,
|
||||
/* 80170540 */ 0x04170001,
|
||||
/* 80170544 */ 0x04160001,
|
||||
/* 80170548 */ 0x00000000,
|
||||
AnimationFrame D_80170514[] = {
|
||||
/* 80170514 */ {1, 0x0415},
|
||||
/* 80170518 */ {1, 0x0416},
|
||||
/* 8017051C */ {1, 0x0417},
|
||||
/* 80170520 */ {1, 0x041E},
|
||||
/* 80170524 */ {1, 0x0418},
|
||||
/* 80170528 */ {1, 0x0419},
|
||||
/* 8017052C */ {1, 0x041A},
|
||||
/* 80170530 */ {1, 0x041B},
|
||||
/* 80170534 */ {1, 0x041C},
|
||||
/* 80170538 */ {1, 0x041D},
|
||||
/* 8017053C */ {1, 0x041E},
|
||||
/* 80170540 */ {1, 0x0417},
|
||||
/* 80170544 */ {1, 0x0416},
|
||||
/* 80170548 */ {0, 0x0000},
|
||||
};
|
||||
|
||||
s32 D_8017054C[] = {
|
||||
/* 8017054C */ 0x04150001,
|
||||
/* 80170550 */ 0x04160001,
|
||||
/* 80170554 */ 0x04170001,
|
||||
/* 80170558 */ 0x041E0001,
|
||||
/* 8017055C */ 0x04180001,
|
||||
/* 80170560 */ 0x04190001,
|
||||
/* 80170564 */ 0x041A0001,
|
||||
/* 80170568 */ 0x041B0001,
|
||||
/* 8017056C */ 0x041C0001,
|
||||
/* 80170570 */ 0x041D0001,
|
||||
/* 80170574 */ 0x041E0001,
|
||||
/* 80170578 */ 0x04170001,
|
||||
/* 8017057C */ 0x04160001,
|
||||
/* 80170580 */ 0x04150001,
|
||||
/* 80170584 */ 0x04160001,
|
||||
/* 80170588 */ 0x04170001,
|
||||
/* 8017058C */ 0x041E0001,
|
||||
/* 80170590 */ 0x04180001,
|
||||
/* 80170594 */ 0x04190001,
|
||||
/* 80170598 */ 0x041A0002,
|
||||
/* 8017059C */ 0x041B0002,
|
||||
/* 801705A0 */ 0x041C0002,
|
||||
/* 801705A4 */ 0x041D0002,
|
||||
/* 801705A8 */ 0x041E0002,
|
||||
/* 801705AC */ 0x04170002,
|
||||
/* 801705B0 */ 0x04160002,
|
||||
/* 801705B4 */ 0x04150002,
|
||||
/* 801705B8 */ 0x04160002,
|
||||
/* 801705BC */ 0x04170002,
|
||||
/* 801705C0 */ 0x041E0002,
|
||||
/* 801705C4 */ 0x04180002,
|
||||
/* 801705C8 */ 0x04190002,
|
||||
/* 801705CC */ 0x041A0003,
|
||||
/* 801705D0 */ 0x041B0003,
|
||||
/* 801705D4 */ 0x041C0003,
|
||||
/* 801705D8 */ 0x041D0003,
|
||||
/* 801705DC */ 0x041E0003,
|
||||
/* 801705E0 */ 0x04170003,
|
||||
/* 801705E4 */ 0x04160003,
|
||||
/* 801705E8 */ 0x0000FFFE,
|
||||
AnimationFrame D_8017054C[] = {
|
||||
/* 8017054C */ {1, 0x0415},
|
||||
/* 80170550 */ {1, 0x0416},
|
||||
/* 80170554 */ {1, 0x0417},
|
||||
/* 80170558 */ {1, 0x041E},
|
||||
/* 8017055C */ {1, 0x0418},
|
||||
/* 80170560 */ {1, 0x0419},
|
||||
/* 80170564 */ {1, 0x041A},
|
||||
/* 80170568 */ {1, 0x041B},
|
||||
/* 8017056C */ {1, 0x041C},
|
||||
/* 80170570 */ {1, 0x041D},
|
||||
/* 80170574 */ {1, 0x041E},
|
||||
/* 80170578 */ {1, 0x0417},
|
||||
/* 8017057C */ {1, 0x0416},
|
||||
/* 80170580 */ {1, 0x0415},
|
||||
/* 80170584 */ {1, 0x0416},
|
||||
/* 80170588 */ {1, 0x0417},
|
||||
/* 8017058C */ {1, 0x041E},
|
||||
/* 80170590 */ {1, 0x0418},
|
||||
/* 80170594 */ {1, 0x0419},
|
||||
/* 80170598 */ {2, 0x041A},
|
||||
/* 8017059C */ {2, 0x041B},
|
||||
/* 801705A0 */ {2, 0x041C},
|
||||
/* 801705A4 */ {2, 0x041D},
|
||||
/* 801705A8 */ {2, 0x041E},
|
||||
/* 801705AC */ {2, 0x0417},
|
||||
/* 801705B0 */ {2, 0x0416},
|
||||
/* 801705B4 */ {2, 0x0415},
|
||||
/* 801705B8 */ {2, 0x0416},
|
||||
/* 801705BC */ {2, 0x0417},
|
||||
/* 801705C0 */ {2, 0x041E},
|
||||
/* 801705C4 */ {2, 0x0418},
|
||||
/* 801705C8 */ {2, 0x0419},
|
||||
/* 801705CC */ {3, 0x041A},
|
||||
/* 801705D0 */ {3, 0x041B},
|
||||
/* 801705D4 */ {3, 0x041C},
|
||||
/* 801705D8 */ {3, 0x041D},
|
||||
/* 801705DC */ {3, 0x041E},
|
||||
/* 801705E0 */ {3, 0x0417},
|
||||
/* 801705E4 */ {3, 0x0416},
|
||||
/* 801705E8 */ {-2, 0x0000},
|
||||
};
|
||||
|
||||
s32 D_801705EC[] = {
|
||||
/* 801705EC */ 0x04150001,
|
||||
/* 801705F0 */ 0x0000FFFF,
|
||||
AnimationFrame D_801705EC[] = {
|
||||
/* 801705EC */ {1, 0x0415},
|
||||
/* 801705F0 */ {-1, 0x0000},
|
||||
};
|
||||
|
||||
s32* D_801705F4[] = {
|
||||
AnimationFrame* D_801705F4[] = {
|
||||
/* 801705F4 */ D_801704A8,
|
||||
/* 801705F8 */ D_801704E0,
|
||||
/* 801705FC */ D_80170514,
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "servant.h"
|
||||
|
||||
Sprite D_80170608[] = {
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 8, 0, 0, 0, 16, 0, 8, 0},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 120, 0, 8, 0, 128, 0, 16, 0},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 228, 0, 135, 0, 236, 0, 143, 0},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 80, 0, 0, 0, 88, 0, 8, 0},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 8, 0, 16, 8},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 120, 8, 128, 16},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 228, 135, 236, 143},
|
||||
{-4, -4, 8, 8, 0x144, 0x78, 80, 0, 88, 8},
|
||||
};
|
||||
s32 D_80170658[][5] = {
|
||||
{90, 64, 0, 128, 1}, //
|
||||
|
Loading…
Reference in New Issue
Block a user