mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-23 04:59:41 +00:00
Data Import tt_002 (#1896)
Some checks are pending
Format code / format (push) Waiting to run
Build C code / extract-assets (push) Waiting to run
Build C code / build-linux (i686, Debug, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, lle) (push) Blocked by required conditions
Build C code / build-macos (Debug, custom) (push) Blocked by required conditions
Build C code / build-macos (Debug, lle) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, lle) (push) Blocked by required conditions
Build C code / build-windows (Debug, custom) (push) Blocked by required conditions
Build C code / build-windows (Debug, lle) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, lle) (push) Blocked by required conditions
Build Saturn version / build-and-test-saturn (push) Waiting to run
Build Saturn version / function-finder-saturn (push) Waiting to run
Build Debug Module tool / build (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, hd) (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, pspeu) (push) Waiting to run
Build PSX and PSP version / build-and-test (us, us) (push) Waiting to run
Build PSX and PSP version / generate-progress-report (pspeu, hd) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (pspeu, pspeu) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report-psp (pspeu, pspeu) (push) Blocked by required conditions
Some checks are pending
Format code / format (push) Waiting to run
Build C code / extract-assets (push) Waiting to run
Build C code / build-linux (i686, Debug, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, Debug, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (i686, RelWithDebInfo, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, lle) (push) Blocked by required conditions
Build C code / build-macos (Debug, custom) (push) Blocked by required conditions
Build C code / build-macos (Debug, lle) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, lle) (push) Blocked by required conditions
Build C code / build-windows (Debug, custom) (push) Blocked by required conditions
Build C code / build-windows (Debug, lle) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, lle) (push) Blocked by required conditions
Build Saturn version / build-and-test-saturn (push) Waiting to run
Build Saturn version / function-finder-saturn (push) Waiting to run
Build Debug Module tool / build (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, hd) (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, pspeu) (push) Waiting to run
Build PSX and PSP version / build-and-test (us, us) (push) Waiting to run
Build PSX and PSP version / generate-progress-report (pspeu, hd) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (pspeu, pspeu) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report-psp (pspeu, pspeu) (push) Blocked by required conditions
Importing the remaining data for tt_002 Importing sbss data Adjusting the data files The data except for the servant_events data is all unique to the faerie. I suppose all the data could be put in 1 file, but I had it split up because ghost and bat shared a significant amount of data. ~~D_us_801724CC[] should actually be an array of Unkstruct_801724CC; however, that doesn't match because it's on a 2 byte barrier and the compiler wants to align it to 4 bytes. I tried #pragma pack and __attributed__((packed)) and a few other things with no avail. So that and the cast to Unkstruct_801724CC in func_us_80177F84 are just going to have to be wonky.~~ This issue was figured out by @Xeeynamo I didn't really do any refactoring beyond what I needed to in order to get the data in. I'll work on that next.
This commit is contained in:
parent
e10458d4b8
commit
a91c2acd3c
@ -38,16 +38,13 @@ segments:
|
||||
align: 4
|
||||
subalign: 4
|
||||
subsegments:
|
||||
- [0x0, .data, 3678]
|
||||
- [0x0, .data, faerie]
|
||||
- [0x40, .data, faerie_spriteparts]
|
||||
- [0x22E8, .data, faerie_clutdata]
|
||||
- [0x2368, .data, faerie_data_2368]
|
||||
- [0x2408, data]
|
||||
- [0x2368, .data, faerie_ability_data]
|
||||
- [0x2600, .data, faerie_animation_data]
|
||||
- [0x2B2C, data]
|
||||
- [0x2C24, .data, faerie_data_2C24]
|
||||
- [0x2BCC, .data, faerie_data]
|
||||
- [0x2D2C, .data, servant_events]
|
||||
- [0x3678, .rodata, 3678]
|
||||
- [0x3994, c, 3678]
|
||||
- [0x92D0, sbss]
|
||||
- [0x3678, .rodata, faerie]
|
||||
- [0x3994, c, faerie]
|
||||
- [0x92D0, .bss, faerie]
|
||||
- [0xA000]
|
||||
|
@ -254,6 +254,22 @@ enum SfxModes {
|
||||
#define SFX_RBO3_UNK_802 0x802
|
||||
#define SFX_RBO3_UNK_804 0x804
|
||||
|
||||
// TT_002 - Faerie
|
||||
#define SFX_TT002_UNK_885 0x885
|
||||
#define SFX_TT002_UNK_886 0x886
|
||||
#define SFX_TT002_UNK_887 0x887
|
||||
#define SFX_TT002_UNK_888 0x888
|
||||
#define SFX_TT002_UNK_889 0x889
|
||||
#define SFX_TT002_UNK_88A 0x88A
|
||||
#define SFX_TT002_UNK_88B 0x88B
|
||||
#define SFX_TT002_UNK_88C 0x88C
|
||||
#define SFX_TT002_UNK_88D 0x88D
|
||||
#define SFX_TT002_UNK_88E 0x88E
|
||||
#define SFX_TT002_UNK_88F 0x88F
|
||||
#define SFX_TT002_UNK_890 0x890
|
||||
#define SFX_TT002_UNK_891 0x891
|
||||
#define SFX_TT002_UNK_892 0x892
|
||||
|
||||
// SHARED SOUNDS
|
||||
// These are sounds that are shared across multiple BIN files
|
||||
#define SE_BOSS_DEFEATED 0x7D2
|
||||
|
@ -124,8 +124,9 @@ typedef struct {
|
||||
/* 0x10 */ s16 b;
|
||||
/* 0x12 */ u16 priority;
|
||||
/* 0x14 */ s16 drawMode;
|
||||
/* 0x16 */ u32 flags;
|
||||
} Unkstruct_801724CC; // size = 0x1A
|
||||
/* 0x16 */ s16 : 16;
|
||||
/* 0x18 */ u32 flags;
|
||||
} Unkstruct_801724CC; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 animSet;
|
||||
|
@ -4,60 +4,46 @@
|
||||
#include "sfx.h"
|
||||
#include "items.h"
|
||||
|
||||
extern s32 s_ServantId;
|
||||
static u32 D_us_801792D0;
|
||||
static s32 D_us_801792D4;
|
||||
static s32 D_us_801792D8;
|
||||
static s32 s_ServantId;
|
||||
static s32 s_zPriority;
|
||||
static FamiliarStats s_FaerieStats;
|
||||
|
||||
static s32 D_us_801792F0;
|
||||
static s32 D_us_801792F4;
|
||||
static s32 D_us_801792F8;
|
||||
static s32 D_us_801792FC[5];
|
||||
static s32 D_us_80179310;
|
||||
static s16 D_us_80179314;
|
||||
STATIC_PAD_BSS(2);
|
||||
static s16 D_us_80179318;
|
||||
STATIC_PAD_BSS(2);
|
||||
static s32 D_us_8017931C;
|
||||
static s32 D_us_80179320;
|
||||
static s32 s_TargetLocationX;
|
||||
static s32 s_TargetLocationY;
|
||||
static s32 s_TargetLocationX_calc;
|
||||
static s32 s_TargetLocationY_calc;
|
||||
static s32 s_AngleToTarget;
|
||||
static s32 s_AllowedAngle;
|
||||
static s32 s_DistToTargetLocation;
|
||||
static s16 s_TargetLocOffset_calc;
|
||||
|
||||
extern u16 g_FaerieClut[];
|
||||
// During cleanup, rename this. May not actually be this familiar, unknown
|
||||
// where it's set
|
||||
extern Entity thisFamiliar;
|
||||
extern s32 s_zPriority;
|
||||
extern FamiliarStats s_FaerieStats;
|
||||
extern FaerieAbilityStats D_us_80172408[];
|
||||
extern s32 D_us_8017931C;
|
||||
extern s32 D_us_80179320;
|
||||
extern s32 D_us_80179310;
|
||||
extern s16 D_us_80179314;
|
||||
extern s16 D_us_80179318;
|
||||
extern s32 s_AllowedAngle;
|
||||
extern s32 s_AngleToTarget;
|
||||
extern s32 s_DistToTargetLocation;
|
||||
extern s16 s_TargetLocOffset_calc;
|
||||
extern s32 s_TargetLocationX;
|
||||
extern s32 s_TargetLocationX_calc;
|
||||
extern s32 s_TargetLocationY;
|
||||
extern s32 s_TargetLocationY_calc;
|
||||
|
||||
// These are likely able to be consolidated during data cleanup
|
||||
extern u8 D_80097A1A[];
|
||||
extern u8 D_80097A1B;
|
||||
extern u8 D_80097A1D;
|
||||
|
||||
extern u8 D_80097A29;
|
||||
extern u8 D_80097A2A;
|
||||
|
||||
extern s32 D_us_80172BCC;
|
||||
extern s32 D_us_80172BD8;
|
||||
|
||||
extern s16 D_us_80172494[];
|
||||
extern s16 D_us_801724C4[];
|
||||
extern s32 D_us_80172BD0;
|
||||
|
||||
extern s32 D_800973FC;
|
||||
// this is likely incorrect typing
|
||||
extern s32 D_80097420[];
|
||||
extern FaerieAbilityStats g_FaerieAbilityStats[];
|
||||
extern s32 D_us_80172BCC[];
|
||||
extern s16 g_ResistItemsParamMap[];
|
||||
extern s16 g_PotionItemsParamMap[];
|
||||
extern s32 D_800973FC; // this is in unkGraphicsStruct
|
||||
extern s32 D_80097420[]; // this is in unkGraphicsStruct
|
||||
extern Unkstruct_801724CC D_us_801724CC[];
|
||||
extern s32 D_us_80172BD4;
|
||||
extern s32 D_us_80172BDC;
|
||||
|
||||
extern u16 g_FaerieFrameCount1;
|
||||
extern u16 g_FaerieFrameCount2;
|
||||
extern u32 D_us_801792D0;
|
||||
extern s32 D_us_801792EC;
|
||||
|
||||
extern s32 D_us_801792F0;
|
||||
extern s32 D_us_801792F4;
|
||||
extern s32 D_us_801792F8;
|
||||
extern s32 D_us_801792FC[];
|
||||
extern s32 D_us_8017930C[];
|
||||
|
||||
// Ranked lookup tables
|
||||
extern s32 D_us_80172C04[];
|
||||
@ -65,6 +51,8 @@ extern s32 D_us_80172BE4[];
|
||||
extern s32 D_us_80172C3C[];
|
||||
extern s32 D_us_80172C64[];
|
||||
|
||||
extern Unk2CB0 D_us_80172CB0[];
|
||||
|
||||
extern FaerieAnimIndex D_us_80172368[];
|
||||
extern AnimationFrame* g_FaerieAnimationFrames[];
|
||||
|
||||
@ -72,6 +60,11 @@ void SetAnimationFrame(Entity*, s32);
|
||||
void unused_39C8(Entity*);
|
||||
void func_us_80173D60(Entity*);
|
||||
|
||||
static s16 CalculateAngleToEntity(Entity* entity, s16 targetX, s16 targetY);
|
||||
static s32 CalculateDistance(Entity* entity, s32 targetX, s32 targetY);
|
||||
static s16 GetTargetPositionWithDistanceBuffer(
|
||||
s16 currentX, s16 targetX, s16 distanceBuffer);
|
||||
|
||||
static void ServantInit(InitializeMode mode);
|
||||
static void func_us_80174998(Entity* self);
|
||||
static void func_us_80174F0C(Entity* self);
|
||||
@ -95,11 +88,6 @@ ServantDesc faerie_ServantDesc = {
|
||||
func_us_80176504, func_us_80176B6C, func_us_80176C98, func_us_80177380,
|
||||
func_us_80177958, func_us_80177AC4, func_us_80177F64, func_us_80177F84};
|
||||
|
||||
static s16 CalculateAngleToEntity(Entity* entity, s16 targetX, s16 targetY);
|
||||
static s32 CalculateDistance(Entity* entity, s32 targetX, s32 targetY);
|
||||
static s16 GetTargetPositionWithDistanceBuffer(
|
||||
s16 currentX, s16 targetX, s16 distanceBuffer);
|
||||
|
||||
static void SetAnimationFrame(Entity* self, s32 animationIndex) {
|
||||
if (self->anim != g_FaerieAnimationFrames[animationIndex]) {
|
||||
self->anim = g_FaerieAnimationFrames[animationIndex];
|
||||
@ -282,7 +270,8 @@ void func_us_80173D60(Entity* self) {
|
||||
}
|
||||
if (g_Player.status & PLAYER_STATUS_UNK40000) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[s_FaerieStats.level / 10].unk1) {
|
||||
// for faerie, this is always true. stats table.unk1 is 0x00FF
|
||||
if (rnd <= g_FaerieAbilityStats[s_FaerieStats.level / 10].unk1) {
|
||||
self->entityId = 0xD2;
|
||||
self->step = 0;
|
||||
return;
|
||||
@ -298,15 +287,18 @@ void func_us_80173D60(Entity* self) {
|
||||
return;
|
||||
}
|
||||
|
||||
self->ext.faerie.timer = D_us_80172408[s_FaerieStats.level / 10].unk0;
|
||||
self->ext.faerie.timer =
|
||||
g_FaerieAbilityStats[s_FaerieStats.level / 10].timer;
|
||||
|
||||
if (self->entityId == 0xD3) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (PLAYER.step == 0xB && (!IsMovementAllowed(0)) && D_80097A1D) {
|
||||
if (PLAYER.step == 0xB && (!IsMovementAllowed(0)) &&
|
||||
g_Status.equipHandCount[ITEM_HAMMER]) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[(s_FaerieStats.level / 10)].unk2) {
|
||||
if (rnd <=
|
||||
g_FaerieAbilityStats[(s_FaerieStats.level / 10)].hammerChance) {
|
||||
self->ext.faerie.unk8E = 0;
|
||||
self->entityId = 0xD3;
|
||||
self->step = 0;
|
||||
@ -319,9 +311,10 @@ void func_us_80173D60(Entity* self) {
|
||||
}
|
||||
|
||||
if (g_Player.status & PLAYER_STATUS_CURSE) {
|
||||
if (D_80097A1B) {
|
||||
if (g_Status.equipHandCount[ITEM_UNCURSE]) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[(s_FaerieStats.level / 10)].unk3) {
|
||||
if (rnd <= g_FaerieAbilityStats[(s_FaerieStats.level / 10)]
|
||||
.uncurseChance) {
|
||||
self->ext.faerie.unk90 = false;
|
||||
self->entityId = 0xD4;
|
||||
self->step = 0;
|
||||
@ -341,9 +334,10 @@ void func_us_80173D60(Entity* self) {
|
||||
}
|
||||
|
||||
if (g_Player.status & PLAYER_STATUS_POISON) {
|
||||
if (D_80097A1A[0]) {
|
||||
if (g_Status.equipHandCount[ITEM_ANTIVENOM]) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[s_FaerieStats.level / 10].unk4) {
|
||||
if (rnd <= g_FaerieAbilityStats[s_FaerieStats.level / 10]
|
||||
.antivenomChance) {
|
||||
self->ext.faerie.unk92 = false;
|
||||
self->entityId = 0xD5;
|
||||
self->step = 0;
|
||||
@ -373,10 +367,11 @@ void func_us_80173D60(Entity* self) {
|
||||
params = 5;
|
||||
}
|
||||
|
||||
if (!g_api.func_800FF110(D_us_80172494[params * 4]) &&
|
||||
g_Status.equipHandCount[D_us_80172494[(params * 4) + 1]]) {
|
||||
if (!g_api.func_800FF110(g_ResistItemsParamMap[params * 4]) &&
|
||||
g_Status.equipHandCount[g_ResistItemsParamMap[(params * 4) + 1]]) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[s_FaerieStats.level / 10].unk5) {
|
||||
if (rnd <=
|
||||
g_FaerieAbilityStats[s_FaerieStats.level / 10].resistChance) {
|
||||
self->entityId = 0xD6;
|
||||
self->step = 0;
|
||||
self->params = params;
|
||||
@ -424,9 +419,10 @@ void func_us_80173D60(Entity* self) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (D_80097A29 | D_80097A2A) {
|
||||
if (g_Status.equipHandCount[ITEM_POTION] |
|
||||
g_Status.equipHandCount[ITEM_HIGH_POTION]) {
|
||||
rnd = rand() % 100;
|
||||
if (rnd <= D_us_80172408[s_FaerieStats.level / 10].unk6) {
|
||||
if (rnd <= g_FaerieAbilityStats[s_FaerieStats.level / 10].healChance) {
|
||||
self->ext.faerie.unk94 = true;
|
||||
self->entityId = 0xD7;
|
||||
self->step = 0;
|
||||
@ -732,14 +728,14 @@ void func_us_80174F0C(Entity* self) {
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
SetAnimationFrame(self, 0x13);
|
||||
if (s_ServantId == FAM_ACTIVE_YOUSEI) {
|
||||
g_api.PlaySfx(D_us_80172BD4);
|
||||
g_api.PlaySfx(D_us_80172BCC[2]);
|
||||
}
|
||||
self->step++;
|
||||
break;
|
||||
case 0x6:
|
||||
if (self->animFrameIdx == 0xA) {
|
||||
if (s_ServantId == FAM_ACTIVE_FAERIE) {
|
||||
g_api.PlaySfx(D_us_80172BD4);
|
||||
g_api.PlaySfx(D_us_80172BCC[2]);
|
||||
}
|
||||
self->step++;
|
||||
}
|
||||
@ -795,7 +791,7 @@ void func_us_80174F0C(Entity* self) {
|
||||
|
||||
case 0x5A:
|
||||
SetAnimationFrame(self, 0x20);
|
||||
g_api.PlaySfx(D_us_80172BDC);
|
||||
g_api.PlaySfx(D_us_80172BCC[4]);
|
||||
self->step++;
|
||||
break;
|
||||
case 0x5B:
|
||||
@ -841,7 +837,7 @@ void func_us_801753E4(Entity* self) {
|
||||
break;
|
||||
case 2:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (D_80097A1A[paramOffset]) {
|
||||
if (g_Status.equipHandCount[ITEM_HAMMER]) {
|
||||
SetAnimationFrame(self, 0x17);
|
||||
|
||||
for (rnd = rand() % 0x100, i = 0; true; i++) {
|
||||
@ -854,14 +850,14 @@ void func_us_801753E4(Entity* self) {
|
||||
self->step++;
|
||||
} else {
|
||||
SetAnimationFrame(self, 0x10);
|
||||
g_api.PlaySfx(D_us_80172BD8);
|
||||
g_api.PlaySfx(D_us_80172BCC[3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step += 2;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (self->animFrameIdx == 5) {
|
||||
D_80097A1A[paramOffset]--;
|
||||
g_Status.equipHandCount[ITEM_HAMMER]--;
|
||||
g_api.CreateEntFactoryFromEntity(
|
||||
self, FACTORY(0x37, paramOffset), 0);
|
||||
CreateEventEntity_Dupe(self, 0xDF, 1);
|
||||
@ -920,7 +916,7 @@ void func_us_80175730(Entity* self) {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!D_80097A1A[paramOffset]) {
|
||||
if (!g_Status.equipHandCount[ITEM_UNCURSE]) {
|
||||
SetAnimationFrame(self, 0x14);
|
||||
self->step = 5;
|
||||
break;
|
||||
@ -932,7 +928,7 @@ void func_us_80175730(Entity* self) {
|
||||
}
|
||||
SetAnimationFrame(self, 0x12);
|
||||
if (s_ServantId == FAM_ACTIVE_YOUSEI) {
|
||||
g_api.PlaySfx(D_us_80172BCC);
|
||||
g_api.PlaySfx(D_us_80172BCC[0]);
|
||||
}
|
||||
self->step++;
|
||||
break;
|
||||
@ -941,10 +937,10 @@ void func_us_80175730(Entity* self) {
|
||||
self->facingLeft = PLAYER.facingLeft ? 0 : 1;
|
||||
if (self->animFrameIdx == 0xB) {
|
||||
if (s_ServantId == FAM_ACTIVE_FAERIE) {
|
||||
g_api.PlaySfx(D_us_80172BCC);
|
||||
g_api.PlaySfx(D_us_80172BCC[0]);
|
||||
}
|
||||
|
||||
D_80097A1A[paramOffset]--;
|
||||
g_Status.equipHandCount[ITEM_UNCURSE]--;
|
||||
g_api.CreateEntFactoryFromEntity(
|
||||
self, FACTORY(0x37, paramOffset), 0);
|
||||
|
||||
@ -966,7 +962,7 @@ void func_us_80175730(Entity* self) {
|
||||
case 5:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (self->animFrameIdx == 0x20) {
|
||||
g_api.PlaySfx(D_us_80172BD8);
|
||||
g_api.PlaySfx(D_us_80172BCC[3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
}
|
||||
@ -1012,7 +1008,7 @@ void func_us_80175A78(Entity* self) {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!D_80097A1A[paramOffset]) {
|
||||
if (!g_Status.equipHandCount[ITEM_ANTIVENOM]) {
|
||||
SetAnimationFrame(self, 0x14);
|
||||
self->step = 5;
|
||||
break;
|
||||
@ -1024,7 +1020,7 @@ void func_us_80175A78(Entity* self) {
|
||||
}
|
||||
SetAnimationFrame(self, 0x12);
|
||||
if (s_ServantId == FAM_ACTIVE_YOUSEI) {
|
||||
g_api.PlaySfx(D_us_80172BCC);
|
||||
g_api.PlaySfx(D_us_80172BCC[0]);
|
||||
}
|
||||
self->step++;
|
||||
break;
|
||||
@ -1033,10 +1029,10 @@ void func_us_80175A78(Entity* self) {
|
||||
self->facingLeft = PLAYER.facingLeft ? 0 : 1;
|
||||
if (self->animFrameIdx == 0xB) {
|
||||
if (s_ServantId == FAM_ACTIVE_FAERIE) {
|
||||
g_api.PlaySfx(D_us_80172BCC);
|
||||
g_api.PlaySfx(D_us_80172BCC[0]);
|
||||
}
|
||||
|
||||
D_80097A1A[paramOffset]--;
|
||||
g_Status.equipHandCount[ITEM_ANTIVENOM]--;
|
||||
g_api.CreateEntFactoryFromEntity(
|
||||
self, FACTORY(0x37, paramOffset), 0);
|
||||
|
||||
@ -1058,7 +1054,7 @@ void func_us_80175A78(Entity* self) {
|
||||
case 5:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (self->animFrameIdx == 0x20) {
|
||||
g_api.PlaySfx(D_us_80172BD8);
|
||||
g_api.PlaySfx(D_us_80172BCC[3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
}
|
||||
@ -1104,7 +1100,8 @@ void func_us_80175DBC(Entity* self) {
|
||||
break;
|
||||
case 2:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (!g_Status.equipHandCount[D_us_80172494[self->params * 4 + 1]]) {
|
||||
if (!g_Status
|
||||
.equipHandCount[g_ResistItemsParamMap[self->params * 4 + 1]]) {
|
||||
SetAnimationFrame(self, 0x10);
|
||||
self->step = 5;
|
||||
break;
|
||||
@ -1133,12 +1130,14 @@ void func_us_80175DBC(Entity* self) {
|
||||
}
|
||||
}
|
||||
|
||||
g_Status.equipHandCount[D_us_80172494[self->params * 4 + 1]]--;
|
||||
g_Status
|
||||
.equipHandCount[g_ResistItemsParamMap[self->params * 4 + 1]]--;
|
||||
|
||||
g_api.CreateEntFactoryFromEntity(
|
||||
self, FACTORY(0x37, D_us_80172494[self->params * 4 + 2]), 0);
|
||||
self,
|
||||
FACTORY(0x37, g_ResistItemsParamMap[self->params * 4 + 2]), 0);
|
||||
CreateEventEntity_Dupe(
|
||||
self, 0xDF, D_us_80172494[self->params * 4 + 3]);
|
||||
self, 0xDF, g_ResistItemsParamMap[self->params * 4 + 3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
}
|
||||
@ -1155,7 +1154,7 @@ void func_us_80175DBC(Entity* self) {
|
||||
case 5:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (self->animFrameIdx == 0x20) {
|
||||
g_api.PlaySfx(D_us_80172BD8);
|
||||
g_api.PlaySfx(D_us_80172BCC[3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
}
|
||||
@ -1198,14 +1197,15 @@ void func_us_80176178(Entity* self) {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!g_Status.equipHandCount[D_us_801724C4[self->params * 2]]) {
|
||||
if (!g_Status.equipHandCount[g_PotionItemsParamMap[self->params * 2]]) {
|
||||
if (self->params) {
|
||||
temp = 0;
|
||||
} else {
|
||||
temp = 1;
|
||||
}
|
||||
self->params = temp;
|
||||
if (!g_Status.equipHandCount[D_us_801724C4[self->params * 2]]) {
|
||||
if (!g_Status
|
||||
.equipHandCount[g_PotionItemsParamMap[self->params * 2]]) {
|
||||
SetAnimationFrame(self, 0x14);
|
||||
self->step = 5;
|
||||
break;
|
||||
@ -1224,10 +1224,11 @@ void func_us_80176178(Entity* self) {
|
||||
case 3:
|
||||
self->facingLeft = PLAYER.facingLeft ? 0 : 1;
|
||||
if (self->animFrameIdx == 0xB) {
|
||||
g_api.PlaySfx(D_us_80172BD0);
|
||||
g_Status.equipHandCount[D_us_801724C4[self->params * 2]]--;
|
||||
g_api.PlaySfx(D_us_80172BCC[1]);
|
||||
g_Status.equipHandCount[g_PotionItemsParamMap[self->params * 2]]--;
|
||||
g_api.CreateEntFactoryFromEntity(
|
||||
self, FACTORY(0x37, D_us_801724C4[self->params * 2 + 1]), 0);
|
||||
self,
|
||||
FACTORY(0x37, g_PotionItemsParamMap[self->params * 2 + 1]), 0);
|
||||
CreateEventEntity_Dupe(self, 0xDF, 2);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
@ -1245,7 +1246,7 @@ void func_us_80176178(Entity* self) {
|
||||
case 5:
|
||||
self->facingLeft = PLAYER.facingLeft;
|
||||
if (self->animFrameIdx == 0x20) {
|
||||
g_api.PlaySfx(D_us_80172BD8);
|
||||
g_api.PlaySfx(D_us_80172BCC[3]);
|
||||
self->ext.faerie.frameCounter = 0;
|
||||
self->step++;
|
||||
}
|
||||
@ -1331,7 +1332,7 @@ void func_us_80176504(Entity* arg0) {
|
||||
break;
|
||||
case 2:
|
||||
rnd = rand() % 0x100;
|
||||
if (D_us_801792EC == 1) {
|
||||
if (s_FaerieStats.unk8 == 1) {
|
||||
for (i = 0; true; i++) {
|
||||
if (rnd <= D_us_80172C3C[i * 2]) {
|
||||
arg0->ext.faerie.unkA4 = D_us_80172C3C[i * 2 + 1];
|
||||
@ -1641,10 +1642,6 @@ void func_us_80176C98(Entity* self) {
|
||||
D_us_801792D0 = ServantUpdateAnim(self, NULL, g_FaerieAnimationFrames);
|
||||
}
|
||||
|
||||
extern s32 D_us_801792D4;
|
||||
extern s32 D_us_801792D8;
|
||||
extern Unk2CB0 D_us_80172CB0[];
|
||||
|
||||
void func_us_80177380(Entity* self) {
|
||||
char pad[2];
|
||||
|
||||
@ -1766,7 +1763,7 @@ void func_us_80177380(Entity* self) {
|
||||
case 4:
|
||||
SetAnimationFrame(self, 14);
|
||||
g_PauseAllowed = 1;
|
||||
self->entityId = 0xD1;
|
||||
self->entityId = ENTITY_ID_SERVANT;
|
||||
self->step = 0;
|
||||
break;
|
||||
}
|
||||
@ -1983,7 +1980,8 @@ void func_us_80177F84(Entity* self) {
|
||||
|
||||
posX2 = self->posX.i.hi;
|
||||
posY = self->posY.i.hi;
|
||||
unkStruct = &D_us_801724CC[LOH(self->params)];
|
||||
|
||||
unkStruct = &D_us_801724CC[(s16)self->params];
|
||||
switch (self->step) {
|
||||
case 0:
|
||||
self->primIndex =
|
@ -10,13 +10,13 @@ typedef struct {
|
||||
// It looks like most if not all of the ability stats for faerie are
|
||||
// essentially % chance for abilities to trigger.
|
||||
typedef struct {
|
||||
s16 unk0;
|
||||
s16 timer;
|
||||
s16 unk1;
|
||||
s16 unk2;
|
||||
s16 unk3;
|
||||
s16 unk4;
|
||||
s16 unk5;
|
||||
s16 unk6;
|
||||
s16 hammerChance;
|
||||
s16 uncurseChance;
|
||||
s16 antivenomChance;
|
||||
s16 resistChance;
|
||||
s16 healChance;
|
||||
} FaerieAbilityStats;
|
||||
|
||||
typedef struct {
|
||||
|
250
src/servant/tt_002/faerie_ability_data.c
Normal file
250
src/servant/tt_002/faerie_ability_data.c
Normal file
@ -0,0 +1,250 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#include "faerie.h"
|
||||
#include "items.h"
|
||||
|
||||
FaerieAnimIndex D_us_80172368[] = {
|
||||
{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1}, {4, 1}, {0, 0},
|
||||
{4, 1}, {4, 1}, {3, 0}, {5, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1},
|
||||
{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1}, {0, 0},
|
||||
{0, 0}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1},
|
||||
{4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1},
|
||||
};
|
||||
|
||||
FaerieAbilityStats g_FaerieAbilityStats[] = {
|
||||
{.timer = 0x1E, // lvl 0-9
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x20,
|
||||
.uncurseChance = 0x10,
|
||||
.antivenomChance = 0x10,
|
||||
.resistChance = 0x10,
|
||||
.healChance = 0xC0},
|
||||
{.timer = 0x14, // lvl 10-19
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x20,
|
||||
.uncurseChance = 0x10,
|
||||
.antivenomChance = 0x10,
|
||||
.resistChance = 0x20,
|
||||
.healChance = 0xC0},
|
||||
{.timer = 0x0F, // lvl 20-29
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x40,
|
||||
.uncurseChance = 0x20,
|
||||
.antivenomChance = 0x20,
|
||||
.resistChance = 0x20,
|
||||
.healChance = 0xD0},
|
||||
{.timer = 0x0A, // lvl 30-39
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x40,
|
||||
.uncurseChance = 0x20,
|
||||
.antivenomChance = 0x20,
|
||||
.resistChance = 0x40,
|
||||
.healChance = 0xD0},
|
||||
{.timer = 0x0A, // lvl 40-49
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x60,
|
||||
.uncurseChance = 0x20,
|
||||
.antivenomChance = 0x30,
|
||||
.resistChance = 0x40,
|
||||
.healChance = 0xE0},
|
||||
{.timer = 0x05, // lvl 50-59
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x60,
|
||||
.uncurseChance = 0x40,
|
||||
.antivenomChance = 0x30,
|
||||
.resistChance = 0x40,
|
||||
.healChance = 0xE0},
|
||||
{.timer = 0x03, // lvl 60-69
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0x80,
|
||||
.uncurseChance = 0x40,
|
||||
.antivenomChance = 0x40,
|
||||
.resistChance = 0x60,
|
||||
.healChance = 0xE0},
|
||||
{.timer = 0x02, // lvl 70-79
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0xA0,
|
||||
.uncurseChance = 0x60,
|
||||
.antivenomChance = 0x50,
|
||||
.resistChance = 0x60,
|
||||
.healChance = 0xFF},
|
||||
{.timer = 0x01, // lvl 80-89
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0xC0,
|
||||
.uncurseChance = 0x60,
|
||||
.antivenomChance = 0x60,
|
||||
.resistChance = 0x80,
|
||||
.healChance = 0xFF},
|
||||
{.timer = 0x00, // lvl 90-99
|
||||
.unk1 = 0xFF,
|
||||
.hammerChance = 0xC0,
|
||||
.uncurseChance = 0x60,
|
||||
.antivenomChance = 0x60,
|
||||
.resistChance = 0x80,
|
||||
.healChance = 0xFF},
|
||||
};
|
||||
|
||||
// This may be able to be broken into a 4 short struct
|
||||
// unknown param for D_80139828, ItemId, FactoryParam, EventParam
|
||||
s16 g_ResistItemsParamMap[] = {
|
||||
0x0005, ITEM_RESIST_FIRE, 0x0009, 0x0005,
|
||||
0x0007, ITEM_RESIST_THUNDER, 0x000A, 0x0006,
|
||||
0x0006, ITEM_RESIST_ICE, 0x000B, 0x0007,
|
||||
0x0009, ITEM_RESIST_HOLY, 0x000E, 0x0008,
|
||||
0x000B, ITEM_RESIST_DARK, 0x000F, 0x0009,
|
||||
0x000A, ITEM_RESIST_STONE, 0x000C, 0x000A,
|
||||
};
|
||||
|
||||
// itemId, FACTORY() param
|
||||
// check if can be made struct, but PSP may be a problem.
|
||||
s16 g_PotionItemsParamMap[] = {
|
||||
ITEM_POTION,
|
||||
0x0010,
|
||||
ITEM_HIGH_POTION,
|
||||
0x0011,
|
||||
};
|
||||
|
||||
Unkstruct_801724CC D_us_801724CC[] = {
|
||||
{.count = 0x80,
|
||||
.unk2 = 1,
|
||||
.unk4 = 1,
|
||||
.unk6 = 0,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x7F,
|
||||
.g = 0x7F,
|
||||
.b = 0x7F,
|
||||
.priority = 1,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 1,
|
||||
.w = 2,
|
||||
.h = 2,
|
||||
.r = 0x7F,
|
||||
.g = 0x7F,
|
||||
.b = 0x7F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_UNK02,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x2F,
|
||||
.g = 0xFF,
|
||||
.b = 0x2F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x5F,
|
||||
.g = 0x0F,
|
||||
.b = 0x5F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x7F,
|
||||
.g = 0x3F,
|
||||
.b = 0x0F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0xFF,
|
||||
.g = 0x7F,
|
||||
.b = 0x1F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x7F,
|
||||
.g = 0x7F,
|
||||
.b = 0x0F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x0F,
|
||||
.g = 0x0F,
|
||||
.b = 0x7F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x0F,
|
||||
.g = 0xFF,
|
||||
.b = 0x2F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x7F,
|
||||
.g = 0x3F,
|
||||
.b = 0x3F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
{.count = 0x20,
|
||||
.unk2 = 0x20,
|
||||
.unk4 = 0,
|
||||
.unk6 = 2,
|
||||
.w = 1,
|
||||
.h = 1,
|
||||
.r = 0x3F,
|
||||
.g = 0x3F,
|
||||
.b = 0x3F,
|
||||
.priority = 2,
|
||||
.drawMode = DRAW_TPAGE2 | DRAW_TPAGE | DRAW_UNK02 | DRAW_TRANSP,
|
||||
0,
|
||||
.flags = 0x0C800000},
|
||||
};
|
@ -25,71 +25,191 @@ AnimationFrame D_us_8017262C[] = {
|
||||
};
|
||||
|
||||
AnimationFrame D_us_80172640[] = {
|
||||
{1, 0x0074}, {1, 0x0001}, {1, 0x0075}, {1, 0x0001}, {0, 0x0000},
|
||||
{2, 0x0013}, {2, 0x0014}, {0, 0x0000}, {2, 0x000E}, {2, 0x0076},
|
||||
{2, 0x000E}, {2, 0x0076}, {2, 0x0015}, {2, 0x0077}, {2, 0x0015},
|
||||
{2, 0x0077}, {6, 0x0012}, {0, 0x0000}, {9, 0x0012}, {2, 0x0015},
|
||||
{2, 0x0077}, {2, 0x0015}, {2, 0x0077}, {2, 0x000E}, {2, 0x0076},
|
||||
{2, 0x000E}, {2, 0x0076}, {-2, 0x002B}, {2, 0x0015}, {2, 0x0077},
|
||||
{2, 0x0078}, {2, 0x0016}, {2, 0x0079}, {2, 0x0017}, {2, 0x007A},
|
||||
{2, 0x0018}, {0, 0x0000}, {1, 0x003E}, {1, 0x0016}, {1, 0x003F},
|
||||
{1, 0x0018}, {0, 0x0000}, {2, 0x0034}, {2, 0x0035}, {2, 0x0036},
|
||||
{2, 0x0037}, {2, 0x0038}, {2, 0x0039}, {0, 0x0000}, {3, 0x005C},
|
||||
{3, 0x005D}, {3, 0x005E}, {3, 0x005F}, {0, 0x0000}, {4, 0x0061},
|
||||
{4, 0x0060}, {4, 0x004B}, {4, 0x0064}, {4, 0x0063}, {4, 0x0062},
|
||||
{0, 0x0000}, {6, 0x0002}, {6, 0x0003}, {6, 0x0004}, {6, 0x0005},
|
||||
{0, 0x0000}, {6, 0x0006}, {6, 0x0007}, {5, 0x0008}, {5, 0x0009},
|
||||
{4, 0x000A}, {4, 0x000B}, {4, 0x000C}, {4, 0x000D}, {-2, 0x0010},
|
||||
{4, 0x000E}, {4, 0x000F}, {4, 0x0010}, {4, 0x0011}, {0, 0x0000},
|
||||
{10, 0x004D}, {6, 0x004E}, {8, 0x004F}, {0, 0x0000}, {4, 0x0012},
|
||||
{2, 0x0015}, {1, 0x0077}, {2, 0x0016}, {1, 0x0078}, {2, 0x0017},
|
||||
{1, 0x0079}, {2, 0x0018}, {1, 0x007A}, {2, 0x003F}, {2, 0x0019},
|
||||
{1, 0x007B}, {1, 0x001A}, {1, 0x007C}, {2, 0x001B}, {2, 0x007D},
|
||||
{-2, 0x002C}, {6, 0x0012}, {5, 0x0015}, {2, 0x0077}, {2, 0x0016},
|
||||
{2, 0x0078}, {2, 0x0017}, {2, 0x0079}, {2, 0x0018}, {2, 0x007A},
|
||||
{2, 0x0019}, {2, 0x007B}, {2, 0x001A}, {2, 0x007C}, {2, 0x001B},
|
||||
{2, 0x007D}, {-2, 0x002D}, {6, 0x0012}, {5, 0x0015}, {5, 0x0016},
|
||||
{5, 0x0017}, {5, 0x0018}, {4, 0x0015}, {4, 0x003E}, {4, 0x0017},
|
||||
{4, 0x0018}, {3, 0x0015}, {3, 0x0016}, {3, 0x0017}, {3, 0x0018},
|
||||
{2, 0x003F}, {2, 0x0016}, {2, 0x003E}, {2, 0x0018}, {2, 0x003E},
|
||||
{2, 0x003F}, {2, 0x003E}, {2, 0x003F}, {2, 0x003E}, {2, 0x003F},
|
||||
{2, 0x003E}, {2, 0x003F}, {2, 0x003E}, {2, 0x003F}, {4, 0x0022},
|
||||
{4, 0x0023}, {4, 0x0022}, {4, 0x0023}, {4, 0x0022}, {4, 0x0023},
|
||||
{-2, 0x0015}, {6, 0x0019}, {6, 0x001A}, {6, 0x0024}, {8, 0x0025},
|
||||
{32, 0x0026}, {-1, 0x0000}, {10, 0x0054}, {1, 0x0066}, {6, 0x0067},
|
||||
{1, 0x0069}, {1, 0x0068}, {1, 0x0069}, {1, 0x0068}, {1, 0x0069},
|
||||
{1, 0x0068}, {1, 0x0069}, {6, 0x0067}, {1, 0x0066}, {0, 0x0000},
|
||||
{4, 0x0022}, {4, 0x0017}, {17, 0x0027}, {7, 0x0028}, {6, 0x0029},
|
||||
{4, 0x002A}, {6, 0x002B}, {6, 0x0065}, {-2, 0x000E}, {1, 0x002E},
|
||||
{0, 0x0000}, {18, 0x002D}, {11, 0x002E}, {18, 0x002F}, {11, 0x002E},
|
||||
{0, 0x0000}, {35, 0x002F}, {27, 0x0030}, {35, 0x0031}, {27, 0x0030},
|
||||
{0, 0x0000}, {1, 0x002C}, {2, 0x0032}, {2, 0x0033}, {2, 0x0032},
|
||||
{2, 0x0033}, {2, 0x0032}, {3, 0x0034}, {3, 0x0035}, {3, 0x0036},
|
||||
{3, 0x0037}, {3, 0x0038}, {3, 0x0039}, {6, 0x003B}, {6, 0x003C},
|
||||
{6, 0x003D}, {6, 0x003A}, {-1, 0x0000}, {5, 0x003B}, {5, 0x003C},
|
||||
{5, 0x003D}, {0, 0x0000}, {1, 0x004A}, {0, 0x0000}, {4, 0x0060},
|
||||
{0, 0x0000}, {6, 0x0050}, {6, 0x0055}, {6, 0x005A}, {6, 0x005B},
|
||||
{0, 0x0000}, {3, 0x0058}, {2, 0x0059}, {1, 0x005A}, {1, 0x006A},
|
||||
{1, 0x006B}, {3, 0x006C}, {2, 0x006B}, {1, 0x006A}, {1, 0x005A},
|
||||
{1, 0x0059}, {0, 0x0000}, {6, 0x0050}, {6, 0x0051}, {6, 0x0052},
|
||||
{6, 0x0053}, {0, 0x0000}, {6, 0x0054}, {6, 0x0055}, {6, 0x0056},
|
||||
{6, 0x0057}, {0, 0x0000}, {8, 0x0058}, {8, 0x0059}, {8, 0x005A},
|
||||
{8, 0x005B}, {0, 0x0000}, {6, 0x001A}, {6, 0x001B}, {6, 0x001C},
|
||||
{6, 0x001D}, {24, 0x001E}, {-1, 0x0000}, {6, 0x001A}, {6, 0x0050},
|
||||
{6, 0x006D}, {6, 0x006E}, {24, 0x006F}, {-1, 0x0000}, {6, 0x0040},
|
||||
{6, 0x0041}, {6, 0x0042}, {6, 0x0043}, {7, 0x0044}, {8, 0x0045},
|
||||
{8, 0x0046}, {7, 0x0047}, {7, 0x0048}, {7, 0x0049}, {-2, 0x000E},
|
||||
{2, 0x0034}, {2, 0x0035}, {2, 0x0036}, {2, 0x0037}, {2, 0x0038},
|
||||
{2, 0x0039}, {0, 0x0000}, {5, 0x003B}, {5, 0x003C}, {5, 0x003D},
|
||||
{0, 0x0000}, {4, 0x000D}, {4, 0x000C}, {4, 0x000B}, {4, 0x000A},
|
||||
{5, 0x0009}, {5, 0x0008}, {6, 0x0007}, {6, 0x0006}, {-2, 0x000E},
|
||||
{5, 0x0004}, {6, 0x0003}, {6, 0x0002}, {9, 0x0006}, {0, 0x0000},
|
||||
{7, 0x0006}, {6, 0x0002}, {7, 0x0003}, {9, 0x0004}, {0, 0x0000},
|
||||
{6, 0x001C}, {6, 0x001D}, {38, 0x001E}, {-1, 0x0000}, {7, 0x001F},
|
||||
{7, 0x0020}, {37, 0x0021}, {-1, 0x0000}, {0, 0x0000},
|
||||
{1, 0x0074}, {1, 0x0001}, {1, 0x0075}, {1, 0x0001}, {0, 0x0000},
|
||||
};
|
||||
|
||||
AnimationFrame D_us_80172654[] = {
|
||||
{2, 0x0013},
|
||||
{2, 0x0014},
|
||||
{0, 0x0000},
|
||||
|
||||
};
|
||||
AnimationFrame D_us_80172660[] = {
|
||||
{2, 0x000E}, {2, 0x0076}, {2, 0x000E}, {2, 0x0076}, {2, 0x0015},
|
||||
{2, 0x0077}, {2, 0x0015}, {2, 0x0077}, {6, 0x0012}, {0, 0x0000},
|
||||
|
||||
};
|
||||
AnimationFrame D_us_80172688[] = {
|
||||
{9, 0x0012}, {2, 0x0015}, {2, 0x0077}, {2, 0x0015}, {2, 0x0077},
|
||||
{2, 0x000E}, {2, 0x0076}, {2, 0x000E}, {2, 0x0076}, {-2, 0x002B},
|
||||
};
|
||||
AnimationFrame D_us_801726B0[] = {
|
||||
{2, 0x0015}, {2, 0x0077}, {2, 0x0078}, {2, 0x0016}, {2, 0x0079},
|
||||
{2, 0x0017}, {2, 0x007A}, {2, 0x0018}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801726D4[] = {
|
||||
{1, 0x003E}, {1, 0x0016}, {1, 0x003F}, {1, 0x0018}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801726E8[] = {
|
||||
{2, 0x0034}, {2, 0x0035}, {2, 0x0036}, {2, 0x0037},
|
||||
{2, 0x0038}, {2, 0x0039}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172704[] = {
|
||||
{3, 0x005C}, {3, 0x005D}, {3, 0x005E}, {3, 0x005F}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172718[] = {
|
||||
{4, 0x0061}, {4, 0x0060}, {4, 0x004B}, {4, 0x0064},
|
||||
{4, 0x0063}, {4, 0x0062}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172734[] = {
|
||||
{6, 0x0002}, {6, 0x0003}, {6, 0x0004}, {6, 0x0005}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172748[] = {
|
||||
{6, 0x0006}, {6, 0x0007}, {5, 0x0008}, {5, 0x0009}, {4, 0x000A},
|
||||
{4, 0x000B}, {4, 0x000C}, {4, 0x000D}, {-2, 0x0010},
|
||||
};
|
||||
AnimationFrame D_us_8017276C[] = {
|
||||
{4, 0x000E}, {4, 0x000F}, {4, 0x0010}, {4, 0x0011}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172780[] = {
|
||||
{10, 0x004D},
|
||||
{6, 0x004E},
|
||||
{8, 0x004F},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172790[] = {
|
||||
{4, 0x0012}, {2, 0x0015}, {1, 0x0077}, {2, 0x0016}, {1, 0x0078},
|
||||
{2, 0x0017}, {1, 0x0079}, {2, 0x0018}, {1, 0x007A}, {2, 0x003F},
|
||||
{2, 0x0019}, {1, 0x007B}, {1, 0x001A}, {1, 0x007C}, {2, 0x001B},
|
||||
{2, 0x007D}, {-2, 0x002C},
|
||||
};
|
||||
AnimationFrame D_us_801727D4[] = {
|
||||
{6, 0x0012}, {5, 0x0015}, {2, 0x0077}, {2, 0x0016},
|
||||
{2, 0x0078}, {2, 0x0017}, {2, 0x0079}, {2, 0x0018},
|
||||
{2, 0x007A}, {2, 0x0019}, {2, 0x007B}, {2, 0x001A},
|
||||
{2, 0x007C}, {2, 0x001B}, {2, 0x007D}, {-2, 0x002D},
|
||||
};
|
||||
AnimationFrame D_us_80172814[] = {
|
||||
{6, 0x0012}, {5, 0x0015}, {5, 0x0016}, {5, 0x0017}, {5, 0x0018},
|
||||
{4, 0x0015}, {4, 0x003E}, {4, 0x0017}, {4, 0x0018}, {3, 0x0015},
|
||||
{3, 0x0016}, {3, 0x0017}, {3, 0x0018}, {2, 0x003F}, {2, 0x0016},
|
||||
{2, 0x003E}, {2, 0x0018}, {2, 0x003E}, {2, 0x003F}, {2, 0x003E},
|
||||
{2, 0x003F}, {2, 0x003E}, {2, 0x003F}, {2, 0x003E}, {2, 0x003F},
|
||||
{2, 0x003E}, {2, 0x003F}, {4, 0x0022}, {4, 0x0023}, {4, 0x0022},
|
||||
{4, 0x0023}, {4, 0x0022}, {4, 0x0023}, {-2, 0x0015},
|
||||
};
|
||||
AnimationFrame D_us_8017289C[] = {
|
||||
{6, 0x0019}, {6, 0x001A}, {6, 0x0024},
|
||||
{8, 0x0025}, {32, 0x0026}, {-1, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801728B4[] = {
|
||||
{10, 0x0054}, {1, 0x0066}, {6, 0x0067}, {1, 0x0069}, {1, 0x0068},
|
||||
{1, 0x0069}, {1, 0x0068}, {1, 0x0069}, {1, 0x0068}, {1, 0x0069},
|
||||
{6, 0x0067}, {1, 0x0066}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801728E8[] = {
|
||||
{4, 0x0022}, {4, 0x0017}, {17, 0x0027}, {7, 0x0028}, {6, 0x0029},
|
||||
{4, 0x002A}, {6, 0x002B}, {6, 0x0065}, {-2, 0x000E},
|
||||
};
|
||||
AnimationFrame D_us_8017290C[] = {
|
||||
{1, 0x002E},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172914[] = {
|
||||
{18, 0x002D}, {11, 0x002E}, {18, 0x002F}, {11, 0x002E}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172928[] = {
|
||||
{35, 0x002F}, {27, 0x0030}, {35, 0x0031}, {27, 0x0030}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_8017293C[] = {
|
||||
{1, 0x002C}, {2, 0x0032}, {2, 0x0033}, {2, 0x0032}, {2, 0x0033},
|
||||
{2, 0x0032}, {3, 0x0034}, {3, 0x0035}, {3, 0x0036}, {3, 0x0037},
|
||||
{3, 0x0038}, {3, 0x0039}, {6, 0x003B}, {6, 0x003C}, {6, 0x003D},
|
||||
{6, 0x003A}, {-1, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172980[] = {
|
||||
{5, 0x003B},
|
||||
{5, 0x003C},
|
||||
{5, 0x003D},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172990[] = {
|
||||
{1, 0x004A},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172998[] = {
|
||||
{4, 0x0060},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801729A0[] = {
|
||||
{6, 0x0050}, {6, 0x0055}, {6, 0x005A}, {6, 0x005B}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801729B4[] = {
|
||||
{3, 0x0058}, {2, 0x0059}, {1, 0x005A}, {1, 0x006A},
|
||||
{1, 0x006B}, {3, 0x006C}, {2, 0x006B}, {1, 0x006A},
|
||||
{1, 0x005A}, {1, 0x0059}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801729E0[] = {
|
||||
{6, 0x0050}, {6, 0x0051}, {6, 0x0052}, {6, 0x0053}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_801729F4[] = {
|
||||
{6, 0x0054}, {6, 0x0055}, {6, 0x0056}, {6, 0x0057}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172A08[] = {
|
||||
{8, 0x0058}, {8, 0x0059}, {8, 0x005A}, {8, 0x005B}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172A1C[] = {
|
||||
{6, 0x001A}, {6, 0x001B}, {6, 0x001C},
|
||||
{6, 0x001D}, {24, 0x001E}, {-1, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172A34[] = {
|
||||
{6, 0x001A}, {6, 0x0050}, {6, 0x006D},
|
||||
{6, 0x006E}, {24, 0x006F}, {-1, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172A4C[] = {
|
||||
{6, 0x0040}, {6, 0x0041}, {6, 0x0042}, {6, 0x0043},
|
||||
{7, 0x0044}, {8, 0x0045}, {8, 0x0046}, {7, 0x0047},
|
||||
{7, 0x0048}, {7, 0x0049}, {-2, 0x000E},
|
||||
};
|
||||
AnimationFrame D_us_80172A78[] = {
|
||||
{2, 0x0034}, {2, 0x0035}, {2, 0x0036}, {2, 0x0037},
|
||||
{2, 0x0038}, {2, 0x0039}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172A94[] = {
|
||||
{5, 0x003B},
|
||||
{5, 0x003C},
|
||||
{5, 0x003D},
|
||||
{0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172AA4[] = {
|
||||
{4, 0x000D}, {4, 0x000C}, {4, 0x000B}, {4, 0x000A}, {5, 0x0009},
|
||||
{5, 0x0008}, {6, 0x0007}, {6, 0x0006}, {-2, 0x000E},
|
||||
};
|
||||
AnimationFrame D_us_80172AC8[] = {
|
||||
{5, 0x0004}, {6, 0x0003}, {6, 0x0002}, {9, 0x0006}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172ADC[] = {
|
||||
{7, 0x0006}, {6, 0x0002}, {7, 0x0003}, {9, 0x0004}, {0, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172AF0[] = {
|
||||
{6, 0x001C},
|
||||
{6, 0x001D},
|
||||
{38, 0x001E},
|
||||
{-1, 0x0000},
|
||||
};
|
||||
AnimationFrame D_us_80172B00[] = {
|
||||
{7, 0x001F}, {7, 0x0020}, {37, 0x0021}, {-1, 0x0000}, {0, 0x0000},
|
||||
};
|
||||
|
||||
AnimationFrame* g_FaerieAnimationFrames[] = {
|
||||
D_us_80172600, D_us_80172608, D_us_80172610,
|
||||
D_us_80172618, D_us_8017262C, D_us_80172640,
|
||||
D_us_80172600, D_us_80172608, D_us_80172610, D_us_80172618, D_us_8017262C,
|
||||
D_us_80172640, D_us_80172654, D_us_80172660, D_us_80172688, D_us_801726B0,
|
||||
D_us_801726D4, D_us_801726E8, D_us_80172704, D_us_80172718, D_us_80172734,
|
||||
D_us_80172748, D_us_8017276C, D_us_80172780, D_us_80172790, D_us_801727D4,
|
||||
D_us_80172814, D_us_8017289C, D_us_801728B4, D_us_801728E8, D_us_8017290C,
|
||||
D_us_80172914, D_us_80172928, D_us_8017293C, D_us_80172980, D_us_80172990,
|
||||
D_us_80172998, D_us_801729A0, D_us_801729B4, D_us_801729E0, D_us_801729F4,
|
||||
D_us_80172A08, D_us_80172A1C, D_us_80172A34, D_us_80172A4C, D_us_80172A78,
|
||||
D_us_80172A94, D_us_80172AA4, D_us_80172AC8, D_us_80172ADC, D_us_80172AF0,
|
||||
D_us_80172B00,
|
||||
};
|
||||
|
@ -1,13 +0,0 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#include "common.h"
|
||||
|
||||
u16 g_FaerieClut[] = {
|
||||
0x0000, 0x10A2, 0x2D01, 0x45A8, 0x62CE, 0x2107, 0x4630, 0x5B17,
|
||||
0xFC1F, 0x84C8, 0x8D0C, 0x9570, 0x8DB2, 0xA214, 0xA298, 0xC2B8,
|
||||
0x0000, 0x7379, 0x1043, 0x2D6C, 0x4A2F, 0x2C81, 0x1908, 0x154A,
|
||||
0x1D8C, 0x2DAF, 0x0D08, 0x2D29, 0x318C, 0x4E71, 0x3DCE, 0x5EF6,
|
||||
0x0000, 0x10A4, 0x0102, 0x01A5, 0x1668, 0x24C5, 0x3DED, 0x5F14,
|
||||
0x7C1F, 0x04C8, 0x0D2E, 0x1570, 0x0DB1, 0x2214, 0x2298, 0x42B8,
|
||||
0x0000, 0x7379, 0x1043, 0x2D6C, 0x4A2F, 0x2C81, 0x1908, 0x154A,
|
||||
0x1D8C, 0x2DAF, 0x0D08, 0x2D29, 0x318C, 0x4E71, 0x3DCE, 0x5EF6,
|
||||
};
|
@ -1,5 +1,19 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#include "faerie.h"
|
||||
#include "sfx.h"
|
||||
|
||||
// SFX map
|
||||
s32 D_us_80172BCC[] = {
|
||||
SFX_TT002_UNK_885, SFX_TT002_UNK_886, SFX_TT002_UNK_887,
|
||||
SFX_TT002_UNK_888, SFX_TT002_UNK_891, SFX_TT002_UNK_892,
|
||||
};
|
||||
|
||||
// ranked lookup tables for sfx
|
||||
s32 D_us_80172BE4[] = {0x3F, SFX_TT002_UNK_889, 0x7F, SFX_TT002_UNK_88A,
|
||||
0xBF, SFX_TT002_UNK_88B, 0xFF, SFX_TT002_UNK_88C};
|
||||
|
||||
s32 D_us_80172C04[] = {0x3F, SFX_TT002_UNK_88D, 0x7F, SFX_TT002_UNK_88E,
|
||||
0xBF, SFX_TT002_UNK_88F, 0xFF, SFX_TT002_UNK_890};
|
||||
|
||||
s16 D_us_80172C24[] = {0x0000, 0x0022, 0x0472, 0xFFFF, 0x000E, 0x0000};
|
||||
|
@ -1,10 +0,0 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
#include "faerie.h"
|
||||
|
||||
FaerieAnimIndex D_us_80172368[] = {
|
||||
{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1}, {4, 1}, {0, 0},
|
||||
{4, 1}, {4, 1}, {3, 0}, {5, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1},
|
||||
{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {4, 1}, {0, 0},
|
||||
{0, 0}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1},
|
||||
{4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1}, {4, 1},
|
||||
};
|
@ -950,3 +950,14 @@ int D_80172274[] = {
|
||||
0x0010FFEE, 0x00000010, 0x00400000, 0x00500000, 0x00000010, 0xFFEEFFFF,
|
||||
0x00100010, 0x00000000, 0x00300010, 0x00400020, 0x00000000,
|
||||
};
|
||||
|
||||
u16 g_FaerieClut[] = {
|
||||
0x0000, 0x10A2, 0x2D01, 0x45A8, 0x62CE, 0x2107, 0x4630, 0x5B17,
|
||||
0xFC1F, 0x84C8, 0x8D0C, 0x9570, 0x8DB2, 0xA214, 0xA298, 0xC2B8,
|
||||
0x0000, 0x7379, 0x1043, 0x2D6C, 0x4A2F, 0x2C81, 0x1908, 0x154A,
|
||||
0x1D8C, 0x2DAF, 0x0D08, 0x2D29, 0x318C, 0x4E71, 0x3DCE, 0x5EF6,
|
||||
0x0000, 0x10A4, 0x0102, 0x01A5, 0x1668, 0x24C5, 0x3DED, 0x5F14,
|
||||
0x7C1F, 0x04C8, 0x0D2E, 0x1570, 0x0DB1, 0x2214, 0x2298, 0x42B8,
|
||||
0x0000, 0x7379, 0x1043, 0x2D6C, 0x4A2F, 0x2C81, 0x1908, 0x154A,
|
||||
0x1D8C, 0x2DAF, 0x0D08, 0x2D29, 0x318C, 0x4E71, 0x3DCE, 0x5EF6,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user