mirror of
https://github.com/zeldaret/tmc
synced 2026-09-08 03:36:29 -04:00
Extract some data
And split up subtasks and world events.
This commit is contained in:
+22
-24
@@ -26,18 +26,9 @@ extern void gMapData;
|
||||
extern u8 gUpdateVisibleTiles;
|
||||
extern u16 gMapDataTopSpecial[];
|
||||
extern u16 gMapDataBottomSpecial[];
|
||||
|
||||
extern const u8 gGlobalGfxAndPalettes[];
|
||||
extern const u8 gUnk_081091E4[];
|
||||
|
||||
extern void (*const gUnk_080B4458[])(void);
|
||||
extern const u16 gUnk_080B44A0[];
|
||||
extern const u16 gUnk_080B4410[];
|
||||
extern const s16 gUnk_080B4488[];
|
||||
extern const s16 gUnk_080B44A8[];
|
||||
|
||||
extern const struct_080B44D0 gUnk_080B44D0[];
|
||||
|
||||
typedef struct {
|
||||
u16 tileType;
|
||||
u16 kind;
|
||||
@@ -47,6 +38,18 @@ typedef struct {
|
||||
u16 unk_a;
|
||||
} Data;
|
||||
|
||||
extern const u16 gUnk_080B4410[]; // TODO figure out structure
|
||||
extern void (*const gUnk_080B4458[])(void);
|
||||
extern const s16 gUnk_080B4468[]; // TODO struct xy
|
||||
extern const s16 gUnk_080B4478[]; // TODO struct xy
|
||||
extern const s16 gUnk_080B4488[];
|
||||
extern const s16 gUnk_080B4490[]; // TODO struct xy
|
||||
extern const u16 gUnk_080B44A0[];
|
||||
extern const s16 gUnk_080B44A8[]; // TODO struct xy
|
||||
extern const u32 gUnk_080B44B8[]; // TODO actually function pointers?
|
||||
extern const Data gUnk_080B44C0[];
|
||||
extern const Data gUnk_080B44C2[];
|
||||
|
||||
void sub_0801AD6C(const Data*, u32);
|
||||
bool32 sub_0801A4F8(void);
|
||||
bool32 sub_0801AA58(Entity*, u32, u32);
|
||||
@@ -110,31 +113,30 @@ void SetBGDefaults(void) {
|
||||
gMapTop.bgSettings->control = gUnk_080B77C0[1];
|
||||
}
|
||||
|
||||
void sub_080197D4(u32* param_1) {
|
||||
void sub_080197D4(struct_08109194* param_1) {
|
||||
u32 uVar1;
|
||||
u8* src;
|
||||
void* dest;
|
||||
|
||||
do {
|
||||
dest = (void*)param_1[1];
|
||||
dest = param_1->dest;
|
||||
if (dest != NULL) {
|
||||
src = &gMapData + (*param_1 & 0x7fffffff);
|
||||
if ((param_1[2] & 0x80000000) != 0) {
|
||||
src = &gMapData + (param_1->src & 0x7fffffff);
|
||||
if ((param_1->size & 0x80000000) != 0) {
|
||||
if ((u32)dest >> 0x18 == 6) {
|
||||
LZ77UnCompVram(src, dest);
|
||||
} else {
|
||||
LZ77UnCompWram(src, dest);
|
||||
}
|
||||
} else {
|
||||
MemCopy(src, dest, param_1[2]);
|
||||
MemCopy(src, dest, param_1->size);
|
||||
}
|
||||
} else {
|
||||
LoadPaletteGroup((u32) * (u16*)param_1);
|
||||
LoadPaletteGroup(*(u16*)param_1);
|
||||
sub_080533CC();
|
||||
}
|
||||
param_1 += 3;
|
||||
uVar1 = *(param_1 - 3);
|
||||
} while ((uVar1 & 0x80000000) != 0);
|
||||
param_1++;
|
||||
} while (((param_1 - 1)->src & 0x80000000) != 0);
|
||||
}
|
||||
|
||||
// Has ifdefs for other variants
|
||||
@@ -483,10 +485,6 @@ u32 sub_0801AC68(u32 position, u32 data) {
|
||||
return data << 2;
|
||||
}
|
||||
|
||||
extern const Data gUnk_080B44C0[];
|
||||
extern const Data gUnk_080B44C2[];
|
||||
extern const u32 gUnk_080B44B8[];
|
||||
|
||||
void sub_0801AC98(void) {
|
||||
u32 position;
|
||||
u32 width;
|
||||
@@ -571,11 +569,11 @@ u32 sub_0801AE34(void) {
|
||||
return gRoomControls.scroll_flags >> 1 & 1;
|
||||
}
|
||||
|
||||
void sub_0801AE44(s32 param_1) {
|
||||
void sub_0801AE44(bool32 loadGfx) {
|
||||
void (*func)(void);
|
||||
gRoomControls.unk_34 = 0;
|
||||
sub_0807BFD0();
|
||||
if (param_1 != 0) {
|
||||
if (loadGfx != 0) {
|
||||
LoadRoomGfx();
|
||||
}
|
||||
sub_080809D4();
|
||||
|
||||
+72
-72
@@ -35,7 +35,7 @@ void sub_0801CFD0(u32 index) {
|
||||
p->_0_0 = 4;
|
||||
p->_0_4 = 1;
|
||||
p->_1 = 0x80;
|
||||
p->_2 = 0xFFFF;
|
||||
p->objPaletteId = 0xffff;
|
||||
}
|
||||
|
||||
void sub_0801D000(u32 a1) {
|
||||
@@ -56,58 +56,58 @@ void sub_0801D000(u32 a1) {
|
||||
gUnk_02001A3C._0_0 = 0;
|
||||
gUnk_02001A3C._0_4 = 0;
|
||||
gUnk_02001A3C._1 = 0;
|
||||
gUnk_02001A3C._2 = 0;
|
||||
gUnk_02001A3C.objPaletteId = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 LoadObjPalette(Entity* entity, u32 a2) {
|
||||
Palette* puVar1;
|
||||
int iVar2;
|
||||
u32 LoadObjPalette(Entity* entity, u32 objPaletteId) {
|
||||
Palette* palette;
|
||||
s32 slot;
|
||||
u32 uVar3;
|
||||
u32 uVar4;
|
||||
|
||||
iVar2 = FindPalette(a2);
|
||||
if (iVar2 < 0) {
|
||||
if (a2 < 0x16) {
|
||||
slot = FindPalette(objPaletteId);
|
||||
if (slot < 0) {
|
||||
if (objPaletteId < 0x16) {
|
||||
uVar3 = 1;
|
||||
} else {
|
||||
uVar3 = gUnk_08133368[(a2 - 0x16)].BYTES.byte3;
|
||||
uVar3 = gUnk_08133368[(objPaletteId - 0x16)].BYTES.byte3;
|
||||
uVar3 &= 0xf;
|
||||
}
|
||||
iVar2 = FindFreeObjPalette(uVar3);
|
||||
if (iVar2 < 0) {
|
||||
slot = FindFreeObjPalette(uVar3);
|
||||
if (slot < 0) {
|
||||
CleanUpObjPalettes();
|
||||
iVar2 = FindFreeObjPalette(uVar3);
|
||||
slot = FindFreeObjPalette(uVar3);
|
||||
}
|
||||
if (iVar2 >= 0) {
|
||||
puVar1 = &gPaletteList[iVar2];
|
||||
puVar1->_2 = a2;
|
||||
puVar1->_1 = 0;
|
||||
puVar1->_0_4 = uVar3;
|
||||
puVar1->_0_0 = 3;
|
||||
if (slot >= 0) {
|
||||
palette = &gPaletteList[slot];
|
||||
palette->objPaletteId = objPaletteId;
|
||||
palette->_1 = 0;
|
||||
palette->_0_4 = uVar3;
|
||||
palette->_0_0 = 3;
|
||||
for (uVar3 = uVar3 - 1; uVar3 != 0; uVar3--) {
|
||||
puVar1++;
|
||||
puVar1->_2 = 0;
|
||||
puVar1->_1 = 0;
|
||||
puVar1->_0_4 = uVar3;
|
||||
puVar1->_0_0 = 2;
|
||||
palette++;
|
||||
palette->objPaletteId = 0;
|
||||
palette->_1 = 0;
|
||||
palette->_0_4 = uVar3;
|
||||
palette->_0_0 = 2;
|
||||
}
|
||||
LoadObjPaletteAtIndex(a2, iVar2);
|
||||
LoadObjPaletteAtIndex(objPaletteId, slot);
|
||||
}
|
||||
}
|
||||
SetEntityObjPalette(entity, iVar2);
|
||||
return iVar2;
|
||||
SetEntityObjPalette(entity, slot);
|
||||
return slot;
|
||||
}
|
||||
|
||||
s32 FindPalette(u32 a1) {
|
||||
s32 FindPalette(u32 objPaletteId) {
|
||||
u32 index;
|
||||
Palette* palette;
|
||||
if (a1 <= 5)
|
||||
return a1;
|
||||
if (objPaletteId <= 5)
|
||||
return objPaletteId;
|
||||
|
||||
for (index = 6, palette = gPaletteList; index < ARRAY_COUNT(gPaletteList); index++) {
|
||||
if (a1 == palette[index]._2) {
|
||||
if (objPaletteId == palette[index].objPaletteId) {
|
||||
return index;
|
||||
}
|
||||
}
|
||||
@@ -115,37 +115,37 @@ s32 FindPalette(u32 a1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
u32 FindFreeObjPalette(u32 a1) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 FindFreeObjPalette(u32 paletteCount) {
|
||||
u32 count;
|
||||
u32 index;
|
||||
u32 tmp;
|
||||
|
||||
for (uVar1 = 0, uVar2 = 6; uVar2 < ARRAY_COUNT(gPaletteList); uVar2++) {
|
||||
switch ((gPaletteList[uVar2]._0_0)) {
|
||||
for (count = 0, index = 6; index < ARRAY_COUNT(gPaletteList); index++) {
|
||||
switch ((gPaletteList[index]._0_0)) {
|
||||
case 0:
|
||||
uVar1 = uVar1 + 1;
|
||||
if (a1 > uVar1)
|
||||
count = count + 1;
|
||||
if (paletteCount > count)
|
||||
continue;
|
||||
tmp = uVar1 - 1;
|
||||
return uVar2 - tmp;
|
||||
tmp = count - 1;
|
||||
return index - tmp;
|
||||
default:
|
||||
uVar1 = 0;
|
||||
count = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (uVar1 = 0, uVar2 = 6; uVar2 < ARRAY_COUNT(gPaletteList); uVar2++) {
|
||||
switch (gPaletteList[uVar2]._0_0) {
|
||||
for (count = 0, index = 6; index < ARRAY_COUNT(gPaletteList); index++) {
|
||||
switch (gPaletteList[index]._0_0) {
|
||||
case 0:
|
||||
case 1:
|
||||
uVar1++;
|
||||
if (a1 <= uVar1) {
|
||||
tmp = uVar1 - 1;
|
||||
return uVar2 - tmp;
|
||||
count++;
|
||||
if (paletteCount <= count) {
|
||||
tmp = count - 1;
|
||||
return index - tmp;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
uVar1 = 0;
|
||||
count = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ u32 FindFreeObjPalette(u32 a1) {
|
||||
|
||||
NONMATCH("asm/non_matching/color/SetEntityObjPalette.inc", void SetEntityObjPalette(Entity* entity, u32 palette)) {
|
||||
u32 uVar1;
|
||||
Palette* pPVar1;
|
||||
Palette* pal;
|
||||
|
||||
if (palette < 0) {
|
||||
palette = 0;
|
||||
@@ -164,15 +164,15 @@ NONMATCH("asm/non_matching/color/SetEntityObjPalette.inc", void SetEntityObjPale
|
||||
}
|
||||
entity->palette.b.b0 = palette;
|
||||
entity->palette.b.b4 = palette;
|
||||
pPVar1 = &gPaletteList[palette];
|
||||
if ((s8)pPVar1->_0_0 != 4) {
|
||||
pPVar1->_1++;
|
||||
uVar1 = pPVar1->_0_4;
|
||||
pPVar1->_0_0 = 3;
|
||||
pal = &gPaletteList[palette];
|
||||
if ((s8)pal->_0_0 != 4) {
|
||||
pal->_1++;
|
||||
uVar1 = pal->_0_4;
|
||||
pal->_0_0 = 3;
|
||||
while (uVar1 = uVar1 - 1, uVar1 != 0) {
|
||||
pPVar1 = pPVar1 + 1;
|
||||
pPVar1->_0_4 = uVar1;
|
||||
pPVar1->_0_0 = 2;
|
||||
pal = pal + 1;
|
||||
pal->_0_4 = uVar1;
|
||||
pal->_0_0 = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -204,7 +204,7 @@ void sub_0801D244(u32 a1) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801D28C(Entity* entity, u32 palette) {
|
||||
void sub_0801D28C(Entity* entity, u32 objPaletteId) {
|
||||
u32 c = entity->spriteAnimation[1];
|
||||
Palette* list = gPaletteList;
|
||||
Palette* p = &list[c];
|
||||
@@ -213,31 +213,31 @@ void sub_0801D28C(Entity* entity, u32 palette) {
|
||||
u32 lo = ((u32)((*(u8*)p) << 0x1c)) >> 0x1c;
|
||||
|
||||
if (lo == 3) {
|
||||
p->_2 = palette;
|
||||
LoadObjPaletteAtIndex(palette, c);
|
||||
p->objPaletteId = objPaletteId;
|
||||
LoadObjPaletteAtIndex(objPaletteId, c);
|
||||
}
|
||||
}
|
||||
|
||||
void ChangeObjPalette(Entity* entity, u32 a2) {
|
||||
void ChangeObjPalette(Entity* entity, u32 objPaletteId) {
|
||||
UnloadOBJPalette(entity);
|
||||
LoadObjPalette(entity, a2);
|
||||
LoadObjPalette(entity, objPaletteId);
|
||||
}
|
||||
|
||||
void LoadObjPaletteAtIndex(u32 a1, u32 a2) {
|
||||
void LoadObjPaletteAtIndex(u32 objPaletteId, u32 a2) {
|
||||
u16* buffer;
|
||||
|
||||
gUsedPalettes |= 1 << (a2 + 0x10);
|
||||
if (5 < a1) {
|
||||
if (a1 == 0x15) {
|
||||
if (objPaletteId > 5) {
|
||||
if (objPaletteId == 0x15) {
|
||||
buffer = gPaletteBuffer;
|
||||
MemFill16(buffer[0x3C], buffer + (a2 + 0x10) * 0x10, 0x20);
|
||||
} else if (a1 < 0x15) {
|
||||
LoadPalettes((u8*)(gPaletteBuffer + (a1 - 6) * 0x10), a2 + 0x10, 1);
|
||||
} else if (objPaletteId < 0x15) {
|
||||
LoadPalettes((u8*)(gPaletteBuffer + (objPaletteId - 6) * 0x10), a2 + 0x10, 1);
|
||||
} else {
|
||||
u32 tmp1 = gUnk_08133368[(a1 - 0x16)].WORD_U;
|
||||
u32 tmp2 = (tmp1 >> 0x18) & 0xf;
|
||||
tmp1 &= 0xffffff;
|
||||
LoadPalettes(gGlobalGfxAndPalettes + tmp1, a2 + 0x10, tmp2);
|
||||
u32 offset = gUnk_08133368[(objPaletteId - 0x16)].WORD_U;
|
||||
u32 numPalettes = (offset >> 0x18) & 0xf;
|
||||
offset &= 0xffffff;
|
||||
LoadPalettes(gGlobalGfxAndPalettes + offset, a2 + 0x10, numPalettes);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,7 +260,7 @@ void CleanUpObjPalettes(void) {
|
||||
gPaletteList[index1]._0_0 = 0;
|
||||
gPaletteList[index1]._0_4 = 0;
|
||||
gPaletteList[index1]._1 = 0;
|
||||
gPaletteList[index1]._2 = 0;
|
||||
gPaletteList[index1].objPaletteId = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -337,7 +337,7 @@ void sub_0801D48C(u32 a1, u32 a2) {
|
||||
pPVar1->_0_0 = 0;
|
||||
pPVar1->_0_4 = 0;
|
||||
pPVar1->_1 = 0;
|
||||
pPVar1->_2 = 0;
|
||||
pPVar1->objPaletteId = 0;
|
||||
MemCopy(iVar3, iVar4, 0x20);
|
||||
iVar3 += 0x10;
|
||||
pPVar1++;
|
||||
|
||||
+56
-52
@@ -79,7 +79,7 @@ extern const DungeonLayout** const gUnk_080C9C50[];
|
||||
extern u8 gMapDataBottomSpecial[];
|
||||
|
||||
u32 sub_0801DF10(const DungeonLayout* lyt);
|
||||
bool32 sub_0801DF90(TileEntity* tileEntity, u32 bank);
|
||||
bool32 IsRoomVisited(TileEntity* tileEntity, u32 bank);
|
||||
u32 sub_0801DF60(u32 a1, u8* p);
|
||||
u32 sub_0801DF78(u32 a1, u32 a2);
|
||||
void sub_0801DF28(u32 x, u32 y, s32 color);
|
||||
@@ -437,6 +437,7 @@ void DrawDungeonFeatures(u32 floor, void* data, u32 size) {
|
||||
layout = gUnk_080C9C50[gArea.dungeon_idx][floor];
|
||||
MemClear(gMapDataBottomSpecial, 0x8000);
|
||||
while (layout->area != 0) {
|
||||
// ROOM_VISIT_MARKER has to be first TileEntity in the room.
|
||||
tileEntity = (TileEntity*)GetRoomProperty(layout->area, layout->room, 3);
|
||||
bankOffset = sub_0801DF10(layout);
|
||||
features = 0;
|
||||
@@ -446,7 +447,7 @@ void DrawDungeonFeatures(u32 floor, void* data, u32 size) {
|
||||
if (HasDungeonSmallKey()) {
|
||||
features = 2;
|
||||
}
|
||||
if (sub_0801DF90(tileEntity, bankOffset)) {
|
||||
if (IsRoomVisited(tileEntity, bankOffset)) {
|
||||
features = 3;
|
||||
}
|
||||
}
|
||||
@@ -514,12 +515,12 @@ u32 sub_0801DF78(u32 a1, u32 a2) {
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0801DF90(TileEntity* tileEntity, u32 bank) {
|
||||
bool32 IsRoomVisited(TileEntity* tileEntity, u32 bank) {
|
||||
if (tileEntity == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (; tileEntity->type != 0; tileEntity++) {
|
||||
if (tileEntity->type == 1)
|
||||
if (tileEntity->type == ROOM_VISIT_MARKER)
|
||||
return CheckLocalFlagByBank(bank, tileEntity->localFlag);
|
||||
}
|
||||
return FALSE;
|
||||
@@ -531,7 +532,7 @@ void sub_0801DFB4(Entity* entity, u32 textIndex, u32 a3, u32 a4) {
|
||||
gFuseInfo._8 = a3;
|
||||
gFuseInfo._a = a4;
|
||||
gFuseInfo.ent = entity;
|
||||
gFuseInfo._3 = gUnk_03003DF0.unk_2;
|
||||
gFuseInfo.kinstoneId = gUnk_03003DF0.unk_2;
|
||||
if (entity != NULL) {
|
||||
gFuseInfo.prevUpdatePriority = entity->updatePriority;
|
||||
entity->updatePriority = 2;
|
||||
@@ -738,12 +739,12 @@ void sub_0801E64C(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801E6C8(u32 param_1) {
|
||||
void sub_0801E6C8(u32 kinstoneId) {
|
||||
u32 tmp;
|
||||
u32 index;
|
||||
if (param_1 - 1 < 100) {
|
||||
if (kinstoneId - 1 < 100) {
|
||||
for (index = 0; index < 0x80; index++) {
|
||||
if (param_1 == gSave.unk1C1[index]) {
|
||||
if (kinstoneId == gSave.unk1C1[index]) {
|
||||
gSave.unk1C1[index] = 0xf1;
|
||||
}
|
||||
}
|
||||
@@ -752,7 +753,7 @@ void sub_0801E6C8(u32 param_1) {
|
||||
gSave.unk1C1[tmp] = 0xf2;
|
||||
}
|
||||
for (index = 0; index < 0x20; index++) {
|
||||
if (param_1 == gUnk_03003DF0.array[index].unk_3) {
|
||||
if (kinstoneId == gUnk_03003DF0.array[index].unk_3) {
|
||||
gUnk_03003DF0.array[index].unk_3 = 0xf1;
|
||||
}
|
||||
}
|
||||
@@ -803,18 +804,18 @@ u32 sub_0801E7D0(u32 a1) {
|
||||
return gSave.unk12B[tmp];
|
||||
}
|
||||
|
||||
u32 CheckKinstoneFused(u32 idx) {
|
||||
if (idx > 100 || idx < 1) {
|
||||
u32 CheckKinstoneFused(u32 kinstoneId) {
|
||||
if (kinstoneId > 100 || kinstoneId < 1) {
|
||||
return 0;
|
||||
}
|
||||
return ReadBit(&gSave.unk241, idx);
|
||||
return ReadBit(&gSave.fusedKinstones, kinstoneId);
|
||||
}
|
||||
|
||||
bool32 sub_0801E810(u32 idx) {
|
||||
if (idx > 100 || idx < 1) {
|
||||
bool32 sub_0801E810(u32 kinstoneId) {
|
||||
if (kinstoneId > 100 || kinstoneId < 1) {
|
||||
return FALSE;
|
||||
}
|
||||
return ReadBit(&gSave.unk24E, idx);
|
||||
return ReadBit(&gSave.unk24E, kinstoneId);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801E82C.inc", void sub_0801E82C(void));
|
||||
@@ -829,57 +830,59 @@ s32 sub_0801E8B0(u32 idx) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Check conditions, something with kinstones
|
||||
void sub_0801E8D4(void) {
|
||||
u32 i;
|
||||
for (i = 10; i <= 100; ++i) {
|
||||
if (CheckKinstoneFused(i) && !sub_0801E810(i)) {
|
||||
u32 evt_type = gUnk_080C9CBC[i].evt_type;
|
||||
struct_080FE320* s = &gUnk_080FE320[evt_type];
|
||||
u32 kinstoneId;
|
||||
for (kinstoneId = 10; kinstoneId <= 100; ++kinstoneId) {
|
||||
if (CheckKinstoneFused(kinstoneId) && !sub_0801E810(kinstoneId)) {
|
||||
u32 worldEventId = gKinstoneWorldEvents[kinstoneId].worldEventId;
|
||||
const WorldEvent* s = &gWorldEvents[worldEventId];
|
||||
#if !defined EU && !defined JP
|
||||
u32 flag = s->flag;
|
||||
#endif
|
||||
u32 tmp;
|
||||
switch (s->_10) {
|
||||
case 0:
|
||||
switch (s->condition) {
|
||||
case CND_0:
|
||||
tmp = 0;
|
||||
break;
|
||||
case 1:
|
||||
tmp = s->_11;
|
||||
case CND_1:
|
||||
tmp = s->bank;
|
||||
break;
|
||||
case 2:
|
||||
case CND_2:
|
||||
tmp = 0xf;
|
||||
break;
|
||||
case 3:
|
||||
case CND_3:
|
||||
tmp = 0x10;
|
||||
break;
|
||||
case 4:
|
||||
case CND_4:
|
||||
tmp = 0x11;
|
||||
break;
|
||||
#if !defined EU && !defined JP
|
||||
case 5:
|
||||
tmp = 4;
|
||||
flag = 0x83;
|
||||
// Special conditions for BEANDEMO_00 to BEANDEMO_04
|
||||
case CND_5:
|
||||
tmp = LOCAL_BANK_3;
|
||||
flag = SORA_10_H00;
|
||||
break;
|
||||
case 6:
|
||||
tmp = 4;
|
||||
flag = 0x84;
|
||||
case CND_6:
|
||||
tmp = LOCAL_BANK_3;
|
||||
flag = SORA_11_H00;
|
||||
break;
|
||||
case 7:
|
||||
tmp = 4;
|
||||
flag = 0x87;
|
||||
case CND_7:
|
||||
tmp = LOCAL_BANK_3;
|
||||
flag = SORA_12_T00;
|
||||
break;
|
||||
case 8:
|
||||
tmp = 4;
|
||||
flag = 0x88;
|
||||
case CND_8:
|
||||
tmp = LOCAL_BANK_3;
|
||||
flag = SORA_13_H00;
|
||||
break;
|
||||
case 9:
|
||||
tmp = 4;
|
||||
flag = 0x8b;
|
||||
case CND_9:
|
||||
tmp = LOCAL_BANK_3;
|
||||
flag = SORA_14_T00;
|
||||
break;
|
||||
#ifndef DEMO_JP
|
||||
case 10:
|
||||
tmp = 5;
|
||||
flag = 0x88;
|
||||
case CND_10:
|
||||
tmp = LOCAL_BANK_4;
|
||||
flag = KS_B15;
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
@@ -889,7 +892,7 @@ void sub_0801E8D4(void) {
|
||||
#else
|
||||
if (sub_0807CB24(tmp, s->flag)) {
|
||||
#endif
|
||||
WriteBit(&gSave.unk24E, i);
|
||||
WriteBit(&gSave.unk24E, kinstoneId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -911,7 +914,7 @@ void (*const gUnk_080C9CAC[])(void) = {
|
||||
|
||||
// TODO merge
|
||||
#ifdef JP
|
||||
const struct_080C9CBC gUnk_080C9CBC[] = {
|
||||
const KinstoneWorldEvent gKinstoneWorldEvents[] = {
|
||||
{ 15, 44, 45, 8, 0, 0, 0, 0 }, { 4, 8, 1, 0, 0, 1, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 13, 2, 0, 0, 6, 2, 0 }, { 4, 14, 2, 0, 0, 7, 2, 0 }, { 4, 15, 2, 0, 0, 8, 2, 0 },
|
||||
@@ -956,7 +959,7 @@ const struct_080C9CBC gUnk_080C9CBC[] = {
|
||||
|
||||
#else
|
||||
#ifdef EU
|
||||
const struct_080C9CBC gUnk_080C9CBC[] = {
|
||||
const KinstoneWorldEvent gKinstoneWorldEvents[] = {
|
||||
{ 15, 44, 45, 8, 0, 0, 0, 0 }, { 4, 8, 1, 0, 0, 1, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 13, 2, 0, 0, 6, 2, 0 }, { 4, 14, 2, 0, 0, 7, 2, 0 }, { 4, 15, 2, 0, 0, 8, 2, 0 },
|
||||
@@ -999,7 +1002,7 @@ const struct_080C9CBC gUnk_080C9CBC[] = {
|
||||
{ 2, 43, 7, 8, 0, 18, 0, 0 },
|
||||
};
|
||||
#else
|
||||
const struct_080C9CBC gUnk_080C9CBC[] = {
|
||||
const KinstoneWorldEvent gKinstoneWorldEvents[] = {
|
||||
{ 15, 44, 45, 8, 0, 0, 0, 0 }, { 4, 8, 1, 0, 0, 1, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 10, 1, 0, 0, 3, 2, 0 }, { 4, 9, 1, 0, 0, 2, 2, 0 },
|
||||
{ 4, 13, 2, 0, 0, 6, 2, 0 }, { 4, 14, 2, 0, 0, 7, 2, 0 }, { 4, 15, 2, 0, 0, 8, 2, 0 },
|
||||
@@ -1063,13 +1066,14 @@ const u8 gUnk_080CA11C[] = {
|
||||
24, 45, 53, 54, 55, 57, 60, 68, 70, 71, 78, 80, 83, 85, 86, 88, 95, 96, 0, 0,
|
||||
};
|
||||
|
||||
// Get a random kinstone
|
||||
u32 sub_0801EA74(void) {
|
||||
s32 r = (s32)Random() % 18;
|
||||
u32 i;
|
||||
for (i = 0; i < 18; ++i) {
|
||||
u32 n = gUnk_080CA11C[r];
|
||||
if (!CheckKinstoneFused(n))
|
||||
return n;
|
||||
u32 kinstoneId = gUnk_080CA11C[r];
|
||||
if (!CheckKinstoneFused(kinstoneId))
|
||||
return kinstoneId;
|
||||
r = (r + 1) % 18;
|
||||
}
|
||||
return 0xF2;
|
||||
|
||||
+779
@@ -0,0 +1,779 @@
|
||||
/**
|
||||
* @file cutscene.c
|
||||
*
|
||||
* @brief Cutscenes
|
||||
*/
|
||||
#include "cutscene.h"
|
||||
|
||||
#include "enemy.h"
|
||||
#include "fade.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "npc.h"
|
||||
#include "object.h"
|
||||
#include "screen.h"
|
||||
|
||||
void sub_08051F78(void);
|
||||
void sub_08051FF0(void);
|
||||
void sub_08052004(void);
|
||||
|
||||
const EntityData gUnk_080FCB94[] = {
|
||||
{ OBJECT, 15, CHUCHU_BOSS_CUTSCENE, 0, 0, 0x1c8, 0x288, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
void sub_080535AC(void);
|
||||
void sub_080535F4(void);
|
||||
void nullsub_481(void);
|
||||
void sub_08053618(void);
|
||||
void (*const gUnk_080FCBB4[])(void) = {
|
||||
sub_080535AC,
|
||||
sub_080535F4,
|
||||
nullsub_481,
|
||||
sub_08053618,
|
||||
};
|
||||
|
||||
void CutsceneMain_Init(void) {
|
||||
gUnk_080FCBB4[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_080535AC(void) {
|
||||
gMenu.overlayType = 1;
|
||||
gMenu.transitionTimer = 120;
|
||||
gUI.field_0x6 = 1;
|
||||
gUpdateVisibleTiles = 1;
|
||||
gScreen.lcd.displayControl &= 0xfeff;
|
||||
LoadRoomEntityList(gUnk_080FCB94);
|
||||
SetFade(FADE_BLACK_WHITE | FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void sub_080535F4(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
ResetSystemPriority();
|
||||
gMenu.overlayType = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_481(void) {
|
||||
}
|
||||
|
||||
void sub_08053618(void) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
sub_08052004();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053634(void) {
|
||||
gUI.nextToLoad = 3; // Subtask_FadeOut
|
||||
MessageInitialize();
|
||||
}
|
||||
|
||||
void sub_08053648(void) {
|
||||
Entity* obj = CreateObject(SMOKE, 0, 0);
|
||||
if (obj != NULL) {
|
||||
obj->x.HALF.HI = gRoomControls.origin_x + 0x2d0;
|
||||
obj->y.HALF.HI = gRoomControls.origin_y + 0x148;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0805367C(void) {
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
|
||||
void sub_0805368C(void) {
|
||||
Entity* entity = FindEntityByID(OBJECT, HOUSE_DOOR_INT, 6);
|
||||
if (entity != NULL) {
|
||||
DeleteEntity(entity);
|
||||
SoundReq(SFX_F0); // TODO Door sound during intro
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080536A8(void) {
|
||||
sub_080A71C4(5, 5, FADE_INSTANT, 0x10);
|
||||
}
|
||||
|
||||
void sub_080536B8(void) {
|
||||
sub_080A71C4(5, 3, FADE_INSTANT, 4);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
extern Script script_IntroCameraTarget;
|
||||
extern Script script_ZeldaMoveToLinksHouse;
|
||||
extern Script script_HouseDoorIntro;
|
||||
extern Script script_CutsceneOrchestratorIntro2;
|
||||
|
||||
const EntityData gUnk_080FCBC4[] = {
|
||||
{ OBJECT, 79, CUTSCENE_ORCHESTRATOR, 0, 0, 0x230, 0x1a8, (u32)&script_IntroCameraTarget },
|
||||
{ NPC, 79, ZELDA, 0, 0, 0x230, 0x1a8, (u32)&script_ZeldaMoveToLinksHouse },
|
||||
{ OBJECT, 79, HOUSE_DOOR_EXT, 3, 3, 0x290, 0x193, (u32)&script_HouseDoorIntro },
|
||||
{ OBJECT, 79, CUTSCENE_ORCHESTRATOR, 0, 0, 0x2d0, 0x1a8, (u32)&script_CutsceneOrchestratorIntro2 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
extern Script script_CutsceneOrchestratorIntro;
|
||||
extern Script script_SmithIntro;
|
||||
extern Script script_ZeldaIntro;
|
||||
const EntityData gUnk_080FCC14[] = {
|
||||
{ OBJECT, 79, CUTSCENE_ORCHESTRATOR, 0, 0, 0x0, 0x0, (u32)&script_CutsceneOrchestratorIntro },
|
||||
{ NPC, 79, SMITH, 0, 0, 0xb8, 0x60, (u32)&script_SmithIntro },
|
||||
{ NPC, 79, ZELDA, 0, 0, 0x8, 0x5e, (u32)&script_ZeldaIntro },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
extern Script script_ZeldaLeaveLinksHouse;
|
||||
const EntityData gUnk_080FCC54[] = {
|
||||
{ NPC, 79, ZELDA, 0, 0, 0xa0, 0x5d, (u32)&script_ZeldaLeaveLinksHouse },
|
||||
{ OBJECT, 15, HOUSE_DOOR_INT, 4, 256, 0x78, 0x88, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
const Font gUnk_080FCC84 = {
|
||||
&gBG1Buffer[0x1cf], BG_TILE_ADDR(0x188), gTextGfxBuffer, 0, 0xf020, 0xf0, 1, 0, 0, 0, 0, 5, 0, 0, 0
|
||||
};
|
||||
const Font gUnk_080FCC9C = {
|
||||
&gBG1Buffer[0x96], BG_TILE_ADDR(0x188), gTextGfxBuffer, 0, 0xf020, 0x78, 1, 0, 0, 0, 0, 5, 0, 0, 0
|
||||
};
|
||||
|
||||
const struct_080FCCB4 gUnk_080FCCB4[] = {
|
||||
{ &gUnk_080FCC84, 240, 96, 193, 1 }, { &gUnk_080FCC84, 240, 96, 453, 6 }, { &gUnk_080FCC9C, 120, 160, 363, 4 },
|
||||
{ &gUnk_080FCC9C, 120, 160, 498, 4 }, { &gUnk_080FCC84, 240, 96, 368, 4 }, { &gUnk_080FCC84, 240, 96, 358, 4 },
|
||||
};
|
||||
|
||||
void sub_08053758(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053904(void);
|
||||
void sub_08053974(void);
|
||||
void nullsub_482(void);
|
||||
void sub_080539BC(void);
|
||||
void (*const gUnk_080FCCFC[])(void) = {
|
||||
sub_08053758, sub_08053800, sub_08053894, sub_08053800, sub_08053894, sub_08053800, sub_08053894, sub_08053800,
|
||||
sub_08053894, sub_08053800, sub_08053904, sub_08053974, nullsub_482, sub_080539BC, nullsub_482,
|
||||
};
|
||||
|
||||
void sub_080536D4(void) {
|
||||
gUnk_080FCCFC[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_0805370C(void);
|
||||
void (*const gUnk_080FCD38[])(void) = {
|
||||
sub_0805370C,
|
||||
nullsub_482,
|
||||
};
|
||||
|
||||
void sub_080536F0(void) {
|
||||
gUnk_080FCD38[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_0805370C(void) {
|
||||
gMenu.overlayType++;
|
||||
gUpdateVisibleTiles = 1;
|
||||
sub_08051FF0();
|
||||
LoadRoomEntityList((EntityData*)gUnk_080FCC54);
|
||||
SetFade(FADE_INSTANT, 0x10);
|
||||
}
|
||||
|
||||
void sub_08053758(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_08053800(void);
|
||||
void sub_08053894(void);
|
||||
void sub_080539F4(void);
|
||||
void sub_08053A1C(void);
|
||||
void sub_08053A5C(void);
|
||||
void sub_08053A90(void);
|
||||
void (*const gUnk_080FCD40[])(void) = {
|
||||
sub_08053758, sub_08053800, sub_08053894, sub_08053800, sub_08053894, sub_08053800,
|
||||
sub_08053894, sub_08053800, sub_08053894, sub_08053800, sub_08053894, sub_08053800,
|
||||
sub_08053894, sub_080539F4, sub_08053A1C, sub_08053A5C, sub_08053A90,
|
||||
};
|
||||
|
||||
void sub_0805373C(void) {
|
||||
gUnk_080FCD40[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053758(void) {
|
||||
gMenu.overlayType = 1;
|
||||
gMenu.transitionTimer = 120;
|
||||
gMenu.field_0xa = 0x1e;
|
||||
*((u8*)&gMenu + 0x10) = 0; // TODO
|
||||
gUI.field_0x6 = 1;
|
||||
gMapBottom.bgSettings = NULL;
|
||||
gMapTop.bgSettings = NULL;
|
||||
gRoomControls.camera_target = NULL;
|
||||
gRoomControls.scroll_y = 0;
|
||||
gRoomControls.scroll_x = 0;
|
||||
ClearBgAnimations();
|
||||
DispReset(0);
|
||||
gScreen.lcd.displayControl = 0x2640;
|
||||
gScreen.controls.layerFXControl = 0x2244;
|
||||
gScreen.controls.alphaBlend = 0x1000;
|
||||
gScreen.controls.windowInsideControl = 0x1f;
|
||||
gScreen.controls.windowOutsideControl = 0x3f;
|
||||
gScreen.controls.window0HorizontalDimensions = 0xf0;
|
||||
gScreen.controls.window0VerticalDimensions = 0x60;
|
||||
gScreen.bg1.control = 0x1c4e;
|
||||
gScreen.bg2.control = 0x1dc1;
|
||||
SoundReq(BGM_STORY);
|
||||
ResetSystemPriority();
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
void sub_08053800(void) {
|
||||
u32 index;
|
||||
const struct_080FCCB4* ptr;
|
||||
if (gFadeControl.active == 0) {
|
||||
index = gGenericMenu.unk10.a[0];
|
||||
ptr = &gUnk_080FCCB4[index];
|
||||
gGenericMenu.base.transitionTimer = ptr->transitionTimer;
|
||||
gGenericMenu.base.field_0xa = 0x1e;
|
||||
gGenericMenu.unk10.a[0]++;
|
||||
gGenericMenu.base.overlayType++;
|
||||
gGenericMenu.base.storyPanelIndex = 0;
|
||||
LoadPaletteGroup(index + 0x8a);
|
||||
LoadGfxGroup(index + 0x3a);
|
||||
MemClear(&gBG1Buffer, 0x800);
|
||||
ShowTextBox(TEXT_INDEX(TEXT_PICORI, 1) + index, ptr->font);
|
||||
gScreen.bg1.updated = 1;
|
||||
gScreen.controls.alphaBlend = 0x10;
|
||||
gScreen.controls.window0HorizontalDimensions = ptr->width;
|
||||
gScreen.controls.window0VerticalDimensions = ptr->height;
|
||||
SetFade(FADE_INSTANT, ptr->fadeSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053894(void) {
|
||||
u32 tmp;
|
||||
if (gFadeControl.active == 0) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa--;
|
||||
} else {
|
||||
if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) {
|
||||
tmp = ++gMenu.storyPanelIndex << 0x18;
|
||||
gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - ((tmp) >> 0x19));
|
||||
}
|
||||
}
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053904(void) {
|
||||
u32 tmp;
|
||||
if (gFadeControl.active == 0) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa--;
|
||||
} else {
|
||||
if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) {
|
||||
tmp = ++gMenu.storyPanelIndex << 0x18;
|
||||
gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - (tmp >> 0x19));
|
||||
}
|
||||
}
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053974(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
InitFade();
|
||||
DispReset(1);
|
||||
SetBGDefaults();
|
||||
sub_08051F78();
|
||||
LoadRoomEntityList(gUnk_080FCBC4);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_482(void) {
|
||||
}
|
||||
|
||||
void sub_080539BC(void) {
|
||||
SetBGDefaults();
|
||||
DeleteAllEntities();
|
||||
sub_08051F9C(0x22, 0x11, 0, 0);
|
||||
sub_0804B0B0(0x22, 0x11);
|
||||
LoadRoomEntityList(gUnk_080FCC14);
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
|
||||
void sub_080539F4(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
DispReset(1);
|
||||
gMenu.overlayType++;
|
||||
gMenu.transitionTimer = 60;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053A1C(void) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
gMenu.transitionTimer = 8;
|
||||
MessageFromTarget(TEXT_INDEX(TEXT_PICORI, 0x07));
|
||||
gMessage.textWindowPosX = 1;
|
||||
gMessage.textWindowPosY = 8;
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053A5C(void) {
|
||||
if (((gMessage.doTextBox & 0x7f) == 0) && --gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053A90(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
gUI.nextToLoad = 3; // Subtask_FadeOut
|
||||
SetBGDefaults();
|
||||
}
|
||||
}
|
||||
|
||||
extern Script script_CutsceneOrchestratorMinishVaati;
|
||||
extern Script script_MinishEzlo;
|
||||
extern Script script_CutsceneMiscObjectMinishCap;
|
||||
extern Script script_Vaati;
|
||||
|
||||
const EntityData gUnk_080FCD84[] = {
|
||||
{ OBJECT, 79, CUTSCENE_ORCHESTRATOR, 0, 0, 0x0, 0x0, (u32)&script_CutsceneOrchestratorMinishVaati },
|
||||
{ NPC, 79, MINISH_EZLO, 0, 0, 0x78, 0xd8, (u32)&script_MinishEzlo },
|
||||
{ OBJECT, 79, CUTSCENE_MISC_OBJECT, 1, 0, 0x78, 0x58, (u32)&script_CutsceneMiscObjectMinishCap },
|
||||
{ NPC, 79, VAATI, 1, 0, 0x78, 0x68, (u32)&script_Vaati },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
void sub_08053ACC(void);
|
||||
void sub_08053B00(void);
|
||||
void sub_08053B10(void);
|
||||
void (*const gUnk_080FCDD4[])(void) = {
|
||||
sub_08053ACC,
|
||||
sub_08053B00,
|
||||
sub_08053B10,
|
||||
};
|
||||
|
||||
void sub_08053AB0(void) {
|
||||
gUnk_080FCDD4[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053ACC(void) {
|
||||
gMenu.overlayType++;
|
||||
gUpdateVisibleTiles = 1;
|
||||
sub_08051FF0();
|
||||
LoadRoomEntityList(gUnk_080FCD84);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
void sub_08053B00(void) {
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
|
||||
void sub_08053B10(void) {
|
||||
if (CheckRoomFlag(1)) {
|
||||
gMenu.menuType++;
|
||||
DispReset(1);
|
||||
SetFade(FADE_INSTANT, 0x100);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053B3C(void) {
|
||||
sub_080A71C4(5, 4, FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
extern Script script_CutsceneOrchestratorTakeoverCutscene;
|
||||
extern Script script_KingDaltusTakeover;
|
||||
extern Script script_VaatiTakeover;
|
||||
extern Script script_ZeldaStoneTakeover;
|
||||
const EntityData gUnk_080FCDE0[] = {
|
||||
{ OBJECT, 79, CUTSCENE_ORCHESTRATOR, 0, 0, 0x0, 0x0, (u32)&script_CutsceneOrchestratorTakeoverCutscene },
|
||||
{ NPC, 79, KING_DALTUS, 0, 0, 0x88, 0x58, (u32)&script_KingDaltusTakeover },
|
||||
{ NPC, 79, VAATI, 1, 0, 0x88, 0xe0, (u32)&script_VaatiTakeover },
|
||||
{ NPC, 79, ZELDA, 0, 0, 0xb8, 0x58, (u32)&script_ZeldaStoneTakeover },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
extern Script script_MinisterPothoTakeover;
|
||||
extern Script script_GuardTakeover;
|
||||
extern Script script_GuardTakeover;
|
||||
const EntityData gUnk_080FCE30[] = {
|
||||
{ NPC, 79, MINISTER_POTHO, 0, 0, 0x68, 0x58, (u32)&script_MinisterPothoTakeover },
|
||||
{ NPC, 79, GUARD_1, 0, 0, 0x78, 0xe8, (u32)&script_GuardTakeover },
|
||||
{ NPC, 79, GUARD_1, 1, 0, 0x78, 0x108, (u32)&script_GuardTakeover },
|
||||
{ NPC, 79, GUARD_1, 2, 0, 0x78, 0x128, (u32)&script_GuardTakeover },
|
||||
{ NPC, 79, GUARD_1, 3, 0, 0x98, 0xe8, (u32)&script_GuardTakeover },
|
||||
{ NPC, 79, GUARD_1, 4, 0, 0x98, 0x108, (u32)&script_GuardTakeover },
|
||||
{ NPC, 79, GUARD_1, 5, 0, 0x98, 0x128, (u32)&script_GuardTakeover },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
void sub_08053B74(void);
|
||||
void sub_08053BAC(void);
|
||||
void sub_08053BBC(void);
|
||||
void (*const gUnk_080FCEB0[])(void) = {
|
||||
sub_08053B74,
|
||||
sub_08053BAC,
|
||||
sub_08053BBC,
|
||||
};
|
||||
|
||||
void sub_08053B58(void) {
|
||||
gUnk_080FCEB0[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053B74(void) {
|
||||
gMenu.overlayType++;
|
||||
gUpdateVisibleTiles = 1;
|
||||
LoadRoomEntityList(gUnk_080FCDE0);
|
||||
ResetSystemPriority();
|
||||
ResetEntityPriority();
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
void sub_08053BAC(void) {
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
|
||||
void sub_08053BBC(void) {
|
||||
if (CheckRoomFlag(0)) {
|
||||
gMenu.menuType++;
|
||||
DispReset(1);
|
||||
SetFade(FADE_INSTANT, 0x100);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053BE8(void) {
|
||||
sub_080A71C4(5, 2, FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 0x100);
|
||||
}
|
||||
|
||||
extern Script script_ZeldaStoneInDHC;
|
||||
extern Script script_ZeldaStoneDHC;
|
||||
const EntityData gUnk_080FCEBC[] = {
|
||||
{ NPC, 79, ZELDA, 0, 0, 0x78, 0x68, (u32)&script_ZeldaStoneInDHC },
|
||||
{ NPC, 79, VAATI, 1, 0, 0x78, 0x98, (u32)&script_ZeldaStoneDHC },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
void sub_08053C20(void);
|
||||
void nullsub_483(void);
|
||||
void sub_08053C60(void);
|
||||
void (*const gUnk_080FCEEC[])(void) = {
|
||||
sub_08053C20,
|
||||
nullsub_483,
|
||||
sub_08053C60,
|
||||
};
|
||||
|
||||
void sub_08053C04(void) {
|
||||
gUnk_080FCEEC[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053C20(void) {
|
||||
gMenu.overlayType = 1;
|
||||
gMenu.transitionTimer = 120; // Go to game over after 2 minutes.
|
||||
gUpdateVisibleTiles = 1;
|
||||
sub_08051FF0();
|
||||
LoadStaticBackground(4);
|
||||
LoadRoomEntityList(gUnk_080FCEBC);
|
||||
SetFade(FADE_INSTANT, 0x10);
|
||||
SoundReq(BGM_FIGHT_THEME2);
|
||||
}
|
||||
|
||||
void nullsub_483(void) {
|
||||
}
|
||||
|
||||
void sub_08053C60(void) {
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 2);
|
||||
SoundReq(SFX_SUMMON);
|
||||
SoundReq(SONG_STOP_BGM);
|
||||
SetTask(TASK_GAMEOVER);
|
||||
}
|
||||
|
||||
void sub_08053C84(void) {
|
||||
gMenu.overlayType = 2;
|
||||
}
|
||||
void sub_08053CAC(void);
|
||||
void sub_08053CAC(void);
|
||||
void sub_08053E58(void);
|
||||
void (*const gUnk_080FCEF8[])(void) = {
|
||||
sub_08053CAC,
|
||||
sub_08053CAC,
|
||||
sub_08053E58,
|
||||
};
|
||||
|
||||
void CutsceneMain_Exit(void) {
|
||||
gUnk_080FCEF8[gMenu.field_0x3]();
|
||||
}
|
||||
|
||||
const EntityData gUnk_080FCF24[];
|
||||
const EntityData gUnk_080FCF44[];
|
||||
const EntityData gUnk_080FCF64[];
|
||||
const EntityData gUnk_080FCF84[];
|
||||
|
||||
const struct_080FCF04 gUnk_080FCF04[] = {
|
||||
{ gUnk_080FCF24, AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_2F, 0, 0 },
|
||||
{ gUnk_080FCF44, AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_WEST_STAIRS_1F, 0, 0 },
|
||||
{ gUnk_080FCF64, AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_2F, 0, 0 },
|
||||
{ gUnk_080FCF84, AREA_FORTRESS_OF_WINDS, ROOM_FORTRESS_OF_WINDS_EAST_STAIRS_1F, 0, 0 },
|
||||
};
|
||||
|
||||
const EntityData gUnk_080FCF24[] = {
|
||||
{ OBJECT, 15, GROUND_ITEM, 83, 512, 0x88, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
const EntityData gUnk_080FCF44[] = {
|
||||
{ OBJECT, 15, GROUND_ITEM, 83, 512, 0x68, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
const EntityData gUnk_080FCF64[] = {
|
||||
{ OBJECT, 15, GROUND_ITEM, 83, 512, 0x88, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
const EntityData gUnk_080FCF84[] = {
|
||||
{ OBJECT, 15, GROUND_ITEM, 83, 512, 0x68, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
void sub_08053CC8(void);
|
||||
void sub_08053D34(void);
|
||||
void sub_08053D90(void);
|
||||
void sub_08053DB4(void);
|
||||
void sub_08053E30(void);
|
||||
void (*const gUnk_080FCFA4[])(void) = {
|
||||
sub_08053CC8, sub_08053D34, sub_08053D90, sub_08053DB4, sub_08053E30,
|
||||
};
|
||||
|
||||
void sub_08053CAC(void) {
|
||||
gUnk_080FCFA4[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053CC8(void) {
|
||||
const struct_080FCF04* ptr;
|
||||
ptr = gUnk_080FCF04 + gMenu.field_0x3 * 2;
|
||||
gMenu.field_0xc = (void*)&ptr[1];
|
||||
LoadRoomEntityList(ptr->entityData);
|
||||
LoadRoomEntityList(GetRoomProperty(ptr->area, ptr->room, 1));
|
||||
LoadRoomEntityList(GetRoomProperty(ptr->area, ptr->room, 2));
|
||||
gMenu.overlayType = 1;
|
||||
gScreen.lcd.displayControl &= 0xfeff;
|
||||
gUpdateVisibleTiles = 1;
|
||||
SetFade(FADE_INSTANT, 0x10);
|
||||
if (ptr->room == 0x1d) { // TODO what room is this?
|
||||
gMenu.field_0xa = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053D34(void) {
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa = 0;
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_7, 0x3d)) {
|
||||
SetTileType(0x74, 0xc4, 1);
|
||||
}
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_7, 0x3e)) {
|
||||
SetTileType(0x74, 0xcc, 1);
|
||||
}
|
||||
}
|
||||
if (gFadeControl.active == 0) {
|
||||
gMenu.transitionTimer = 120;
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053D90(void) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFadeInverted(0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053DB4(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
struct_080FCF04* ptr = (struct_080FCF04*)gMenu.field_0xc;
|
||||
sub_08052FF4(gMenu.field_0xc[4], gMenu.field_0xc[5]);
|
||||
InitializeCamera();
|
||||
gUpdateVisibleTiles = 1;
|
||||
gRoomControls.scroll_x = (s8)ptr->scrollX + gRoomControls.scroll_x;
|
||||
gRoomControls.scroll_y = (s8)ptr->scrollY + gRoomControls.scroll_y;
|
||||
LoadRoomEntityList(ptr->entityData);
|
||||
LoadRoomEntityList((EntityData*)GetRoomProperty(ptr->area, ptr->room, 1));
|
||||
LoadRoomEntityList((EntityData*)GetRoomProperty(ptr->area, ptr->room, 2));
|
||||
gMenu.transitionTimer = 120;
|
||||
gMenu.overlayType++;
|
||||
SetFadeInverted(0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053E30(void) {
|
||||
if ((gFadeControl.active == 0) && --gMenu.transitionTimer == 0) {
|
||||
gMenu.menuType++;
|
||||
}
|
||||
}
|
||||
|
||||
const EntityData gUnk_080FCFE8[];
|
||||
const EntityData gUnk_080FD008[];
|
||||
const EntityData gUnk_080FD028[];
|
||||
const EntityData gUnk_080FD048[];
|
||||
const EntityData gUnk_080FD078[];
|
||||
const EntityData gUnk_080FD098[];
|
||||
const EntityData gUnk_080FD0C8[];
|
||||
const EntityData gUnk_080FD0E8[];
|
||||
const struct_080FCFB8 gUnk_080FCFB8[] = {
|
||||
{ gUnk_080FCFE8, gUnk_080FD008, AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_LEFT_DARKNUT, 16, 16 },
|
||||
{ gUnk_080FD028, gUnk_080FD048, AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_TOP_RIGHT_DARKNUTS, 16, 16 },
|
||||
{ gUnk_080FD078, gUnk_080FD098, AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_LEFT_DARKNUTS, 16, 16 },
|
||||
{ gUnk_080FD0C8, gUnk_080FD0E8, AREA_DARK_HYRULE_CASTLE, ROOM_DARK_HYRULE_CASTLE_2F_BOTTOM_RIGHT_DARKNUT, 16, 16 },
|
||||
};
|
||||
|
||||
const EntityData gUnk_080FCFE8[] = {
|
||||
{ OBJECT, 15, BOSS_DOOR, 8, 0, 0x88, 0x28, 65535 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD008[] = {
|
||||
{ ENEMY, 47, DARK_NUT, 2, 0, 0x88, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD028[] = {
|
||||
{ OBJECT, 15, BOSS_DOOR, 8, 0, 0x88, 0x28, 65535 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD048[] = {
|
||||
{ ENEMY, 47, DARK_NUT, 1, 0, 0x70, 0x68, 0 },
|
||||
{ ENEMY, 47, DARK_NUT, 0, 0, 0xa0, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD078[] = {
|
||||
{ OBJECT, 15, BOSS_DOOR, 10, 0, 0x88, 0xa8, 65535 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD098[] = {
|
||||
{ ENEMY, 47, DARK_NUT, 0, 0, 0x70, 0x68, 0 },
|
||||
{ ENEMY, 47, DARK_NUT, 1, 0, 0xa0, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD0C8[] = {
|
||||
{ OBJECT, 15, BOSS_DOOR, 10, 0, 0x88, 0xa8, 65535 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080FD0E8[] = {
|
||||
{ ENEMY, 47, DARK_NUT, 2, 0, 0x88, 0x68, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0x0, 0x0, 0 },
|
||||
};
|
||||
|
||||
void sub_08053E74(void);
|
||||
void sub_08053EC4(void);
|
||||
void sub_08053EFC(void);
|
||||
void sub_08053F20(void);
|
||||
void sub_08053EC4(void);
|
||||
void sub_08053EFC(void);
|
||||
void sub_08053F20(void);
|
||||
void sub_08053EC4(void);
|
||||
void sub_08053EFC(void);
|
||||
void sub_08053F20(void);
|
||||
void sub_08053EC4(void);
|
||||
void sub_08053F88(void);
|
||||
void (*const gUnk_080FD108[])(void) = {
|
||||
sub_08053E74, sub_08053EC4, sub_08053EFC, sub_08053F20, sub_08053EC4, sub_08053EFC,
|
||||
sub_08053F20, sub_08053EC4, sub_08053EFC, sub_08053F20, sub_08053EC4, sub_08053F88,
|
||||
};
|
||||
|
||||
void sub_08053E58(void) {
|
||||
gUnk_080FD108[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08053E74(void) {
|
||||
const struct_080FCFB8* ptr = gUnk_080FCFB8;
|
||||
gMenu.field_0xc = (u8*)ptr;
|
||||
LoadRoomEntityList(ptr->entityData1);
|
||||
gMenu.transitionTimer = 120;
|
||||
gMenu.field_0xa = 0x3c;
|
||||
gMenu.overlayType++;
|
||||
gScreen.lcd.displayControl &= 0xfeff;
|
||||
gUpdateVisibleTiles = 1;
|
||||
SetMinPriority(1);
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void sub_08053EC4(void) {
|
||||
EntityData** data;
|
||||
if ((gFadeControl.active == 0) && (--gMenu.field_0xa == 0)) {
|
||||
data = (EntityData**)(gMenu.field_0xc + 4); // TODO entityData2 of struct_080FCFB8
|
||||
gMenu.field_0xc += 0xc;
|
||||
LoadRoomEntityList(*data);
|
||||
gMenu.overlayType++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053EFC(void) {
|
||||
if (--gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFadeInverted(8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053F20(void) {
|
||||
struct_080FCFB8* ptr;
|
||||
if (gFadeControl.active == 0) {
|
||||
DeleteAllEntities();
|
||||
ptr = (struct_080FCFB8*)gMenu.field_0xc;
|
||||
sub_08052FF4(ptr->area, ptr->room);
|
||||
InitializeCamera();
|
||||
gUpdateVisibleTiles = 1;
|
||||
gRoomControls.scroll_x = (s8)ptr->scrollX + gRoomControls.scroll_x;
|
||||
gRoomControls.scroll_y = (s8)ptr->scrollY + gRoomControls.scroll_y;
|
||||
LoadRoomEntityList((ptr)->entityData1);
|
||||
gMenu.transitionTimer = 120;
|
||||
gMenu.field_0xa = 0x3c;
|
||||
gMenu.overlayType++;
|
||||
SetFadeInverted(8);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053F88(void) {
|
||||
if ((gFadeControl.active == 0) && --gMenu.transitionTimer == 0) {
|
||||
gMenu.menuType++;
|
||||
ResetEntityPriority();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080536D4(void);
|
||||
void sub_08053B58(void);
|
||||
void sub_0805373C(void);
|
||||
void sub_08053AB0(void);
|
||||
void sub_080536F0(void);
|
||||
void sub_08053C04(void);
|
||||
void (*const gUnk_080FD138[])(void) = {
|
||||
sub_080536D4, sub_08053B58, sub_0805373C, sub_08053AB0, sub_080536F0, sub_08053C04,
|
||||
};
|
||||
|
||||
void CutsceneMain_Update(void) {
|
||||
gUnk_080FD138[gMenu.field_0x3]();
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "figurineMenu.h"
|
||||
#include "pauseMenu.h"
|
||||
#include "subtask.h"
|
||||
#include "subtask2.h"
|
||||
|
||||
// This data also belongs in figurine_menu.c, but the data/gfx/figurines.s are inbetween.
|
||||
// TODO convert them to c code as well.
|
||||
|
||||
// clang-format off
|
||||
|
||||
// Pause menu screens
|
||||
const struct_08128A38 gUnk_08128A38[] = {
|
||||
[PauseMenuScreen_0] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_1] = { 0, 1, PauseMenu_ItemMenu },
|
||||
[PauseMenuScreen_2] = { 1, 2, PauseMenu2 },
|
||||
[PauseMenuScreen_3] = { 8, 2, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_4] = { 2, 15, PauseMenu_Screen_4 },
|
||||
[PauseMenuScreen_5] = { 3, 15, PauseMenu_Screen_5 },
|
||||
[PauseMenuScreen_6] = { 4, 15, PauseMenu_Screen_6 },
|
||||
[PauseMenuScreen_7] = { 5, 2, PauseMenu_Screen_7 },
|
||||
[PauseMenuScreen_8] = { 6, 2, PauseMenu_Screen_8 },
|
||||
[PauseMenuScreen_9] = { 9, 2, PauseMenu_Screen_9 },
|
||||
[PauseMenuScreen_10] = { 10, 2, PauseMenu_Screen_10 },
|
||||
[PauseMenuScreen_11] = { 10, 1, PauseMenu_Screen_10 },
|
||||
[PauseMenuScreen_12] = { 2, 15, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_13] = { 7, 15, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_14] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_15] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_16] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_17] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_18] = { 0, 1, PauseMenu_Variant0 },
|
||||
[PauseMenuScreen_19] = { 0, 1, PauseMenu_Variant0 },
|
||||
};
|
||||
|
||||
|
||||
// TODO extract the bg controls
|
||||
const struct_08128AD8 gUnk_08128AD8[] = {
|
||||
{ 182, 90, 1024, 7173, 7427 },
|
||||
{ 183, 91, 1024, 7173, 7427 },
|
||||
{ 185, 94, 34304, 7171, 7435 },
|
||||
{ 184, 92, 1536, 7170, 7427 },
|
||||
{ 185, 129, 1536, 7178, 7427 },
|
||||
{ 204, 125, 1024, 7171, 7427 },
|
||||
{ 205, 126, 1536, 7170, 7427 },
|
||||
{ 185, 93, 34304, 7171, 7435 },
|
||||
{ 206, 89, 3840, 7170, 7427 },
|
||||
#ifdef EU
|
||||
{ 0, 128, 1536, 7170, 7431 },
|
||||
{ 0, 127, 1536, 7170, 7431 },
|
||||
#else
|
||||
{ 207, 128, 1536, 7170, 7431 },
|
||||
{ 207, 127, 1536, 7170, 7431 },
|
||||
#endif
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
@@ -0,0 +1,138 @@
|
||||
/**
|
||||
* @file hitbox.c
|
||||
*
|
||||
* @brief Hitboxes
|
||||
*/
|
||||
#include "hitbox.h"
|
||||
|
||||
const Hitbox gHitbox_0 = { 0, -3, { 5, 3, 3, 5 }, 6, 6 };
|
||||
const Hitbox gHitbox_30 = { 0, 6, { 5, 3, 3, 5 }, 10, 16 };
|
||||
const Hitbox gHitbox_31 = { 0, 6, { 5, 3, 3, 5 }, 10, 15 };
|
||||
const Hitbox gHitbox_1 = { 0, 0, { 5, 3, 3, 5 }, 6, 6 };
|
||||
const Hitbox gHitbox_2 = { 0, -3, { 5, 3, 3, 5 }, 8, 8 };
|
||||
const Hitbox gUnk_080FD178 = { 0, 0, { 5, 3, 3, 5 }, 8, 8 };
|
||||
const Hitbox gHitbox_3 = { 0, -3, { 5, 3, 3, 5 }, 12, 12 };
|
||||
const Hitbox gHitbox_4 = { 0, 0, { 9, 6, 6, 9 }, 10, 10 };
|
||||
const Hitbox gUnk_080FD190 = { 0, 0, { 12, 8, 8, 12 }, 14, 14 };
|
||||
const Hitbox gHitbox_5 = { 0, -1, { 6, 3, 3, 6 }, 6, 5 };
|
||||
const Hitbox gHitbox_6 = { 0, 0, { 4, 2, 2, 4 }, 2, 2 };
|
||||
const Hitbox3D gUnk_080FD1A8 = { 0, -3, { 6, 3, 3, 6 }, 2, 2, 64, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD1B4 = { 0, -4, { 8, 5, 6, 7 }, 8, 10 };
|
||||
const Hitbox unused1 = { 0, -3, { 0, 0, 0, 0 }, 0, 0 };
|
||||
const Hitbox gHitbox_7 = { 0, 0, { 2, 0, 0, 2 }, 2, 2 };
|
||||
const Hitbox gHitbox_8 = { 0, 1, { 5, 2, 3, 4 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD1D4 = { 0, -3, { 0, 0, 0, 0 }, 10, 8 };
|
||||
const Hitbox gUnk_080FD1DC = { 0, 0, { 6, 4, 4, 6 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD1E4 = { 0, 0, { 0, 0, 0, 0 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD1EC = { 0, 0, { 0, 0, 0, 0 }, 2, 2 };
|
||||
const Hitbox gUnk_080FD1F4 = { 0, -1, { 6, 4, 4, 6 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD1FC = { 0, 0, { 6, 4, 4, 6 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD204 = { 0, 0, { 0, 0, 0, 0 }, 5, 5 };
|
||||
const Hitbox gUnk_080FD20C = { 0, 0, { 0, 0, 0, 0 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD214 = { 0, 0, { 0, 0, 0, 0 }, 2, 2 };
|
||||
const Hitbox gUnk_080FD21C = { 0, 0, { 6, 4, 4, 6 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD224 = { 0, -2, { 0, 0, 0, 0 }, 5, 3 };
|
||||
const Hitbox3D gUnk_080FD22C = { 0, 0, { 5, 3, 3, 5 }, 6, 6, 12, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD238 = { 0, 4, { 25, 8, 8, 12 }, 26, 8 };
|
||||
const Hitbox gUnk_080FD240 = { 0, 12, { 28, 14, 14, 16 }, 24, 24 };
|
||||
const Hitbox gUnk_080FD248 = { 0, 0, { 28, 14, 14, 16 }, 16, 16 };
|
||||
const Hitbox gHitbox_9 = { 0, -4, { 5, 3, 3, 5 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD258 = { 0, -6, { 9, 6, 5, 10 }, 7, 8 };
|
||||
const Hitbox gUnk_080FD260 = { 0, -3, { 5, 3, 3, 4 }, 3, 3 };
|
||||
const Hitbox gHitbox_10 = { 0, -3, { 0, 0, 0, 0 }, 2, 3 };
|
||||
const Hitbox gUnk_080FD270 = { 0, 0, { 4, 4, 4, 4 }, 2, 6 };
|
||||
const Hitbox gUnk_080FD278 = { 0, 0, { 4, 4, 4, 4 }, 6, 2 };
|
||||
const Hitbox gUnk_080FD280 = { 0, -2, { 0, 0, 0, 0 }, 12, 14 };
|
||||
const Hitbox gUnk_080FD288 = { 0, -3, { 14, 12, 10, 12 }, 12, 10 };
|
||||
const Hitbox gUnk_080FD290 = { 0, 0, { 5, 3, 3, 5 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD298 = { 0, 0, { 0, 0, 0, 0 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD2A0 = { 0, 0, { 0, 0, 0, 0 }, 2, 2 };
|
||||
const Hitbox gUnk_080FD2A8 = { 0, -6, { 34, 24, 28, 32 }, 26, 21 };
|
||||
const Hitbox gHitbox_11 = { 0, -4, { 0, 0, 0, 0 }, 7, 4 };
|
||||
const Hitbox gHitbox_12 = { 0, -6, { 0, 0, 0, 0 }, 7, 4 };
|
||||
const Hitbox gHitbox_13 = { 0, 0, { 9, 4, 4, 9 }, 4, 4 };
|
||||
const Hitbox gHitbox_14 = { 0, -3, { 6, 4, 4, 6 }, 5, 5 };
|
||||
const Hitbox gUnk_080FD2D0 = { 0, -8, { 5, 3, 3, 5 }, 18, 16 };
|
||||
const Hitbox gUnk_080FD2D8 = { 0, -14, { 5, 3, 3, 5 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD2E0 = { 0, 0, { 5, 3, 3, 5 }, 12, 12 };
|
||||
const Hitbox gUnk_080FD2E8 = { 0, 0, { 5, 3, 3, 5 }, 32, 32 };
|
||||
const Hitbox gUnk_080FD2F0 = { 0, 0, { 6, 4, 4, 6 }, 6, 6 };
|
||||
const Hitbox gHitbox_15 = { 0, 0, { 6, 4, 4, 6 }, 9, 9 };
|
||||
const Hitbox gHitbox_16 = { 0, -7, { 0, 0, 0, 0 }, 8, 7 };
|
||||
const Hitbox gUnk_080FD308 = { 0, -12, { 16, 8, 8, 16 }, 8, 8 };
|
||||
const Hitbox gUnk_080FD310 = { 0, -2, { 5, 3, 3, 5 }, 9, 9 };
|
||||
const Hitbox gHitbox_17 = { 0, 1, { 8, 6, 6, 8 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD320 = { 0, 0, { 5, 3, 3, 5 }, 8, 12 };
|
||||
const Hitbox gUnk_080FD328 = { 0, 0, { 5, 3, 3, 5 }, 6, 12 };
|
||||
const Hitbox gUnk_080FD330 = { 0, -6, { 5, 3, 3, 5 }, 6, 6 };
|
||||
const Hitbox gHitbox_18 = { 0, -4, { 6, 3, 3, 6 }, 6, 6 };
|
||||
const Hitbox3D gUnk_080FD340 = { 0, 0, { 6, 3, 3, 6 }, 3, 3, 16, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD34C = { 0, 0, { 4, 2, 2, 4 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD354 = { 0, -2, { 0, 0, 0, 0 }, 32, 10 };
|
||||
const Hitbox gUnk_080FD35C = { 11, 2, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD364 = { 12, 6, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD36C = { -11, 2, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD374 = { -12, 6, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD37C = { -2, -6, { 0, 0, 0, 0 }, 4, 5 };
|
||||
const Hitbox gUnk_080FD384 = { 2, -6, { 0, 0, 0, 0 }, 4, 5 };
|
||||
const Hitbox gUnk_080FD38C = { 0, 0, { 0, 0, 0, 0 }, 16, 12 };
|
||||
const Hitbox gUnk_080FD394 = { 31, 2, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD39C = { 8, 12, { 0, 0, 0, 0 }, 10, 10 };
|
||||
const Hitbox gUnk_080FD3A4 = { 0, 12, { 0, 0, 0, 0 }, 6, 18 };
|
||||
const Hitbox gUnk_080FD3AC = { -18, 10, { 0, 0, 0, 0 }, 12, 12 };
|
||||
const Hitbox gUnk_080FD3B4 = { -31, 2, { 0, 0, 0, 0 }, 9, 8 };
|
||||
const Hitbox gUnk_080FD3BC = { -8, 12, { 0, 0, 0, 0 }, 10, 10 };
|
||||
const Hitbox gUnk_080FD3C4 = { 18, 10, { 0, 0, 0, 0 }, 12, 12 };
|
||||
const Hitbox gUnk_080FD3CC = { 0, 0, { 72, 60, 60, 72 }, 40, 40 };
|
||||
const Hitbox unused2 = { 0, 0, { 52, 44, 44, 52 }, 40, 40 };
|
||||
const Hitbox gUnk_080FD3DC = { 0, 0, { 8, 8, 8, 8 }, 16, 16 };
|
||||
const Hitbox gUnk_080FD3E4 = { 0, 0, { 8, 8, 8, 8 }, 16, 16 };
|
||||
const Hitbox gUnk_080FD3EC = { 0, 0, { 8, 8, 8, 8 }, 16, 16 };
|
||||
const Hitbox gUnk_080FD3F4 = { 0, 0, { 8, 5, 5, 8 }, 16, 16 };
|
||||
const Hitbox3D gUnk_080FD3FC = { 0, -3, { 5, 3, 3, 5 }, 6, 6, 16, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD408 = { 0, 0, { 9, 4, 4, 9 }, 4, 4 };
|
||||
const Hitbox3D gHitbox_19 = { 0, -3, { 5, 3, 3, 5 }, 6, 6, 12, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD41C = { 0, 0, { 0, 0, 0, 0 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD424 = { -3, 0, { 0, 0, 0, 0 }, 5, 6 };
|
||||
const Hitbox gUnk_080FD42C = { 0, -1, { 0, 0, 0, 0 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD434 = { 3, 0, { 0, 0, 0, 0 }, 5, 6 };
|
||||
const Hitbox3D gUnk_080FD43C = { -16, 12, { 0, 0, 0, 0 }, 8, 4, 24, { 0, 0, 0 } };
|
||||
const Hitbox gHitbox_20 = { 0, 0, { 0, 0, 0, 0 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD450 = { 0, -3, { 0, 0, 0, 0 }, 4, 4 };
|
||||
const Hitbox gHitbox_21 = { 0, 0, { 0, 0, 0, 0 }, 1, 1 };
|
||||
const Hitbox gHitbox_22 = { 0, 0, { 0, 0, 0, 0 }, 2, 2 };
|
||||
const Hitbox gHitbox_23 = { 0, -3, { 4, 3, 3, 4 }, 4, 4 };
|
||||
const Hitbox gHitbox_32 = { 0, -5, { 9, 6, 6, 9 }, 10, 10 };
|
||||
const Hitbox unused3 = { 0, -4, { 5, 3, 3, 5 }, 5, 5 };
|
||||
const Hitbox gHitbox_24 = { 0, -3, { 5, 3, 3, 5 }, 3, 3 };
|
||||
const Hitbox gUnk_080FD488 = { 0, -3, { 6, 3, 3, 4 }, 4, 3 };
|
||||
const Hitbox gUnk_080FD490 = { 0, -3, { 3, 2, 2, 3 }, 2, 2 };
|
||||
const Hitbox3D gHitbox_25 = { 0, -6, { 5, 3, 3, 5 }, 6, 6, 16, { 0, 0, 0 } };
|
||||
const Hitbox3D gHitbox_26 = { 0, -5, { 4, 2, 2, 4 }, 4, 4, 16, { 0, 0, 0 } };
|
||||
const Hitbox unused4 = { 0, -7, { 8, 6, 6, 8 }, 6, 6 };
|
||||
const Hitbox gUnk_080FD4B8 = { 0, 0, { 0, 0, 0, 0 }, 3, 8 };
|
||||
const Hitbox gUnk_080FD4C0 = { 0, 0, { 0, 0, 0, 0 }, 3, 16 };
|
||||
const Hitbox gUnk_080FD4C8 = { 0, 0, { 0, 0, 0, 0 }, 3, 24 };
|
||||
const Hitbox gUnk_080FD4D0 = { 0, 0, { 0, 0, 0, 0 }, 3, 32 };
|
||||
const Hitbox gUnk_080FD4D8 = { 0, 0, { 0, 0, 0, 0 }, 3, 40 };
|
||||
const Hitbox gUnk_080FD4E0 = { 0, 0, { 0, 0, 0, 0 }, 3, 48 };
|
||||
const Hitbox gUnk_080FD4E8 = { 0, 0, { 0, 0, 0, 0 }, 3, 56 };
|
||||
const Hitbox gUnk_080FD4F0 = { 0, 0, { 0, 0, 0, 0 }, 16, 3 };
|
||||
const Hitbox gUnk_080FD4F8 = { 0, 0, { 0, 0, 0, 0 }, 24, 3 };
|
||||
const Hitbox gUnk_080FD500 = { 0, 0, { 0, 0, 0, 0 }, 32, 3 };
|
||||
const Hitbox gUnk_080FD508 = { 0, 0, { 0, 0, 0, 0 }, 40, 3 };
|
||||
const Hitbox gUnk_080FD510 = { 0, 0, { 0, 0, 0, 0 }, 48, 3 };
|
||||
const Hitbox gUnk_080FD518 = { 0, 0, { 0, 0, 0, 0 }, 56, 3 };
|
||||
const Hitbox gUnk_080FD520 = { 0, 0, { 0, 0, 0, 0 }, 64, 3 };
|
||||
const Hitbox gHitbox_27 = { 0, 0, { 3, 2, 2, 3 }, 1, 1 };
|
||||
const Hitbox gUnk_080FD530 = { 0, 9, { 10, 8, 8, 10 }, 12, 12 };
|
||||
const Hitbox3D gUnk_080FD538 = { 0, -4, { 28, 23, 23, 28 }, 6, 6, 10, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD544 = { 0, -20, { 36, 24, 28, 32 }, 16, 16 };
|
||||
const Hitbox3D gHitbox_28 = { 0, 0, { 0, 0, 0, 0 }, 16, 16, 14, { 0, 0, 0 } };
|
||||
const Hitbox gUnk_080FD558 = { 0, 0, { 5, 3, 3, 5 }, 4, 4 };
|
||||
const Hitbox gUnk_080FD560 = { 0, 0, { 0, 0, 0, 0 }, 1, 1 };
|
||||
const Hitbox gHitbox_29 = { 0, -4, { 7, 5, 5, 7 }, 7, 7 };
|
||||
const Hitbox gUnk_080FD570 = { 0, -4, { 0, 0, 0, 0 }, 8, 6 };
|
||||
const Hitbox gUnk_080FD578 = { 0, -4, { 0, 0, 0, 0 }, 12, 6 };
|
||||
const Hitbox gUnk_080FD580 = { 0, -3, { 8, 5, 5, 8 }, 10, 10 };
|
||||
const Hitbox gUnk_080FD588 = { 0, -7, { 5, 3, 3, 5 }, 6, 6 };
|
||||
@@ -0,0 +1,132 @@
|
||||
#include "global.h"
|
||||
#include "assets/gfx_offsets.h"
|
||||
|
||||
const u32 gUnk_08133368[] = {
|
||||
offset_gPalette_14 | 1 << 0x18, offset_gPalette_15 | 1 << 0x18, offset_gPalette_16 | 1 << 0x18,
|
||||
offset_gPalette_17 | 1 << 0x18, offset_gPalette_22 | 1 << 0x18, offset_gPalette_23 | 1 << 0x18,
|
||||
offset_gPalette_102 | 1 << 0x18, offset_gPalette_321 | 1 << 0x18, offset_gPalette_100 | 1 << 0x18,
|
||||
offset_gPalette_101 | 1 << 0x18, offset_gPalette_103 | 1 << 0x18, offset_gPalette_118 | 1 << 0x18,
|
||||
offset_gPalette_105 | 1 << 0x18, offset_gPalette_104 | 1 << 0x18, offset_gPalette_106 | 1 << 0x18,
|
||||
offset_gPalette_89 | 1 << 0x18, offset_gPalette_90 | 1 << 0x18, offset_gPalette_91 | 1 << 0x18,
|
||||
offset_gPalette_107 | 1 << 0x18, offset_gPalette_109 | 1 << 0x18, offset_gPalette_94 | 1 << 0x18,
|
||||
offset_gPalette_47 | 1 << 0x18, offset_gPalette_79 | 1 << 0x18, offset_gPalette_80 | 1 << 0x18,
|
||||
offset_gPalette_24 | 1 << 0x18, offset_gPalette_679 | 1 << 0x18, offset_gPalette_205 | 1 << 0x18,
|
||||
offset_gPalette_206 | 1 << 0x18, offset_gPalette_207 | 1 << 0x18, offset_gPalette_239 | 1 << 0x18,
|
||||
offset_gPalette_231 | 1 << 0x18, offset_gPalette_133 | 1 << 0x18, offset_gPalette_134 | 1 << 0x18,
|
||||
offset_gPalette_129 | 1 << 0x18, offset_gPalette_135 | 1 << 0x18, offset_gPalette_136 | 1 << 0x18,
|
||||
offset_gPalette_137 | 1 << 0x18, offset_gPalette_138 | 1 << 0x18, offset_gPalette_139 | 1 << 0x18,
|
||||
offset_gPalette_140 | 1 << 0x18, offset_gPalette_130 | 1 << 0x18, offset_gPalette_131 | 1 << 0x18,
|
||||
offset_gPalette_132 | 1 << 0x18, offset_gPalette_141 | 1 << 0x18, offset_gPalette_142 | 1 << 0x18,
|
||||
offset_gPalette_144 | 1 << 0x18, offset_gPalette_145 | 1 << 0x18, offset_gPalette_146 | 1 << 0x18,
|
||||
offset_gPalette_143 | 1 << 0x18, offset_gPalette_147 | 1 << 0x18, offset_gPalette_148 | 1 << 0x18,
|
||||
offset_gPalette_149 | 1 << 0x18, offset_gPalette_150 | 1 << 0x18, offset_gPalette_151 | 1 << 0x18,
|
||||
offset_gPalette_152 | 1 << 0x18, offset_gPalette_153 | 1 << 0x18, offset_gPalette_154 | 1 << 0x18,
|
||||
offset_gPalette_155 | 1 << 0x18, offset_gPalette_128 | 1 << 0x18, offset_gPalette_156 | 1 << 0x18,
|
||||
offset_gPalette_168 | 1 << 0x18, offset_gPalette_169 | 1 << 0x18, offset_gPalette_170 | 1 << 0x18,
|
||||
offset_gPalette_248 | 1 << 0x18, offset_gPalette_249 | 1 << 0x18, offset_gPalette_250 | 1 << 0x18,
|
||||
offset_gPalette_251 | 1 << 0x18, offset_gPalette_252 | 1 << 0x18, offset_gPalette_253 | 1 << 0x18,
|
||||
offset_gPalette_254 | 1 << 0x18, offset_gPalette_255 | 1 << 0x18, offset_gPalette_256 | 1 << 0x18,
|
||||
offset_gPalette_257 | 1 << 0x18, offset_gPalette_258 | 1 << 0x18, offset_gPalette_259 | 1 << 0x18,
|
||||
offset_gPalette_260 | 1 << 0x18, offset_gPalette_261 | 1 << 0x18, offset_gPalette_262 | 1 << 0x18,
|
||||
offset_gPalette_263 | 1 << 0x18, offset_gPalette_264 | 1 << 0x18, offset_gPalette_265 | 1 << 0x18,
|
||||
offset_gPalette_266 | 1 << 0x18, offset_gPalette_267 | 1 << 0x18, offset_gPalette_268 | 1 << 0x18,
|
||||
offset_gPalette_269 | 1 << 0x18, offset_gPalette_270 | 1 << 0x18, offset_gPalette_271 | 1 << 0x18,
|
||||
offset_gPalette_3773 | 1 << 0x18, offset_gPalette_92 | 1 << 0x18, offset_gPalette_85 | 1 << 0x18,
|
||||
offset_gPalette_86 | 1 << 0x18, offset_gPalette_87 | 1 << 0x18, offset_gPalette_3774 | 1 << 0x18,
|
||||
offset_gPalette_123 | 1 << 0x18, offset_gPalette_2212 | 1 << 0x18, offset_gPalette_2213 | 1 << 0x18,
|
||||
offset_gPalette_124 | 1 << 0x18, offset_gPalette_42 | 1 << 0x18, offset_gPalette_235 | 1 << 0x18,
|
||||
offset_gPalette_236 | 1 << 0x18, offset_gPalette_237 | 1 << 0x18, offset_gPalette_238 | 1 << 0x18,
|
||||
offset_gPalette_108 | 1 << 0x18, offset_gPalette_93 | 1 << 0x18, offset_gPalette_680 | 1 << 0x18,
|
||||
offset_gPalette_43 | 1 << 0x18, offset_gPalette_44 | 1 << 0x18, offset_gPalette_45 | 1 << 0x18,
|
||||
offset_gPalette_46 | 1 << 0x18, offset_gPalette_125 | 1 << 0x18, offset_gPalette_284 | 1 << 0x18,
|
||||
offset_gPalette_283 | 1 << 0x18, offset_gPalette_285 | 1 << 0x18, offset_gPalette_286 | 1 << 0x18,
|
||||
offset_gPalette_287 | 1 << 0x18, offset_gPalette_288 | 1 << 0x18, offset_gPalette_289 | 1 << 0x18,
|
||||
offset_gPalette_290 | 1 << 0x18, offset_gPalette_291 | 1 << 0x18, offset_gPalette_292 | 1 << 0x18,
|
||||
offset_gPalette_293 | 1 << 0x18, offset_gPalette_294 | 1 << 0x18, offset_gPalette_295 | 1 << 0x18,
|
||||
offset_gPalette_296 | 1 << 0x18, offset_gPalette_297 | 1 << 0x18, offset_gPalette_2214 | 1 << 0x18,
|
||||
offset_gPalette_224 | 1 << 0x18, offset_gPalette_225 | 1 << 0x18, offset_gPalette_226 | 1 << 0x18,
|
||||
offset_gPalette_227 | 1 << 0x18, offset_gPalette_228 | 1 << 0x18, offset_gPalette_229 | 1 << 0x18,
|
||||
offset_gPalette_1261 | 1 << 0x18, offset_gPalette_318 | 1 << 0x18, offset_gPalette_319 | 1 << 0x18,
|
||||
offset_gPalette_320 | 1 << 0x18, offset_gPalette_2140 | 1 << 0x18, offset_gPalette_2141 | 1 << 0x18,
|
||||
offset_gPalette_2142 | 1 << 0x18, offset_gPalette_2159 | 1 << 0x18, offset_gPalette_2160 | 1 << 0x18,
|
||||
offset_gPalette_2161 | 1 << 0x18, offset_gPalette_2178 | 1 << 0x18, offset_gPalette_2179 | 1 << 0x18,
|
||||
offset_gPalette_2180 | 1 << 0x18, offset_gPalette_2197 | 1 << 0x18, offset_gPalette_2198 | 1 << 0x18,
|
||||
offset_gPalette_2199 | 1 << 0x18, offset_gPalette_95 | 1 << 0x18, offset_gPalette_18 | 1 << 0x18,
|
||||
offset_gPalette_19 | 1 << 0x18, offset_gPalette_20 | 1 << 0x18, offset_gPalette_21 | 1 << 0x18,
|
||||
offset_gPalette_96 | 1 << 0x18, offset_gPalette_97 | 1 << 0x18, offset_gPalette_98 | 1 << 0x18,
|
||||
offset_gPalette_99 | 1 << 0x18, offset_gPalette_110 | 1 << 0x18, offset_gPalette_208 | 2 << 0x18,
|
||||
offset_gPalette_210 | 2 << 0x18, offset_gPalette_233 | 1 << 0x18, offset_gPalette_157 | 1 << 0x18,
|
||||
offset_gPalette_158 | 1 << 0x18, offset_gPalette_159 | 1 << 0x18, offset_gPalette_160 | 1 << 0x18,
|
||||
offset_gPalette_161 | 1 << 0x18, offset_gPalette_162 | 1 << 0x18, offset_gPalette_163 | 1 << 0x18,
|
||||
offset_gPalette_164 | 1 << 0x18, offset_gPalette_165 | 1 << 0x18, offset_gPalette_166 | 1 << 0x18,
|
||||
offset_gPalette_167 | 1 << 0x18, offset_gPalette_171 | 1 << 0x18, offset_gPalette_172 | 1 << 0x18,
|
||||
offset_gPalette_173 | 1 << 0x18, offset_gPalette_234 | 1 << 0x18, offset_gPalette_111 | 1 << 0x18,
|
||||
offset_gPalette_113 | 1 << 0x18, offset_gPalette_114 | 1 << 0x18, offset_gPalette_48 | 1 << 0x18,
|
||||
offset_gPalette_49 | 1 << 0x18, offset_gPalette_50 | 1 << 0x18, offset_gPalette_51 | 1 << 0x18,
|
||||
offset_gPalette_52 | 1 << 0x18, offset_gPalette_53 | 1 << 0x18, offset_gPalette_54 | 1 << 0x18,
|
||||
offset_gPalette_322 | 1 << 0x18, offset_gPalette_299 | 1 << 0x18, offset_gPalette_300 | 1 << 0x18,
|
||||
offset_gPalette_298 | 1 << 0x18, offset_gPalette_301 | 1 << 0x18, offset_gPalette_303 | 1 << 0x18,
|
||||
offset_gPalette_304 | 1 << 0x18, offset_gPalette_305 | 1 << 0x18, offset_gPalette_306 | 1 << 0x18,
|
||||
offset_gPalette_307 | 1 << 0x18, offset_gPalette_55 | 1 << 0x18, offset_gPalette_57 | 1 << 0x18,
|
||||
offset_gPalette_58 | 1 << 0x18, offset_gPalette_59 | 1 << 0x18, offset_gPalette_60 | 1 << 0x18,
|
||||
offset_gPalette_61 | 1 << 0x18, offset_gPalette_62 | 1 << 0x18, offset_gPalette_63 | 1 << 0x18,
|
||||
offset_gPalette_64 | 1 << 0x18, offset_gPalette_65 | 1 << 0x18, offset_gPalette_66 | 1 << 0x18,
|
||||
offset_gPalette_67 | 1 << 0x18, offset_gPalette_68 | 1 << 0x18, offset_gPalette_69 | 1 << 0x18,
|
||||
offset_gPalette_70 | 1 << 0x18, offset_gPalette_174 | 1 << 0x18, offset_gPalette_212 | 1 << 0x18,
|
||||
offset_gPalette_213 | 1 << 0x18, offset_gPalette_214 | 1 << 0x18, offset_gPalette_215 | 1 << 0x18,
|
||||
offset_gPalette_216 | 1 << 0x18, offset_gPalette_72 | 1 << 0x18, offset_gPalette_78 | 1 << 0x18,
|
||||
offset_gPalette_73 | 1 << 0x18, offset_gPalette_74 | 1 << 0x18, offset_gPalette_75 | 1 << 0x18,
|
||||
offset_gPalette_76 | 1 << 0x18, offset_gPalette_77 | 1 << 0x18, offset_gPalette_175 | 1 << 0x18,
|
||||
offset_gPalette_176 | 1 << 0x18, offset_gPalette_177 | 1 << 0x18, offset_gPalette_178 | 1 << 0x18,
|
||||
offset_gPalette_179 | 1 << 0x18, offset_gPalette_180 | 1 << 0x18, offset_gPalette_181 | 1 << 0x18,
|
||||
offset_gPalette_182 | 1 << 0x18, offset_gPalette_183 | 1 << 0x18, offset_gPalette_184 | 1 << 0x18,
|
||||
offset_gPalette_185 | 1 << 0x18, offset_gPalette_186 | 1 << 0x18, offset_gPalette_187 | 1 << 0x18,
|
||||
offset_gPalette_188 | 1 << 0x18, offset_gPalette_189 | 1 << 0x18, offset_gPalette_190 | 1 << 0x18,
|
||||
offset_gPalette_191 | 1 << 0x18, offset_gPalette_192 | 1 << 0x18, offset_gPalette_193 | 1 << 0x18,
|
||||
offset_gPalette_194 | 1 << 0x18, offset_gPalette_195 | 1 << 0x18, offset_gPalette_196 | 1 << 0x18,
|
||||
offset_gPalette_197 | 1 << 0x18, offset_gPalette_198 | 1 << 0x18, offset_gPalette_199 | 1 << 0x18,
|
||||
offset_gPalette_200 | 1 << 0x18, offset_gPalette_201 | 1 << 0x18, offset_gPalette_202 | 1 << 0x18,
|
||||
offset_gPalette_308 | 1 << 0x18, offset_gPalette_309 | 1 << 0x18, offset_gPalette_310 | 1 << 0x18,
|
||||
offset_gPalette_311 | 1 << 0x18, offset_gPalette_312 | 1 << 0x18, offset_gPalette_313 | 1 << 0x18,
|
||||
offset_gPalette_282 | 1 << 0x18, offset_gPalette_217 | 1 << 0x18, offset_gPalette_204 | 1 << 0x18,
|
||||
offset_gPalette_218 | 2 << 0x18, offset_gPalette_220 | 1 << 0x18, offset_gPalette_221 | 1 << 0x18,
|
||||
offset_gPalette_222 | 1 << 0x18, offset_gPalette_127 | 1 << 0x18, offset_gPalette_115 | 1 << 0x18,
|
||||
offset_gPalette_302 | 1 << 0x18, offset_gPalette_274 | 1 << 0x18, offset_gPalette_275 | 1 << 0x18,
|
||||
offset_gPalette_276 | 1 << 0x18, offset_gPalette_277 | 1 << 0x18, offset_gPalette_278 | 1 << 0x18,
|
||||
offset_gPalette_279 | 1 << 0x18, offset_gPalette_329 | 1 << 0x18, offset_gPalette_331 | 1 << 0x18,
|
||||
offset_gPalette_332 | 1 << 0x18, offset_gPalette_116 | 1 << 0x18, offset_gPalette_334 | 1 << 0x18,
|
||||
offset_gPalette_344 | 1 << 0x18, offset_gPalette_345 | 1 << 0x18, offset_gPalette_346 | 1 << 0x18,
|
||||
offset_gPalette_347 | 1 << 0x18, offset_gPalette_348 | 1 << 0x18, offset_gPalette_349 | 1 << 0x18,
|
||||
offset_gPalette_350 | 1 << 0x18, offset_gPalette_71 | 1 << 0x18, offset_gPalette_56 | 1 << 0x18,
|
||||
offset_gPalette_328 | 1 << 0x18, offset_gPalette_232 | 1 << 0x18, offset_gPalette_25 | 1 << 0x18,
|
||||
offset_gPalette_26 | 1 << 0x18, offset_gPalette_117 | 1 << 0x18, offset_gPalette_27 | 1 << 0x18,
|
||||
offset_gPalette_28 | 1 << 0x18, offset_gPalette_29 | 1 << 0x18, offset_gPalette_30 | 1 << 0x18,
|
||||
offset_gPalette_31 | 1 << 0x18, offset_gPalette_32 | 1 << 0x18, offset_gPalette_280 | 1 << 0x18,
|
||||
offset_gPalette_281 | 1 << 0x18, offset_gPalette_333 | 1 << 0x18, offset_gPalette_314 | 1 << 0x18,
|
||||
offset_gPalette_315 | 1 << 0x18, offset_gPalette_316 | 1 << 0x18, offset_gPalette_317 | 1 << 0x18,
|
||||
offset_gPalette_330 | 1 << 0x18, offset_gPalette_335 | 1 << 0x18, offset_gPalette_336 | 1 << 0x18,
|
||||
offset_gPalette_337 | 1 << 0x18, offset_gPalette_338 | 1 << 0x18, offset_gPalette_339 | 1 << 0x18,
|
||||
offset_gPalette_340 | 1 << 0x18, offset_gPalette_341 | 1 << 0x18, offset_gPalette_342 | 1 << 0x18,
|
||||
offset_gPalette_343 | 1 << 0x18, offset_gPalette_82 | 1 << 0x18, offset_gPalette_223 | 1 << 0x18,
|
||||
offset_gPalette_240 | 1 << 0x18, offset_gPalette_241 | 1 << 0x18, offset_gPalette_242 | 1 << 0x18,
|
||||
offset_gPalette_243 | 1 << 0x18, offset_gPalette_244 | 1 << 0x18, offset_gPalette_245 | 1 << 0x18,
|
||||
offset_gPalette_246 | 1 << 0x18, offset_gPalette_247 | 1 << 0x18, offset_gPalette_272 | 1 << 0x18,
|
||||
offset_gPalette_273 | 1 << 0x18, offset_gPalette_352 | 1 << 0x18, offset_gPalette_353 | 1 << 0x18,
|
||||
offset_gPalette_351 | 1 << 0x18, offset_gPalette_126 | 1 << 0x18, offset_gPalette_327 | 1 << 0x18,
|
||||
offset_gPalette_203 | 1 << 0x18, offset_gPalette_3430 | 1 << 0x18, offset_gPalette_3431 | 1 << 0x18,
|
||||
offset_gPalette_3432 | 2 << 0x18, offset_gPalette_3434 | 1 << 0x18, offset_gPalette_3435 | 1 << 0x18,
|
||||
offset_gPalette_3436 | 1 << 0x18, offset_gPalette_9 | 1 << 0x18, offset_gPalette_33 | 1 << 0x18,
|
||||
offset_gPalette_34 | 1 << 0x18, offset_gPalette_35 | 1 << 0x18, offset_gPalette_36 | 1 << 0x18,
|
||||
offset_gPalette_37 | 1 << 0x18, offset_gPalette_38 | 1 << 0x18, offset_gPalette_39 | 1 << 0x18,
|
||||
offset_gPalette_40 | 1 << 0x18, offset_gPalette_41 | 1 << 0x18, offset_gPalette_83 | 1 << 0x18,
|
||||
offset_gPalette_119 | 1 << 0x18, offset_gPalette_120 | 1 << 0x18, offset_gPalette_121 | 1 << 0x18,
|
||||
offset_gPalette_81 | 1 << 0x18, offset_gPalette_84 | 1 << 0x18, offset_gPalette_88 | 1 << 0x18,
|
||||
offset_gPalette_230 | 1 << 0x18,
|
||||
#ifdef EU
|
||||
offset_gPalette_2257 | 1 << 0x18, offset_gPalette_2258 | 1 << 0x18,
|
||||
#else
|
||||
offset_gPalette_2259 | 1 << 0x18, offset_gPalette_2260 | 1 << 0x18,
|
||||
#endif
|
||||
offset_gPalette_10 | 1 << 0x18, offset_gPalette_112 | 1 << 0x18, offset_gPalette_122 | 1 << 0x18,
|
||||
offset_gPalette_13 | 1 << 0x18,
|
||||
};
|
||||
+8
-8
@@ -194,19 +194,19 @@ void sub_080A3198(u32 param_1, u32 param_2) {
|
||||
{ gUnk_0203510E, BG_TILE_ADDR(0x1a0), gTextGfxBuffer, 0, 0x80, 0xd0, 1, 0, 0, 1, 9, 0, 0, 1, 1 },
|
||||
};
|
||||
static const u16 gUnk_08127CC8[4] = {
|
||||
0x71c,
|
||||
0x720,
|
||||
0x721,
|
||||
TEXT_INDEX(TEXT_WINDCRESTS, 0x1c),
|
||||
TEXT_INDEX(TEXT_WINDCRESTS, 0x20),
|
||||
TEXT_INDEX(TEXT_WINDCRESTS, 0x21),
|
||||
0x0,
|
||||
};
|
||||
u16 r4 = gUnk_08127CC8[param_1];
|
||||
u16 textIndex = gUnk_08127CC8[param_1];
|
||||
|
||||
if (gChooseFileState.unk_0x12 != r4) {
|
||||
gChooseFileState.unk_0x12 = r4;
|
||||
if (gChooseFileState.unk_0x12 != textIndex) {
|
||||
gChooseFileState.unk_0x12 = textIndex;
|
||||
MemClear(gUnk_08127C98[0].dest - 0xf, 0x180);
|
||||
|
||||
if (r4 != 0) {
|
||||
sub_0805F46C(r4, gUnk_08127C98);
|
||||
if (textIndex != 0) {
|
||||
ShowTextBox(textIndex, gUnk_08127C98);
|
||||
}
|
||||
|
||||
gScreen.bg0.updated = 1;
|
||||
|
||||
+16
-16
@@ -114,7 +114,7 @@ const EnemyDefinition gEnemyDefinitions[] = {
|
||||
{ 145, 2, { &gHitbox_13 }, 483, { 0, 1, 1, 1 }, 255, 256, 102, 139 }, // TODO sprite index too high
|
||||
#endif
|
||||
MULTI_FORM(gEnemyDefinition_30),
|
||||
{ 236, 1, { &gHitbox_19 }, SPRITE_CROW, { 1, 0, 1, 1 }, 2, 320, 41, 15 },
|
||||
{ 236, 1, { (Hitbox*)&gHitbox_19 }, SPRITE_CROW, { 1, 0, 1, 1 }, 2, 320, 41, 15 },
|
||||
MULTI_FORM(gEnemyDefinition_32),
|
||||
{ 253, 112, { &gHitbox_0 }, SPRITE_BOMBAROSSA, { 1, 1, 1, 1 }, 255, 256, 1, 139 },
|
||||
MULTI_FORM(gEnemyDefinition_34),
|
||||
@@ -134,7 +134,7 @@ const EnemyDefinition gEnemyDefinitions[] = {
|
||||
MULTI_FORM(gEnemyDefinition_42),
|
||||
{ 366, 0, { &gHitbox_18 }, SPRITE_FLYINGSKULL, { 0, 1, 1, 0 }, 255, 640, 110, 132 },
|
||||
MULTI_FORM(gEnemyDefinition_44),
|
||||
{ 236, 0, { &gHitbox_19 }, SPRITE_CROW, { 1, 0, 1, 1 }, 4, 320, 87, 15 },
|
||||
{ 236, 0, { (Hitbox*)&gHitbox_19 }, SPRITE_CROW, { 1, 0, 1, 1 }, 4, 320, 87, 15 },
|
||||
MULTI_FORM(gEnemyDefinition_46),
|
||||
{ 16400, 299, { &gHitbox_0 }, SPRITE_LAKITU, { 0, 1, 0, 1 }, 6, 128, 67, 143 },
|
||||
{ 16400, 0, { &gHitbox_0 }, SPRITE_LAKITUCLOUDPROJECTILE, { 1, 1, 1, 2 }, 255, 0, 166, 143 },
|
||||
@@ -157,15 +157,15 @@ const EnemyDefinition gEnemyDefinitions[] = {
|
||||
MULTI_FORM(gEnemyDefinition_0),
|
||||
MULTI_FORM(gEnemyDefinition_56),
|
||||
MULTI_FORM(gEnemyDefinition_57),
|
||||
{ 444, 0, { &gHitbox_25 }, SPRITE_FIREBALLGUY, { 1, 1, 1, 1 }, 4, 64, 25, 139 },
|
||||
{ 444, 0, { &gHitbox_26 }, SPRITE_FIREBALLGUY, { 1, 1, 1, 0 }, 1, 64, 25, 139 },
|
||||
{ 444, 0, { (Hitbox*)&gHitbox_25 }, SPRITE_FIREBALLGUY, { 1, 1, 1, 1 }, 4, 64, 25, 139 },
|
||||
{ 444, 0, { (Hitbox*)&gHitbox_26 }, SPRITE_FIREBALLGUY, { 1, 1, 1, 0 }, 1, 64, 25, 139 },
|
||||
MULTI_FORM(gEnemyDefinition_5A),
|
||||
{ 114, 110, { &gHitbox_0 }, SPRITE_BUSINESSSCRUB, { 0, 0, 1, 1 }, 255, 0, 1, 139 },
|
||||
{ 0, 0, { &gHitbox_0 }, SPRITE_0, { 0, 0, 0, 1 }, 24, 256, 0, 139 },
|
||||
{ 16448, 338, { &gHitbox_28 }, SPRITE_GYORGMALE, { 0, 0, 1, 1 }, 12, 256, 27, 139 },
|
||||
{ 16448, 338, { (Hitbox*)&gHitbox_28 }, SPRITE_GYORGMALE, { 0, 0, 1, 1 }, 12, 256, 27, 139 },
|
||||
{ 485, 352, { &gHitbox_0 }, SPRITE_CURTAIN, { 0, 1, 1, 1 }, 255, 256, 154, 139 },
|
||||
{ 418, 320, { &gHitbox_20 }, SPRITE_WRATHEYE, { 1, 0, 1, 0 }, 255, 256, 57, 139 },
|
||||
{ 498, 0, { &gHitbox_20 }, SPRITE_GYORGCHILD, { 0, 0, 1, 1 }, 3, 256, 32, 15 },
|
||||
{ 418, 320, { (Hitbox*)&gHitbox_20 }, SPRITE_WRATHEYE, { 1, 0, 1, 0 }, 255, 256, 57, 139 },
|
||||
{ 498, 0, { (Hitbox*)&gHitbox_20 }, SPRITE_GYORGCHILD, { 0, 0, 1, 1 }, 3, 256, 32, 15 },
|
||||
#ifdef EU
|
||||
{ 499, 377, { &gHitbox_22 }, SPRITE_GYORGFEMALEEYE, { 0, 0, 1, 1 }, 255, 256, 30, 139 },
|
||||
#else
|
||||
@@ -173,7 +173,7 @@ const EnemyDefinition gEnemyDefinitions[] = {
|
||||
#endif
|
||||
{ 500, 376, { &gHitbox_0 }, SPRITE_ENEMY62, { 0, 0, 1, 1 }, 255, 256, 30, 139 },
|
||||
{ 504, 372, { &gHitbox_0 }, SPRITE_GYORGFEMALEMOUTH, { 0, 0, 1, 1 }, 255, 256, 136, 139 },
|
||||
{ 16448, 338, { &gHitbox_28 }, SPRITE_GYORGMALE, { 0, 0, 1, 1 }, 36, 256, 0, 139 },
|
||||
{ 16448, 338, { (Hitbox*)&gHitbox_28 }, SPRITE_GYORGMALE, { 0, 0, 1, 1 }, 36, 256, 0, 139 },
|
||||
{ 0, 0, { &gHitbox_0 }, SPRITE_0, { 0, 0, 0, 1 }, 255, 256, 0, 139 },
|
||||
};
|
||||
|
||||
@@ -228,9 +228,9 @@ const EnemyDefinition gEnemyDefinition_10[] = {
|
||||
{ 32, 0, &gUnk_080FD21C, SPRITE_SLUGGULA_2, { 0, 0, 1, 0 }, 3, 0, 0, 139 },
|
||||
};
|
||||
const EnemyDefinition gEnemyDefinition_11[] = {
|
||||
{ 34, 38, &gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
{ 34, 39, &gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
{ 34, 37, &gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
{ 34, 38, (const Hitbox*)&gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
{ 34, 39, (const Hitbox*)&gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
{ 34, 37, (const Hitbox*)&gUnk_080FD22C, SPRITE_PESTO, { 3, 1, 1, 1 }, 4, 64, 119, 15 },
|
||||
};
|
||||
const EnemyDefinition gEnemyDefinition_12[] = {
|
||||
{ 35, 40, &gHitbox_0, SPRITE_PUFFSTOOL, { 1, 1, 1, 0 }, 1, 64, 130, 15 },
|
||||
@@ -370,11 +370,11 @@ const EnemyDefinition gEnemyDefinition_51[] = {
|
||||
{ 417, 320, &gHitbox_0, SPRITE_VAATIWRATH_2, { 0, 0, 1, 1 }, 255, 256, 0, 139 },
|
||||
};
|
||||
const EnemyDefinition gEnemyDefinition_52[] = {
|
||||
{ 16400, 320, &gUnk_080FD538, SPRITE_VAATIARM, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, &gUnk_080FD538, SPRITE_VAATIARM_1, { 0, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, &gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, &gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, &gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 16400, 320, (Hitbox*)&gUnk_080FD538, SPRITE_VAATIARM, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, (Hitbox*)&gUnk_080FD538, SPRITE_VAATIARM_1, { 0, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, (Hitbox*)&gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, (Hitbox*)&gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
{ 419, 320, (Hitbox*)&gUnk_080FD538, SPRITE_VAATIARM_1, { 1, 0, 1, 1 }, 255, 256, 57, 139 },
|
||||
};
|
||||
const EnemyDefinition gEnemyDefinition_56[] = {
|
||||
{ 422, 113, &gUnk_080FD488, SPRITE_SLIME, { 3, 1, 1, 1 }, 2, 64, 25, 139 },
|
||||
|
||||
@@ -559,7 +559,7 @@ void sub_080262A8(ChuchuBossEntity* this) {
|
||||
this->unk_84->unk_03 = 3;
|
||||
gPlayerEntity.animationState = 0;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
SetTile(0x4022, 0x2c8, 1);
|
||||
}
|
||||
}
|
||||
@@ -583,7 +583,7 @@ void sub_08026358(ChuchuBossEntity* this) {
|
||||
this->unk_84->unk_03++;
|
||||
gPlayerEntity.animationState = 0;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
} else if (bVar1 < 0x61) {
|
||||
if (bVar1 < 0x5c) {
|
||||
gPlayerEntity.animationState = 4;
|
||||
@@ -661,7 +661,7 @@ void sub_0802650C(ChuchuBossEntity* this) {
|
||||
|
||||
void sub_0802653C(ChuchuBossEntity* this) {
|
||||
if (gRoomControls.reload_flags == 0) {
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
sub_08027B98(this, 0x90, 0xb0, 4, 0xff);
|
||||
sub_08027548(this, 0);
|
||||
InitAnimationForceUpdate(super->child, 0);
|
||||
|
||||
@@ -361,7 +361,7 @@ void OctorokBoss_Intro_SubAction2(OctorokBossEntity* this) {
|
||||
this->timer = 60;
|
||||
gPlayerEntity.spriteSettings.draw |= 1;
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -397,7 +397,7 @@ void OctorokBoss_Intro_SubAction5(OctorokBossEntity* this) {
|
||||
// Play boss theme, enable control and switch to main action
|
||||
super->action = ACTION1;
|
||||
super->subAction = 0;
|
||||
gRoomControls.unk5 = gPlayerEntity.animationState;
|
||||
gRoomControls.scrollSpeed = gPlayerEntity.animationState;
|
||||
OctorokBoss_SetAttackTimer(this);
|
||||
gPauseMenuOptions.disabled = 0;
|
||||
SoundReq(BGM_BOSS_THEME);
|
||||
|
||||
+27
-9
@@ -1,11 +1,13 @@
|
||||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "enemyUtils.h"
|
||||
|
||||
#include "definitions.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "object.h"
|
||||
#include "save.h"
|
||||
#include "projectile.h"
|
||||
#include "object/deathFx.h"
|
||||
#include "projectile.h"
|
||||
#include "save.h"
|
||||
|
||||
extern void sub_08049CF4(Entity*);
|
||||
|
||||
@@ -13,8 +15,24 @@ extern EnemyDefinition gEnemyDefinitions[];
|
||||
|
||||
const EnemyDefinition* GetEnemyDefinition(Entity* entity);
|
||||
bool32 LoadEnemySprite(Entity* entity, const EnemyDefinition* definition);
|
||||
extern const u16 gUnk_080D3E74[];
|
||||
extern const u8 gUnk_080D3D94[];
|
||||
|
||||
const struct_080D3D94 gUnk_080D3D94[] = {
|
||||
{ 8, 8 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 4, 4 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 16, 16 },
|
||||
{ 64, 64 }, { 64, 64 }, { 12, 12 }, { 16, 16 }, { 8, 8 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 10, 10 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 15, 9 },
|
||||
{ 12, 12 }, { 16, 16 }, { 24, 24 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 60, 60 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 24, 24 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 8, 8 }, { 8, 8 }, { 8, 8 }, { 16, 16 }, { 16, 16 },
|
||||
{ 16, 16 }, { 8, 8 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
{ 64, 64 }, { 64, 64 }, { 64, 64 }, { 64, 64 },
|
||||
};
|
||||
|
||||
const u16 gUnk_080D3E74[] = { 2373, 1105, 2324, 21568, 4177, 16656, 1365, 21760, 8209, 0, 20480, 5, 0, 0 };
|
||||
|
||||
const EnemyDefinition* GetEnemyDefinition(Entity* entity) {
|
||||
const EnemyDefinition* definition = &gEnemyDefinitions[entity->id];
|
||||
@@ -96,23 +114,23 @@ bool32 LoadEnemySprite(Entity* entity, const EnemyDefinition* definition) {
|
||||
|
||||
void sub_0804A720(GenericEntity* this) {
|
||||
int iVar2;
|
||||
const u8* pbVar3;
|
||||
const struct_080D3D94* pbVar3;
|
||||
GenericEntityData* ptr;
|
||||
|
||||
if ((this->field_0x6c.HALF.HI & 4) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
pbVar3 = &gUnk_080D3D94[super->id * 2];
|
||||
pbVar3 = &gUnk_080D3D94[super->id];
|
||||
ptr = (GenericEntityData*)&this->field_0x68;
|
||||
if (ptr->field_0x7c.BYTES.byte2 == 0) {
|
||||
this->field_0x6e.HALF.LO = pbVar3[0];
|
||||
this->field_0x6e.HALF.LO = pbVar3->unk_0;
|
||||
} else {
|
||||
this->field_0x6e.HALF.LO = ptr->field_0x7c.BYTES.byte2;
|
||||
}
|
||||
|
||||
if (ptr->field_0x7c.BYTES.byte3 == 0) {
|
||||
this->field_0x6e.HALF.HI = pbVar3[1];
|
||||
this->field_0x6e.HALF.HI = pbVar3->unk_1;
|
||||
} else {
|
||||
this->field_0x6e.HALF.HI = ptr->field_0x7c.BYTES.byte3;
|
||||
}
|
||||
|
||||
+115
-23
@@ -1,31 +1,121 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
/**
|
||||
* @file enterPortalSubtask.c
|
||||
* @ingroup Subtasks
|
||||
*
|
||||
* @brief Enter Portal Subtask
|
||||
*/
|
||||
#include "enterPortalSubtask.h"
|
||||
|
||||
#include "area.h"
|
||||
#include "main.h"
|
||||
#include "common.h"
|
||||
#include "screen.h"
|
||||
#include "object.h"
|
||||
#include "entity.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "fileselect.h"
|
||||
#include "main.h"
|
||||
#include "object.h"
|
||||
#include "screen.h"
|
||||
#include "subtask.h"
|
||||
|
||||
extern void ClearArmosData(void);
|
||||
extern void sub_080300C4(void);
|
||||
|
||||
extern u16 gUnk_020178E0[];
|
||||
extern u8 gUnk_02017700[];
|
||||
|
||||
extern void (*const gUnk_080D4120[])(void);
|
||||
extern void (*const gUnk_080D412C[])(void);
|
||||
extern const u16 gUnk_080D4140[];
|
||||
extern const u8 gUnk_080D4138[];
|
||||
extern const EntityData* gUnk_080D4110[];
|
||||
|
||||
bool32 sub_0804AD18(void);
|
||||
void sub_0804AD6C(RoomControls*);
|
||||
void sub_080A71F4(const ScreenTransitionData*);
|
||||
bool32 sub_0804ACA8(void);
|
||||
|
||||
// Entities spawned inside the portal transition cutscene.
|
||||
const EntityData gUnk_080D3E90[] = {
|
||||
{ OBJECT, 15, PORTAL_FALLING_PLAYER, 0, 0, 132, 156, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 0, 6, 120, 208, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 1, 1, 132, 160, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 2, 2, 96, 192, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 3, 3, 128, 208, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 5, 0, 120, 104, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 6, 1, 216, 200, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 7, 2, 120, 292, 0 },
|
||||
{ OBJECT, 15, PORTAL_MUSHROOM_STALKS, 8, 3, 17, 200, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080D3F30[] = {
|
||||
{ OBJECT, 15, PORTAL_FALLING_PLAYER, 0, 0, 132, 156, 0 }, //
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 0, 6, 120, 200, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 1, 3, 132, 160, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 2, 2, 96, 192, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 3, 1, 128, 208, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 5, 0, 120, 104, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 6, 1, 216, 200, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 7, 2, 120, 292, 0 },
|
||||
{ OBJECT, 15, MACRO_CRYSTAL, 8, 3, 17, 200, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080D3FD0[] = {
|
||||
{ OBJECT, 15, PORTAL_FALLING_PLAYER, 0, 0, 132, 156, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 0, 6, 120, 208, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 1, 1, 132, 160, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 2, 2, 96, 192, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 3, 3, 128, 208, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 5, 0, 120, 104, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 6, 1, 216, 200, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 7, 2, 120, 300, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 8, 3, 17, 200, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
const EntityData gUnk_080D4070[] = {
|
||||
{ OBJECT, 15, PORTAL_FALLING_PLAYER, 0, 0, 132, 156, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 9, 6, 120, 208, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 10, 1, 132, 160, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 11, 2, 96, 192, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 12, 3, 128, 208, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 14, 0, 120, 104, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 15, 1, 216, 200, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 16, 2, 120, 300, 0 },
|
||||
{ OBJECT, 15, MACRO_LEAF, 17, 3, 17, 200, 0 },
|
||||
{ 0xff, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
const EntityData* const gUnk_080D4110[] = {
|
||||
gUnk_080D3E90,
|
||||
gUnk_080D3F30,
|
||||
gUnk_080D3FD0,
|
||||
gUnk_080D4070,
|
||||
};
|
||||
|
||||
void sub_0804AAD4(void);
|
||||
void sub_0804AB04(void);
|
||||
void sub_0804AB24(void);
|
||||
void Subtask_PortalCutscene_0(void);
|
||||
void Subtask_PortalCutscene_1(void);
|
||||
void Subtask_PortalCutscene_2(void);
|
||||
|
||||
void (*const gUnk_080D4120[])(void) = {
|
||||
sub_0804AAD4,
|
||||
sub_0804AB04,
|
||||
sub_0804AB24,
|
||||
};
|
||||
void (*const Subtask_PortalCutscene_Functions[])(void) = {
|
||||
Subtask_PortalCutscene_0,
|
||||
Subtask_PortalCutscene_1,
|
||||
Subtask_PortalCutscene_2,
|
||||
};
|
||||
|
||||
const struct_080D4138 gUnk_080D4138[] = {
|
||||
{ 95, 39 },
|
||||
{ 96, 40 },
|
||||
{ 97, 41 },
|
||||
{ 98, 42 },
|
||||
};
|
||||
|
||||
// x, y values. But they cannot be put in a struct matching?
|
||||
const s16 gUnk_080D4140[] = {
|
||||
0, -22, //
|
||||
22, 0, //
|
||||
0, 22, //
|
||||
-22, 0,
|
||||
};
|
||||
|
||||
bool32 CheckInitPortal(void) {
|
||||
if (gArea.portal_in_use) {
|
||||
gMain.substate = GAMEMAIN_MINISHPORTAL;
|
||||
@@ -73,10 +163,10 @@ void sub_0804AB24(void) {
|
||||
}
|
||||
|
||||
void Subtask_PortalCutscene(void) {
|
||||
gUnk_080D412C[gArea.filler3[0]]();
|
||||
Subtask_PortalCutscene_Functions[gArea.filler3[0]]();
|
||||
}
|
||||
void sub_0804AB70(void) {
|
||||
const u8* ptr;
|
||||
void Subtask_PortalCutscene_0(void) {
|
||||
const struct_080D4138* ptr;
|
||||
RoomControls* controls;
|
||||
u32 portalId;
|
||||
|
||||
@@ -92,19 +182,19 @@ void sub_0804AB70(void) {
|
||||
if ((portalId == 2) && (gUI.roomControls.area != 2)) {
|
||||
portalId = 3;
|
||||
}
|
||||
ptr = &gUnk_080D4138[portalId * 2];
|
||||
LoadPaletteGroup(ptr[0]);
|
||||
LoadGfxGroup(ptr[1]);
|
||||
ptr = &gUnk_080D4138[portalId];
|
||||
LoadPaletteGroup(ptr->paletteGroup);
|
||||
LoadGfxGroup(ptr->gfxGroup);
|
||||
MemCopy(&gUnk_02017700, gUnk_02017700 + 0x240, 0x20);
|
||||
gUsedPalettes |= 0x200000;
|
||||
EraseAllEntities();
|
||||
LoadRoomEntityList((EntityData*)gUnk_080D4110[portalId]);
|
||||
LoadRoomEntityList(gUnk_080D4110[portalId]);
|
||||
ResetSystemPriority();
|
||||
gArea.filler3[0]++;
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void sub_0804AC1C(void) {
|
||||
void Subtask_PortalCutscene_1(void) {
|
||||
s32 tmp;
|
||||
|
||||
UpdateEntities();
|
||||
@@ -139,7 +229,7 @@ bool32 sub_0804ACA8(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0804ACC8(void) {
|
||||
void Subtask_PortalCutscene_2(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
SetGlobalFlag(gArea.portal_type + ENTRANCE_0);
|
||||
sub_0804AD6C(&gUI.roomControls);
|
||||
@@ -192,3 +282,5 @@ void sub_0804AD6C(RoomControls* controls) {
|
||||
ClearArmosData();
|
||||
sub_080300C4();
|
||||
}
|
||||
|
||||
// TODO end of portal cutscene subtask?
|
||||
|
||||
+13
-3
@@ -6,8 +6,6 @@
|
||||
#include "npc.h"
|
||||
#include "manager/diggingCaveEntranceManager.h"
|
||||
|
||||
extern u8 gUnk_081091F8[];
|
||||
extern u8 gUnk_081091EE[];
|
||||
extern u8 gUpdateVisibleTiles;
|
||||
extern Manager gUnk_02033290;
|
||||
void UpdatePlayerInput(void);
|
||||
@@ -36,6 +34,11 @@ typedef struct {
|
||||
} UpdateContext;
|
||||
extern UpdateContext gUpdateContext;
|
||||
|
||||
// List by entity kind.
|
||||
const u8 gUnk_081091E4[] = {
|
||||
8, 1, 8, 4, 5, 8, 6, 7, 2, 6,
|
||||
};
|
||||
|
||||
void sub_0805E248(void) {
|
||||
s32 v0;
|
||||
|
||||
@@ -64,9 +67,16 @@ void sub_0805E248(void) {
|
||||
gUpdateVisibleTiles = 0;
|
||||
}
|
||||
|
||||
const u8 gUnk_081091EE[] = {
|
||||
0, 1, 0, 0, 0, 0, 1, 1, 1, 1,
|
||||
};
|
||||
const u8 gUnk_081091F8[] = {
|
||||
0, 3, 0, 3, 3, 0, 3, 3, 3, 3,
|
||||
};
|
||||
|
||||
void SetDefaultPriorityForKind(Entity* e) {
|
||||
u8 r3 = gRoomTransition.entity_update_type;
|
||||
u8* array = gUnk_081091F8;
|
||||
const u8* array = gUnk_081091F8;
|
||||
|
||||
if (r3 != 2) {
|
||||
array = gUnk_081091EE;
|
||||
|
||||
+6
-1
@@ -172,12 +172,17 @@ static u32 sub_080501C0(FadeControl* ctl) {
|
||||
return !!((s16)ctl->sustain ^ (s16)ctl->progress);
|
||||
}
|
||||
|
||||
const u16 gMosaicSizes[] = {
|
||||
0, 0x1111, 0x2222, 0x3333, 0x4444, 0x5555, 0x6666, 0x7777,
|
||||
0x8888, 0x9999, 0xaaaa, 0xbbbb, 0xcccc, 0xdddd, 0xeeee, 0xffff,
|
||||
};
|
||||
|
||||
static u32 sub_08050230(FadeControl* ctl) {
|
||||
u32 type = ctl->type;
|
||||
u32 idx = ((s16)ctl->progress >> 4) & 0xF;
|
||||
if (type & 1)
|
||||
idx = 0xF - idx;
|
||||
gScreen.controls.mosaicSize = gUnk_080FC3C4[idx];
|
||||
gScreen.controls.mosaicSize = gMosaicSizes[idx];
|
||||
if (ctl->progress != 0)
|
||||
return 1;
|
||||
|
||||
|
||||
+286
-9
@@ -4,12 +4,14 @@
|
||||
*
|
||||
* @brief File select task
|
||||
*/
|
||||
#include "fileselect.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "fileselect.h"
|
||||
#include "figurineMenu.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "item.h"
|
||||
#include "kinstone.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "message.h"
|
||||
@@ -44,6 +46,190 @@ typedef enum {
|
||||
RESULT_ASCII = 1,
|
||||
} CharResult;
|
||||
|
||||
const struct_080FC3E4 gUnk_080FC3E4[] = {
|
||||
{ 0, 0, 128, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
#ifdef EU
|
||||
{ 0, 0, 0, 1 },
|
||||
#else
|
||||
{ 0, 0, 2, 1 },
|
||||
#endif
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, KINSTONE_2C, UNK_6_10, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 4, 1 },
|
||||
{ 0, 0, 7, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 4, 1 },
|
||||
#ifdef EU
|
||||
{ 0, 0, 2, 1 },
|
||||
#else
|
||||
{ 0, 0, 3, 1 },
|
||||
#endif
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
#if defined(EU) || defined(JP)
|
||||
{ 0, 0x12, UNK_6_40, 1 },
|
||||
#else
|
||||
{ 0, 5, UNK_6_20, 1 },
|
||||
#endif
|
||||
{ 0, 0, 0, 1 },
|
||||
{ FLAG_BANK_4, YAMADOUKUTU_0E_SENNIN, UNK_6_40, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 5, 1 },
|
||||
{ 0, 0, 5, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 1, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 5, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 2, 1 },
|
||||
{ 0, 0, 2, 1 },
|
||||
{ 0, 0, 2, 1 },
|
||||
{ 0, 0, UNK_6_20, 1 },
|
||||
{ 0, KINSTONE_30, UNK_6_10, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 0, 1 },
|
||||
{ 0, 0, 4, 1 },
|
||||
{ 0, 0, 4, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ FLAG_BANK_4, GORON_DOUKUTU_APPEAR, UNK_6_40, 1 },
|
||||
{ 0, 0, 3, 1 },
|
||||
{ 0, 0, 3, 0 },
|
||||
{ 0, 0, 4, 0 },
|
||||
{ 0, 0, 7, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 2, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 4, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 4, 0 },
|
||||
{ 0, 0, 3, 0 },
|
||||
{ 0, 0, 3, 0 },
|
||||
{ 0, 0, 6, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 7, 0 },
|
||||
#ifdef EU
|
||||
{ 0, 0, 0, 0 },
|
||||
#else
|
||||
{ 0, 0, 2, 0 },
|
||||
#endif
|
||||
{ 0, KINSTONE_33, UNK_6_10, 1 },
|
||||
{ 0, 1, UNK_6_20, 0 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 4, 2 },
|
||||
{ 0, 0, 4, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 5, 2 },
|
||||
{ 0, 0, 7, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 3, 3 },
|
||||
{ 0, 0, 7, 3 },
|
||||
{ 0, 0, 0, 2 },
|
||||
#ifdef EU
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 6, 2 },
|
||||
#else
|
||||
{ 0, 0, 6, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
#endif
|
||||
{ 0, 0, 5, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 4, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 7, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 7, 3 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 2, 2 },
|
||||
{ 0, 0, 2, 2 },
|
||||
{ 0, 0, 6, 2 },
|
||||
{ 0, 0, 4, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 7, 2 },
|
||||
{ 0, 0, 7, 2 },
|
||||
{ 0, 0, 6, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 2, UNK_6_20, 3 },
|
||||
{ 0, 3, UNK_6_20, 3 },
|
||||
{ 0, 4, UNK_6_20, 3 },
|
||||
{ 0, 0, 2, 2 },
|
||||
{ 0, 0, 6, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 0, 2 },
|
||||
{ 0, 0, 3, 2 },
|
||||
{ 0, 0, 0, 3 },
|
||||
{ 0, 0, 1, 2 },
|
||||
{ 0, 0, 4, 3 },
|
||||
{ 0, 0, 7, 3 },
|
||||
{ 0, 0, 6, 1 },
|
||||
{ 0, 0, 0, 3 },
|
||||
{ 0, 0, 1, 3 },
|
||||
{ 0, 0, 3, 3 },
|
||||
{ FLAG_BANK_8, LV4_10_BOSSDIE, UNK_6_8, 3 },
|
||||
{ 0, 0, 9, 0 },
|
||||
{ 0, 0, 9, 1 },
|
||||
{ 0, 0, 9, 3 },
|
||||
{ 0, 0, 9, 3 },
|
||||
{ 0, 0, 9, 3 },
|
||||
{ 0, 0, 9, 3 },
|
||||
{ 0, 0xffff, 0, 1 },
|
||||
{ 0, 0xffff, 0, 1 },
|
||||
{ 0, 0xffff, 0, 1 },
|
||||
};
|
||||
|
||||
extern u16 gUnk_02034E4E[];
|
||||
const Font gUnk_080FC844 = {
|
||||
gUnk_02034E4E, BG_TILE_ADDR(0x198), gTextGfxBuffer, 0, 96, 224, 1, 1, 0, 1, 3, 0, 0, 1, 0
|
||||
};
|
||||
|
||||
const u16 gUnk_080FC85C[][3] = {
|
||||
{ 0, 3, SFX_MENU_ERROR },
|
||||
{ 0, 4, SFX_MENU_ERROR },
|
||||
{ 1, 5, 0 },
|
||||
{ 0, 6, SFX_MENU_ERROR },
|
||||
{ 1, 7, 0 },
|
||||
{ 1, 8, 0 },
|
||||
{ 0, 9, SFX_MENU_ERROR },
|
||||
{ 1, 10, 0 },
|
||||
{ 1, 11, 0 },
|
||||
{ 0, 12, SFX_MENU_ERROR },
|
||||
{ 1, 13, 0 },
|
||||
{ 0, 14, 0 },
|
||||
};
|
||||
|
||||
static void HandleFileScreenEnter(void);
|
||||
static void HandleFileScreenActive(void);
|
||||
static void HandleFileScreenExit(void);
|
||||
@@ -101,9 +287,9 @@ extern void (*const gUnk_080FC960[])(void);
|
||||
extern void (*const gUnk_080FC9B0[])(void);
|
||||
extern void (*const gUnk_080FC9BC[])(void);
|
||||
extern void (*const gUnk_080FC9C8[])(void);
|
||||
extern u8 gUnk_080FC970[];
|
||||
extern u8 gUnk_080FC980[];
|
||||
extern u8 gUnk_080FC9A0[];
|
||||
extern const u8 gUnk_080FC970[];
|
||||
extern const u8 gUnk_080FC980[];
|
||||
extern const u8 gUnk_080FC9A0[];
|
||||
|
||||
static void ResetEmptyOrDeletedSaveFile(u32);
|
||||
static void sub_0805066C(void);
|
||||
@@ -111,6 +297,10 @@ static void HideButtonR(void);
|
||||
static void ShowButtonR(void);
|
||||
void sub_08051458(void);
|
||||
|
||||
void sub_08050888(void);
|
||||
void sub_080508E4(void);
|
||||
void sub_08050910(void);
|
||||
|
||||
void CreateDialogBox(u32 arg0, u32 arg1) {
|
||||
u32 sfx;
|
||||
Font var0;
|
||||
@@ -119,7 +309,7 @@ void CreateDialogBox(u32 arg0, u32 arg1) {
|
||||
MemCopy(&gUnk_080FC844, &var0, sizeof(gUnk_080FC844));
|
||||
sub_08056FEC(arg1, gUnk_020227E8);
|
||||
var0.gfx_src |= gUnk_080FC85C[arg0][0] << 0xC;
|
||||
sub_0805F46C(gUnk_080FC85C[arg0][1], &var0);
|
||||
ShowTextBox(gUnk_080FC85C[arg0][1], &var0);
|
||||
sfx = gUnk_080FC85C[arg0][2];
|
||||
if (sfx) {
|
||||
SoundReq(sfx);
|
||||
@@ -375,6 +565,12 @@ void sub_08050848(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
void (*const gUnk_080FC908[])(void) = {
|
||||
sub_08050888,
|
||||
sub_080508E4,
|
||||
sub_08050910,
|
||||
};
|
||||
|
||||
void sub_0805086C(void) {
|
||||
gUnk_080FC908[gChooseFileState.subState]();
|
||||
}
|
||||
@@ -550,6 +746,9 @@ typedef struct {
|
||||
|
||||
extern const u16 gUnk_080FC914[];
|
||||
|
||||
const u16 gUnk_080FC914[] = { 0xf251, 0xf251, 0xf251, 0xf251, 0xf251, 0xf251, 0xf251, 0xf251, 0xf251, 0xf251,
|
||||
0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d, 0xf24d };
|
||||
|
||||
// Handles drawing of hearts
|
||||
NONMATCH("asm/non_matching/save/sub_08050B3C.inc", void sub_08050B3C(u16* arg0)) {
|
||||
unk_08050B3C sp;
|
||||
@@ -620,6 +819,14 @@ NONMATCH("asm/non_matching/save/sub_08050B3C.inc", void sub_08050B3C(u16* arg0))
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_08050C54(void);
|
||||
void sub_08050D68(void);
|
||||
|
||||
void (*const gUnk_080FC93C[])() = {
|
||||
sub_08050C54,
|
||||
sub_08050D68,
|
||||
};
|
||||
|
||||
void HandleFileView(void) {
|
||||
gUnk_080FC93C[gMenu.menuType]();
|
||||
sub_08050A64(gMapDataBottomSpecial.unk6);
|
||||
@@ -687,6 +894,15 @@ void sub_08050D68(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08050DB8(void);
|
||||
void sub_08050DE4(void);
|
||||
void sub_08050E88(void);
|
||||
void (*const gUnk_080FC944[])(void) = {
|
||||
sub_08050DB8,
|
||||
sub_08050DE4,
|
||||
sub_08050E88,
|
||||
};
|
||||
|
||||
void HandleFileLanguageSelect(void) {
|
||||
gUnk_080FC944[gMenu.menuType]();
|
||||
}
|
||||
@@ -748,6 +964,17 @@ void sub_08050E88(void) {
|
||||
SetFileSelectState(0);
|
||||
}
|
||||
|
||||
void sub_08050EB8(void);
|
||||
void sub_08050EF4(void);
|
||||
void sub_08050FFC(void);
|
||||
void sub_0805103C(void);
|
||||
void (*const gUnk_080FC950[])(void) = {
|
||||
sub_08050EB8,
|
||||
sub_08050EF4,
|
||||
sub_08050FFC,
|
||||
sub_0805103C,
|
||||
};
|
||||
|
||||
void HandleFileOptions(void) {
|
||||
gUnk_080FC950[gMenu.menuType]();
|
||||
}
|
||||
@@ -863,6 +1090,17 @@ void sub_0805103C(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08051090(void);
|
||||
void sub_080610B8(void);
|
||||
void sub_0805138C(void);
|
||||
void sub_0805144C(void);
|
||||
void (*const gUnk_080FC960[])(void) = {
|
||||
sub_08051090,
|
||||
sub_080610B8,
|
||||
sub_0805138C,
|
||||
sub_0805144C,
|
||||
};
|
||||
|
||||
void HandleFileNew(void) {
|
||||
gUnk_080FC960[gMenu.menuType]();
|
||||
}
|
||||
@@ -877,13 +1115,23 @@ void sub_08051090(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
const u8 gUnk_080FC970[] = {
|
||||
1, 2, 3, 5, 8, 0, 0, 0, 1, 2, 5, 8, 0, 0, 0, 0,
|
||||
};
|
||||
const u8 gUnk_080FC980[] = {
|
||||
0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 0, 0, 0,
|
||||
};
|
||||
const u8 gUnk_080FC9A0[] = {
|
||||
1, 3, 6, 8, 11, 0, 0, 0, 1, 4, 7, 11, 11, 0, 0, 0,
|
||||
};
|
||||
|
||||
void sub_080610B8(void) {
|
||||
u8 uVar7;
|
||||
s32 uVar6;
|
||||
s32 tmp4;
|
||||
u8* puVar3;
|
||||
u8* puVar4;
|
||||
u8* puVar5;
|
||||
const u8* puVar3;
|
||||
const u8* puVar4;
|
||||
const u8* puVar5;
|
||||
s32 iVar4;
|
||||
u8 bVar2;
|
||||
u32 tmp1;
|
||||
@@ -1060,6 +1308,15 @@ void sub_08051358(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080513A8(void);
|
||||
void sub_080513C0(void);
|
||||
void sub_0805141C(void);
|
||||
void (*const gUnk_080FC9B0[])(void) = {
|
||||
sub_080513A8,
|
||||
sub_080513C0,
|
||||
sub_0805141C,
|
||||
};
|
||||
|
||||
void sub_0805138C(void) {
|
||||
gUnk_080FC9B0[gMenu.overlayType]();
|
||||
}
|
||||
@@ -1209,12 +1466,21 @@ void sub_08051574(u32 sfx) {
|
||||
sub_0805070C();
|
||||
}
|
||||
|
||||
void sub_080515C8(void);
|
||||
void sub_080515D4(void);
|
||||
void sub_080516E0(void);
|
||||
void (*const gUnk_080FC9BC[])(void) = {
|
||||
sub_080515C8,
|
||||
sub_080515D4,
|
||||
sub_080516E0,
|
||||
};
|
||||
|
||||
void HandleFileDelete(void) {
|
||||
gUnk_080FC9BC[gMenu.menuType]();
|
||||
sub_08050A64(gMapDataBottomSpecial.unk6);
|
||||
}
|
||||
|
||||
void sub_080515c8(void) {
|
||||
void sub_080515C8(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
@@ -1264,6 +1530,17 @@ void sub_080516E0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08051738(void);
|
||||
void sub_080517EC(void);
|
||||
void sub_08051874(void);
|
||||
void sub_080518E4(void);
|
||||
void (*const gUnk_080FC9C8[])(void) = {
|
||||
sub_08051738,
|
||||
sub_080517EC,
|
||||
sub_08051874,
|
||||
sub_080518E4,
|
||||
};
|
||||
|
||||
void HandleFileCopy(void) {
|
||||
gUnk_080FC9C8[gMenu.menuType]();
|
||||
sub_08050A64(gMapDataBottomSpecial.unk6);
|
||||
|
||||
+11
-2485
File diff suppressed because it is too large
Load Diff
+503
@@ -0,0 +1,503 @@
|
||||
// TODO belongs to game.c, but spriteAnimations332.s is before.
|
||||
// maybe also signals code that no longer belongs to game.c?
|
||||
#include "common.h"
|
||||
#include "flags.h"
|
||||
#include "game.h"
|
||||
#include "item.h"
|
||||
#include "kinstone.h"
|
||||
#include "room.h"
|
||||
|
||||
// extern const u8 gUnk_080FE1B4[];
|
||||
// const u8 gUnk_080FE1B4[] = {0, 84, 85, 86, 95, 96, 93, 94, 63, 252, 253, 254, 255, 0, 0, 0,0,};
|
||||
const u8 gUnk_080FE1B4[] = {
|
||||
ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY,
|
||||
ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_GREEN, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_RED,
|
||||
ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE,
|
||||
};
|
||||
const u8 gUnk_080FE1C6[] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 9, 10, 10, 11, 12, 13, 14, 15, 8, 15, 1, 8,
|
||||
};
|
||||
const u8 gUnk_080FE1DD[] = {
|
||||
110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111, 112, 111, 110, 110, 110, 111, 112, 112, 110, 111,
|
||||
111, 112, 110, 110, 112, 111, 112, 111, 110, 111, 110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111,
|
||||
112, 111, 110, 112, 110, 111, 112, 112, 110, 111, 111, 112, 110, 110, 112, 111, 112, 111, 110, 0, 113, 114,
|
||||
113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114,
|
||||
113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114,
|
||||
113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 113, 114, 115, 116, 117, 117,
|
||||
115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 115, 115, 116, 117, 117, 115, 116, 116, 117, 115, 115,
|
||||
117, 116, 117, 116, 115, 116, 115, 116, 117, 117, 115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 117,
|
||||
115, 116, 117, 117, 115, 116, 116, 117, 115, 115, 117, 116, 117, 116, 115, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
void Subtask_WorldEvent_Init(void);
|
||||
void Subtask_WorldEvent_Update(void);
|
||||
void Subtask_WorldEvent_End(void);
|
||||
void (*const gUnk_080FE2A0[])(void) = {
|
||||
Subtask_WorldEvent_Init,
|
||||
Subtask_WorldEvent_Update,
|
||||
Subtask_WorldEvent_End,
|
||||
};
|
||||
void WorldEvent_0(void);
|
||||
void WorldEvent_1(void);
|
||||
void WorldEvent_2(void);
|
||||
void WorldEvent_3(void);
|
||||
void WorldEvent_4(void);
|
||||
void WorldEvent_5(void);
|
||||
void WorldEvent_6(void);
|
||||
void WorldEvent_7(void);
|
||||
void WorldEvent_8(void);
|
||||
void WorldEvent_9(void);
|
||||
void WorldEvent_Beanstalk(void);
|
||||
void WorldEvent_11(void);
|
||||
void WorldEvent_12(void);
|
||||
void WorldEvent_13(void);
|
||||
void WorldEvent_14(void);
|
||||
void WorldEvent_15(void);
|
||||
void WorldEvent_16(void);
|
||||
void WorldEvent_17(void);
|
||||
void WorldEvent_17(void);
|
||||
void WorldEvent_19(void);
|
||||
void WorldEvent_20(void);
|
||||
void WorldEvent_21(void);
|
||||
void WorldEvent_22(void);
|
||||
void WorldEvent_23(void);
|
||||
void WorldEvent_24(void);
|
||||
void WorldEvent_25(void);
|
||||
|
||||
void (*const gWorldEventFunctions[])(void) = {
|
||||
WorldEvent_0, WorldEvent_1, WorldEvent_2, WorldEvent_3, WorldEvent_4, WorldEvent_5,
|
||||
WorldEvent_6, WorldEvent_7, WorldEvent_8, WorldEvent_9, WorldEvent_Beanstalk, WorldEvent_11,
|
||||
WorldEvent_12, WorldEvent_13, WorldEvent_14, WorldEvent_15, WorldEvent_16, WorldEvent_17,
|
||||
WorldEvent_17, WorldEvent_19, WorldEvent_20, WorldEvent_21, WorldEvent_22, WorldEvent_23,
|
||||
WorldEvent_24, WorldEvent_25, WorldEvent_0, WorldEvent_0, WorldEvent_0,
|
||||
};
|
||||
|
||||
// Indexed by worldEventId of gKinstoneWorldEvents
|
||||
const WorldEvent gWorldEvents[] = {
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_1, 0, AREA_RUINS, ROOM_RUINS_BELOW_FORTRESS_ENTRANCE, 128, 112, 248, 216, 728, 3112, CND_1,
|
||||
LOCAL_BANK_0, OUGONTEKI_A },
|
||||
{ WORLD_EVENT_TYPE_1, 1, AREA_MT_CRENEL, ROOM_MT_CRENEL_CENTER, 384, 192, 504, 280, 488, 1112, CND_1, LOCAL_BANK_0,
|
||||
OUGONTEKI_B },
|
||||
{ WORLD_EVENT_TYPE_1, 2, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 480, 80, 600, 168, 600, 1848, CND_1,
|
||||
LOCAL_BANK_0, OUGONTEKI_C },
|
||||
{ WORLD_EVENT_TYPE_1, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 0, 352, 120, 440, 2616, 2600,
|
||||
CND_1, LOCAL_BANK_0, OUGONTEKI_D },
|
||||
{ WORLD_EVENT_TYPE_1, 4, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 768, 160, 936, 248, 2424, 440, CND_1,
|
||||
LOCAL_BANK_0, OUGONTEKI_E },
|
||||
{ WORLD_EVENT_TYPE_1, 5, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 224, 144, 344, 232, 2840, 472, CND_1, LOCAL_BANK_0,
|
||||
OUGONTEKI_F },
|
||||
{ WORLD_EVENT_TYPE_1, 6, AREA_MT_CRENEL, ROOM_MT_CRENEL_CAVERN_OF_FLAMES_ENTRANCE, 96, 368, 216, 456, 600, 680,
|
||||
CND_1, LOCAL_BANK_0, OUGONTEKI_G },
|
||||
{ WORLD_EVENT_TYPE_1, 7, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 192, 96, 328, 184, 3304, 2344, CND_1,
|
||||
LOCAL_BANK_0, OUGONTEKI_H },
|
||||
{ WORLD_EVENT_TYPE_1, 8, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_CENTER, 176, 0, 312, 88, 1320, 2888,
|
||||
CND_1, LOCAL_BANK_0, OUGONTEKI_I },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH, 80, 288, 200, 376, 2696, 2536,
|
||||
CND_1, LOCAL_BANK_1, KAKERA_TAKARA_A },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_CRENEL_MINISH_PATHS, ROOM_CRENEL_MINISH_PATHS_RAIN, 272, 16, 392, 88, 744, 152, CND_1,
|
||||
LOCAL_BANK_3, KAKERA_TAKARA_B },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_CRENEL_MINISH_PATHS, ROOM_CRENEL_MINISH_PATHS_SPRING_WATER, 0, 48, 168, 136, 872,
|
||||
1432, CND_1, LOCAL_BANK_3, KAKERA_TAKARA_C },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_PATHS, ROOM_MINISH_PATHS_SCHOOLYARD, 0, 240, 120, 328, 2408, 1608, CND_1,
|
||||
LOCAL_BANK_3, KAKERA_TAKARA_D },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 0, 112, 104, 200, 3080, 2360, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_E },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_PATHS, ROOM_MINISH_PATHS_LON_LON_RANCH, 0, 288, 120, 376, 2968, 1544, CND_1,
|
||||
LOCAL_BANK_3, KAKERA_TAKARA_F },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_PATHS, ROOM_MINISH_PATHS_MINISH_VILLAGE, 0, 416, 104, 504, 3448, 3064, CND_1,
|
||||
LOCAL_BANK_3, KAKERA_TAKARA_G },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_CRENEL_MINISH_PATHS, ROOM_CRENEL_MINISH_PATHS_MELARI, 208, 16, 344, 104, 616, 504,
|
||||
CND_1, LOCAL_BANK_3, KAKERA_TAKARA_H },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_PATHS, ROOM_MINISH_PATHS_LAKE_HYLIA, 0, 640, 104, 760, 3896, 2024, CND_1,
|
||||
LOCAL_BANK_3, KAKERA_TAKARA_I },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 0, 576, 88, 664, 3064, 2824, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_J },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_RUINS, ROOM_RUINS_FORTRESS_ENTRANCE, 288, 80, 488, 168, 968, 2808, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_K },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 768, 496, 904, 584, 3880, 2744, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_L },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 240, 0, 392, 56, 1400, 1256, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_M },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 544, 640, 664, 728, 3640, 2888, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_N },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 48, 320, 200, 360, 3176, 2520, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_O },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 656, 272, 776, 360, 2264, 2840,
|
||||
CND_1, LOCAL_BANK_1, KAKERA_TAKARA_P },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_ROYAL_VALLEY, ROOM_ROYAL_VALLEY_MAIN, 0, 0, 56, 88, 1064, 280, CND_1, LOCAL_BANK_1,
|
||||
KAKERA_TAKARA_Q },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_ROYAL_VALLEY, ROOM_ROYAL_VALLEY_MAIN, 240, 0, 424, 88, 1432, 280, CND_1, LOCAL_BANK_1,
|
||||
KAKERA_TAKARA_R },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 144, 352, 280, 440, 1288, 1640,
|
||||
CND_1, LOCAL_BANK_1, KAKERA_TAKARA_S },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 0, 0, 104, 72, 1592, 792, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_T },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 48, 0, 168, 40, 2664, 1240, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_U },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 240, 96, 360, 184, 2856, 376, CND_1, LOCAL_BANK_1,
|
||||
KAKERA_TAKARA_V },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MT_CRENEL, ROOM_MT_CRENEL_WALL_CLIMB, 48, 288, 184, 376, 184, 600, CND_1,
|
||||
LOCAL_BANK_1, KAKERA_TAKARA_W },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_MT_CRENEL, ROOM_MT_CRENEL_ENTRANCE, 0, 0, 120, 88, 120, 1288, CND_1, LOCAL_BANK_1,
|
||||
KAKERA_TAKARA_X },
|
||||
{ WORLD_EVENT_TYPE_2, 0, AREA_RUINS, ROOM_RUINS_LADDER_TO_TEKTITES, 0, 0, 136, 88, 376, 3096, CND_1, LOCAL_BANK_1,
|
||||
KAKERA_TAKARA_Y },
|
||||
{ WORLD_EVENT_TYPE_0, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_3, 0, AREA_RUINS, ROOM_RUINS_ENTRANCE, 0, 48, 40, 136, 40, 2776, CND_2, 0,
|
||||
ITEM_ARROW_BUTTERFLY },
|
||||
{ WORLD_EVENT_TYPE_3, 1, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 304, 448, 424, 520, 424, 2200, CND_2, 0,
|
||||
ITEM_DIG_BUTTERFLY },
|
||||
{ WORLD_EVENT_TYPE_3, 2, AREA_ROYAL_VALLEY, ROOM_ROYAL_VALLEY_MAIN, 0, 136, 56, 216, 1064, 408, CND_2, 0,
|
||||
ITEM_SWIM_BUTTERFLY },
|
||||
#if defined(EU) || defined(JP) || defined(DEMO_JP)
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 112, 160, 264, 264, 1272, 1432,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 352, 400, 488, 520, 3704, 1688, CND_0, 0, 0 },
|
||||
#ifdef DEMO_JP
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 160, 576, 232, 664, 2728, 824, CND_1, LOCAL_BANK_3,
|
||||
MOGURA_41_T3 }, // same as USA
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 160, 576, 232, 664, 2728, 824, CND_0, 0, 0 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_5, 132, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 656, 0, 776, 72, 2264, 264, CND_0, 0, 0 },
|
||||
#ifdef DEMO_JP
|
||||
{ WORLD_EVENT_TYPE_5, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 384, 440, 504, 520, 3000, 1720, CND_1,
|
||||
LOCAL_BANK_4, 0x4c }, // TODO differs from USA
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_5, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 384, 440, 504, 520, 3000, 1720, CND_0,
|
||||
0, 0 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_5, 2, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 0, 200, 88, 280, 1576, 2760,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_5, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 0, 600, 56, 680, 1064, 1880, CND_0,
|
||||
0, 0 },
|
||||
{ WORLD_EVENT_TYPE_5, 128, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 128, 0, 232, 72, 1720, 264, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 112, 224, 216, 296, 1240, 2488,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 56, 32, 168, 88, 1192, 2280,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 240, 448, 392, 552, 1416, 2744,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 0, 464, 24, 568, 1048, 2760,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 448, 224, 576, 296, 2072, 1016,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 304, 304, 432, 392, 1928, 1112,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 328, 224, 432, 296, 1928, 1016,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 448, 328, 576, 392, 2072, 1112,
|
||||
CND_0, 0, 0 },
|
||||
#ifdef DEMO_JP
|
||||
{ WORLD_EVENT_TYPE_7, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 40, 408, 160, 488, 1160, 2648,
|
||||
CND_1, LOCAL_BANK_2, URO_19_H0 }, // same as USA
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_7, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 40, 408, 160, 488, 1160, 2648,
|
||||
CND_0, 0, 0 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_7, 1, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 408, 376, 528, 456, 3496, 2600, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 2, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 632, 232, 752, 312, 2248, 1032,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_7, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 768, 472, 928, 552, 2424, 3032,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_RUINS, ROOM_RUINS_TEKTITES, 0, 0, 200, 88, 440, 2936, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 496, 848, 536, 968, 3512, 3128, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 16, 24, 88, 24, 1768, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 48, 424, 152, 520, 3368, 1720, CND_0, 0, 0 },
|
||||
|
||||
#ifdef DEMO_JP
|
||||
// mostly same as USA
|
||||
{ WORLD_EVENT_TYPE_9, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 0, 0, 56, 40, 2552, 232, CND_1, LOCAL_BANK_4,
|
||||
SUIGEN_DOUKUTU_09_H00 },
|
||||
{ WORLD_EVENT_TYPE_9, 1, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 112, 304, 240, 392, 1736, 1912, CND_0, 0,
|
||||
0 }, // same as EU
|
||||
{ WORLD_EVENT_TYPE_25, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 768, 0, 920, 56, 920, 1752, CND_2, 0,
|
||||
ITEM_SKILL_FAST_SPIN },
|
||||
{ WORLD_EVENT_TYPE_25, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 80, 400, 200, 488, 1688, 1208,
|
||||
CND_2, 0, ITEM_SKILL_LONG_SPIN },
|
||||
{ WORLD_EVENT_TYPE_25, 2, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 128, 752, 248, 840, 2744, 1032, CND_2, 0,
|
||||
ITEM_SKILL_FAST_SPLIT },
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_MT_CRENEL, ROOM_MT_CRENEL_TOP, 0, 0, 152, 40, 152, 40, CND_5, LOCAL_BANK_1,
|
||||
BEANDEMO_00 }, // uses different flags due to CND_5
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_BEANSTALK, 432, 0, 552, 88, 3528, 1096, CND_6,
|
||||
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_7, LOCAL_BANK_1,
|
||||
BEANDEMO_02 }, // uses different flags due to CND_7
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
|
||||
2760, CND_8, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
|
||||
CND_9, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_9, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 0, 0, 56, 40, 2552, 232, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_9, 1, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 112, 304, 240, 392, 1736, 1912, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_25, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 768, 0, 920, 56, 920, 1752, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_25, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 80, 400, 200, 488, 1688, 1208,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_25, 2, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 128, 752, 248, 840, 2744, 1032, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_MT_CRENEL, ROOM_MT_CRENEL_TOP, 0, 0, 152, 40, 152, 40, CND_0, LOCAL_BANK_1,
|
||||
BEANDEMO_00 }, // uses different flags due to CND_5
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_BEANSTALK, 432, 0, 552, 88, 3528, 1096, CND_0,
|
||||
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_0, LOCAL_BANK_1,
|
||||
BEANDEMO_02 }, // uses different flags due to CND_7
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
|
||||
2760, CND_0, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
|
||||
CND_0, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_11, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 48, 88, 152, 88, 1832, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_11, 1, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 160, 40, 232, 40, 1912, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_11, 2, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 96, 664, 200, 776, 200, 2456, CND_0, 0, 0 },
|
||||
#ifdef DEMO_JP
|
||||
// same as USA
|
||||
{ WORLD_EVENT_TYPE_12, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 624, 784, 760, 952, 2184, 2360, CND_1,
|
||||
LOCAL_BANK_2, 208 }, // TODO
|
||||
{ WORLD_EVENT_TYPE_13, 0, AREA_HOUSE_INTERIORS_4, ROOM_HOUSE_INTERIORS_4_CARPENTER, 0, 32, 120, 112, 1560, 1944,
|
||||
CND_1, LOCAL_BANK_2, 207 }, // TODO
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_12, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 624, 784, 760, 952, 2184, 2360, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_13, 0, AREA_HOUSE_INTERIORS_4, ROOM_HOUSE_INTERIORS_4_CARPENTER, 0, 32, 120, 112, 1560, 1944,
|
||||
CND_0, 0, 0 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_14, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 768, 736, 904, 824, 2392, 2344, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_15, 0, AREA_ROYAL_VALLEY, ROOM_ROYAL_VALLEY_MAIN, 240, 96, 392, 136, 1400, 360, CND_0,
|
||||
LOCAL_BANK_1, HAKA_BOSEKI_00 }, // uses different flags due to CND_10
|
||||
{ WORLD_EVENT_TYPE_16, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 768, 160, 736, 232, 2040, 2040, CND_0, 0, 0 },
|
||||
|
||||
{ WORLD_EVENT_TYPE_17, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 0, 800, 136, 856, 2624, 2056, CND_0,
|
||||
0, 0 },
|
||||
{ WORLD_EVENT_TYPE_18, 1, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 464, 120, 440, 2632, 2056, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_18, 2, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 288, 120, 280, 2632, 2056, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_18, 3, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 288, 120, 280, 2632, 2056, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_18, 4, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 144, 120, 136, 2632, 2056, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_18, 5, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 144, 120, 136, 2632, 2056, CND_0, 0, 0 },
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 112, 160, 264, 264, 1272, 1432,
|
||||
CND_1, LOCAL_BANK_4, KS_B01 },
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 352, 400, 488, 520, 3704, 1688, CND_1, LOCAL_BANK_3,
|
||||
MOGURA_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_4, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 160, 576, 232, 664, 2728, 824, CND_1, LOCAL_BANK_3,
|
||||
MOGURA_41_T3 },
|
||||
{ WORLD_EVENT_TYPE_5, 132, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 656, 0, 776, 72, 2264, 264, CND_1,
|
||||
LOCAL_BANK_3, IZUMIGARE_00_H00 },
|
||||
{ WORLD_EVENT_TYPE_5, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 384, 440, 504, 520, 3000, 1720, CND_1,
|
||||
LOCAL_BANK_4, SOUGEN_DOUKUTU_0F_T00 },
|
||||
{ WORLD_EVENT_TYPE_5, 2, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 0, 200, 88, 280, 1576, 2760,
|
||||
CND_1, LOCAL_BANK_4, KS_C37 },
|
||||
{ WORLD_EVENT_TYPE_5, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS, 0, 600, 56, 680, 1064, 1880, CND_1,
|
||||
LOCAL_BANK_4, KS_C12 },
|
||||
{ WORLD_EVENT_TYPE_5, 128, AREA_CASTLE_GARDEN, ROOM_CASTLE_GARDEN_MAIN, 128, 0, 232, 72, 1720, 264, CND_1,
|
||||
LOCAL_BANK_3, KS_C02 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 112, 224, 216, 296, 1240, 2488,
|
||||
CND_1, LOCAL_BANK_1, SOUGEN_08_T00 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 56, 32, 168, 88, 1192, 2280,
|
||||
CND_1, LOCAL_BANK_1, KS_C21 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 240, 448, 392, 552, 1416, 2744,
|
||||
CND_1, LOCAL_BANK_1, KS_C25 },
|
||||
{ WORLD_EVENT_TYPE_6, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 0, 464, 24, 568, 1048, 2760,
|
||||
CND_1, LOCAL_BANK_2, MHOUSE08_00 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 448, 224, 576, 296, 2072, 1016,
|
||||
CND_1, LOCAL_BANK_4, SOUGEN_DOUKUTU_00_T1 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 304, 304, 432, 392, 1928, 1112,
|
||||
CND_1, LOCAL_BANK_4, SOUGEN_DOUKUTU_00_T2 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 328, 224, 432, 296, 1928, 1016,
|
||||
CND_1, LOCAL_BANK_4, SOUGEN_DOUKUTU_00_T0 },
|
||||
{ WORLD_EVENT_TYPE_7, 128, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 448, 328, 576, 392, 2072, 1112,
|
||||
CND_1, LOCAL_BANK_4, SOUGEN_DOUKUTU_00_T3 },
|
||||
{ WORLD_EVENT_TYPE_7, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_NORTH, 40, 408, 160, 488, 1160, 2648,
|
||||
CND_1, LOCAL_BANK_2, URO_19_H0 },
|
||||
{ WORLD_EVENT_TYPE_7, 1, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 408, 376, 528, 456, 3496, 2600, CND_1,
|
||||
LOCAL_BANK_4, KS_B06 },
|
||||
{ WORLD_EVENT_TYPE_7, 2, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 632, 232, 752, 312, 2248, 1032,
|
||||
CND_1, LOCAL_BANK_4, KS_B12 },
|
||||
{ WORLD_EVENT_TYPE_7, 3, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 768, 472, 928, 552, 2424, 3032,
|
||||
CND_1, LOCAL_BANK_2, URO_12_H0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_RUINS, ROOM_RUINS_TEKTITES, 0, 0, 200, 88, 440, 2936, CND_1, LOCAL_BANK_2,
|
||||
KOBITOANA_0C_T0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_MINISH_WOODS, ROOM_MINISH_WOODS_MAIN, 496, 848, 536, 968, 3512, 3128, CND_1,
|
||||
LOCAL_BANK_2, KOBITOANA_08_T0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 16, 24, 88, 24, 1768, CND_1, LOCAL_BANK_2,
|
||||
KOBITOANA_0D_T0 },
|
||||
{ WORLD_EVENT_TYPE_8, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_MAIN, 48, 424, 152, 520, 3368, 1720, CND_1, LOCAL_BANK_2,
|
||||
KS_A09 },
|
||||
{ WORLD_EVENT_TYPE_9, 0, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 0, 0, 56, 40, 2552, 232, CND_1, LOCAL_BANK_4,
|
||||
SUIGEN_DOUKUTU_09_H00 },
|
||||
{ WORLD_EVENT_TYPE_9, 1, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 112, 304, 240, 392, 1736, 1912, CND_1,
|
||||
LOCAL_BANK_4, SOUGEN_DOUKUTU_0B_T0 },
|
||||
{ WORLD_EVENT_TYPE_25, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 768, 0, 920, 56, 920, 1752, CND_2, 0,
|
||||
ITEM_SKILL_FAST_SPIN },
|
||||
{ WORLD_EVENT_TYPE_25, 1, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD, 80, 400, 200, 488, 1688, 1208,
|
||||
CND_2, 0, ITEM_SKILL_LONG_SPIN },
|
||||
{ WORLD_EVENT_TYPE_25, 2, AREA_VEIL_FALLS, ROOM_VEIL_FALLS_MAIN, 128, 752, 248, 840, 2744, 1032, CND_2, 0,
|
||||
ITEM_SKILL_FAST_SPLIT },
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_MT_CRENEL, ROOM_MT_CRENEL_TOP, 0, 0, 152, 40, 152, 40, CND_5, LOCAL_BANK_1,
|
||||
BEANDEMO_00 }, // uses different flags due to CND_5
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_LAKE_HYLIA, ROOM_LAKE_HYLIA_BEANSTALK, 432, 0, 552, 88, 3528, 1096, CND_6,
|
||||
LOCAL_BANK_1, BEANDEMO_01 }, // uses different flags due to CND_6
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_RUINS, ROOM_RUINS_BEANSTALK, 0, 0, 72, 72, 312, 2712, CND_7, LOCAL_BANK_1,
|
||||
BEANDEMO_02 }, // uses different flags due to CND_7
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER, 0, 0, 72, 56, 2568,
|
||||
2760, CND_8, LOCAL_BANK_1, BEANDEMO_03 }, // uses different flags due to CND_8
|
||||
{ WORLD_EVENT_TYPE_BEANSTALK, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH, 0, 0, 56, 56, 1064, 3016,
|
||||
CND_9, LOCAL_BANK_1, BEANDEMO_04 }, // uses different flags due to CND_9
|
||||
{ WORLD_EVENT_TYPE_11, 0, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 48, 88, 152, 88, 1832, CND_1, LOCAL_BANK_2,
|
||||
KOBITOANA_09_T0 },
|
||||
{ WORLD_EVENT_TYPE_11, 1, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 0, 160, 40, 232, 40, 1912, CND_1, LOCAL_BANK_2,
|
||||
KOBITOANA_0A_T0 },
|
||||
{ WORLD_EVENT_TYPE_11, 2, AREA_CASTOR_WILDS, ROOM_CASTOR_WILDS_MAIN, 96, 664, 200, 776, 200, 2456, CND_1,
|
||||
LOCAL_BANK_2, KOBITOANA_0B_T0 },
|
||||
{ WORLD_EVENT_TYPE_12, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 624, 784, 760, 952, 2184, 2360, CND_1,
|
||||
LOCAL_BANK_2, KS_A18 },
|
||||
{ WORLD_EVENT_TYPE_13, 0, AREA_HOUSE_INTERIORS_4, ROOM_HOUSE_INTERIORS_4_CARPENTER, 0, 32, 120, 112, 1560, 1944,
|
||||
CND_1, LOCAL_BANK_2, KS_A02 },
|
||||
{ WORLD_EVENT_TYPE_14, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 768, 736, 904, 824, 2392, 2344, CND_1,
|
||||
LOCAL_BANK_2, KS_B07 },
|
||||
{ WORLD_EVENT_TYPE_15, 0, AREA_ROYAL_VALLEY, ROOM_ROYAL_VALLEY_MAIN, 240, 96, 392, 136, 1400, 360, CND_10,
|
||||
LOCAL_BANK_1, HAKA_BOSEKI_00 }, // uses different flags due to CND_10
|
||||
{ WORLD_EVENT_TYPE_16, 0, AREA_HYRULE_TOWN, ROOM_HYRULE_TOWN_MAIN, 768, 160, 736, 232, 2040, 2040, CND_1,
|
||||
LOCAL_BANK_1, KS_B18 },
|
||||
{ WORLD_EVENT_TYPE_17, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_LON_LON_RANCH, 0, 800, 136, 856, 2624, 2056, CND_1,
|
||||
LOCAL_BANK_4, GORON_DOUKUTU_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_18, 1, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 464, 120, 440, 2632, 2056, CND_1, LOCAL_BANK_4,
|
||||
GORON_DOUKUTU_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_18, 2, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 288, 120, 280, 2632, 2056, CND_1, LOCAL_BANK_4,
|
||||
GORON_DOUKUTU_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_18, 3, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 288, 120, 280, 2632, 2056, CND_1, LOCAL_BANK_4,
|
||||
GORON_DOUKUTU_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_18, 4, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 144, 120, 136, 2632, 2056, CND_1, LOCAL_BANK_4,
|
||||
GORON_DOUKUTU_01_T0 },
|
||||
{ WORLD_EVENT_TYPE_18, 5, AREA_GORON_CAVE, ROOM_GORON_CAVE_MAIN, 0, 144, 120, 136, 2632, 2056, CND_1, LOCAL_BANK_4,
|
||||
GORON_DOUKUTU_01_T0 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_19, 0, AREA_VEIL_FALLS_TOP, ROOM_VEIL_FALLS_TOP_0, 192, 0, 320, 104, 0, 0, CND_0, 0, 0 },
|
||||
#if defined(EU) || defined(JP) || defined(DEMO_JP)
|
||||
{ WORLD_EVENT_TYPE_20, 0, AREA_TREE_INTERIORS, ROOM_TREE_INTERIORS_WITCH_HUT, 0, 0, 120, 56, 3656, 2248, CND_0, 0,
|
||||
0 },
|
||||
{ WORLD_EVENT_TYPE_21, 0, AREA_HOUSE_INTERIORS_3, ROOM_HOUSE_INTERIORS_3_BORLOV_ENTRANCE, 0, 0, 120, 72, 2152, 2152,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_22, 0, AREA_HOUSE_INTERIORS_1, ROOM_HOUSE_INTERIORS_1_POST_OFFICE, 0, 0, 72, 56, 1560, 1704,
|
||||
CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_23, 0, AREA_MINISH_HOUSE_INTERIORS, ROOM_MINISH_HOUSE_INTERIORS_MINISH_WOODS_BOMB, 0, 0, 120, 88,
|
||||
3288, 2952, CND_0, 0, 0 },
|
||||
#ifdef DEMO_JP
|
||||
{ WORLD_EVENT_TYPE_24, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 464, 176, 584, 264, 2072, 2744,
|
||||
CND_1, LOCAL_BANK_1, 252 }, // TODO
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_24, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 464, 176, 584, 264, 2072, 2744,
|
||||
CND_0, 0, 0 },
|
||||
#endif
|
||||
#else
|
||||
{ WORLD_EVENT_TYPE_20, 0, AREA_TREE_INTERIORS, ROOM_TREE_INTERIORS_WITCH_HUT, 0, 0, 120, 56, 3656, 2248, CND_2, 0,
|
||||
ITEM_BOTTLE_RED_POTION },
|
||||
{ WORLD_EVENT_TYPE_21, 0, AREA_HOUSE_INTERIORS_3, ROOM_HOUSE_INTERIORS_3_BORLOV_ENTRANCE, 0, 0, 120, 72, 2152, 2152,
|
||||
CND_1, LOCAL_BANK_2, KS_B16 },
|
||||
{ WORLD_EVENT_TYPE_22, 0, AREA_HOUSE_INTERIORS_1, ROOM_HOUSE_INTERIORS_1_POST_OFFICE, 0, 0, 72, 56, 1560, 1704,
|
||||
CND_1, LOCAL_BANK_2, BILL01_TESSIN_8 },
|
||||
{ WORLD_EVENT_TYPE_23, 0, AREA_MINISH_HOUSE_INTERIORS, ROOM_MINISH_HOUSE_INTERIORS_MINISH_WOODS_BOMB, 0, 0, 120, 88,
|
||||
3288, 2952, CND_1, LOCAL_BANK_2, KHOUSE26_REMOCON },
|
||||
{ WORLD_EVENT_TYPE_24, 0, AREA_HYRULE_FIELD, ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD, 464, 176, 584, 264, 2072, 2744,
|
||||
CND_1, LOCAL_BANK_1, KS_A06 },
|
||||
#endif
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
{ WORLD_EVENT_TYPE_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CND_0, 0, 0 },
|
||||
};
|
||||
|
||||
// kinstone data
|
||||
|
||||
// const TileEntity gUnk_080FEAC8[] = {
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 180, 30, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 166, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 167, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 168, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 181, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 169, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 170, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 171, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 172, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 182, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 183, 101, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 184, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 185, 92, 111, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 186, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 187, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 188, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 189, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 190, 92, 111, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 191, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 192, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 193, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 194, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 195, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 196, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 197, 63, 200, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// };
|
||||
|
||||
// const TileEntity gUnk_080FEAC8[] = {
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 3,178, 30, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 166, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 167, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 168, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 179, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 169, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 170, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 171, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 172, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 251, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 180, 101, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 181, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 182, 92, 111, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 183, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 184, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 185, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 186, 92, 112, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 187, 92, 111, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 188, 92, 110, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 189, 63, 200, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 190, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 191, 92, 114, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 192, 92, 113, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 193, 89, 0, 0x0, 0, 0 },
|
||||
// { SMALL_CHEST, 194, 63, 200, 0x0, 0, 0 },
|
||||
// { NONE, 0, 0, 0, 0x0, 0, 0 },
|
||||
// };
|
||||
extern TileEntity gUnk_080FEAC8[]; // TODO differs jp, demo_jp, eu
|
||||
extern EntityData gUnk_080FEBE8[];
|
||||
extern EntityData gUnk_080FEC28[];
|
||||
extern EntityData gUnk_080FECC8[];
|
||||
extern const EntityData gUnk_080FED18[];
|
||||
extern EntityData gUnk_080FED58[];
|
||||
// TODO need to find out what gRoomVars.field_0x8c[ptr->entity_idx] is.
|
||||
extern const void* gUnk_080FED98[];
|
||||
// gUnk_080FEDA4
|
||||
// gUnk_080FEDDA
|
||||
// gUnk_080FEDF8
|
||||
extern const EntityData gUnk_080FEE18[];
|
||||
extern const EntityData gUnk_080FEE38[];
|
||||
extern const EntityData gUnk_080FEE48[];
|
||||
extern const EntityData gUnk_080FEE58[]; // TODO differs jp, demo_jp, eu
|
||||
extern EntityData gUnk_080FEE78[];
|
||||
@@ -0,0 +1,240 @@
|
||||
/**
|
||||
* @file gameOverTask.c
|
||||
* @ingroup Tasks
|
||||
*
|
||||
* @brief Game Over Task
|
||||
*/
|
||||
#include "common.h"
|
||||
#include "fade.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "save.h"
|
||||
#include "sound.h"
|
||||
#include "subtask.h"
|
||||
|
||||
typedef void(GameOverState)(void);
|
||||
|
||||
static GameOverState GameOver_Init;
|
||||
static GameOverState GameOver_FadeIn;
|
||||
static GameOverState GameOver_TextMove;
|
||||
static GameOverState GameOver_Update;
|
||||
static GameOverState GameOver_Exit;
|
||||
|
||||
void DrawGameOverText(void);
|
||||
|
||||
void GameOverTask(void) {
|
||||
static GameOverState* const sStates[] = {
|
||||
GameOver_Init, GameOver_FadeIn, GameOver_TextMove, GameOver_Update, GameOver_Exit,
|
||||
};
|
||||
|
||||
sStates[gMain.state]();
|
||||
if (gMain.state != GAMETASK_TRANSITION) {
|
||||
FlushSprites();
|
||||
DrawGameOverText();
|
||||
CopyOAM();
|
||||
}
|
||||
}
|
||||
void switch_state(u32 idx) {
|
||||
gMain.state = idx;
|
||||
SetMenuType(0);
|
||||
}
|
||||
void GameOver_Init(void) {
|
||||
if (gFadeControl.active)
|
||||
return;
|
||||
sub_08052010();
|
||||
gGenericMenu.unk10.a[0] = 80;
|
||||
gMenu.transitionTimer = 60;
|
||||
gSave.stats.health = 24;
|
||||
gMain.field_0x5 = 60;
|
||||
SoundReq(BGM_GAMEOVER);
|
||||
SetFadeInverted(4);
|
||||
gFadeControl.mask = 0xFFFF0001;
|
||||
switch_state(GAMETASK_INIT);
|
||||
}
|
||||
void GameOver_FadeIn(void) {
|
||||
if (gFadeControl.active)
|
||||
return;
|
||||
|
||||
if (gMain.field_0x5 == 0) {
|
||||
if (gGenericMenu.unk10.a[0] >= 38) {
|
||||
gGenericMenu.unk10.a[0]--;
|
||||
} else {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
switch_state(GAMETASK_MAIN);
|
||||
#if defined(DEMO_USA) || defined(DEMO_JP)
|
||||
SoundReq(SONG_VOL_FADE_OUT);
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 4);
|
||||
#else
|
||||
SetPopupState(0, 0);
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG1_ON | DISPCNT_BG2_ON;
|
||||
gFadeControl.mask = 0x0000ffff;
|
||||
SetFade(FADE_INSTANT, 16);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gMain.field_0x5--;
|
||||
}
|
||||
}
|
||||
void GameOver_TextMove(void) {
|
||||
#if defined(DEMO_USA) || defined(DEMO_JP)
|
||||
if (gFadeControl.active == 0) {
|
||||
DoSoftReset();
|
||||
}
|
||||
#else
|
||||
s32 temp3;
|
||||
u32 temp2;
|
||||
|
||||
if (gFadeControl.active)
|
||||
return;
|
||||
|
||||
switch (gMenu.menuType) {
|
||||
case 0:
|
||||
gMenu.transitionTimer = 30;
|
||||
gMenu.field_0x3 = 0;
|
||||
SetMenuType(1);
|
||||
SetPopupState(0, 0);
|
||||
gFadeControl.mask = 0xffffffff;
|
||||
return;
|
||||
case 1:
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
u32 temp = gMenu.field_0x3;
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_UP:
|
||||
temp = 0;
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
temp = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
if (gMenu.field_0x3 != 0) {
|
||||
temp2 = 4;
|
||||
} else {
|
||||
CreateDialogBox(8, 0);
|
||||
temp2 = 2;
|
||||
}
|
||||
gMenu.transitionTimer = 60;
|
||||
SetMenuType(temp2);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
break;
|
||||
}
|
||||
if (gMenu.field_0x3 != temp) {
|
||||
gMenu.field_0x3 = temp;
|
||||
SetPopupState(0, temp);
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
gMenu.transitionTimer--;
|
||||
return;
|
||||
case 2:
|
||||
temp3 = HandleSave(0);
|
||||
gMenu.field_0x0 = temp3;
|
||||
switch (temp3) {
|
||||
case 1:
|
||||
SetMenuType(4);
|
||||
break;
|
||||
case -1:
|
||||
gMenu.transitionTimer = 60;
|
||||
CreateDialogBox(9, 0);
|
||||
SetMenuType(3);
|
||||
break;
|
||||
}
|
||||
return;
|
||||
case 3:
|
||||
if (gMenu.transitionTimer != 0) {
|
||||
gMenu.transitionTimer--;
|
||||
} else if (gInput.newKeys & (A_BUTTON | B_BUTTON | START_BUTTON)) {
|
||||
SetMenuType(0);
|
||||
}
|
||||
return;
|
||||
case 4:
|
||||
default:
|
||||
gScreen.lcd.displayControl &= ~DISPCNT_BG1_ON;
|
||||
sub_08050384();
|
||||
switch_state(GAMETASK_EXIT);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
void GameOver_Update(void) {
|
||||
switch (gMenu.menuType) {
|
||||
case 0:
|
||||
gMenu.transitionTimer = 30;
|
||||
gMenu.field_0x3 = 0;
|
||||
SetMenuType(1);
|
||||
SetPopupState(1, 0);
|
||||
return;
|
||||
case 1:
|
||||
gScreen.lcd.displayControl |= DISPCNT_BG1_ON;
|
||||
if (gMenu.transitionTimer != 0) {
|
||||
gMenu.transitionTimer--;
|
||||
return;
|
||||
} else {
|
||||
u32 temp = gMenu.field_0x3;
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_UP:
|
||||
temp = 0;
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
temp = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
SetMenuType(2);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
if (temp == 0) {
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
} else {
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (gMenu.field_0x3 != temp) {
|
||||
gMenu.field_0x3 = temp;
|
||||
SetPopupState(1, temp);
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
}
|
||||
return;
|
||||
case 2:
|
||||
default:
|
||||
if (gFadeControl.active == 0) {
|
||||
if (gMenu.field_0x3 == 0) {
|
||||
SetTask(TASK_GAME);
|
||||
} else {
|
||||
DoSoftReset();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Unused, since task is set above
|
||||
// if we got here, it would be a softlock
|
||||
void GameOver_Exit(void) {
|
||||
}
|
||||
|
||||
void DrawGameOverText(void) {
|
||||
static const u8 sOffsets[] = {
|
||||
48, 68, 88, 108, 137, 156, 174, 192,
|
||||
};
|
||||
|
||||
u32 i;
|
||||
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0x8600;
|
||||
gOamCmd.y = gGenericMenu.unk10.a[0];
|
||||
for (i = 0; i < 8; ++i) {
|
||||
gOamCmd.x = sOffsets[i];
|
||||
#ifdef EU
|
||||
DrawDirect(0x1fc, i);
|
||||
#else
|
||||
DrawDirect(0x1fd, i);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+945
@@ -0,0 +1,945 @@
|
||||
/**
|
||||
* @file gameUtils.c
|
||||
*
|
||||
* @brief Game Utils
|
||||
*/
|
||||
#include "backgroundAnimations.h"
|
||||
#include "enemy.h"
|
||||
#include "entity.h"
|
||||
#include "fade.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "item.h"
|
||||
#include "itemMetaData.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "npc.h"
|
||||
#include "object.h"
|
||||
#include "save.h"
|
||||
#include "screen.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "ui.h"
|
||||
|
||||
u32 StairsAreValid(void);
|
||||
void ClearFlagArray(const u16*);
|
||||
void DummyHandler(u32* a1);
|
||||
void sub_08053434(u32* a1);
|
||||
void sub_080534E4(u32* a1);
|
||||
void InitAllRoomResInfo(void);
|
||||
void InitRoomResInfo(RoomResInfo* info, RoomHeader* hdr, u32 area, u32 room);
|
||||
void sub_080532E4(void);
|
||||
void ResetTimerFlags(void);
|
||||
|
||||
extern void** gAreaTilesets[];
|
||||
extern void** gAreaRoomMaps[];
|
||||
extern void* gAreaMetatiles[];
|
||||
extern void** gAreaTable[];
|
||||
|
||||
typedef struct {
|
||||
u8 dest_off[8];
|
||||
u8 _8;
|
||||
u8 right_align;
|
||||
u16 _a;
|
||||
} PopupOption;
|
||||
|
||||
extern u8 gUnk_0200AF14;
|
||||
|
||||
void SetPopupState(u32 type, u32 choice_idx) {
|
||||
static const Font sDefaultFont = {
|
||||
.dest = gBG1Buffer,
|
||||
.gfx_dest = (u16*)0x06006000,
|
||||
.buffer_loc = gTextGfxBuffer,
|
||||
._c = 0,
|
||||
.gfx_src = 0xD300,
|
||||
.width = 0xE0,
|
||||
.right_align = 0,
|
||||
.sm_border = 0,
|
||||
.unused = 0,
|
||||
.draw_border = 0,
|
||||
.border_type = 0,
|
||||
.fill_type = 6,
|
||||
.charColor = 4,
|
||||
._16 = 1,
|
||||
.stylized = 0,
|
||||
};
|
||||
static const PopupOption sPopupOptions[] = {
|
||||
{ { 11, 11, 11, 10, 11, 10, 10, 0 }, 8, 0, 16 },
|
||||
{ { 10, 11, 11, 9, 11, 9, 9, 0 }, 8, 0, 17 },
|
||||
{ { 15, 15, 15, 15, 15, 15, 15, 0 }, 5, 1, 13 },
|
||||
};
|
||||
|
||||
Font font;
|
||||
const PopupOption* opt;
|
||||
u32 fakematch;
|
||||
|
||||
MemClear(gBG1Buffer, sizeof gBG1Buffer);
|
||||
gUnk_020227E8[0]._0.WORD = 0xf;
|
||||
gUnk_020227E8[1]._0.WORD = 0xf;
|
||||
gUnk_020227E8[2]._0.WORD = 0xf;
|
||||
gUnk_020227E8[3]._0.WORD = 0xf;
|
||||
*(&gUnk_020227E8[choice_idx]._0.BYTES.byte0 + 1) = fakematch = 1;
|
||||
|
||||
MemCopy(&sDefaultFont, &font, sizeof font);
|
||||
opt = &sPopupOptions[type];
|
||||
font.dest = sDefaultFont.dest + (opt->dest_off[gSaveHeader->language] + opt->_8 * 32);
|
||||
font.right_align = opt->right_align;
|
||||
ShowTextBox(opt->_a, &font);
|
||||
gScreen.bg1.updated = fakematch;
|
||||
}
|
||||
|
||||
void InitializePlayer(void) {
|
||||
static const u8 sPlayerSpawnStates[] = {
|
||||
[PL_SPAWN_DEFAULT] = PLAYER_INIT,
|
||||
[PL_SPAWN_MINISH] = PLAYER_MINISH,
|
||||
[PL_SPAWN_DROP] = PLAYER_INIT,
|
||||
[PL_SPAWN_WALKING] = PLAYER_ROOMTRANSITION,
|
||||
[PL_SPAWN_STEP_IN] = PLAYER_ROOM_EXIT,
|
||||
[PL_SPAWN_SLEEPING] = PLAYER_SLEEP,
|
||||
[PL_SPAWN_DROP_MINISH] = PLAYER_MINISH,
|
||||
[PL_SPAWN_STAIRS_ASCEND] = PLAYER_USEENTRANCE,
|
||||
[PL_SPAWN_STAIRS_DESCEND] = PLAYER_USEENTRANCE,
|
||||
[PL_SPAWN_9] = PLAYER_MINISH,
|
||||
[PL_SPAWN_PARACHUTE_FORWARD] = PLAYER_WARP,
|
||||
[PL_SPAWN_PARACHUTE_UP] = PLAYER_WARP,
|
||||
[PL_SPAWN_FAST_TRAVEL] = PLAYER_WARP,
|
||||
};
|
||||
|
||||
Entity* pl;
|
||||
|
||||
sub_080784C8();
|
||||
MemClear(&gActiveItems, sizeof(gActiveItems));
|
||||
MemClear(&gPlayerState, sizeof(gPlayerState));
|
||||
MemFill32(0xffffffff, &gPlayerState.path_memory, sizeof(gPlayerState.path_memory));
|
||||
MemClear(&gPlayerEntity, sizeof(gPlayerEntity));
|
||||
|
||||
pl = &gPlayerEntity;
|
||||
|
||||
gRoomControls.camera_target = pl;
|
||||
gPlayerState.queued_action = sPlayerSpawnStates[gRoomTransition.player_status.spawn_type];
|
||||
if (!CheckGlobalFlag(EZERO_1ST)) {
|
||||
gPlayerState.flags |= PL_NO_CAP;
|
||||
}
|
||||
switch (gRoomTransition.player_status.spawn_type) {
|
||||
case PL_SPAWN_DROP:
|
||||
case PL_SPAWN_DROP_MINISH:
|
||||
pl->z.HALF.HI = -0xc0;
|
||||
break;
|
||||
case PL_SPAWN_STEP_IN:
|
||||
gPlayerState.field_0x38 = 16;
|
||||
pl->direction = Direction8FromAnimationState(gRoomTransition.player_status.start_anim);
|
||||
case PL_SPAWN_WALKING:
|
||||
pl->speed = 224;
|
||||
break;
|
||||
case PL_SPAWN_STAIRS_ASCEND:
|
||||
case PL_SPAWN_STAIRS_DESCEND:
|
||||
gPlayerState.field_0x38 = 1;
|
||||
gPlayerState.field_0x39 = gRoomTransition.player_status.spawn_type;
|
||||
break;
|
||||
case PL_SPAWN_PARACHUTE_FORWARD:
|
||||
gPlayerState.field_0x38 = 1;
|
||||
break;
|
||||
case PL_SPAWN_PARACHUTE_UP:
|
||||
gPlayerState.field_0x38 = 3;
|
||||
break;
|
||||
case PL_SPAWN_FAST_TRAVEL:
|
||||
gPlayerState.field_0x38 = 4;
|
||||
}
|
||||
|
||||
pl->kind = PLAYER;
|
||||
pl->flags |= ENT_COLLIDE | ENT_PERSIST;
|
||||
pl->spritePriority.b0 = 4;
|
||||
pl->health = gSave.stats.health;
|
||||
pl->x.HALF.HI = gRoomTransition.player_status.start_pos_x;
|
||||
pl->y.HALF.HI = gRoomTransition.player_status.start_pos_y;
|
||||
pl->animationState = gRoomTransition.player_status.start_anim;
|
||||
pl->collisionLayer = gRoomTransition.player_status.layer;
|
||||
UpdateSpriteForCollisionLayer(pl);
|
||||
AppendEntityToList(pl, 1);
|
||||
RegisterPlayerHitbox();
|
||||
}
|
||||
|
||||
bool32 AreaIsOverworld(void) {
|
||||
#ifdef EU
|
||||
return gArea.areaMetadata == 0x01;
|
||||
#else
|
||||
return gArea.areaMetadata == 0x81;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool32 CheckAreaOverworld(u32 area) {
|
||||
#if EU
|
||||
return gAreaMetadata[area].flags == 0x01;
|
||||
#else
|
||||
return gAreaMetadata[area].flags == 0x81;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef EU
|
||||
bool32 AreaAllowsWarp(void) {
|
||||
return (gArea.areaMetadata >> 7) & 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool32 AreaIsDungeon(void) {
|
||||
return (gArea.areaMetadata >> 2) & 1;
|
||||
}
|
||||
|
||||
bool32 AreaHasEnemies(void) {
|
||||
return (gArea.areaMetadata >> 4) & 1;
|
||||
}
|
||||
|
||||
bool32 AreaHasNoEnemies(void) {
|
||||
return (gArea.areaMetadata >> 6) & 1;
|
||||
}
|
||||
|
||||
bool32 AreaHasMap(void) {
|
||||
return (gArea.areaMetadata >> 3) & 1;
|
||||
}
|
||||
|
||||
s32 ModHealth(s32 delta) {
|
||||
s32 newHealth;
|
||||
Stats* stats = &gSave.stats;
|
||||
|
||||
newHealth = stats->health + delta;
|
||||
if (newHealth < 0) {
|
||||
newHealth = 0;
|
||||
}
|
||||
if (stats->maxHealth < newHealth) {
|
||||
newHealth = (u32)stats->maxHealth;
|
||||
}
|
||||
stats->health = newHealth;
|
||||
gPlayerEntity.health = newHealth;
|
||||
return newHealth;
|
||||
}
|
||||
|
||||
void ModRupees(s32 delta) {
|
||||
s32 newRupeeCount;
|
||||
Stats* s = &gSave.stats;
|
||||
|
||||
newRupeeCount = s->rupees + delta;
|
||||
if (newRupeeCount < 0) {
|
||||
newRupeeCount = 0;
|
||||
} else {
|
||||
if (newRupeeCount > (u16)gWalletSizes[s->walletType * 2]) {
|
||||
newRupeeCount = (u16)gWalletSizes[s->walletType * 2];
|
||||
}
|
||||
}
|
||||
s->rupees = newRupeeCount;
|
||||
}
|
||||
|
||||
void ModDungeonKeys(s32 keys) {
|
||||
if (AreaHasKeys()) {
|
||||
u8* p = &gSave.dungeonKeys[gArea.dungeon_idx];
|
||||
if (*p + keys < 0)
|
||||
*p = 0;
|
||||
else
|
||||
*p += keys;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 AreaHasKeys(void) {
|
||||
return (gArea.areaMetadata >> 1) & 1;
|
||||
}
|
||||
|
||||
bool32 HasDungeonMap(void) {
|
||||
u32 tmp;
|
||||
|
||||
if (AreaHasKeys())
|
||||
tmp = gSave.dungeonKeys[gArea.dungeon_idx];
|
||||
return tmp ? 1 : 0;
|
||||
}
|
||||
|
||||
bool32 HasDungeonCompass(void) {
|
||||
u32 tmp;
|
||||
|
||||
if (AreaHasKeys())
|
||||
tmp = gSave.dungeonItems[gArea.dungeon_idx] & 4;
|
||||
return tmp ? 1 : 0;
|
||||
}
|
||||
|
||||
bool32 HasDungeonBigKey(void) {
|
||||
if (!AreaHasKeys())
|
||||
return 0;
|
||||
return (gSave.dungeonItems[gArea.dungeon_idx] >> 1) & 1;
|
||||
}
|
||||
|
||||
bool32 HasDungeonSmallKey(void) {
|
||||
u32 tmp;
|
||||
|
||||
if (!AreaHasKeys())
|
||||
return 0;
|
||||
return gSave.dungeonItems[gArea.dungeon_idx] & 1;
|
||||
}
|
||||
|
||||
extern u8 gPaletteBufferBackup[];
|
||||
void RestoreGameTask(u32 a1) {
|
||||
LoadGfxGroups();
|
||||
#ifndef EU
|
||||
CleanUpGFXSlots();
|
||||
#endif
|
||||
sub_080ADE24();
|
||||
InitUI(TRUE);
|
||||
sub_0801AE44(a1);
|
||||
MemCopy(gPaletteBufferBackup, gPaletteBuffer, 1024);
|
||||
gUsedPalettes = 0xffffffff;
|
||||
}
|
||||
|
||||
void LoadRoomBgm(void) {
|
||||
gArea.queued_bgm = gAreaMetadata[gRoomControls.area]._3;
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START)) {
|
||||
gArea.queued_bgm = BGM_FIGHT_THEME2;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef EU
|
||||
void sub_08052878(void) {
|
||||
gArea.bgm = gArea.queued_bgm;
|
||||
SoundReq(SONG_STOP_ALL);
|
||||
}
|
||||
|
||||
void sub_0805289C(void) {
|
||||
gArea.queued_bgm = gArea.bgm;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool32 CheckGameOver(void) {
|
||||
if (gRoomTransition.field_0x4[1]) {
|
||||
InitFade();
|
||||
gMain.state = GAMETASK_EXIT;
|
||||
gMain.substate = GAMEMAIN_INITROOM;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
SoundReq(SONG_STOP_BGM);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void RoomExitCallback(void) {
|
||||
if (gArea.transitionManager != NULL && gArea.onExit != NULL)
|
||||
gArea.onExit(gArea.transitionManager);
|
||||
}
|
||||
|
||||
bool32 CheckRoomExit(void) {
|
||||
if (gRoomTransition.transitioningOut && gSave.stats.health != 0 && gPlayerState.framestate != PL_STATE_DIE) {
|
||||
if (StairsAreValid()) {
|
||||
gRoomTransition.transitioningOut = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (gRoomTransition.type) {
|
||||
case TRANSITION_CUT:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT | FADE_MOSAIC, 8);
|
||||
break;
|
||||
case TRANSITION_CUT_FAST:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT | FADE_MOSAIC, 3);
|
||||
break;
|
||||
case TRANSITION_FADE_WHITE_SLOW:
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 4);
|
||||
break;
|
||||
case TRANSITION_FADE_BLACK_SLOW:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 4);
|
||||
break;
|
||||
case TRANSITION_FADE_BLACK:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 16);
|
||||
break;
|
||||
case TRANSITION_FADE_BLACK_FAST:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 256);
|
||||
break;
|
||||
case TRANSITION_7:
|
||||
case TRANSITION_FADE_WHITE_FAST:
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 256);
|
||||
break;
|
||||
default:
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 16);
|
||||
break;
|
||||
}
|
||||
RoomExitCallback();
|
||||
gMain.substate = GAMEMAIN_CHANGEAREA;
|
||||
*(&gMain.pauseInterval + 1) = 1;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 StairsAreValid(void) {
|
||||
static const u16 sStairTypes[] = { 0x91, PL_SPAWN_STAIRS_ASCEND, 0x92, PL_SPAWN_STAIRS_DESCEND,
|
||||
0x93, PL_SPAWN_STAIRS_ASCEND, 0x94, PL_SPAWN_STAIRS_DESCEND,
|
||||
0x95, PL_SPAWN_STAIRS_ASCEND, 0x96, PL_SPAWN_STAIRS_DESCEND,
|
||||
0x97, PL_SPAWN_STAIRS_ASCEND, 0x98, PL_SPAWN_STAIRS_DESCEND,
|
||||
0 };
|
||||
|
||||
const u16* i;
|
||||
u32 tgt = gRoomTransition.stairs_idx;
|
||||
|
||||
for (i = sStairTypes; i[0] != 0; i += 2) {
|
||||
if (tgt == i[0]) {
|
||||
gPlayerState.queued_action = PLAYER_USEENTRANCE;
|
||||
gPlayerState.field_0x38 = 0;
|
||||
gPlayerState.field_0x39 = i[1];
|
||||
if (!gRoomTransition.player_status.spawn_type)
|
||||
gRoomTransition.player_status.spawn_type = i[1];
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void InitParachuteRoom(void) {
|
||||
gRoomTransition.transitioningOut = 1;
|
||||
gRoomTransition.player_status.start_pos_x = (gPlayerEntity.x.HALF.HI - gRoomControls.origin_x) & 0x3F8;
|
||||
gRoomTransition.player_status.start_pos_y = (gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) & 0x3F8;
|
||||
gRoomTransition.player_status.start_anim = 4;
|
||||
gRoomTransition.player_status.spawn_type = PL_SPAWN_PARACHUTE_FORWARD;
|
||||
gRoomTransition.player_status.area_next = gRoomControls.area;
|
||||
gRoomTransition.player_status.room_next = gRoomControls.room - 1;
|
||||
}
|
||||
|
||||
void InitRoomTransition(void) {
|
||||
switch (gRoomTransition.type) {
|
||||
case TRANSITION_CUT:
|
||||
SetFade(FADE_INSTANT | FADE_MOSAIC, 8);
|
||||
break;
|
||||
case TRANSITION_CUT_FAST:
|
||||
SetFade(FADE_INSTANT | FADE_MOSAIC, 3);
|
||||
break;
|
||||
case TRANSITION_FADE_WHITE_SLOW:
|
||||
SetFade(FADE_BLACK_WHITE | FADE_INSTANT, 4);
|
||||
break;
|
||||
case TRANSITION_3:
|
||||
break;
|
||||
case TRANSITION_FADE_BLACK_FAST:
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 256);
|
||||
break;
|
||||
case TRANSITION_7:
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 256);
|
||||
break;
|
||||
case TRANSITION_FADE_BLACK:
|
||||
SetFade(FADE_INSTANT, 16);
|
||||
break;
|
||||
case TRANSITION_FADE_WHITE_FAST:
|
||||
SetFade(FADE_BLACK_WHITE | FADE_INSTANT, 8);
|
||||
break;
|
||||
default:
|
||||
SetFadeInverted(16);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 CanDispEzloMessage(void) {
|
||||
s32 tmp = PL_STATE_WALK;
|
||||
|
||||
if (!(gInput.heldKeys & SELECT_BUTTON) || gPlayerState.controlMode != CONTROL_ENABLED ||
|
||||
gPauseMenuOptions.disabled || gUnk_0200AF00.unk_1)
|
||||
return FALSE;
|
||||
|
||||
if ((gPlayerState.flags & (PL_NO_CAP | PL_CAPTURED | PL_DISABLE_ITEMS)) || (gPlayerState.framestate_last > tmp) ||
|
||||
gPlayerState.item || gPlayerEntity.field_0x7a.HWORD)
|
||||
return FALSE;
|
||||
|
||||
if ((gPlayerEntity.z.HALF.HI & 0x8000) && !gPlayerState.field_0xa)
|
||||
return FALSE;
|
||||
|
||||
GenerateAreaHint();
|
||||
ForceSetPlayerState(PL_STATE_TALKEZLO);
|
||||
SetPlayerEventPriority();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void DisplayEzloMessage(void) {
|
||||
u32 height;
|
||||
u32 idx;
|
||||
#if defined(JP) || defined(EU)
|
||||
idx = 0x10;
|
||||
#else
|
||||
idx = 0x11;
|
||||
#endif
|
||||
|
||||
if (gRoomTransition.player_status.field_0x24[idx] == 0) {
|
||||
height = gPlayerEntity.y.HALF.HI - gRoomControls.scroll_y > 96 ? 1 : 13;
|
||||
} else {
|
||||
height = gRoomTransition.player_status.field_0x24[idx];
|
||||
}
|
||||
MessageAtHeight(gRoomTransition.hint_idx, height);
|
||||
}
|
||||
|
||||
#if defined(USA) || defined(DEMO_USA) || defined(DEMO_JP)
|
||||
void CreateMiscManager(void) {
|
||||
Entity* e = NULL;
|
||||
|
||||
if (gRoomTransition.player_status.field_0x24[13])
|
||||
return;
|
||||
gRoomTransition.player_status.field_0x24[13] = 1;
|
||||
#ifndef DEMO_JP
|
||||
gRoomTransition.player_status.field_0x24[10] = gArea.locationIndex;
|
||||
#endif
|
||||
e = (Entity*)GetEmptyManager();
|
||||
if (e == NULL)
|
||||
return;
|
||||
e->kind = MANAGER;
|
||||
e->id = MISC_MANAGER;
|
||||
e->type = 15;
|
||||
AppendEntityToList(e, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
void DecreasePortalTimer(void) {
|
||||
if (gArea.portal_mode == 0)
|
||||
gArea.portal_timer = 0;
|
||||
if (gArea.portal_timer) {
|
||||
gArea.portal_timer--;
|
||||
gArea.portal_mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdatePlayerMapCoords(void) {
|
||||
if (!AreaHasNoEnemies()) {
|
||||
if (AreaIsOverworld()) {
|
||||
gRoomTransition.player_status.overworld_map_x = gPlayerEntity.x.HALF_U.HI;
|
||||
gRoomTransition.player_status.overworld_map_y = gPlayerEntity.y.HALF_U.HI;
|
||||
} else if (AreaIsDungeon()) {
|
||||
gRoomTransition.player_status.dungeon_map_x = gPlayerEntity.x.HALF.HI;
|
||||
gRoomTransition.player_status.dungeon_map_y = gPlayerEntity.y.HALF.HI;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetWorldMapPos(u32 area, u32 room, u32 x, u32 y) {
|
||||
RoomHeader* hdr = gAreaRoomHeaders[area] + room;
|
||||
gRoomTransition.player_status.overworld_map_x = hdr->map_x + x;
|
||||
gRoomTransition.player_status.overworld_map_y = hdr->map_y + y;
|
||||
}
|
||||
|
||||
void SetDungeonMapPos(u32 area, u32 room, u32 x, u32 y) {
|
||||
RoomHeader* hdr = gAreaRoomHeaders[area] + room;
|
||||
gRoomTransition.player_status.dungeon_map_x = hdr->map_x + x;
|
||||
gRoomTransition.player_status.dungeon_map_y = hdr->map_y + y;
|
||||
}
|
||||
|
||||
void InitRoom(void) {
|
||||
AreaHeader* a_hdr = NULL;
|
||||
|
||||
MemClear(&gArea, sizeof gArea);
|
||||
a_hdr = &gAreaMetadata[gRoomControls.area];
|
||||
gArea.areaMetadata = a_hdr->flags;
|
||||
gArea.locationIndex = a_hdr->location;
|
||||
gArea.dungeon_idx = a_hdr->location - 23;
|
||||
gArea.localFlagOffset = gLocalFlagBanks[a_hdr->flag_bank];
|
||||
gArea.flag_bank = a_hdr->flag_bank;
|
||||
gArea.portal_timer = 180;
|
||||
gArea.lightLevel = 256;
|
||||
InitRoomTransition();
|
||||
InitAllRoomResInfo();
|
||||
}
|
||||
|
||||
u32 GetFlagBankOffset(u32 idx) {
|
||||
AreaHeader* a_hdr = &gAreaMetadata[idx];
|
||||
return gLocalFlagBanks[a_hdr->flag_bank];
|
||||
}
|
||||
|
||||
void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)()) {
|
||||
if (gMain.substate != GAMEMAIN_SUBTASK) {
|
||||
gArea.transitionManager = mgr;
|
||||
gArea.onEnter = onEnter;
|
||||
gArea.onExit = onExit;
|
||||
}
|
||||
}
|
||||
|
||||
void InitAllRoomResInfo(void) {
|
||||
RoomHeader* r_hdr = gAreaRoomHeaders[gRoomControls.area];
|
||||
RoomResInfo* info = gArea.roomResInfos;
|
||||
u32 i;
|
||||
for (i = 0; i < MAX_ROOMS && *(u16*)r_hdr != 0xFFFF; i++, r_hdr++) {
|
||||
if (r_hdr->tileset_id != 0xFFFF)
|
||||
InitRoomResInfo(info, r_hdr, gRoomControls.area, i);
|
||||
info++;
|
||||
}
|
||||
gArea.pCurrentRoomInfo = GetCurrentRoomInfo();
|
||||
}
|
||||
|
||||
void InitRoomResInfo(RoomResInfo* info, RoomHeader* r_hdr, u32 area, u32 room) {
|
||||
info->map_x = r_hdr->map_x;
|
||||
info->map_y = r_hdr->map_y;
|
||||
info->pixel_width = r_hdr->pixel_width;
|
||||
info->pixel_height = r_hdr->pixel_height;
|
||||
info->tileset = *(gAreaTilesets[area] + r_hdr->tileset_id);
|
||||
info->map = *(gAreaRoomMaps[area] + room);
|
||||
info->metatiles = gAreaMetatiles[area];
|
||||
info->bg_anim = (void*)gUnk_080B755C[area];
|
||||
info->exits = gExitLists[area][room];
|
||||
if (gAreaTable[area] != NULL) {
|
||||
info->properties = *(gAreaTable[area] + room);
|
||||
}
|
||||
}
|
||||
|
||||
RoomResInfo* GetCurrentRoomInfo(void) {
|
||||
return &gArea.roomResInfos[gRoomControls.room];
|
||||
}
|
||||
|
||||
void sub_08052EA0(void) {
|
||||
MemClear(&gRoomVars, sizeof gRoomVars);
|
||||
gRoomVars.unk_10[0] = -1;
|
||||
gRoomVars.unk_10[1] = gRoomVars.unk_10[0];
|
||||
gRoomVars.unk_10[2] = gRoomVars.unk_10[0];
|
||||
gRoomVars.unk_10[3] = gRoomVars.unk_10[0];
|
||||
gRoomVars.lightLevel = 256;
|
||||
gArea.locationIndex = gAreaMetadata[gRoomControls.area].location;
|
||||
UpdateRoomTracker();
|
||||
InitScriptData();
|
||||
sub_08054524();
|
||||
sub_080186D4();
|
||||
sub_0806F364();
|
||||
UpdateGlobalProgress();
|
||||
}
|
||||
|
||||
u32 sub_08052EF4(s32 idx) {
|
||||
AreaHeader* a_hdr = NULL;
|
||||
u32 i = idx < 0 ? gRoomControls.area : idx;
|
||||
a_hdr = &gAreaMetadata[i];
|
||||
return gLocalFlagBanks[a_hdr->flag_bank];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief If enabled, this type of transition does not change the room
|
||||
* and keeps all entities.
|
||||
*/
|
||||
void UpdateFakeScroll(void) {
|
||||
u32 x, y;
|
||||
LinkedList* ll;
|
||||
Entity* e;
|
||||
|
||||
if (gArea.unk_0c_0 == 0 || !gRoomVars.field_0x0)
|
||||
return;
|
||||
|
||||
y = 0;
|
||||
x = 0;
|
||||
|
||||
// WTF?
|
||||
switch (gRoomControls.scroll_direction) {
|
||||
case 0:
|
||||
y = gArea.pCurrentRoomInfo->pixel_height;
|
||||
case 1:
|
||||
y = gArea.pCurrentRoomInfo->pixel_height;
|
||||
case 2:
|
||||
y = gArea.pCurrentRoomInfo->pixel_height;
|
||||
case 3:
|
||||
x = gArea.pCurrentRoomInfo->pixel_width;
|
||||
}
|
||||
|
||||
gArea.pCurrentRoomInfo->map_x += x;
|
||||
gArea.pCurrentRoomInfo->map_y += y;
|
||||
gRoomControls.origin_x += x;
|
||||
gRoomControls.origin_y += y;
|
||||
gRoomControls.scroll_x += x;
|
||||
gRoomControls.scroll_y += y;
|
||||
|
||||
ll = gEntityLists;
|
||||
do {
|
||||
for (e = ll->first; e != (Entity*)ll; e = e->next) {
|
||||
if (e->kind != MANAGER) {
|
||||
e->x.HALF.HI += x;
|
||||
e->y.HALF.HI += y;
|
||||
}
|
||||
}
|
||||
} while (++ll < gEntityLists + 9);
|
||||
}
|
||||
|
||||
void LoadAuxiliaryRoom(u32 area, u32 room) {
|
||||
sub_08052FF4(area, room);
|
||||
gRoomControls.camera_target = NULL;
|
||||
CloneMapData();
|
||||
InitializeCamera();
|
||||
}
|
||||
|
||||
void sub_08052FF4(u32 area, u32 room) {
|
||||
RoomHeader* r_hdr = NULL;
|
||||
|
||||
ClearTilemaps();
|
||||
SetBGDefaults();
|
||||
gRoomControls.area = area;
|
||||
gRoomControls.room = room;
|
||||
gScreen.lcd.displayControl = 0x1740;
|
||||
MemClear(&gArea.currentRoomInfo, sizeof gArea.currentRoomInfo);
|
||||
gArea.pCurrentRoomInfo = &gArea.currentRoomInfo;
|
||||
r_hdr = gAreaRoomHeaders[area] + room;
|
||||
gArea.currentRoomInfo.map_x = r_hdr->map_x;
|
||||
gArea.currentRoomInfo.map_y = r_hdr->map_y;
|
||||
gArea.currentRoomInfo.pixel_width = r_hdr->pixel_width;
|
||||
gArea.currentRoomInfo.pixel_height = r_hdr->pixel_height;
|
||||
gArea.currentRoomInfo.tileset = *(gAreaTilesets[area] + r_hdr->tileset_id);
|
||||
gArea.currentRoomInfo.map = *(gAreaRoomMaps[area] + room);
|
||||
gArea.currentRoomInfo.metatiles = gAreaMetatiles[area];
|
||||
gArea.currentRoomInfo.bg_anim = (void*)gUnk_080B755C[area];
|
||||
}
|
||||
|
||||
void ChangeLightLevel(s32 lightLevel) {
|
||||
lightLevel += gRoomVars.lightLevel;
|
||||
if (lightLevel < 0)
|
||||
lightLevel = 0;
|
||||
if (lightLevel > 256)
|
||||
lightLevel = 256;
|
||||
gRoomVars.lightLevel = lightLevel;
|
||||
}
|
||||
|
||||
void sub_080530B0(void) {
|
||||
static const u16 sMinecartData[] = { 0x189, 0x0, 0x102, 0x4, 0x1af, 0x0, 0x204, 0x0,
|
||||
0x1cf, 0x0, 0x10, 0x4, 0x0, 0x0, 0x0, 0x0 };
|
||||
|
||||
MemCopy(sMinecartData, gRoomTransition.minecart_data, sizeof sMinecartData);
|
||||
}
|
||||
|
||||
void UpdateGlobalProgress(void) {
|
||||
u8 pcnt = 1;
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_3, SEIIKI_STAINED_GLASS)) {
|
||||
pcnt = 9;
|
||||
} else if (CheckGlobalFlag(LV5_CLEAR)) {
|
||||
pcnt = 8;
|
||||
} else if (CheckLocalFlagByBank(FLAG_BANK_3, OUBO_KAKERA)) {
|
||||
pcnt = 7;
|
||||
} else if (CheckGlobalFlag(LV4_CLEAR)) {
|
||||
pcnt = 6;
|
||||
} else if (CheckGlobalFlag(LV3_CLEAR)) {
|
||||
pcnt = 5;
|
||||
} else if (CheckLocalFlagByBank(FLAG_BANK_1, SOUGEN_08_TORITSUKI)) {
|
||||
pcnt = 4;
|
||||
} else if (CheckGlobalFlag(LV1_CLEAR)) {
|
||||
pcnt = 2;
|
||||
}
|
||||
gSave.global_progress = pcnt;
|
||||
}
|
||||
|
||||
u32 sub_08053144(void) {
|
||||
u32 ret;
|
||||
|
||||
if (CheckGlobalFlag(ENDING))
|
||||
return 0;
|
||||
ret = 0;
|
||||
if (gArea.locationIndex != 0)
|
||||
ret = !!(gRoomTransition.player_status.field_0x24[10] ^ gArea.locationIndex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void CheckAreaDiscovery(void) {
|
||||
if (!sub_08053144())
|
||||
return;
|
||||
|
||||
gRoomTransition.player_status.field_0x24[10] = gArea.locationIndex;
|
||||
|
||||
if (!CheckGlobalFlag(TABIDACHI))
|
||||
return;
|
||||
|
||||
if (!CheckGlobalFlag(ENDING)) {
|
||||
Entity* e = (Entity*)GetEmptyManager();
|
||||
if (e != NULL) {
|
||||
e->kind = MANAGER;
|
||||
e->id = ENTER_ROOM_TEXTBOX_MANAGER;
|
||||
AppendEntityToList(e, 8);
|
||||
if (!gRoomVars.field_0x0 && !ReadBit(gSave.areaVisitFlags, gArea.locationIndex)) {
|
||||
e->type2 = 1;
|
||||
SetPlayerControl(3);
|
||||
SetInitializationPriority();
|
||||
}
|
||||
}
|
||||
}
|
||||
WriteBit(gSave.areaVisitFlags, gArea.locationIndex);
|
||||
}
|
||||
|
||||
void UpdatePlayerRoomStatus(void) {
|
||||
gPlayerState.startPosX = gPlayerEntity.x.HALF.HI;
|
||||
gPlayerState.startPosY = gPlayerEntity.y.HALF.HI;
|
||||
if (sub_08053144()) {
|
||||
MemCopy(&gRoomTransition.player_status, &gSave.saved_status, sizeof gRoomTransition.player_status);
|
||||
if (AreaIsDungeon()) {
|
||||
gRoomTransition.player_status.dungeon_area = gRoomControls.area;
|
||||
gRoomTransition.player_status.dungeon_room = gRoomControls.room;
|
||||
gRoomTransition.player_status.dungeon_x = gPlayerEntity.x.HALF.HI;
|
||||
gRoomTransition.player_status.dungeon_y = gPlayerEntity.y.HALF.HI;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053250(void) {
|
||||
gRoomTransition.player_status.spawn_type = PL_SPAWN_DEFAULT;
|
||||
gRoomTransition.player_status.start_pos_x = gPlayerEntity.x.HALF.HI - gRoomControls.origin_x;
|
||||
gRoomTransition.player_status.start_pos_y = gPlayerEntity.y.HALF.HI - gRoomControls.origin_y;
|
||||
gRoomTransition.player_status.start_anim = gPlayerEntity.animationState;
|
||||
gRoomTransition.player_status.layer = gPlayerEntity.collisionLayer;
|
||||
gRoomTransition.player_status.area_next = gRoomControls.area;
|
||||
gRoomTransition.player_status.room_next = gRoomControls.room;
|
||||
MemCopy(&gRoomTransition.player_status, &gSave.saved_status, sizeof gRoomTransition.player_status);
|
||||
}
|
||||
|
||||
void sub_0805329C(void) {
|
||||
if (sub_08053144()) {
|
||||
switch (gRoomControls.area) {
|
||||
case AREA_DEEPWOOD_SHRINE:
|
||||
gSave.unk7 = 0;
|
||||
break;
|
||||
case AREA_CAVE_OF_FLAMES:
|
||||
sub_080530B0();
|
||||
break;
|
||||
case AREA_OUTER_FORTRESS_OF_WINDS:
|
||||
sub_080532E4();
|
||||
break;
|
||||
default:
|
||||
ResetTimerFlags();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080532E4(void) {
|
||||
s32 x, y;
|
||||
|
||||
RoomHeader* r_hdr = gAreaRoomHeaders[AREA_FORTRESS_OF_WINDS] + 33;
|
||||
|
||||
gRoomTransition.player_status.dungeon_area = AREA_FORTRESS_OF_WINDS;
|
||||
gRoomTransition.player_status.dungeon_room = 33;
|
||||
|
||||
gRoomTransition.player_status.dungeon_x = r_hdr->map_x + r_hdr->pixel_width / 2;
|
||||
gRoomTransition.player_status.dungeon_map_x = gRoomTransition.player_status.dungeon_x;
|
||||
gRoomTransition.player_status.dungeon_y = r_hdr->map_y + r_hdr->pixel_height + 0xa0;
|
||||
gRoomTransition.player_status.dungeon_map_y = gRoomTransition.player_status.dungeon_y;
|
||||
}
|
||||
|
||||
void LoadGfxGroups(void) {
|
||||
MemClear(&gBG0Buffer, sizeof gBG0Buffer);
|
||||
MemClear(&gBG1Buffer, sizeof gBG1Buffer);
|
||||
MemClear(&gBG2Buffer, sizeof gBG2Buffer);
|
||||
MemClear(&gBG3Buffer, sizeof gBG3Buffer);
|
||||
LoadGfxGroup(16);
|
||||
LoadGfxGroup(23);
|
||||
if (gRoomControls.area == AREA_CASTOR_WILDS)
|
||||
LoadGfxGroup(26);
|
||||
LoadItemGfx();
|
||||
LoadPaletteGroup(11);
|
||||
LoadPaletteGroup(12);
|
||||
SetColor(0, 0);
|
||||
}
|
||||
|
||||
void LoadItemGfx(void) {
|
||||
LoadGfxGroup(GetInventoryValue(ITEM_REMOTE_BOMBS) ? 24 : 25);
|
||||
if (GetInventoryValue(ITEM_LIGHT_ARROW))
|
||||
LoadGfxGroup(29);
|
||||
LoadGfxGroup(GetInventoryValue(ITEM_MAGIC_BOOMERANG) ? 28 : 27);
|
||||
}
|
||||
|
||||
extern u16 gUnk_020178E0[];
|
||||
void sub_080533CC(void) {
|
||||
u16* p1 = gUnk_020178E0;
|
||||
u16* p2 = gUnk_020178E0 - 0x100;
|
||||
*p2++ = *p1++;
|
||||
*p2++ = *p1++;
|
||||
*p2++ = *p1++;
|
||||
*p2++ = *p1++;
|
||||
*p2++ = *p1++;
|
||||
gUsedPalettes |= 8;
|
||||
}
|
||||
|
||||
void UpdateTimerCallbacks(void) {
|
||||
static void (*const sHandlers[])(u32*) = {
|
||||
sub_08053434, DummyHandler, sub_080534E4, DummyHandler, DummyHandler, DummyHandler, DummyHandler, DummyHandler,
|
||||
};
|
||||
|
||||
u32* p;
|
||||
u32 i;
|
||||
|
||||
p = gSave.timers;
|
||||
for (i = 0; i < 8; i++, p++) {
|
||||
(sHandlers[i])(p);
|
||||
}
|
||||
}
|
||||
|
||||
void DummyHandler(u32* a1) {
|
||||
}
|
||||
|
||||
void sub_08053434(u32* a1) {
|
||||
if (gArea.locationIndex == 29 && *a1) {
|
||||
if (!--*a1) {
|
||||
ResetTimerFlags();
|
||||
MenuFadeIn(5, 6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ResetTimerFlags(void) {
|
||||
static const u16 sClearFlags[] = {
|
||||
FLAG_BANK_10, LV6_GUFUU1_GISHIKI, //
|
||||
FLAG_BANK_10, LV6_GUFUU1_DEMO, //
|
||||
FLAG_BANK_10, LV6_ZELDA_DISCURSE, //
|
||||
FLAG_BANK_10, LV6_00_ESCAPE, //
|
||||
FLAG_BANK_10, LV6_GUFUU2_DEAD, //
|
||||
FLAG_BANK_G, ENDING, //
|
||||
FLAG_BANK_10, LV6_KANE_START, //
|
||||
FLAG_BANK_10, LV6_KANE_1ST, //
|
||||
FLAG_BANK_10, LV6_KANE_2ND, //
|
||||
FLAG_BANK_10, LV6_SOTO_ENDING, //
|
||||
0xFFFF,
|
||||
};
|
||||
|
||||
gSave.timers[0] = 0;
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_ZELDA_DISCURSE))
|
||||
ClearGlobalFlag(ZELDA_CHASE);
|
||||
ClearFlagArray(sClearFlags);
|
||||
}
|
||||
|
||||
void StartDarkNutTimer(void) {
|
||||
gSave.timers[0] = 10800;
|
||||
}
|
||||
|
||||
void sub_080534AC(void) {
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START)) {
|
||||
ClearLocalFlagByBank(FLAG_BANK_10, LV6_KANE_START);
|
||||
gSave.timers[0] = 0;
|
||||
SoundReq(SONG_STOP_BGM);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080534E4(u32* a1) {
|
||||
if (gRoomControls.area != AREA_VEIL_FALLS_TOP) {
|
||||
if (*a1)
|
||||
--*a1;
|
||||
}
|
||||
}
|
||||
|
||||
void InitBiggoronTimer(void) {
|
||||
gSave.timers[2] = 36000;
|
||||
}
|
||||
|
||||
void ResetTmpFlags(void) {
|
||||
static const u16 sClearFlags[] = {
|
||||
FLAG_BANK_2, BILL00_SHICHOU_00, //
|
||||
FLAG_BANK_2, BILL0A_YADO_TAKARA_00, //
|
||||
FLAG_BANK_2, BILL0C_SCHOOLR_00, //
|
||||
FLAG_BANK_1, MACHI00_00, //
|
||||
FLAG_BANK_1, MACHI00_02, //
|
||||
FLAG_BANK_2, MHOUSE06_00, //
|
||||
FLAG_BANK_2, MHOUSE14_00, //
|
||||
FLAG_BANK_2, MHOUSE2_00_02, //
|
||||
FLAG_BANK_2, MHOUSE2_01_T0, //
|
||||
FLAG_BANK_2, MHOUSE2_02_KAME, //
|
||||
FLAG_BANK_2, SHOP00_ITEM_01, //
|
||||
FLAG_BANK_2, SHOP01_CAFE_01, //
|
||||
0xFFFF,
|
||||
};
|
||||
|
||||
ResetTimerFlags();
|
||||
ClearFlagArray(sClearFlags);
|
||||
|
||||
if (!CheckGlobalFlag(WATERBEAN_PUT))
|
||||
ClearGlobalFlag(WATERBEAN_OUT);
|
||||
if (!GetInventoryValue(ITEM_EARTH_ELEMENT))
|
||||
ClearGlobalFlag(LV1_CLEAR);
|
||||
if (!GetInventoryValue(ITEM_FIRE_ELEMENT))
|
||||
ClearGlobalFlag(LV2_CLEAR);
|
||||
if (!GetInventoryValue(ITEM_WATER_ELEMENT))
|
||||
ClearGlobalFlag(LV4_CLEAR);
|
||||
}
|
||||
|
||||
void ClearFlagArray(const u16* p) {
|
||||
const u16* i;
|
||||
|
||||
for (i = p; i[0] != 0xFFFF; i += 2)
|
||||
ClearLocalFlagByBank(i[0], i[1]);
|
||||
}
|
||||
+141
-1
@@ -1,4 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "game.h"
|
||||
#include "itemMetaData.h"
|
||||
#include "item.h"
|
||||
#include "message.h"
|
||||
@@ -123,3 +123,143 @@ const ItemMetaData gItemMetaData[] = {
|
||||
[ITEM_SKILL_FAST_SPLIT] = { 0x63u, 0u, 0u, 0x2u, 0x74u, TEXT_ITEM_GET, 0x74u, 0x5u },
|
||||
[ITEM_SKILL_LONG_SPIN] = { 0x63u, 0u, 0u, 0x2u, 0x75u, TEXT_ITEM_GET, 0x75u, 0x5u },
|
||||
};
|
||||
|
||||
// TODO Shop price and item get message
|
||||
const struct_080FD964 gUnk_080FD964[] = {
|
||||
[ITEM_NONE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x1) },
|
||||
[ITEM_SMITH_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x1) },
|
||||
[ITEM_GREEN_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x2) },
|
||||
[ITEM_RED_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x3) },
|
||||
[ITEM_BLUE_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4) },
|
||||
[ITEM_UNUSED_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5) },
|
||||
[ITEM_FOURSWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x6) },
|
||||
[ITEM_BOMBS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x1c) },
|
||||
[ITEM_REMOTE_BOMBS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x8) },
|
||||
[ITEM_BOW] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x9) },
|
||||
[ITEM_LIGHT_ARROW] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0xa) },
|
||||
[ITEM_BOOMERANG] = { 300, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x24), TEXT_INDEX(TEXT_ITEM_GET, 0xb) },
|
||||
[ITEM_MAGIC_BOOMERANG] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0xc) },
|
||||
[ITEM_SHIELD] = { 40, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x02), TEXT_INDEX(TEXT_ITEM_GET, 0x1d) },
|
||||
[ITEM_MIRROR_SHIELD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0xe) },
|
||||
[ITEM_LANTERN_OFF] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0xf) },
|
||||
[ITEM_LANTERN_ON] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x10) },
|
||||
[ITEM_GUST_JAR] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x11) },
|
||||
[ITEM_PACCI_CANE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x12) },
|
||||
[ITEM_MOLE_MITTS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x13) },
|
||||
[ITEM_ROCS_CAPE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x14) },
|
||||
[ITEM_PEGASUS_BOOTS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x15) },
|
||||
[ITEM_FIRE_ROD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x16) },
|
||||
[ITEM_OCARINA] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x17) },
|
||||
[ITEM_ORB_GREEN] = { 0, 0, 0x0, 0x0 },
|
||||
[ITEM_ORB_BLUE] = { 0, 0, 0x0, 0x0 },
|
||||
[ITEM_ORB_RED] = { 0, 0, 0x0, 0x0 },
|
||||
[ITEM_TRY_PICKUP_OBJECT] = { 0, 0, 0x0, 0x0 },
|
||||
[ITEM_BOTTLE1] = { 100, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x20) },
|
||||
[ITEM_BOTTLE2] = { 100, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x06), TEXT_INDEX(TEXT_ITEM_GET, 0x20) },
|
||||
[ITEM_BOTTLE3] = { 100, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x20) },
|
||||
[ITEM_BOTTLE4] = { 100, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x20) },
|
||||
[ITEM_BOTTLE_EMPTY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x20) },
|
||||
[ITEM_BOTTLE_BUTTER] = { 120, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x21) },
|
||||
[ITEM_BOTTLE_MILK] = { 100, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x22) },
|
||||
[ITEM_BOTTLE_HALF_MILK] = { 60, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x23) },
|
||||
[ITEM_BOTTLE_RED_POTION] = { 150, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x24) },
|
||||
[ITEM_BOTTLE_BLUE_POTION] = { 60, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x25) },
|
||||
[ITEM_BOTTLE_WATER] = { 1, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x26) },
|
||||
[ITEM_BOTTLE_MINERAL_WATER] = { 5, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x27) },
|
||||
[ITEM_BOTTLE_FAIRY] = { 7, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x28) },
|
||||
#ifdef EU
|
||||
[ITEM_BOTTLE_PICOLYTE_RED] = { 100, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x01), TEXT_INDEX(TEXT_ITEM_GET, 0x29) },
|
||||
[ITEM_BOTTLE_PICOLYTE_ORANGE] = { 300, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x06), TEXT_INDEX(TEXT_ITEM_GET, 0x2a) },
|
||||
[ITEM_BOTTLE_PICOLYTE_YELLOW] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x04), TEXT_INDEX(TEXT_ITEM_GET, 0x2b) },
|
||||
[ITEM_BOTTLE_PICOLYTE_GREEN] = { 100, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x03), TEXT_INDEX(TEXT_ITEM_GET, 0x2c) },
|
||||
[ITEM_BOTTLE_PICOLYTE_BLUE] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x05), TEXT_INDEX(TEXT_ITEM_GET, 0x2d) },
|
||||
[ITEM_BOTTLE_PICOLYTE_WHITE] = { 100, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x02), TEXT_INDEX(TEXT_ITEM_GET, 0x2e) },
|
||||
#else
|
||||
[ITEM_BOTTLE_PICOLYTE_RED] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x01), TEXT_INDEX(TEXT_ITEM_GET, 0x29) },
|
||||
[ITEM_BOTTLE_PICOLYTE_ORANGE] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x06), TEXT_INDEX(TEXT_ITEM_GET, 0x2a) },
|
||||
[ITEM_BOTTLE_PICOLYTE_YELLOW] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x04), TEXT_INDEX(TEXT_ITEM_GET, 0x2b) },
|
||||
[ITEM_BOTTLE_PICOLYTE_GREEN] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x03), TEXT_INDEX(TEXT_ITEM_GET, 0x2c) },
|
||||
[ITEM_BOTTLE_PICOLYTE_BLUE] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x05), TEXT_INDEX(TEXT_ITEM_GET, 0x2d) },
|
||||
[ITEM_BOTTLE_PICOLYTE_WHITE] = { 200, 0, TEXT_INDEX(TEXT_PICOLYTE, 0x02), TEXT_INDEX(TEXT_ITEM_GET, 0x2e) },
|
||||
#endif
|
||||
[BOTTLE_CHARM_NAYRU] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x2f) },
|
||||
[BOTTLE_CHARM_FARORE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x30) },
|
||||
[BOTTLE_CHARM_DIN] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x31) },
|
||||
[ITEM_32] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x32) },
|
||||
[ITEM_33] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x33) },
|
||||
[ITEM_QST_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x34) },
|
||||
[ITEM_QST_BROKEN_SWORD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x35) },
|
||||
[ITEM_QST_DOGFOOD] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x36) },
|
||||
[ITEM_QST_LONLON_KEY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x37) },
|
||||
[ITEM_QST_MUSHROOM] = { 60, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x38) },
|
||||
[ITEM_QST_BOOK1] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x39) },
|
||||
[ITEM_QST_BOOK2] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x3a) },
|
||||
[ITEM_QST_BOOK3] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x3b) },
|
||||
[ITEM_QST_GRAVEYARD_KEY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x3d) },
|
||||
[ITEM_QST_TINGLE_TROPHY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x95) },
|
||||
[ITEM_QST_CARLOV_MEDAL] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x96) },
|
||||
[ITEM_SHELLS] = { 15, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x05), TEXT_INDEX(TEXT_ITEM_GET, 0x77) },
|
||||
[ITEM_EARTH_ELEMENT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x40) },
|
||||
[ITEM_FIRE_ELEMENT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x41) },
|
||||
[ITEM_WATER_ELEMENT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x42) },
|
||||
[ITEM_WIND_ELEMENT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x43) },
|
||||
[ITEM_GRIP_RING] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x44) },
|
||||
[ITEM_POWER_BRACELETS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x45) },
|
||||
[ITEM_FLIPPERS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x46) },
|
||||
[ITEM_MAP] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x47) },
|
||||
[ITEM_SKILL_SPIN_ATTACK] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x48) },
|
||||
[ITEM_SKILL_ROLL_ATTACK] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x49) },
|
||||
[ITEM_SKILL_DASH_ATTACK] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4a) },
|
||||
[ITEM_SKILL_ROCK_BREAKER] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4b) },
|
||||
[ITEM_SKILL_SWORD_BEAM] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4c) },
|
||||
[ITEM_SKILL_GREAT_SPIN] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4d) },
|
||||
[ITEM_SKILL_DOWN_THRUST] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4e) },
|
||||
[ITEM_SKILL_PERIL_BEAM] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x4f) },
|
||||
[ITEM_DUNGEON_MAP] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x50) },
|
||||
[ITEM_COMPASS] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x51) },
|
||||
[ITEM_BIG_KEY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x52) },
|
||||
[ITEM_SMALL_KEY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x53) },
|
||||
[ITEM_RUPEE1] = { 1, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x54) },
|
||||
[ITEM_RUPEE5] = { 5, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x55) },
|
||||
[ITEM_RUPEE20] = { 20, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x56) },
|
||||
[ITEM_RUPEE50] = { 50, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x57) },
|
||||
[ITEM_RUPEE100] = { 100, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x58) },
|
||||
[ITEM_RUPEE200] = { 200, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x59) },
|
||||
[ITEM_5A] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5a) },
|
||||
[ITEM_JABBERNUT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5b) },
|
||||
[ITEM_KINSTONE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5c) },
|
||||
[ITEM_BOMBS5] = { 15, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5d) },
|
||||
[ITEM_ARROWS5] = { 15, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5e) },
|
||||
[ITEM_HEART] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x5f) },
|
||||
[ITEM_FAIRY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x60) },
|
||||
#ifdef EU
|
||||
[ITEM_SHELLS30] = { 300, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x05), TEXT_INDEX(TEXT_ITEM_GET, 0x76) },
|
||||
#else
|
||||
[ITEM_SHELLS30] = { 200, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x05), TEXT_INDEX(TEXT_ITEM_GET, 0x76) },
|
||||
#endif
|
||||
[ITEM_HEART_CONTAINER] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x62) },
|
||||
[ITEM_HEART_PIECE] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x18) },
|
||||
[ITEM_WALLET] = { 80, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x04), TEXT_INDEX(TEXT_ITEM_GET, 0x64) },
|
||||
#ifdef EU
|
||||
[ITEM_BOMBBAG] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x07) },
|
||||
#else
|
||||
[ITEM_BOMBBAG] = { 600, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x25), TEXT_INDEX(TEXT_ITEM_GET, 0x63) },
|
||||
#endif
|
||||
[ITEM_LARGE_QUIVER] = { 600, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x07), TEXT_INDEX(TEXT_ITEM_GET, 0x66) },
|
||||
[ITEM_KINSTONE_BAG] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x67) },
|
||||
[ITEM_BRIOCHE] = { 20, 0, TEXT_INDEX(TEXT_BAKERY, 0x01), TEXT_INDEX(TEXT_ITEM_GET, 0x68) },
|
||||
[ITEM_CROISSANT] = { 30, 0, TEXT_INDEX(TEXT_BAKERY, 0x0a), TEXT_INDEX(TEXT_ITEM_GET, 0x69) },
|
||||
[ITEM_PIE] = { 40, 0, TEXT_INDEX(TEXT_BAKERY, 0x0b), TEXT_INDEX(TEXT_ITEM_GET, 0x6a) },
|
||||
[ITEM_CAKE] = { 60, 0, TEXT_INDEX(TEXT_BAKERY, 0x0c), TEXT_INDEX(TEXT_ITEM_GET, 0x6b) },
|
||||
[ITEM_BOMBS10] = { 30, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x03), TEXT_INDEX(TEXT_ITEM_GET, 0x91) },
|
||||
[ITEM_BOMBS30] = { 80, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x09), TEXT_INDEX(TEXT_ITEM_GET, 0x92) },
|
||||
[ITEM_ARROWS10] = { 20, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x08), TEXT_INDEX(TEXT_ITEM_GET, 0x93) },
|
||||
[ITEM_ARROWS30] = { 50, 0, TEXT_INDEX(TEXT_STOCKWELL, 0x0a), TEXT_INDEX(TEXT_ITEM_GET, 0x94) },
|
||||
[ITEM_ARROW_BUTTERFLY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x70) },
|
||||
[ITEM_DIG_BUTTERFLY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x71) },
|
||||
[ITEM_SWIM_BUTTERFLY] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x72) },
|
||||
[ITEM_SKILL_FAST_SPIN] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x73) },
|
||||
[ITEM_SKILL_FAST_SPLIT] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x74) },
|
||||
[ITEM_SKILL_LONG_SPIN] = { 0, 0, 0x0, TEXT_INDEX(TEXT_ITEM_GET, 0x75) },
|
||||
|
||||
};
|
||||
|
||||
+591
@@ -0,0 +1,591 @@
|
||||
/**
|
||||
* @file itemUtils.c
|
||||
*
|
||||
* @brief Item Utils
|
||||
*/
|
||||
#include "item.h"
|
||||
#include "game.h"
|
||||
#include "itemMetaData.h"
|
||||
#include "sound.h"
|
||||
#include "save.h"
|
||||
#include "object.h"
|
||||
#include "enemy.h"
|
||||
#include "message.h"
|
||||
|
||||
const s16 gWalletSizes[] = { 100, -4000, 300, -3996, 500, -3992, 999, -3988 };
|
||||
const u8 gBombBagSizes[] = {
|
||||
10,
|
||||
30,
|
||||
50,
|
||||
99,
|
||||
};
|
||||
const u8 gQuiverSizes[] = {
|
||||
30,
|
||||
50,
|
||||
70,
|
||||
99,
|
||||
};
|
||||
const u16 gUnk_080FD5A8[] = { 1, 5, 20, 50, 100, 200 };
|
||||
|
||||
u32 GetSaleItemConfirmMessageID(u32 item) {
|
||||
const struct_080FD964* ptr = &gUnk_080FD964[item];
|
||||
return ptr->saleItemConfirmMessageId;
|
||||
}
|
||||
|
||||
s32 GetItemPrice(u32 item) {
|
||||
const struct_080FD964* ptr = &gUnk_080FD964[item];
|
||||
return ptr->itemPrice;
|
||||
}
|
||||
|
||||
u32 GiveItem(Item item, u32 param_2) {
|
||||
u32 uVar4;
|
||||
u32 result;
|
||||
u32 uVar9;
|
||||
const ItemMetaData* metaData;
|
||||
|
||||
uVar4 = GetInventoryValue(item);
|
||||
metaData = &gItemMetaData[item];
|
||||
|
||||
if (uVar4 == 0) {
|
||||
result = *(u16*)&metaData->textId;
|
||||
} else {
|
||||
result = *(u16*)&metaData->unk6;
|
||||
}
|
||||
if (!ItemIsBottle(item)) {
|
||||
PutItemOnSlot(item);
|
||||
if (uVar4 == 0) {
|
||||
SetInventoryValue(item, 1);
|
||||
}
|
||||
}
|
||||
switch (metaData->unk1) {
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
case 1:
|
||||
ModHealth(metaData->unk2);
|
||||
SoundReq(SFX_HEART_GET);
|
||||
break;
|
||||
case 2:
|
||||
ModRupees((u32)gUnk_080FD5A8[metaData->unk2]);
|
||||
SoundReq(SFX_RUPEE_GET);
|
||||
break;
|
||||
case 3:
|
||||
uVar9 = 0;
|
||||
while (TRUE) {
|
||||
if (3 < uVar9) {
|
||||
return result;
|
||||
}
|
||||
if (GetInventoryValue(ITEM_BOTTLE1 + uVar9) == 0)
|
||||
break;
|
||||
uVar9++;
|
||||
}
|
||||
item = ITEM_BOTTLE1 + uVar9;
|
||||
if (gSave.stats.bottles[uVar9] == 0) {
|
||||
gSave.stats.bottles[uVar9] = 0x20;
|
||||
}
|
||||
SetInventoryValue(item, 1);
|
||||
PutItemOnSlot(item);
|
||||
break;
|
||||
case 4:
|
||||
uVar9 = 0;
|
||||
while (gSave.stats.bottles[uVar9] != 0x20) {
|
||||
uVar9++;
|
||||
if (3 < uVar9) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
if (3 < uVar9) {
|
||||
break;
|
||||
}
|
||||
gSave.stats.bottles[uVar9] = (u8)item;
|
||||
SetInventoryValue(item, 1);
|
||||
SoundReq(SFX_ITEM_GET);
|
||||
break;
|
||||
case 5:
|
||||
ModDungeonKeys(1);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 6: // TODO dungeon item?
|
||||
gSave.dungeonItems[gArea.dungeon_idx] |= metaData->unk2;
|
||||
break;
|
||||
case 0xd:
|
||||
sub_0801E738(0x72);
|
||||
break;
|
||||
case 0x12:
|
||||
if (item == ITEM_BOOMERANG) {
|
||||
SetInventoryValue(ITEM_MAGIC_BOOMERANG, 0);
|
||||
} else {
|
||||
SetInventoryValue(ITEM_BOOMERANG, 0);
|
||||
}
|
||||
case 0x11:
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 7:
|
||||
if (item == ITEM_BOMBS) {
|
||||
SetInventoryValue(ITEM_REMOTE_BOMBS, 0);
|
||||
} else {
|
||||
SetInventoryValue(ITEM_BOMBS, 0);
|
||||
}
|
||||
ModBombs(99);
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 8:
|
||||
if (uVar4 == 0) {
|
||||
SetInventoryValue(ITEM_BOMBS, 1);
|
||||
PutItemOnSlot(7);
|
||||
} else {
|
||||
gSave.stats.bombBagType++;
|
||||
if (3 < gSave.stats.bombBagType) {
|
||||
gSave.stats.bombBagType = 3;
|
||||
}
|
||||
}
|
||||
ModBombs(99);
|
||||
break;
|
||||
case 9:
|
||||
ModBombs(metaData->unk2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0xb:
|
||||
if (GetInventoryValue(ITEM_LARGE_QUIVER) == 0) {
|
||||
SetInventoryValue(ITEM_LARGE_QUIVER, 1);
|
||||
}
|
||||
ModArrows(99);
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 0xa:
|
||||
gSave.stats.quiverType++;
|
||||
if (3 < gSave.stats.quiverType) {
|
||||
gSave.stats.quiverType = 3;
|
||||
}
|
||||
ModArrows(99);
|
||||
break;
|
||||
case 0xc:
|
||||
ModArrows(metaData->unk2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0x0e:
|
||||
SetInventoryValue(ITEM_SHELLS, 1);
|
||||
ModShells(param_2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0x0f:
|
||||
sub_0801E738(param_2);
|
||||
break;
|
||||
case 0x10:
|
||||
gSave.stats.walletType++;
|
||||
if (gSave.stats.walletType < 4) {
|
||||
break;
|
||||
}
|
||||
gSave.stats.walletType = 3;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO Adapt ItemMetaData struct
|
||||
void sub_08054288(s32 param_1) {
|
||||
const ItemMetaData* ptr1 = gItemMetaData;
|
||||
u16* ptr = (u16*)&((ptr1)[param_1]);
|
||||
MessageFromTarget(ptr[3]);
|
||||
}
|
||||
|
||||
u32 getItemMetaDataGetTextIndex(s32 itemIndex) {
|
||||
const ItemMetaData* ptr1 = gItemMetaData;
|
||||
u16* ptr = (u16*)&((ptr1)[itemIndex]);
|
||||
return ptr[2];
|
||||
}
|
||||
|
||||
u32 sub_080542AC(u32 param_1) {
|
||||
const ItemMetaData* ptr1 = gItemMetaData;
|
||||
u8* ptr = (u8*)&((ptr1)[param_1]);
|
||||
return ptr[3] & 1;
|
||||
}
|
||||
|
||||
void ModShells(s32 shells) {
|
||||
if (shells == 0) {
|
||||
shells = 1;
|
||||
}
|
||||
shells += gSave.stats.shells;
|
||||
if (shells < 0) {
|
||||
shells = 0;
|
||||
} else if (999 < shells) {
|
||||
shells = 999;
|
||||
}
|
||||
gSave.stats.shells = shells;
|
||||
}
|
||||
|
||||
void ModBombs(s32 bombs) {
|
||||
s32 bombCount = bombs;
|
||||
s32 bagSize;
|
||||
bombCount += gSave.stats.bombCount;
|
||||
bagSize = gBombBagSizes[gSave.stats.bombBagType];
|
||||
if (bombCount < 0) {
|
||||
bombCount = 0;
|
||||
} else if (bagSize < bombCount) {
|
||||
bombCount = bagSize;
|
||||
}
|
||||
gSave.stats.bombCount = bombCount;
|
||||
}
|
||||
|
||||
void ModArrows(s32 arrows) {
|
||||
s32 quiverSize;
|
||||
s32 arrowCount = arrows;
|
||||
arrowCount += gSave.stats.arrowCount;
|
||||
quiverSize = gQuiverSizes[gSave.stats.quiverType];
|
||||
if (arrowCount < 0) {
|
||||
arrowCount = 0;
|
||||
} else if (quiverSize < arrowCount) {
|
||||
arrowCount = quiverSize;
|
||||
}
|
||||
gSave.stats.arrowCount = arrowCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the slot the item is equipped in.
|
||||
*
|
||||
* 0: A
|
||||
* 1: B
|
||||
* 2: Not equipped
|
||||
*/
|
||||
EquipSlot IsItemEquipped(u32 itemId) {
|
||||
EquipSlot equipSlot;
|
||||
|
||||
if (itemId == gSave.stats.itemButtons[SLOT_A]) {
|
||||
equipSlot = EQUIP_SLOT_A;
|
||||
} else if (itemId == gSave.stats.itemButtons[SLOT_B]) {
|
||||
equipSlot = EQUIP_SLOT_B;
|
||||
} else {
|
||||
equipSlot = EQUIP_SLOT_NONE;
|
||||
}
|
||||
return equipSlot;
|
||||
}
|
||||
|
||||
void PutItemOnSlot(u32 itemId) {
|
||||
EquipSlot equipSlot;
|
||||
u32 itemId2 = itemId;
|
||||
if (itemId2 < 0x47) {
|
||||
SetInventoryValue(0, 1);
|
||||
}
|
||||
if (itemId2 - 1 < 0x1f) {
|
||||
equipSlot = EQUIP_SLOT_NONE;
|
||||
if (gSave.stats.itemButtons[SLOT_A] == ITEM_NONE) {
|
||||
equipSlot = EQUIP_SLOT_A;
|
||||
} else if (gSave.stats.itemButtons[SLOT_B] == ITEM_NONE) {
|
||||
equipSlot = EQUIP_SLOT_B;
|
||||
}
|
||||
if (equipSlot == EQUIP_SLOT_NONE) {
|
||||
u32 temp = gItemMetaData[itemId2].menuSlot;
|
||||
if (temp == gItemMetaData[gSave.stats.itemButtons[SLOT_A]].menuSlot) {
|
||||
equipSlot = EQUIP_SLOT_A;
|
||||
} else {
|
||||
if (temp == gItemMetaData[gSave.stats.itemButtons[SLOT_B]].menuSlot) {
|
||||
equipSlot = EQUIP_SLOT_B;
|
||||
}
|
||||
}
|
||||
if (equipSlot == EQUIP_SLOT_NONE) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
ForceEquipItem(itemId2, equipSlot);
|
||||
}
|
||||
}
|
||||
|
||||
void ForceEquipItem(u32 itemId, u32 equipSlot) {
|
||||
u32 otherItem;
|
||||
u32 otherItemSlot;
|
||||
u32 replacedItem;
|
||||
|
||||
if ((itemId - 1 < 0x1f) && (equipSlot < EQUIP_SLOT_NONE)) {
|
||||
otherItemSlot = equipSlot == EQUIP_SLOT_A;
|
||||
replacedItem = gSave.stats.itemButtons[equipSlot];
|
||||
otherItem = gSave.stats.itemButtons[otherItemSlot];
|
||||
if (gItemMetaData[otherItem].menuSlot == gItemMetaData[itemId].menuSlot) {
|
||||
otherItem = replacedItem;
|
||||
}
|
||||
gSave.stats.itemButtons[equipSlot] = itemId;
|
||||
gSave.stats.itemButtons[otherItemSlot] = otherItem;
|
||||
gUnk_0200AF00.unk_13 = 0x7f;
|
||||
gUnk_0200AF00.unk_14 = 0x7f;
|
||||
}
|
||||
}
|
||||
|
||||
u32 SetBottleContents(u32 itemId, u32 bottleIndex) {
|
||||
if (bottleIndex > 3) {
|
||||
bottleIndex = 0;
|
||||
for (bottleIndex = 0; gSave.stats.bottles[bottleIndex] != ITEM_BOTTLE_EMPTY;) {
|
||||
if (++bottleIndex > 3) {
|
||||
return bottleIndex;
|
||||
}
|
||||
}
|
||||
if (bottleIndex > 3) {
|
||||
return bottleIndex;
|
||||
}
|
||||
}
|
||||
gSave.stats.bottles[bottleIndex] = itemId;
|
||||
return bottleIndex;
|
||||
}
|
||||
|
||||
bool32 ItemIsSword(u32 item) {
|
||||
switch (item) {
|
||||
case ITEM_SMITH_SWORD:
|
||||
case ITEM_GREEN_SWORD:
|
||||
case ITEM_RED_SWORD:
|
||||
case ITEM_BLUE_SWORD:
|
||||
case ITEM_FOURSWORD:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 ItemIsShield(u32 id) {
|
||||
switch (id) {
|
||||
case ITEM_SHIELD:
|
||||
case ITEM_MIRROR_SHIELD:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 ItemIsBottle(u32 id) {
|
||||
switch (id) {
|
||||
case ITEM_BOTTLE1:
|
||||
case ITEM_BOTTLE2:
|
||||
case ITEM_BOTTLE3:
|
||||
case ITEM_BOTTLE4:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
u32 GetBottleContaining(u32 id) {
|
||||
if (id == gSave.stats.bottles[0]) {
|
||||
return 1;
|
||||
} else if (id == gSave.stats.bottles[1]) {
|
||||
return 2;
|
||||
} else if (id == gSave.stats.bottles[2]) {
|
||||
return 3;
|
||||
} else if (id == gSave.stats.bottles[3]) {
|
||||
return 4;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
extern u8 gUnk_080FE1C6[];
|
||||
void sub_08054524(void) {
|
||||
u32 bVar1;
|
||||
|
||||
bVar1 = gArea.locationIndex;
|
||||
if (gArea.locationIndex == 0) {
|
||||
bVar1 = gRoomTransition.player_status.field_0x24[0xa];
|
||||
}
|
||||
if (bVar1 > 0x16) {
|
||||
bVar1 = 0;
|
||||
}
|
||||
|
||||
bVar1 = gUnk_080FE1C6[bVar1];
|
||||
MemCopy(&gAreaDroptables[bVar1], &gRoomVars.currentAreaDroptable, sizeof(Droptable));
|
||||
}
|
||||
|
||||
void DisableRandomDrops(void) {
|
||||
gRoomVars.randomDropsDisabled = TRUE;
|
||||
}
|
||||
|
||||
void EnableRandomDrops(void) {
|
||||
gRoomVars.randomDropsDisabled = FALSE;
|
||||
}
|
||||
|
||||
extern void sub_08000F14(s16*, const s16*, const s16*, const s16*);
|
||||
extern u32 sub_08000F2C(s16*, const s16*, const s16*, const s16*);
|
||||
u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter);
|
||||
u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
||||
extern const u8 gUnk_080FE1B4[] /* = {
|
||||
ITEM_NONE, ITEM_RUPEE1, ITEM_RUPEE5, ITEM_RUPEE20, ITEM_HEART, ITEM_FAIRY,
|
||||
ITEM_BOMBS5, ITEM_ARROWS5, ITEM_SHELLS, ITEM_KINSTONE_GREEN, ITEM_KINSTONE_BLUE, ITEM_KINSTONE_RED,
|
||||
ITEM_ENEMY_BEETLE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE,
|
||||
}*/;
|
||||
|
||||
int r0, r1, rand, summOdds, item;
|
||||
u32 r3;
|
||||
const Droptable *ptr2, *ptr3, *ptr4;
|
||||
Droptable droptable;
|
||||
r3 = arg1;
|
||||
if (gRoomVars.randomDropsDisabled != TRUE) {
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
ptr4 = NULL;
|
||||
switch (r3) {
|
||||
case 1 ... 12:
|
||||
ptr4 = &gEnemyDroptables[r3];
|
||||
break;
|
||||
#ifndef EU
|
||||
case 24:
|
||||
case 25:
|
||||
r0 = gRoomVars.unk2;
|
||||
ptr4 = &gUnk_0800191C[0];
|
||||
if (r0) {
|
||||
ptr4++;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case 16 ... 23:
|
||||
#ifdef EU
|
||||
case 24:
|
||||
#endif
|
||||
ptr2 = &gObjectDroptables[r3 - 16];
|
||||
case 15:
|
||||
ptr4 = &gRoomVars.currentAreaDroptable;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (ptr4 != 0) {
|
||||
if ((r1 = gSave.stats.picolyteType) == 0) {
|
||||
// nop
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
} else {
|
||||
#ifdef EU
|
||||
ptr3 = &gEnemyDroptables[r1 + 9];
|
||||
#else
|
||||
ptr3 = &gEnemyDroptables[r1 + 6];
|
||||
#endif
|
||||
}
|
||||
// vector addition, s0 = ptr4 + ptr2 + ptr3
|
||||
sub_08000F14(droptable.a, ptr4->a, ptr2->a, ptr3->a);
|
||||
if (gSave.stats.health <= 8) {
|
||||
droptable.s.hearts += 5;
|
||||
}
|
||||
if (gSave.stats.bombCount == 0) {
|
||||
droptable.s.bombs += 3;
|
||||
}
|
||||
if (gSave.stats.arrowCount == 0) {
|
||||
droptable.s.arrows += 3;
|
||||
}
|
||||
if (gSave.stats.rupees <= 10) {
|
||||
droptable.s.rupee5++;
|
||||
}
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
r0 = gSave.stats.hasAllFigurines;
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
// don't drop shells anymore
|
||||
if (r0 != 0) {
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NO_SHELLS];
|
||||
}
|
||||
// don't drop kinstones anymore
|
||||
if (gSave.didAllFusions != 0) {
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NO_KINSTONES];
|
||||
}
|
||||
// vector addition, s0 = s0 + ptr2 + ptr3
|
||||
// resulting values are clamped to be >= 0
|
||||
// returns sum over s0
|
||||
summOdds = sub_08000F2C(droptable.a, droptable.a, ptr2->a, ptr3->a);
|
||||
rand = Random();
|
||||
item = (rand >> 0x18);
|
||||
item &= 0xF;
|
||||
rand = rand % summOdds;
|
||||
{
|
||||
u32 r3;
|
||||
for (r3 = 0, r1 = 0; r3 < 0x10; r3++, item = (item + 1) & 0xF) {
|
||||
if ((r1 += droptable.a[item]) > rand) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
r1 = gUnk_080FE1B4[item];
|
||||
if (r1 != ITEM_NONE) {
|
||||
return CreateItemDrop(arg0, r1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
extern u8 gUnk_080FE1DD[];
|
||||
u32 CreateItemDrop(Entity* arg0, u32 itemId, u32 itemParameter) {
|
||||
u32 adjustedParam = itemParameter;
|
||||
Entity* itemEntity;
|
||||
|
||||
switch (itemId) {
|
||||
case ITEM_ENEMY_BEETLE:
|
||||
if (!GetInventoryValue(ITEM_SMITH_SWORD)) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
break;
|
||||
case ITEM_BOMBS5:
|
||||
if (!GetInventoryValue(ITEM_BOMBBAG)) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
break;
|
||||
case ITEM_ARROWS5:
|
||||
if (!GetInventoryValue(ITEM_BOW)) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
break;
|
||||
case ITEM_SHELLS: {
|
||||
if (!GetInventoryValue(ITEM_EARTH_ELEMENT)) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
if (itemParameter == 0) {
|
||||
adjustedParam = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ITEM_KINSTONE:
|
||||
case ITEM_KINSTONE_GREEN ... ITEM_KINSTONE_RED: {
|
||||
u32 rand;
|
||||
|
||||
if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
if (3 < gRoomVars.filler1[0]) {
|
||||
return ITEM_NONE;
|
||||
}
|
||||
|
||||
if (itemId != ITEM_KINSTONE) {
|
||||
adjustedParam = itemId - ITEM_KINSTONE_GREEN;
|
||||
rand = (Random() & 0x3f);
|
||||
adjustedParam = gUnk_080FE1DD[(rand + adjustedParam * 0x40)];
|
||||
if (adjustedParam == 0) {
|
||||
itemId = ITEM_NONE;
|
||||
} else {
|
||||
itemId = ITEM_KINSTONE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (itemId != ITEM_NONE) {
|
||||
if (itemId != ITEM_ENEMY_BEETLE) {
|
||||
itemEntity = CreateObject(GROUND_ITEM, itemId, adjustedParam);
|
||||
if (itemEntity != NULL) {
|
||||
if (arg0 == &gPlayerEntity) {
|
||||
itemEntity->timer = 1;
|
||||
} else {
|
||||
itemEntity->timer = 0;
|
||||
}
|
||||
if (arg0->kind == OBJECT) {
|
||||
if (arg0->id == 99) {
|
||||
arg0->child = itemEntity;
|
||||
} else if (arg0->id == 0x1e) {
|
||||
itemEntity->direction = arg0->animationState << 3 | 0x80;
|
||||
itemEntity->speed = 0xc0;
|
||||
itemEntity->zVelocity = Q_16_16(1.5);
|
||||
}
|
||||
}
|
||||
CopyPosition(arg0, itemEntity);
|
||||
}
|
||||
} else {
|
||||
itemEntity = CreateEnemy(BEETLE, 0);
|
||||
if (itemEntity != NULL) {
|
||||
itemEntity->x.HALF.HI = arg0->x.HALF.HI;
|
||||
itemEntity->y.HALF.HI = arg0->y.HALF.HI;
|
||||
itemEntity->collisionLayer = arg0->collisionLayer;
|
||||
UpdateSpriteForCollisionLayer(itemEntity);
|
||||
}
|
||||
}
|
||||
}
|
||||
return itemId;
|
||||
}
|
||||
+72
-71
@@ -25,12 +25,12 @@ extern const EntityData gUnk_080FEE58[];
|
||||
extern const void* gUnk_080FED98[];
|
||||
|
||||
void sub_08018AB4(int);
|
||||
void sub_08018BB4(int);
|
||||
void sub_08018A58(int);
|
||||
void sub_08018B50(int);
|
||||
void sub_080189EC(int);
|
||||
void sub_0801876C(int, int);
|
||||
void sub_08018738(u32, int);
|
||||
void sub_08018BB4(u32 worldEventId);
|
||||
void sub_08018A58(u32 worldEventId);
|
||||
void sub_08018B50(u32 worldEventId);
|
||||
void sub_080189EC(u32 worldEventId);
|
||||
void sub_0801876C(u32 worldEventId, bool32 isKinstoneFused);
|
||||
void sub_08018738(u32 kinstoneId, u32 worldEventId);
|
||||
void ShuffleEzloHints(int count, u16* basePtr);
|
||||
void sub_08018500();
|
||||
bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1);
|
||||
@@ -239,60 +239,60 @@ void sub_080186D4(void) {
|
||||
}
|
||||
|
||||
void sub_080186EC(u32 param_1) {
|
||||
const struct_080C9CBC* psVar1;
|
||||
const KinstoneWorldEvent* psVar1;
|
||||
u32 i;
|
||||
|
||||
for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->unk3 == 8) {
|
||||
sub_08018738(i, psVar1->evt_type);
|
||||
for (i = 0, psVar1 = gKinstoneWorldEvents; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->subtask == SUBTASK_WORLDEVENT) {
|
||||
sub_08018738(i, psVar1->worldEventId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018710(u32 param_1) {
|
||||
const struct_080C9CBC* psVar1;
|
||||
void sub_08018710(u32 previousworldEventId) {
|
||||
const KinstoneWorldEvent* psVar1;
|
||||
u32 i;
|
||||
|
||||
for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->unk3 == 8 && param_1 != psVar1->evt_type) {
|
||||
sub_08018738(i, psVar1->evt_type);
|
||||
for (i = 0, psVar1 = gKinstoneWorldEvents; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->subtask == SUBTASK_WORLDEVENT && previousworldEventId != psVar1->worldEventId) {
|
||||
sub_08018738(i, psVar1->worldEventId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018738(u32 param_1, int param_2) {
|
||||
struct_080FE320* ptr = &gUnk_080FE320[param_2];
|
||||
void sub_08018738(u32 kinstoneId, u32 worldEventId) {
|
||||
const WorldEvent* ptr = &gWorldEvents[worldEventId];
|
||||
|
||||
if (ptr->area == gRoomControls.area && ptr->room == gRoomControls.room) {
|
||||
sub_0801876C(param_2, CheckKinstoneFused(param_1));
|
||||
sub_0801876C(worldEventId, CheckKinstoneFused(kinstoneId));
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801876C(int param_1, int param_2) {
|
||||
void sub_0801876C(u32 worldEventId, bool32 isKinstoneFused) {
|
||||
Entity* roomEnt;
|
||||
Entity* ent;
|
||||
u32 uVar3;
|
||||
u32 tmp;
|
||||
u8* puVar4;
|
||||
u32 uVar5;
|
||||
struct_080FE320* ptr;
|
||||
const WorldEvent* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
switch (ptr->evt_type) {
|
||||
case 6:
|
||||
if (param_2 == 0) {
|
||||
ptr = &gWorldEvents[worldEventId];
|
||||
switch (ptr->type) {
|
||||
case WORLD_EVENT_TYPE_6:
|
||||
if (isKinstoneFused == 0) {
|
||||
sub_08018AB4((ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
case WORLD_EVENT_TYPE_0:
|
||||
break;
|
||||
case 2:
|
||||
if (param_2 != 0) {
|
||||
sub_08018BB4(param_1);
|
||||
case WORLD_EVENT_TYPE_2:
|
||||
if (isKinstoneFused != 0) {
|
||||
sub_08018BB4(worldEventId);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (param_2 == 0) {
|
||||
case WORLD_EVENT_TYPE_1:
|
||||
if (isKinstoneFused == 0) {
|
||||
return;
|
||||
}
|
||||
if (CheckGlobalFlag(ptr->flag)) {
|
||||
@@ -300,8 +300,8 @@ void sub_0801876C(int param_1, int param_2) {
|
||||
}
|
||||
LoadRoomEntity(gUnk_080FEC28 + ptr->entity_idx);
|
||||
break;
|
||||
case 3:
|
||||
if (param_2 == 0) {
|
||||
case WORLD_EVENT_TYPE_3:
|
||||
if (isKinstoneFused == 0) {
|
||||
return;
|
||||
}
|
||||
if (GetInventoryValue(ptr->flag)) {
|
||||
@@ -309,47 +309,47 @@ void sub_0801876C(int param_1, int param_2) {
|
||||
}
|
||||
LoadRoomEntity(gUnk_080FEBE8 + ptr->entity_idx);
|
||||
break;
|
||||
case 4:
|
||||
if (param_2 == 0) {
|
||||
sub_08018A58(param_1);
|
||||
case WORLD_EVENT_TYPE_4:
|
||||
if (isKinstoneFused == 0) {
|
||||
sub_08018A58(worldEventId);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (param_2 != 0) {
|
||||
sub_08018B50(param_1);
|
||||
case WORLD_EVENT_TYPE_5:
|
||||
if (isKinstoneFused != 0) {
|
||||
sub_08018B50(worldEventId);
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (param_2 != 0) {
|
||||
case WORLD_EVENT_TYPE_7:
|
||||
if (isKinstoneFused != 0) {
|
||||
return;
|
||||
}
|
||||
if (ptr->entity_idx != 0x80) {
|
||||
LoadRoomEntity(gUnk_080FECC8 + ptr->entity_idx);
|
||||
} else {
|
||||
sub_080189EC(param_1);
|
||||
sub_080189EC(worldEventId);
|
||||
}
|
||||
break;
|
||||
case 0x19:
|
||||
case WORLD_EVENT_TYPE_25:
|
||||
roomEnt = LoadRoomEntity(&gUnk_080FED18[ptr->entity_idx]);
|
||||
if (roomEnt != 0) {
|
||||
roomEnt->type = param_2 ? 2 : 0;
|
||||
roomEnt->type = isKinstoneFused ? 2 : 0;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (param_2 == 0) {
|
||||
case WORLD_EVENT_TYPE_8:
|
||||
if (isKinstoneFused == 0) {
|
||||
return;
|
||||
}
|
||||
SetTileType(0x168, (ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6, 1);
|
||||
break;
|
||||
case 0xb:
|
||||
if (param_2 != 0) {
|
||||
case WORLD_EVENT_TYPE_11:
|
||||
if (isKinstoneFused != 0) {
|
||||
LoadRoomEntity(&gUnk_080FED58[ptr->entity_idx]);
|
||||
gRoomVars.field_0x8c[ptr->entity_idx] = (void*)gUnk_080FED98[ptr->entity_idx];
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (param_2 == 0) {
|
||||
case WORLD_EVENT_TYPE_9:
|
||||
if (isKinstoneFused == 0) {
|
||||
return;
|
||||
}
|
||||
ent = LoadRoomEntity(&gUnk_080FEE78[ptr->entity_idx]);
|
||||
@@ -366,38 +366,38 @@ void sub_0801876C(int param_1, int param_2) {
|
||||
SetTileType(uVar3, uVar5, 1);
|
||||
}
|
||||
break;
|
||||
case 0x18:
|
||||
if (param_2 != 0) {
|
||||
case WORLD_EVENT_TYPE_24:
|
||||
if (isKinstoneFused != 0) {
|
||||
LoadRoomEntityList(gUnk_080FEE18);
|
||||
}
|
||||
break;
|
||||
case 0xf:
|
||||
if (param_2 != 0) {
|
||||
case WORLD_EVENT_TYPE_15:
|
||||
if (isKinstoneFused != 0) {
|
||||
LoadRoomEntity(gUnk_080FEE58);
|
||||
} else {
|
||||
LoadRoomEntity(gUnk_080FEE48);
|
||||
}
|
||||
break;
|
||||
case 0x11:
|
||||
if (param_2 != 0) {
|
||||
case WORLD_EVENT_TYPE_17:
|
||||
if (isKinstoneFused != 0) {
|
||||
SetLocalFlagByBank(FLAG_BANK_1, SOUGEN_05_BOMB_00);
|
||||
LoadRoomEntityList(gUnk_080FEE38);
|
||||
}
|
||||
break;
|
||||
case 0x1a:
|
||||
case 0x1b:
|
||||
case 0x1c:
|
||||
case WORLD_EVENT_TYPE_26:
|
||||
case WORLD_EVENT_TYPE_27:
|
||||
case WORLD_EVENT_TYPE_28:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080189EC(int param_1) {
|
||||
void sub_080189EC(u32 worldEventId) {
|
||||
u32 i;
|
||||
int iVar1;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
const WorldEvent* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
ptr = &gWorldEvents[worldEventId];
|
||||
|
||||
tilePosition = (ptr->x >> 4) & 0x3f;
|
||||
tilePosition |= ((ptr->y >> 4) & 0x3f) << 6;
|
||||
@@ -414,14 +414,14 @@ void sub_080189EC(int param_1) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018A58(int param_1) {
|
||||
void sub_08018A58(u32 worldEventId) {
|
||||
u32 i;
|
||||
int iVar2;
|
||||
u32 j;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
const WorldEvent* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
ptr = &gWorldEvents[worldEventId];
|
||||
|
||||
tilePosition = (ptr->x >> 4) & 0x3f;
|
||||
tilePosition |= ((ptr->y >> 4) & 0x3f) << 6;
|
||||
@@ -470,14 +470,14 @@ void sub_08018B10(int param_1) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018B50(int param_1) {
|
||||
void sub_08018B50(u32 worldEventId) {
|
||||
u32 i;
|
||||
int iVar2;
|
||||
u32 j;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
const WorldEvent* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
ptr = &gWorldEvents[worldEventId];
|
||||
if ((ptr->entity_idx & 0x80) == 0) {
|
||||
iVar2 = 0x200;
|
||||
} else {
|
||||
@@ -495,14 +495,15 @@ void sub_08018B50(int param_1) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018BB4(int param_1) {
|
||||
// TODO world event that loads tile entity
|
||||
void sub_08018BB4(u32 worldEventId) {
|
||||
u32 layer;
|
||||
TileEntity tile;
|
||||
struct_080FE320* ptr;
|
||||
const WorldEvent* ptr;
|
||||
u32 position;
|
||||
|
||||
MemCopy(gUnk_080FEAC8 + param_1, &tile, sizeof(TileEntity));
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
MemCopy(gUnk_080FEAC8 + worldEventId, &tile, sizeof(TileEntity));
|
||||
ptr = &gWorldEvents[worldEventId];
|
||||
tile.tilePos = (ptr->x >> 4 & 0x3f) | (((ptr->y) >> 4 & 0x3f) << 6);
|
||||
sub_0804B3C4(&tile);
|
||||
if (CheckLocalFlag(tile.localFlag) == 0) {
|
||||
|
||||
+1
-1
@@ -169,7 +169,7 @@ const SaveHeader sDefaultSettings = {
|
||||
};
|
||||
|
||||
// single misplaced ldr
|
||||
NONMATCH("asm/non_matching/InitSaveHeader.inc", /*static*/ void InitSaveHeader(void)) {
|
||||
/*static*/ NONMATCH("asm/non_matching/InitSaveHeader.inc", void InitSaveHeader(void)) {
|
||||
u32 b;
|
||||
|
||||
if (!CheckHeaderValid()) {
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "manager/enterRoomTextboxManager.h"
|
||||
#include "area.h"
|
||||
#include "common.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "message.h"
|
||||
@@ -14,18 +15,24 @@
|
||||
|
||||
extern u8 gUnk_02034DF0[0x2F2];
|
||||
|
||||
extern const u16 gUnk_08108DE8[];
|
||||
extern void (*const EnterRoomTextboxManager_Actions[])(EnterRoomTextboxManager*);
|
||||
extern const u8 gUnk_08108E30[0x18];
|
||||
extern const u8 gUnk_08108E48[0x18];
|
||||
extern const u8 gUnk_08108E60[];
|
||||
const u16 gUnk_08108DE8[] = { 0, 0x70b, 0x70c, 0x70d, 0x70e, 0x70f, 0x710, 0x711, 0x712, 0x713, 0x714,
|
||||
0x715, 0x716, 0x717, 0x718, 0x719, 0x71a, 0x71b, 0x71c, 0x71d, 0x71e, 0x71f,
|
||||
0x726, 0x720, 0x720, 0x721, 0x722, 0x723, 0x725, 0x727, 0x724, 0x728 };
|
||||
void sub_0805E140(EnterRoomTextboxManager*);
|
||||
void sub_0805E18C(EnterRoomTextboxManager*);
|
||||
void (*const EnterRoomTextboxManager_Actions[])(EnterRoomTextboxManager*) = {
|
||||
sub_0805E140,
|
||||
sub_0805E18C,
|
||||
};
|
||||
|
||||
extern void sub_0805F46C(void*, const void*);
|
||||
extern const Font gUnk_08108E30;
|
||||
extern const Font gUnk_08108E48;
|
||||
extern const u8 gUnk_08108E60[];
|
||||
|
||||
void sub_0805E140(EnterRoomTextboxManager*);
|
||||
void sub_0805E18C(EnterRoomTextboxManager*); // unused?
|
||||
void sub_0805E1D8(EnterRoomTextboxManager*);
|
||||
void sub_0805E1F8(u32, u32);
|
||||
void sub_0805E1F8(u32, bool32);
|
||||
|
||||
void EnterRoomTextboxManager_Main(EnterRoomTextboxManager* this) {
|
||||
EnterRoomTextboxManager_Actions[super->action](this);
|
||||
@@ -65,21 +72,21 @@ void sub_0805E1D8(EnterRoomTextboxManager* this) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
void sub_0805E1F8(u32 unk0, u32 unk1) {
|
||||
void sub_0805E1F8(u32 unk0, bool32 isDungeon) {
|
||||
struct {
|
||||
u8 unk_00[4];
|
||||
u8 unk_04;
|
||||
u8 unk_05;
|
||||
u8 unk_06[3];
|
||||
} PACKED tmp;
|
||||
const u8* tmp2;
|
||||
const Font* font;
|
||||
MemClear(&gUnk_02034DF0, 0x80);
|
||||
MemCopy(gUnk_08108E60, &tmp, sizeof(tmp));
|
||||
tmp.unk_04 = unk0 >> 8;
|
||||
tmp.unk_05 = unk0;
|
||||
tmp2 = gUnk_08108E48;
|
||||
if (!unk1)
|
||||
tmp2 = gUnk_08108E30;
|
||||
sub_0805F46C(&tmp, tmp2);
|
||||
font = &gUnk_08108E48;
|
||||
if (!isDungeon)
|
||||
font = &gUnk_08108E30;
|
||||
ShowTextBox((u32)&tmp, font);
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
|
||||
@@ -63,14 +63,14 @@ void sub_0805B474(StaticBackgroundManager* this) {
|
||||
}
|
||||
|
||||
void sub_0805B4B4(StaticBackgroundManager* this) {
|
||||
sub_0805B4D0(super->type);
|
||||
LoadStaticBackground(super->type);
|
||||
if (super->type == 2) {
|
||||
sub_0806D0F8();
|
||||
}
|
||||
StaticBackgroundManager_Main(this);
|
||||
}
|
||||
|
||||
void sub_0805B4D0(u32 param_1) {
|
||||
void LoadStaticBackground(u32 param_1) {
|
||||
static const u8 gUnk_08108C5C[] = { 0x14, 0x15, 0x14, 0x2f, 0x4b, 0x4e, 0x4d, 0 };
|
||||
s32 iVar1;
|
||||
u32 uVar2;
|
||||
|
||||
@@ -58,7 +58,7 @@ void sub_080595E4(WeatherChangeManager* this) {
|
||||
gRoomVars.unk_10[0] = 0xFF;
|
||||
sub_08059690(this);
|
||||
sub_080596E0(this);
|
||||
sub_0805B4D0(0);
|
||||
LoadStaticBackground(0);
|
||||
}
|
||||
|
||||
void sub_08059608(WeatherChangeManager* this) {
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
#include "global.h"
|
||||
/**
|
||||
* @file figurineMenu.c
|
||||
* @ingroup Subtasks
|
||||
*
|
||||
* @brief Figurine Menu Subtask
|
||||
*/
|
||||
#include "figurineMenu.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "sound.h"
|
||||
#include "common.h"
|
||||
#include "screen.h"
|
||||
#include "save.h"
|
||||
#include "flags.h"
|
||||
#include "subtask.h"
|
||||
#include "object.h"
|
||||
#include "game.h"
|
||||
#include "functions.h"
|
||||
#include "message.h"
|
||||
#include "object.h"
|
||||
#include "pauseMenu.h"
|
||||
#include "save.h"
|
||||
#include "screen.h"
|
||||
#include "sound.h"
|
||||
#include "subtask.h"
|
||||
#include "subtask2.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern const struct {
|
||||
u8 filler[7];
|
||||
u8 unk7;
|
||||
} gUnk_080FC3E4[];
|
||||
|
||||
void sub_080A4DA8(u32);
|
||||
void sub_080A4B44(void);
|
||||
void FigurineMenu_080A4978(void);
|
||||
@@ -47,13 +51,7 @@ const KeyButtonLayout gUnk_0812813C = {
|
||||
};
|
||||
|
||||
extern u8 gUnk_020344A0[8];
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
} struct_08128AD8;
|
||||
|
||||
extern const struct_08128AD8 gUnk_08128AD8[];
|
||||
|
||||
Subtask FigurineMenu0_Type0;
|
||||
@@ -64,6 +62,7 @@ Subtask FigurineMenu1_Type0;
|
||||
Subtask FigurineMenu1_Type1;
|
||||
Subtask FigurineMenu1_Type2;
|
||||
Subtask FigurineMenu1_Type3;
|
||||
|
||||
void Subtask_FigurineMenu(void) {
|
||||
static Subtask* const figurineMenu1_Types[] = {
|
||||
FigurineMenu0_Type0,
|
||||
@@ -135,7 +134,7 @@ void FigurineMenu0_Type0(void) {
|
||||
|
||||
void FigurineMenu0_Type1(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
CreateObject(OBJECT_A2, gUnk_080FC3E4[gFigurineMenu.figure_idx].unk7, 0);
|
||||
CreateObject(OBJECT_A2, gUnk_080FC3E4[gFigurineMenu.figure_idx].type, 0);
|
||||
SetMenuType(2);
|
||||
}
|
||||
}
|
||||
@@ -444,7 +443,7 @@ const struct_08128184 gUnk_08128184 = {
|
||||
};
|
||||
|
||||
extern struct_020227E8 gUnk_020227E8[];
|
||||
extern void sub_0805F46C(u32, const struct_0812816C*);
|
||||
extern void ShowTextBox(u32, const struct_0812816C*);
|
||||
|
||||
void sub_080A4BA0(u32 arg1, u32 arg2) {
|
||||
int r0, r5, r6;
|
||||
@@ -497,9 +496,9 @@ void sub_080A4BA0(u32 arg1, u32 arg2) {
|
||||
s2.unk9 = r5;
|
||||
s0.unk0 += 0xb;
|
||||
if (gSaveHeader->language == 0) {
|
||||
sub_0805F46C((u32)&s2, &s0);
|
||||
ShowTextBox((u32)&s2, &s0);
|
||||
} else {
|
||||
sub_0805F46C(r5, &s0);
|
||||
ShowTextBox(r5, &s0);
|
||||
}
|
||||
}
|
||||
gScreen.bg3.updated = 1;
|
||||
@@ -538,7 +537,7 @@ u32 sub_080A4CBC(u32 param_1) {
|
||||
MemCopy(&gBG1Buffer, (void*)0x600e000, sizeof(gBG1Buffer));
|
||||
iVar1 = sub_080A4948(param_1);
|
||||
if (iVar1 != 0) {
|
||||
sub_0805F46C(param_1 + 0x900, &gUnk_08128190);
|
||||
ShowTextBox(param_1 + 0x900, &gUnk_08128190);
|
||||
}
|
||||
gScreen.bg1.updated = 1;
|
||||
}
|
||||
@@ -585,6 +584,7 @@ void sub_080A4DA8(u32 param_1) {
|
||||
sub_080A4DB8(param_1);
|
||||
}
|
||||
|
||||
// Render screen?
|
||||
void sub_080A4DB8(u32 param_1) {
|
||||
const struct_08128AD8* ptr;
|
||||
|
||||
@@ -603,25 +603,25 @@ void sub_080A4DB8(u32 param_1) {
|
||||
gScreen.bg0.updated = 1;
|
||||
gScreen.bg1.xOffset = 0;
|
||||
gScreen.bg1.yOffset = 0;
|
||||
gScreen.bg1.control = ptr->unk4;
|
||||
gScreen.bg1.control = ptr->bg1Control;
|
||||
gScreen.bg1.updated = 1;
|
||||
gScreen.bg2.xOffset = 0;
|
||||
gScreen.bg2.yOffset = 0;
|
||||
gScreen.bg2.control = ptr->unk6;
|
||||
gScreen.bg2.control = ptr->bg2Control;
|
||||
gScreen.bg2.updated = 1;
|
||||
gScreen.bg3.xOffset = 0;
|
||||
gScreen.bg3.yOffset = 0;
|
||||
gScreen.bg3.control = 0x1e0b;
|
||||
if (ptr->unk0 != 0) {
|
||||
LoadPaletteGroup(ptr->unk0);
|
||||
if (ptr->paletteGroup != 0) {
|
||||
LoadPaletteGroup(ptr->paletteGroup);
|
||||
}
|
||||
if (ptr->unk1 != 0) {
|
||||
LoadGfxGroup(ptr->unk1);
|
||||
if (ptr->gfxGroup != 0) {
|
||||
LoadGfxGroup(ptr->gfxGroup);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A4E84(u8 param_1) {
|
||||
gPauseMenuOptions.unk14 = param_1;
|
||||
gPauseMenuOptions.screen2 = param_1;
|
||||
}
|
||||
|
||||
void sub_080A4E90(u8 param_1) {
|
||||
@@ -1,3 +1,9 @@
|
||||
/**
|
||||
* @file kinstoneMenu.c
|
||||
* @ingroup Subtasks
|
||||
*
|
||||
* @brief Kinstone Menu Subtask
|
||||
*/
|
||||
#include "area.h"
|
||||
#include "common.h"
|
||||
#include "enemy.h"
|
||||
@@ -221,12 +227,12 @@ void KinstoneMenu_Type1(void) {
|
||||
}
|
||||
|
||||
void KinstoneMenu_Type2(void) {
|
||||
const struct_080C9CBC* ptr;
|
||||
const KinstoneWorldEvent* ptr;
|
||||
if (gMenu.column_idx == 6) {
|
||||
gFuseInfo._0 = 6;
|
||||
ptr = &gUnk_080C9CBC[gFuseInfo._3];
|
||||
if (ptr->unk3 != 0) {
|
||||
MenuFadeIn(ptr->unk3, ptr->evt_type);
|
||||
ptr = &gKinstoneWorldEvents[gFuseInfo.kinstoneId];
|
||||
if (ptr->subtask != 0) {
|
||||
MenuFadeIn(ptr->subtask, ptr->worldEventId);
|
||||
} else {
|
||||
Subtask_Exit();
|
||||
}
|
||||
@@ -259,8 +265,8 @@ void KinstoneMenu_Type3_Overlay0(void) {
|
||||
}
|
||||
|
||||
void KinstoneMenu_Type3_Overlay1(void) {
|
||||
u32 temp = gUnk_080C9CBC[gKinstoneMenu.unk2a].unk5;
|
||||
if (temp != gUnk_080C9CBC[gFuseInfo._3].unk5) {
|
||||
u32 temp = gKinstoneWorldEvents[gKinstoneMenu.unk2a].unk5;
|
||||
if (temp != gKinstoneWorldEvents[gFuseInfo.kinstoneId].unk5) {
|
||||
SoundReq(SFX_ITEM_SHIELD_BOUNCE);
|
||||
SetMenuType(4);
|
||||
} else {
|
||||
@@ -313,8 +319,8 @@ void KinstoneMenu_Type5(void) {
|
||||
|
||||
void KinstoneMenu_Type5_Overlay0(void) {
|
||||
gMenu.column_idx = 5;
|
||||
WriteBit(gSave.unk241, gFuseInfo._3);
|
||||
if (++gSave.unk117 > 99) {
|
||||
WriteBit(gSave.fusedKinstones, gFuseInfo.kinstoneId);
|
||||
if (++gSave.fusedKinstoneCount > 99) {
|
||||
gSave.didAllFusions = 1;
|
||||
}
|
||||
KinstoneMenu_080A4468();
|
||||
@@ -499,16 +505,16 @@ void KinstoneMenu_080A422C(void) {
|
||||
}
|
||||
|
||||
gOamCmd.x = t2;
|
||||
sub_080A42E0(gFuseInfo._3, 0);
|
||||
sub_080A42E0(gFuseInfo.kinstoneId, 0);
|
||||
}
|
||||
|
||||
void sub_080A42E0(u32 param_1, u32 param_2) {
|
||||
void sub_080A42E0(u32 kinstoneId, u32 param_2) {
|
||||
u8 uVar1;
|
||||
s32 sVar2;
|
||||
s32 sVar3;
|
||||
s32 iVar4;
|
||||
|
||||
const struct_080C9CBC* ptr = &gUnk_080C9CBC[param_1];
|
||||
const KinstoneWorldEvent* ptr = &gKinstoneWorldEvents[kinstoneId];
|
||||
|
||||
if (param_2 == 0xff) {
|
||||
uVar1 = ptr->unk2;
|
||||
@@ -538,7 +544,7 @@ void sub_080A42E0(u32 param_1, u32 param_2) {
|
||||
}
|
||||
{
|
||||
int t;
|
||||
t = ptr->unk0;
|
||||
t = ptr->objPalette;
|
||||
t <<= 0xc;
|
||||
t |= 0x800;
|
||||
t |= (iVar4 << 4) + 0x300;
|
||||
@@ -602,7 +608,7 @@ u32 sub_080A4418(u32 param_1, u32 param_2) {
|
||||
void KinstoneMenu_080A4468(void) {
|
||||
gUnk_03003DF0.unk_2 = 0;
|
||||
gUnk_03003DF0.unk_4[3] = 0;
|
||||
sub_0801E6C8(gFuseInfo._3);
|
||||
sub_0801E6C8(gFuseInfo.kinstoneId);
|
||||
sub_0801E798(gKinstoneMenu.unk2a);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,276 @@
|
||||
/**
|
||||
* @file pauseMenuScreen6.c
|
||||
*
|
||||
* @brief Pause Menu Screen 6
|
||||
*/
|
||||
#include "common.h"
|
||||
#include "fileselect.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "kinstone.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "pauseMenu.h"
|
||||
#include "save.h"
|
||||
#include "screen.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
} struct_sub_080A698C;
|
||||
|
||||
extern u8 gUnk_08128E80[];
|
||||
|
||||
extern u16 gUnk_02017AA0[];
|
||||
|
||||
void sub_080A68D4();
|
||||
|
||||
void PauseMenu_Screen_6(void) {
|
||||
extern void (*const gUnk_08128E78[])(void);
|
||||
const struct_gUnk_08128E94* ptr;
|
||||
gUnk_08128E78[gMenu.menuType]();
|
||||
ptr = &gUnk_08128E94[gMenu.field_0x3];
|
||||
gScreen.bg1.yOffset = -ptr->unk5;
|
||||
gScreen.bg2.yOffset = gMenu.field_0xa - (s8)ptr->unk6;
|
||||
sub_080A66D0();
|
||||
}
|
||||
|
||||
void sub_080A6650(void) {
|
||||
extern u8 gUnk_08128E84[];
|
||||
u32 temp;
|
||||
sub_080A70AC((KeyButtonLayout*)gUnk_08128E84);
|
||||
temp = gPauseMenuOptions.unk2[4];
|
||||
gMenu.field_0x3 = temp;
|
||||
sub_080A67C4(temp);
|
||||
sub_080A68D4();
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
void sub_080A667C(void) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
const struct_gUnk_08128E94* ptr;
|
||||
|
||||
gMenu.field_0xc = gUnk_08128E80;
|
||||
ptr = &gUnk_08128E94[gMenu.field_0x3];
|
||||
uVar2 = gMenu.field_0xa;
|
||||
switch (gInput.heldKeys) {
|
||||
case DPAD_UP:
|
||||
if (uVar2 != 0) {
|
||||
uVar2 -= 2;
|
||||
}
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
uVar1 = ptr->unk2;
|
||||
if (uVar1 > uVar2) {
|
||||
uVar2 += 2;
|
||||
}
|
||||
if (uVar1 < uVar2) {
|
||||
uVar2 = uVar1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
gMenu.field_0xa = uVar2;
|
||||
sub_080A6FB4(gMenu.field_0x3, 0);
|
||||
}
|
||||
|
||||
void sub_080A66D0(void) {
|
||||
u32 bVar2;
|
||||
u32 bVar3;
|
||||
u8 bVar4;
|
||||
u32 uVar5;
|
||||
u32 uVar8;
|
||||
struct_sub_080A698C* ptr;
|
||||
const struct_gUnk_08128E94* ptr2;
|
||||
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd.x = 0x78;
|
||||
ptr2 = &gUnk_08128E94[gMenu.field_0x3];
|
||||
gGenericMenu.unk2c++;
|
||||
if (gGenericMenu.unk2b != 1 && ((gGenericMenu.unk2c & 0x10) != 0)) {
|
||||
gOamCmd._8 = 0x800;
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gOamCmd.y = 0xc;
|
||||
DrawDirect(DRAW_DIRECT_SPRITE_INDEX, 0x71);
|
||||
}
|
||||
if (ptr2->unk2 > gMenu.field_0xa) {
|
||||
gOamCmd.y = 0x84;
|
||||
DrawDirect(DRAW_DIRECT_SPRITE_INDEX, 0x72);
|
||||
}
|
||||
}
|
||||
bVar2 = ptr2->unk7;
|
||||
bVar3 = ptr2->unk3;
|
||||
uVar5 = gMenu.field_0xa;
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0xc00;
|
||||
bVar4 = gGenericMenu.unk2c & 0x20;
|
||||
|
||||
for (ptr = (struct_sub_080A698C*)&gMapDataBottomSpecial; ptr->unk2 != 0; ptr++) {
|
||||
uVar8 = 0;
|
||||
if (ptr->unk0 == 1) {
|
||||
if (bVar4 != 0) {
|
||||
uVar8 = 1;
|
||||
}
|
||||
} else if (bVar4 == 0) {
|
||||
uVar8 = 1;
|
||||
}
|
||||
|
||||
if (uVar8 != 0) {
|
||||
gOamCmd.x = ptr->unk4 + bVar2;
|
||||
gOamCmd.y = ptr->unk6 + bVar3 - uVar5;
|
||||
DrawDirect(ptr->unk2, ptr->unk1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A67C4(u32 param_1) {
|
||||
u16* puVar2;
|
||||
int i;
|
||||
int iVar4;
|
||||
s32 room;
|
||||
const struct_gUnk_08128E94* ptr;
|
||||
|
||||
LoadPaletteGroup(param_1 + 0xba);
|
||||
iVar4 = param_1 + 0x5f;
|
||||
switch (param_1) {
|
||||
case 0x9:
|
||||
if (CheckGlobalFlag(TATEKAKE_HOUSE)) {
|
||||
iVar4 = 0x70;
|
||||
}
|
||||
break;
|
||||
case 0xb:
|
||||
if (CheckKinstoneFused(KINSTONE_E)) {
|
||||
iVar4 = 0x71;
|
||||
}
|
||||
break;
|
||||
case 0xe:
|
||||
if (gUI.roomControls.area == 8) {
|
||||
room = gUI.roomControls.room;
|
||||
iVar4 = (u8)(room % 3) + 0x72;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
LoadGfxGroup(iVar4);
|
||||
ptr = &gUnk_08128E94[param_1];
|
||||
puVar2 = &gUnk_02017AA0[gUnk_03003DE4[0] * 0x500];
|
||||
|
||||
for (i = 0; i <= 7; puVar2++, i++) {
|
||||
*puVar2 = 0x1e0a;
|
||||
}
|
||||
|
||||
for (i = 8; i < (int)(ptr->unk5 + ptr->unk4); puVar2++, i++) {
|
||||
*puVar2 = 0x1e0b;
|
||||
}
|
||||
|
||||
for (; i < 0xa0; puVar2++, i++) {
|
||||
*puVar2 = 0x1e0a;
|
||||
}
|
||||
|
||||
SetVBlankDMA((u16*)&gUnk_02017AA0[gUnk_03003DE4[0] * 0x500], (u16*)REG_ADDR_BG3CNT,
|
||||
((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) +
|
||||
0x1);
|
||||
gMenu.field_0xa = ptr->unk2 >> 1;
|
||||
MemClear(&gMapDataBottomSpecial, 0x400);
|
||||
}
|
||||
|
||||
void sub_080A68D4(void) {
|
||||
u32 uVar1;
|
||||
int iVar6;
|
||||
struct_gUnk_08128F58* pcVar4;
|
||||
u32 i;
|
||||
u32 uVar4;
|
||||
const WorldEvent* ptr;
|
||||
|
||||
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
|
||||
iVar6 = 101;
|
||||
} else {
|
||||
iVar6 = 100;
|
||||
}
|
||||
sub_080A698C(gRoomTransition.player_status.overworld_map_x, gRoomTransition.player_status.overworld_map_y,
|
||||
DRAW_DIRECT_SPRITE_INDEX, iVar6 + 0x100);
|
||||
uVar1 = sub_080A6F40();
|
||||
uVar1 &= gSave.field_0x20;
|
||||
|
||||
for (pcVar4 = gUnk_08128F58, i = 0; pcVar4->frameIndex != 0; i++, pcVar4++) {
|
||||
if (((1 << i) & uVar1) != 0) {
|
||||
sub_080A698C(pcVar4->unk4, pcVar4->unk6, DRAW_DIRECT_SPRITE_INDEX, pcVar4->unk3);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 10; i <= 100; i++) {
|
||||
if (CheckKinstoneFused(i) && !sub_0801E810(i)) {
|
||||
uVar4 = gKinstoneWorldEvents[i].unk7;
|
||||
ptr = &gWorldEvents[gKinstoneWorldEvents[i].worldEventId];
|
||||
sub_080A698C(ptr->_c, ptr->_e, DRAW_DIRECT_SPRITE_INDEX, uVar4 + 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
|
||||
int iVar1;
|
||||
|
||||
iVar1 = sub_080A69E0(param_1, param_2);
|
||||
if (0 < iVar1) {
|
||||
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk0 = param_4 >> 8;
|
||||
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk1 = param_4;
|
||||
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk2 = param_3;
|
||||
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk4 = iVar1;
|
||||
((struct_sub_080A698C*)&gMapDataBottomSpecial)[gGenericMenu.unk2d].unk6 = iVar1 >> 0x10;
|
||||
gGenericMenu.unk2d++;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_080A69E0(u32 param_1, u32 param_2) {
|
||||
const struct_08127F94* pbVar1;
|
||||
int iVar3;
|
||||
|
||||
if ((param_1 | param_2) == 0)
|
||||
return -1;
|
||||
|
||||
pbVar1 = sub_080A6A80(param_1, param_2);
|
||||
if (pbVar1 == NULL)
|
||||
return -1;
|
||||
|
||||
if (gMenu.field_0x3 != pbVar1->_4)
|
||||
return -1;
|
||||
|
||||
switch (gMenu.field_0x3) {
|
||||
case 4:
|
||||
case 7:
|
||||
if (gMenu.field_0x3 == 4) {
|
||||
iVar3 = 9;
|
||||
} else {
|
||||
iVar3 = 7;
|
||||
}
|
||||
param_2 -= gAreaRoomHeaders[iVar3]->map_y;
|
||||
break;
|
||||
break;
|
||||
case 15:
|
||||
param_1 -= 0x108;
|
||||
break;
|
||||
}
|
||||
|
||||
param_1 = (s32)((param_1 - pbVar1->_0 * 0x10) * 100) / 0x23a;
|
||||
param_2 = (s32)((param_2 - pbVar1->_1 * 0x10) * 100) / 0x23a;
|
||||
return (param_2 << 0x10) | param_1;
|
||||
}
|
||||
|
||||
struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2) {
|
||||
struct_08127F94* pbVar1;
|
||||
param_1 >>= 4;
|
||||
param_2 >>= 4;
|
||||
|
||||
for (pbVar1 = gUnk_08127F94; pbVar1->_0 != 0xff; pbVar1++) {
|
||||
if (pbVar1->_0 <= param_1 && pbVar1->_2 >= param_1 && pbVar1->_1 <= param_2 && pbVar1->_3 >= param_2) {
|
||||
return pbVar1;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -1,567 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "menu.h"
|
||||
#include "sound.h"
|
||||
#include "subtask.h"
|
||||
#include "screen.h"
|
||||
#include "item.h"
|
||||
#include "common.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "save.h"
|
||||
#include "itemMetaData.h"
|
||||
#include "structures.h"
|
||||
#include "functions.h"
|
||||
#include "ui.h"
|
||||
|
||||
extern void sub_080A4DB8(u32);
|
||||
|
||||
void sub_080A5128(void);
|
||||
void sub_080A51D4(void);
|
||||
bool32 sub_080A51F4(void);
|
||||
void sub_080A5F48(u32, u32);
|
||||
|
||||
Subtask PauseMenu_Variant0;
|
||||
Subtask PauseMenu_Variant1;
|
||||
Subtask PauseMenu_Variant2;
|
||||
Subtask PauseMenu_Variant3;
|
||||
Subtask PauseMenu_Variant4;
|
||||
Subtask PauseMenu_Variant5;
|
||||
void Subtask_PauseMenu(void) {
|
||||
static Subtask* const pauseMenu_Variants[] = {
|
||||
PauseMenu_Variant0, PauseMenu_Variant1, PauseMenu_Variant2,
|
||||
PauseMenu_Variant3, PauseMenu_Variant4, PauseMenu_Variant5,
|
||||
};
|
||||
|
||||
if (gPauseMenuOptions.unk11 == 6) {
|
||||
SetBgmVolume(0x100);
|
||||
Subtask_Exit();
|
||||
} else {
|
||||
FlushSprites();
|
||||
pauseMenu_Variants[gPauseMenuOptions.unk11]();
|
||||
sub_080A5128();
|
||||
UpdateUIElements();
|
||||
DrawUIElements();
|
||||
if (gPauseMenuOptions.unk11 != 4) {
|
||||
gUnk_08128A38[gPauseMenuOptions.unk1].func();
|
||||
}
|
||||
CopyOAM();
|
||||
{
|
||||
u32 t = gPauseMenuOptions.unk16;
|
||||
u32 t2 = (t != 0) ? 0xe46 : 0;
|
||||
gScreen.controls.layerFXControl = t2;
|
||||
gScreen.controls.alphaBlend = (t << 8) | (0x10 - t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct_08127F94* sub_080A6A80(u32, u32);
|
||||
|
||||
extern u8 gUnk_02034492[];
|
||||
void sub_0801E8D4(void);
|
||||
s32 sub_080A50A0(s32);
|
||||
|
||||
void PauseMenu_Variant0(void) {
|
||||
struct_08127F94* ptr;
|
||||
int r0, r1;
|
||||
|
||||
sub_0801E8D4();
|
||||
sub_080A4D34();
|
||||
r1 = 4;
|
||||
do {
|
||||
gUnk_02034492[r1] = 0;
|
||||
r1++;
|
||||
} while (r1 <= 0xd);
|
||||
ptr = sub_080A6A80((u16)gRoomTransition.player_status.overworld_map_x,
|
||||
(u16)gRoomTransition.player_status.overworld_map_y);
|
||||
gPauseMenuOptions.unk2[4] = ptr->_4;
|
||||
gPauseMenuOptions.unk2[5] = sub_0801DB94();
|
||||
if (IsItemEquipped(ITEM_LANTERN_ON) != EQUIP_SLOT_NONE) {
|
||||
r1 = 0x10;
|
||||
} else {
|
||||
r1 = 0xf;
|
||||
}
|
||||
gPauseMenuOptions.unk15 = r1;
|
||||
r0 = gUnk_08128A38[gPauseMenuOptions.unk1].unk1;
|
||||
r0 = sub_080A50A0(r0);
|
||||
gPauseMenuOptions.unk1 = r0;
|
||||
gPauseMenuOptions.unk14 = r0;
|
||||
sub_080A4DB8(r0);
|
||||
SetFade(FADE_INSTANT, 0x20);
|
||||
sub_080A4E90(1);
|
||||
}
|
||||
|
||||
void PauseMenu_Variant1(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
sub_080A4E90(2);
|
||||
}
|
||||
}
|
||||
|
||||
void PauseMenu_Variant2(void) {
|
||||
int iVar1;
|
||||
u32 uVar2;
|
||||
int iVar4;
|
||||
s32 bVar5;
|
||||
|
||||
if (sub_080A51F4() && (gMenu.field_0xc != NULL)) {
|
||||
iVar1 = -1;
|
||||
switch (gInput.newKeys) {
|
||||
case START_BUTTON:
|
||||
iVar1 = 0;
|
||||
break;
|
||||
case L_BUTTON:
|
||||
iVar1 = 1;
|
||||
break;
|
||||
case R_BUTTON:
|
||||
iVar1 = 2;
|
||||
break;
|
||||
case B_BUTTON:
|
||||
iVar1 = 3;
|
||||
break;
|
||||
}
|
||||
if (iVar1 >= 0) {
|
||||
switch (bVar5 = gMenu.field_0xc[iVar1]) {
|
||||
case 0:
|
||||
break;
|
||||
case 4 ... 6:
|
||||
case 0xf:
|
||||
uVar2 = GetInventoryValue(ITEM_MAP);
|
||||
if (uVar2 == 0) {
|
||||
iVar4 = 1;
|
||||
if (iVar1 == 1) {
|
||||
iVar4 = 2;
|
||||
}
|
||||
bVar5 = gMenu.field_0xc[iVar4];
|
||||
}
|
||||
default:
|
||||
gPauseMenuOptions.unk14 = bVar5;
|
||||
SoundReq(SFX_TEXTBOX_OPEN);
|
||||
gMenu.field_0xc = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
bVar5 = sub_080A50A0(gPauseMenuOptions.unk14);
|
||||
if (gPauseMenuOptions.unk1 != bVar5) {
|
||||
gPauseMenuOptions.unk14 = bVar5;
|
||||
sub_080A51D4();
|
||||
if (bVar5 == 0xe) {
|
||||
sub_080A4E90(6);
|
||||
} else {
|
||||
sub_080A4E90(3);
|
||||
MemClear(&gBG0Buffer, sizeof(gBG0Buffer));
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_080A50A0(s32 param_1) {
|
||||
s32 iVar1;
|
||||
|
||||
if (param_1 == 0xf) {
|
||||
iVar1 = AreaHasMap();
|
||||
param_1 = 4;
|
||||
if (iVar1 != 0) {
|
||||
param_1 = 5;
|
||||
}
|
||||
}
|
||||
return param_1;
|
||||
}
|
||||
|
||||
void PauseMenu_Variant3(void) {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = gPauseMenuOptions.unk16 + 2;
|
||||
if (0x10 < iVar1) {
|
||||
gScreen.lcd.displayControl &= 0xf8ff;
|
||||
sub_080A4E90(4);
|
||||
iVar1 = 0x10;
|
||||
}
|
||||
gPauseMenuOptions.unk16 = iVar1;
|
||||
}
|
||||
|
||||
void PauseMenu_Variant4(void) {
|
||||
u32 t;
|
||||
gPauseMenuOptions.unk16 = 0x10;
|
||||
gPauseMenuOptions.unk1 = t = gPauseMenuOptions.unk14;
|
||||
sub_080A4DB8(t);
|
||||
sub_080A4E90(5);
|
||||
}
|
||||
|
||||
void PauseMenu_Variant5(void) {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = gPauseMenuOptions.unk16 - 2;
|
||||
if (iVar1 < 0) {
|
||||
sub_080A4E90(2);
|
||||
iVar1 = 0;
|
||||
}
|
||||
gPauseMenuOptions.unk16 = iVar1;
|
||||
}
|
||||
|
||||
void sub_080A5128(void) {
|
||||
int r5, t;
|
||||
struct {
|
||||
int x;
|
||||
int y;
|
||||
} p[3];
|
||||
|
||||
switch (gPauseMenuOptions.unk1) {
|
||||
case 7:
|
||||
case 8:
|
||||
p[0].x = 0x60;
|
||||
p[0].y = 0x18;
|
||||
p[1].x = -0x10;
|
||||
p[1].y = 0x48;
|
||||
p[2].x = 0x100;
|
||||
p[2].y = 0x48;
|
||||
break;
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
return;
|
||||
default:
|
||||
p[0].x = 0x40;
|
||||
p[0].y = 0x10 - (gPauseMenuOptions.unk16 << 1);
|
||||
t = (gPauseMenuOptions.unk16 / 3);
|
||||
p[1].x = 0x10 - t;
|
||||
p[1].y = 0x48;
|
||||
p[2].x = 0xe0 + t;
|
||||
p[2].y = 0x48;
|
||||
break;
|
||||
}
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0x400;
|
||||
gOamCmd.x = p[0].x;
|
||||
gOamCmd.y = p[0].y;
|
||||
#ifdef EU
|
||||
r5 = 0x1fa;
|
||||
#else
|
||||
r5 = 0x1fb;
|
||||
#endif
|
||||
DrawDirect(r5, 0);
|
||||
gOamCmd.x = p[1].x;
|
||||
gOamCmd.y = p[1].y;
|
||||
DrawDirect(r5, 1);
|
||||
gOamCmd.x = p[2].x;
|
||||
gOamCmd.y = p[2].y;
|
||||
DrawDirect(r5, 2);
|
||||
}
|
||||
|
||||
void sub_080A51D4(void) {
|
||||
u32 i = gPauseMenuOptions.unk1;
|
||||
if (i < 0xe) {
|
||||
gPauseMenuOptions.unk2[i] = gMenu.field_0x3;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_080A51F4(void) {
|
||||
bool32 retval = TRUE;
|
||||
if (gFadeControl.active != 0)
|
||||
retval = FALSE;
|
||||
if (gPauseMenuOptions.unk11 != 2)
|
||||
retval = FALSE;
|
||||
return retval;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
u8 up;
|
||||
u8 down;
|
||||
u8 left;
|
||||
u8 right;
|
||||
u8 type;
|
||||
u8 unk0;
|
||||
u8 x;
|
||||
u8 y;
|
||||
} ItemMenuTableEntry;
|
||||
|
||||
Subtask PauseMenu_ItemMenu_Draw;
|
||||
Subtask PauseMenu_ItemMenu_Init;
|
||||
Subtask PauseMenu_ItemMenu_Update;
|
||||
void PauseMenu_ItemMenu(void) {
|
||||
static Subtask* const pauseMenu_Types[] = { PauseMenu_ItemMenu_Init, PauseMenu_ItemMenu_Update };
|
||||
|
||||
pauseMenu_Types[gMenu.menuType]();
|
||||
PauseMenu_ItemMenu_Draw();
|
||||
}
|
||||
|
||||
void PauseMenu_ItemMenu_Init(void) {
|
||||
static const KeyButtonLayout gUnk_08128B50 = {
|
||||
0xd0u,
|
||||
0x10u,
|
||||
0u,
|
||||
0xb8u,
|
||||
0x10u,
|
||||
0u,
|
||||
0xffu,
|
||||
0xd8u,
|
||||
0u,
|
||||
{
|
||||
0x3u,
|
||||
0u,
|
||||
0x4u,
|
||||
0u,
|
||||
0u,
|
||||
0u,
|
||||
0x1u,
|
||||
0u,
|
||||
0xffu,
|
||||
0u,
|
||||
0u,
|
||||
},
|
||||
};
|
||||
|
||||
u32 uVar1;
|
||||
u32 i;
|
||||
u32 item;
|
||||
|
||||
gMenu.field_0xc = NULL;
|
||||
sub_080A70AC((KeyButtonLayout*)&gUnk_08128B50);
|
||||
for (item = ITEM_SMITH_SWORD; item < ITEM_BOTTLE_EMPTY; item++) {
|
||||
uVar1 = GetInventoryValue(item);
|
||||
if ((uVar1 == 1) && (i = gItemMetaData[item].menuSlot, i <= MENU_SLOT_SAVE_BUTTON_JP)) {
|
||||
switch (item) {
|
||||
case ITEM_LANTERN_OFF:
|
||||
case ITEM_LANTERN_ON:
|
||||
item = gPauseMenuOptions.unk15;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
gPauseMenu.items[i] = item;
|
||||
sub_080A5F48(item, i * 8 + 0x360);
|
||||
}
|
||||
}
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
const ItemMenuTableEntry gItemMenuTable[] = {
|
||||
[MENU_SLOT_SWORD] = { MENU_SLOT_BOTTLE0, MENU_SLOT_SHIELD, MENU_SLOT_BOOMERANG, MENU_SLOT_GUST_JAR, 0x01, 0x0c,
|
||||
0x42, 0x33 },
|
||||
[MENU_SLOT_GUST_JAR] = { MENU_SLOT_BOTTLE1, MENU_SLOT_MOLE_MITTS, MENU_SLOT_SWORD, MENU_SLOT_CANE, 0x01, 0x10, 0x66,
|
||||
0x33 },
|
||||
[MENU_SLOT_CANE] = { MENU_SLOT_BOTTLE3, MENU_SLOT_LANTERN, MENU_SLOT_GUST_JAR, MENU_SLOT_BOOMERANG, 0x01, 0x14,
|
||||
0x8a, 0x33 },
|
||||
[MENU_SLOT_BOOMERANG] = { MENU_SLOT_SAVE_BUTTON, MENU_SLOT_BOMBS, MENU_SLOT_CANE, MENU_SLOT_SWORD, 0x01, 0x15, 0xae,
|
||||
0x33 },
|
||||
[MENU_SLOT_SHIELD] = { MENU_SLOT_SWORD, MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_BOMBS, MENU_SLOT_MOLE_MITTS, 0x01, 0x16,
|
||||
0x42, 0x4b },
|
||||
[MENU_SLOT_MOLE_MITTS] = { MENU_SLOT_GUST_JAR, MENU_SLOT_ROCS_CAPE, MENU_SLOT_SHIELD, MENU_SLOT_LANTERN, 0x01, 0x17,
|
||||
0x66, 0x4b },
|
||||
[MENU_SLOT_LANTERN] = { MENU_SLOT_CANE, MENU_SLOT_OCARINA, MENU_SLOT_MOLE_MITTS, MENU_SLOT_BOMBS, 0x01, 0x00, 0x8a,
|
||||
0x4b },
|
||||
[MENU_SLOT_BOMBS] = { MENU_SLOT_BOOMERANG, MENU_SLOT_BOW, MENU_SLOT_LANTERN, MENU_SLOT_SHIELD, 0x01, 0x00, 0xae,
|
||||
0x4b },
|
||||
[MENU_SLOT_PEGASUS_BOOTS] = { MENU_SLOT_SHIELD, MENU_SLOT_BOTTLE0, MENU_SLOT_BOW, MENU_SLOT_ROCS_CAPE, 0x01, 0x00,
|
||||
0x42, 0x63 },
|
||||
[MENU_SLOT_ROCS_CAPE] = { MENU_SLOT_MOLE_MITTS, MENU_SLOT_BOTTLE1, MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_OCARINA, 0x01,
|
||||
0x00, 0x66, 0x63 },
|
||||
[MENU_SLOT_OCARINA] = { MENU_SLOT_LANTERN, MENU_SLOT_BOTTLE3, MENU_SLOT_ROCS_CAPE, MENU_SLOT_BOW, 0x01, 0x00, 0x8a,
|
||||
0x63 },
|
||||
[MENU_SLOT_BOW] = { MENU_SLOT_BOMBS, MENU_SLOT_SAVE_BUTTON, MENU_SLOT_OCARINA, MENU_SLOT_PEGASUS_BOOTS, 0x01, 0x00,
|
||||
0xae, 0x63 },
|
||||
[MENU_SLOT_BOTTLE0] = { MENU_SLOT_PEGASUS_BOOTS, MENU_SLOT_SWORD, MENU_SLOT_SAVE_BUTTON, MENU_SLOT_BOTTLE1, 0x01,
|
||||
0x00, 0x42, 0x7b },
|
||||
[MENU_SLOT_BOTTLE1] = { MENU_SLOT_ROCS_CAPE, MENU_SLOT_GUST_JAR, MENU_SLOT_BOTTLE0, MENU_SLOT_BOTTLE2, 0x01, 0x00,
|
||||
0x5a, 0x7b },
|
||||
[MENU_SLOT_BOTTLE2] = { MENU_SLOT_ROCS_CAPE, MENU_SLOT_GUST_JAR, MENU_SLOT_BOTTLE1, MENU_SLOT_BOTTLE3, 0x01, 0x00,
|
||||
0x72, 0x7b },
|
||||
[MENU_SLOT_BOTTLE3] = { MENU_SLOT_OCARINA, MENU_SLOT_CANE, MENU_SLOT_BOTTLE2, MENU_SLOT_SAVE_BUTTON, 0x01, 0x00,
|
||||
0x8a, 0x7b },
|
||||
[MENU_SLOT_SAVE_BUTTON] = { MENU_SLOT_BOW, MENU_SLOT_BOOMERANG, MENU_SLOT_BOTTLE3, MENU_SLOT_BOTTLE0, 0x03, 0x00,
|
||||
0xb5, 0x75 },
|
||||
[MENU_SLOT_SAVE_BUTTON_JP] = { MENU_SLOT_BOW, MENU_SLOT_BOOMERANG, MENU_SLOT_BOTTLE3, MENU_SLOT_BOTTLE0, 0x05, 0x00,
|
||||
0xb5, 0x75 },
|
||||
};
|
||||
|
||||
void sub_080A6F6C(u32);
|
||||
void PauseMenu_ItemMenu_Update(void) {
|
||||
static const u8 gUnk_08128BF4[] = { 14, 15, 2, 0 };
|
||||
u32 item;
|
||||
u32 menuSlot;
|
||||
const ItemMenuTableEntry* entry;
|
||||
|
||||
if (sub_080A51F4()) {
|
||||
gMenu.field_0xc = (u8*)gUnk_08128BF4;
|
||||
menuSlot = gMenu.field_0x3;
|
||||
|
||||
entry = &gItemMenuTable[menuSlot];
|
||||
switch (gInput.newKeys) {
|
||||
case A_BUTTON:
|
||||
if (menuSlot == MENU_SLOT_SAVE_BUTTON) {
|
||||
#if defined(DEMO_USA) || defined(DEMO_JP)
|
||||
SoundReq(SFX_MENU_ERROR);
|
||||
#else
|
||||
sub_080A4E84(0xb);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case B_BUTTON:
|
||||
if (gPauseMenu.items[menuSlot] != 0) {
|
||||
u32 slot = !!(gInput.newKeys ^ 1);
|
||||
ForceEquipItem(gPauseMenu.items[menuSlot], slot);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
switch (gInput.unk4) {
|
||||
case DPAD_UP:
|
||||
menuSlot = entry->up;
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
menuSlot = entry->down;
|
||||
break;
|
||||
case DPAD_LEFT:
|
||||
menuSlot = entry->left;
|
||||
break;
|
||||
case DPAD_RIGHT:
|
||||
menuSlot = entry->right;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (gMenu.field_0x3 != menuSlot) {
|
||||
gMenu.field_0x3 = menuSlot;
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
item = gPauseMenu.items[menuSlot];
|
||||
switch (menuSlot) {
|
||||
case MENU_SLOT_BOTTLE0:
|
||||
case MENU_SLOT_BOTTLE1:
|
||||
case MENU_SLOT_BOTTLE2:
|
||||
case MENU_SLOT_BOTTLE3:
|
||||
if (item != 0) {
|
||||
item = gSave.saved_status.field_0x24[item - 6];
|
||||
}
|
||||
break;
|
||||
case MENU_SLOT_SAVE_BUTTON:
|
||||
// ITEM_SKILL_FAST_SPIN, but that does not make any sense at all
|
||||
item = 0x73;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
sub_080A6F6C(item + 0x400);
|
||||
}
|
||||
}
|
||||
|
||||
u32 GetMenuSlotForItem(u32 item);
|
||||
extern u8* gSpriteAnimations_322[];
|
||||
#ifdef EU
|
||||
#define sub_080A5384_draw_constant0 0x1fa
|
||||
#define sub_080A5384_draw_constant1 0x141
|
||||
#else
|
||||
#define sub_080A5384_draw_constant0 0x1fb
|
||||
#define sub_080A5384_draw_constant1 0x142
|
||||
#endif
|
||||
void PauseMenu_ItemMenu_Draw(void) {
|
||||
u32 tmp;
|
||||
u32 i;
|
||||
s32 color;
|
||||
const ItemMenuTableEntry* entry;
|
||||
|
||||
gOamCmd._4 = 0x400;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0;
|
||||
for (i = 0; i < MENU_SLOT_COUNT; i++) {
|
||||
u32 item;
|
||||
if (gPauseMenu.items[i] != 0) {
|
||||
entry = &gItemMenuTable[i];
|
||||
gOamCmd.x = entry->x;
|
||||
gOamCmd.y = entry->y;
|
||||
item = gPauseMenu.items[i];
|
||||
switch (item) {
|
||||
case ITEM_BOTTLE1:
|
||||
case ITEM_BOTTLE2:
|
||||
case ITEM_BOTTLE3:
|
||||
case ITEM_BOTTLE4:
|
||||
item = gSave.stats.bottles[item - ITEM_BOTTLE1];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
color = 3;
|
||||
switch (item) {
|
||||
case ITEM_BOMBS:
|
||||
case ITEM_REMOTE_BOMBS:
|
||||
if (gBombBagSizes[gSave.stats.bombBagType] <= gSave.stats.bombCount) {
|
||||
color = 4;
|
||||
}
|
||||
break;
|
||||
case ITEM_BOW:
|
||||
case ITEM_LIGHT_ARROW:
|
||||
if (gQuiverSizes[gSave.stats.quiverType] <= gSave.stats.arrowCount) {
|
||||
color = 4;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
gOamCmd._8 = 0x800 | color << 0xc | ((i * 8) + 0x360);
|
||||
DrawDirect(sub_080A5384_draw_constant1, *gSpriteAnimations_322[item]);
|
||||
}
|
||||
}
|
||||
gOamCmd._8 = 0x800;
|
||||
{
|
||||
u32 slot = gMenu.field_0x3;
|
||||
if ((slot == MENU_SLOT_SAVE_BUTTON) && (gSaveHeader->language != 0)) {
|
||||
slot = MENU_SLOT_SAVE_BUTTON_JP;
|
||||
}
|
||||
entry = &gItemMenuTable[slot];
|
||||
gOamCmd.x = entry->x;
|
||||
gOamCmd.y = entry->y;
|
||||
tmp = entry->type + ((gMain.ticks & 0x10) != 0 ? 3 : 4);
|
||||
DrawDirect(sub_080A5384_draw_constant0, tmp);
|
||||
}
|
||||
{
|
||||
u32 slot;
|
||||
if (gSaveHeader->language != 0) {
|
||||
slot = MENU_SLOT_SAVE_BUTTON;
|
||||
} else {
|
||||
slot = MENU_SLOT_SAVE_BUTTON_JP;
|
||||
}
|
||||
entry = &gItemMenuTable[slot];
|
||||
gOamCmd.x = entry->x;
|
||||
gOamCmd.y = entry->y;
|
||||
gOamCmd._8 = 0x800;
|
||||
DrawDirect(sub_080A5384_draw_constant0, 0x22);
|
||||
}
|
||||
i = GetMenuSlotForItem(gSave.stats.itemButtons[SLOT_A]);
|
||||
if (i < MENU_SLOT_COUNT) {
|
||||
entry = &gItemMenuTable[i];
|
||||
gOamCmd.x = entry->x;
|
||||
gOamCmd.y = entry->y;
|
||||
DrawDirect(sub_080A5384_draw_constant0, 3);
|
||||
}
|
||||
i = GetMenuSlotForItem(gSave.stats.itemButtons[SLOT_B]);
|
||||
if (i < MENU_SLOT_COUNT) {
|
||||
entry = &gItemMenuTable[i];
|
||||
gOamCmd.x = entry->x;
|
||||
gOamCmd.y = entry->y;
|
||||
DrawDirect(sub_080A5384_draw_constant0, 3);
|
||||
}
|
||||
}
|
||||
|
||||
u32 GetMenuSlotForItem(u32 item) {
|
||||
u32 i;
|
||||
|
||||
if (item != 0) {
|
||||
for (i = 0; i < MENU_SLOT_COUNT; i++) {
|
||||
if (item == gPauseMenu.items[i])
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return MENU_SLOT_SAVE_BUTTON_JP;
|
||||
}
|
||||
|
||||
Subtask sub_080A5594;
|
||||
Subtask sub_080A56A0;
|
||||
void PauseMenu2(void) {
|
||||
static Subtask* const pauseMenu2_Types[] = {
|
||||
sub_080A5594,
|
||||
sub_080A56A0,
|
||||
};
|
||||
pauseMenu2_Types[gMenu.menuType]();
|
||||
sub_080A57F4();
|
||||
}
|
||||
+22
-23
@@ -67,31 +67,30 @@ bool32 TileCollisionFunction0(s32 x, s32 y) {
|
||||
bool32 TileCollisionFunction1(s32 x, s32 y) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const u16 gUnk_08133918[] = {
|
||||
/*
|
||||
0b1000000000000000,
|
||||
0b1100000000000000,
|
||||
0b1110000000000000,
|
||||
0b1111000000000000,
|
||||
0b1111100000000000,
|
||||
0b1111110000000000,
|
||||
0b1111111000000000,
|
||||
0b1111111100000000,
|
||||
0b1111111110000000,
|
||||
0b1111111111000000,
|
||||
0b1111111111100000,
|
||||
0b1111111111110000,
|
||||
0b1111111111111000,
|
||||
0b1111111111111100,
|
||||
0b1111111111111110,
|
||||
0b1111111111111111,
|
||||
*/
|
||||
0x8000, 0xC000, 0xE000, 0xF000, 0xF800, 0xFC00, 0xFE00, 0xFF00,
|
||||
0xFF80, 0xFFC0, 0xFFE0, 0xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF,
|
||||
};
|
||||
/** Diagonal North West filled*/
|
||||
bool32 TileCollisionFunction2(s32 x, s32 y) {
|
||||
static const u16 gUnk_08133918[] = {
|
||||
/*
|
||||
0b1000000000000000,
|
||||
0b1100000000000000,
|
||||
0b1110000000000000,
|
||||
0b1111000000000000,
|
||||
0b1111100000000000,
|
||||
0b1111110000000000,
|
||||
0b1111111000000000,
|
||||
0b1111111100000000,
|
||||
0b1111111110000000,
|
||||
0b1111111111000000,
|
||||
0b1111111111100000,
|
||||
0b1111111111110000,
|
||||
0b1111111111111000,
|
||||
0b1111111111111100,
|
||||
0b1111111111111110,
|
||||
0b1111111111111111,
|
||||
*/
|
||||
0x8000, 0xC000, 0xE000, 0xF000, 0xF800, 0xFC00, 0xFE00, 0xFF00,
|
||||
0xFF80, 0xFFC0, 0xFFE0, 0xFFF0, 0xFFF8, 0xFFFC, 0xFFFE, 0xFFFF,
|
||||
};
|
||||
|
||||
return gUnk_08133918[y & 0xf] >> (x & 0xf) & 1;
|
||||
}
|
||||
|
||||
+2
-2
@@ -70,7 +70,7 @@ void sub_080632C8(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080632E0(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810C8D4) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810C8D4)) {
|
||||
InitializeAnimation(this, 0);
|
||||
sub_08078778(this);
|
||||
this->spriteSettings.draw = 1;
|
||||
@@ -127,7 +127,7 @@ void Beedle_Head(Entity* this) {
|
||||
|
||||
void sub_08063410(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810C8D4) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_0810C8D4)) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
|
||||
+197
-20
@@ -11,25 +11,202 @@
|
||||
#include "game.h"
|
||||
#include "item.h"
|
||||
|
||||
extern void (*gUnk_081115C0[])(Entity*);
|
||||
extern void (*gUnk_081115D0[])(Entity*);
|
||||
void sub_08068A1C(Entity*);
|
||||
void sub_08068A4C(Entity*);
|
||||
void sub_08068AA4(Entity*);
|
||||
void sub_08068ADC(Entity*);
|
||||
void (*const gUnk_081115C0[])(Entity*) = {
|
||||
sub_08068A1C,
|
||||
sub_08068A4C,
|
||||
sub_08068AA4,
|
||||
sub_08068ADC,
|
||||
};
|
||||
void sub_08068AFC(Entity*);
|
||||
void sub_08068b2c(Entity*);
|
||||
void sub_08068B70(Entity*);
|
||||
void (*const gUnk_081115D0[])(Entity*) = {
|
||||
sub_08068AFC,
|
||||
sub_08068b2c,
|
||||
sub_08068B70,
|
||||
};
|
||||
|
||||
const u16 gUnk_081115DC[] = { 183, 184, 185, 186, 187, 188, 189, 190 };
|
||||
|
||||
// TODO extract macros
|
||||
extern const PlayerMacroEntry gUnk_08004A0C;
|
||||
extern const PlayerMacroEntry gUnk_08004A16;
|
||||
extern const PlayerMacroEntry gUnk_08004A24;
|
||||
extern const PlayerMacroEntry gUnk_08004A32;
|
||||
extern const PlayerMacroEntry gUnk_08004A48;
|
||||
extern const PlayerMacroEntry gUnk_08004A72;
|
||||
extern const PlayerMacroEntry gUnk_08004A8C;
|
||||
extern const PlayerMacroEntry gUnk_08004AA6;
|
||||
const PlayerMacroEntry* const BladeBrothers_PlayerMacros[] = {
|
||||
&gUnk_08004A0C, &gUnk_08004A16, &gUnk_08004A24, &gUnk_08004A32, &gUnk_08004A48, &gUnk_08004A72,
|
||||
&gUnk_08004A8C, &gUnk_08004AA6, NULL, NULL, NULL,
|
||||
};
|
||||
|
||||
const u8 BladeBrothers_EquippedItem[] = {
|
||||
0, 0, ITEM_PEGASUS_BOOTS, ITEM_ROCS_CAPE, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
const u8 gUnk_08111623[] = {
|
||||
7, 0, 4, 6, 5, 8, 9, 10,
|
||||
};
|
||||
const u8 gUnk_0811162B[] = {
|
||||
ITEM_SKILL_SPIN_ATTACK,
|
||||
ITEM_SKILL_ROCK_BREAKER,
|
||||
ITEM_SKILL_DASH_ATTACK,
|
||||
ITEM_SKILL_DOWN_THRUST,
|
||||
ITEM_SKILL_ROLL_ATTACK,
|
||||
ITEM_SKILL_SWORD_BEAM,
|
||||
ITEM_SKILL_PERIL_BEAM,
|
||||
ITEM_SKILL_GREAT_SPIN,
|
||||
243,
|
||||
244,
|
||||
245,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
const u16 gUnk_08111664[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x01), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x09), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x11),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x19), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x22), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x2b),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x34), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x3d), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x46),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x50), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x5a),
|
||||
};
|
||||
|
||||
const u16 gUnk_0811167A[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x02), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0a), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x12),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1a), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x23), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x2c),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x35), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x3e), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x47),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x51), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x5b),
|
||||
};
|
||||
const u16 gUnk_08111690[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x03),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0b),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x13),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1b),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x24),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x2d),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x36),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x3f),
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
};
|
||||
const u16 gUnk_081116A6[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x04), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0c), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x14),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1c), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x25), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x2e),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x37), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x40), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x48),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x52), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x5c),
|
||||
};
|
||||
const u16 gUnk_081116BC[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x05),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0d),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x15),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1d),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x26),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x2f),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x38),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x41),
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
};
|
||||
const u16 gUnk_081116D2[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x06), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0e), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x16),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1e), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x27), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x30),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x39), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x42), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x49),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x53), TEXT_INDEX(TEXT_BLADE_MASTERS, 0x5d),
|
||||
};
|
||||
const u16 gUnk_081116E8[] = {
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1f),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x28),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x31),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x3a),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x43),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1f),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1f),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x1f),
|
||||
};
|
||||
const u16 gUnk_081116FE[] = {
|
||||
0x0,
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x07),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x0f),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x17),
|
||||
0x0,
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x32),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x3b),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x44),
|
||||
0x0,
|
||||
0x0,
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x5e),
|
||||
};
|
||||
const u16 gUnk_08111714[] = {
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x60),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x61),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x62),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x63),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x64),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x65),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x66),
|
||||
TEXT_INDEX(TEXT_BLADE_MASTERS, 0x67),
|
||||
0x0,
|
||||
0x0,
|
||||
0x0,
|
||||
};
|
||||
|
||||
const u16 gUnk_0811172A[] = { 0, 0, 30, 0, 0, 0, 0, 30, 0, 0, 0 };
|
||||
const u32 gUnk_08111740[] = { 1, 4, 3, 7, 2, 5, 8, 6, 10, 11, 12 };
|
||||
|
||||
extern u16 gUnk_081115DC[];
|
||||
extern u8 BladeBrothers_EquippedItem[];
|
||||
extern PlayerMacroEntry* BladeBrothers_PlayerMacros[];
|
||||
extern u8 gUnk_08111623[];
|
||||
extern u8 gUnk_0811162B[];
|
||||
extern u16 gUnk_08111664[];
|
||||
extern u16 gUnk_0811167A[];
|
||||
extern u16 gUnk_08111690[];
|
||||
extern u16 gUnk_081116A6[];
|
||||
extern u16 gUnk_081116BC[];
|
||||
extern u16 gUnk_081116D2[];
|
||||
extern u16 gUnk_081116E8[];
|
||||
extern u16 gUnk_081116FE[];
|
||||
extern u16 gUnk_08111714[];
|
||||
extern u32 gUnk_08111740[];
|
||||
extern u16 gUnk_0811172A[];
|
||||
extern u32 gUnk_0300402B;
|
||||
extern EntityData gUnk_080F3494;
|
||||
|
||||
@@ -146,7 +323,7 @@ void BladeBrothers_StartPlayerDemonstration(Entity* this, ScriptExecutionContext
|
||||
if (p = this->timer, BladeBrothers_EquippedItem[p]) {
|
||||
ForceEquipItem(BladeBrothers_EquippedItem[this->timer], EQUIP_SLOT_A);
|
||||
}
|
||||
InitPlayerMacro(BladeBrothers_PlayerMacros[this->timer]);
|
||||
InitPlayerMacro((PlayerMacroEntry*)BladeBrothers_PlayerMacros[this->timer]);
|
||||
}
|
||||
|
||||
void sub_08068BB4(Entity* this) {
|
||||
@@ -196,7 +373,7 @@ void BladeBrothers_GetScroll(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08068C8C(Entity* this, ScriptExecutionContext* context) {
|
||||
u8* arr = gUnk_0811162B + 0xd;
|
||||
const u8* arr = gUnk_0811162B + 0xd;
|
||||
context->condition = *(u32*)(arr + this->timer * 4);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ void sub_08067314(Entity* this) {
|
||||
|
||||
void Carpenter_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08110CA8[this->type * 4]) != 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08110CA8[this->type * 4])) {
|
||||
this->action = this->action + 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
|
||||
@@ -66,7 +66,7 @@ void sub_08064570(CastleMaidEntity* this) {
|
||||
tmp3 = 0;
|
||||
}
|
||||
data = &gUnk_0810F874[tmp3 * 3];
|
||||
if (LoadExtraSpriteData(super, data) == 0) {
|
||||
if (!LoadExtraSpriteData(super, data)) {
|
||||
return;
|
||||
}
|
||||
super->action++;
|
||||
|
||||
+165
-20
@@ -4,32 +4,177 @@
|
||||
#include "npc.h"
|
||||
#include "item.h"
|
||||
|
||||
extern void (*gUnk_08111D88[])(Entity*);
|
||||
void sub_08069FE8(Entity*);
|
||||
u32 sub_08069EF0(Entity*);
|
||||
|
||||
extern u8 gUnk_08111DA8[];
|
||||
bool32 sub_08069EF0(Entity*);
|
||||
bool32 sub_08069F90(Entity*);
|
||||
void sub_08069F6C(Entity*);
|
||||
void sub_08069D00(Entity*);
|
||||
void sub_08069CB8(Entity*);
|
||||
|
||||
extern u8 gUnk_08111DB0[];
|
||||
void sub_0806A028(Entity*);
|
||||
|
||||
void sub_08069FBC(Entity*);
|
||||
|
||||
extern SpriteLoadData gUnk_08111D58[];
|
||||
extern u8 gUnk_08111E30[];
|
||||
|
||||
void sub_0806A080(Entity*);
|
||||
|
||||
extern Dialog gUnk_08111E34[][10];
|
||||
const SpriteLoadData gUnk_08111D58[] = {
|
||||
#ifdef EU
|
||||
{ 82, 67, 4 }, { 7250, 67, 4 }, { 0, 0, 0 }, { 64, 69, 4 }, { 7232, 69, 4 }, { 0, 0, 0 },
|
||||
#else
|
||||
{ 82, 67, 4 }, { 7250, 67, 4 }, { 0, 0, 0 }, { 1, 69, 4 }, { 7169, 69, 4 }, { 0, 0, 0 },
|
||||
#endif
|
||||
{ 4, 68, 4 }, { 7172, 68, 4 }, { 0, 0, 0 }, { 83, 69, 4 }, { 7251, 69, 4 }, { 0, 0, 0 },
|
||||
};
|
||||
|
||||
extern u16 gUnk_08111F74[][5];
|
||||
void sub_08069B44(Entity*);
|
||||
void sub_08069C40(Entity*);
|
||||
void sub_08069D54(Entity*);
|
||||
void sub_08069DF8(Entity*);
|
||||
void sub_08069E44(Entity*);
|
||||
void sub_08069E50(Entity*);
|
||||
void sub_08069ECC(Entity*);
|
||||
void sub_08069EE0(Entity*);
|
||||
void (*const gUnk_08111D88[])(Entity*) = {
|
||||
sub_08069B44, sub_08069C40, sub_08069D54, sub_08069DF8, sub_08069E44, sub_08069E50, sub_08069ECC, sub_08069EE0,
|
||||
};
|
||||
|
||||
extern u16 gUnk_08111FD8[];
|
||||
const u8 gUnk_08111DA8[] = { 7, 23, 8, 24, 8, 24, 9, 25 };
|
||||
const u8 gUnk_08111DB0[] = {
|
||||
24, 24, 24, 24, 25, 25, 25, 25, 77, 77, 77, 77, 78, 78, 78, 146, 146, 214, 214, 214, 215, 215,
|
||||
215, 215, 27, 27, 27, 27, 24, 24, 24, 24, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77,
|
||||
78, 78, 78, 78, 146, 146, 146, 146, 147, 147, 147, 215, 215, 27, 27, 27, 24, 24, 24, 24, 24, 76,
|
||||
76, 76, 77, 77, 77, 77, 145, 145, 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147, 147,
|
||||
215, 215, 215, 215, 212, 212, 212, 24, 24, 24, 24, 24, 25, 25, 25, 77, 77, 145, 145, 145, 146, 146,
|
||||
146, 146, 214, 214, 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, 212, 212, 212, 212,
|
||||
};
|
||||
const u8 gUnk_08111E30[] = { 19, 13, 13, 13 };
|
||||
|
||||
void sub_0806A0A4(Entity*);
|
||||
void sub_0806A144(Entity*);
|
||||
|
||||
const Dialog gUnk_08111E34[][10] = {
|
||||
{
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_LON_LON, 0x8), TEXT_INDEX(TEXT_STOCKWELL, 0x23) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN, 0x18), TEXT_INDEX(TEXT_TOWN, 0x19) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN, 0x18), TEXT_INDEX(TEXT_TOWN, 0x19) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN, 0x18), TEXT_INDEX(TEXT_TOWN, 0x19) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN, 0x18), TEXT_INDEX(TEXT_TOWN, 0x19) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN2, 0x14), TEXT_INDEX(TEXT_TOWN2, 0x15) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN3, 0x14), TEXT_INDEX(TEXT_TOWN3, 0x15) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN4, 0x14), TEXT_INDEX(TEXT_TOWN4, 0x15) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN5, 0x14), TEXT_INDEX(TEXT_TOWN5, 0x15) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN6, 0x13), TEXT_INDEX(TEXT_TOWN6, 0x14) } },
|
||||
{ 0, 0, DIALOG_MINISH, 1, { TEXT_INDEX(TEXT_TOWN6, 0x13), TEXT_INDEX(TEXT_TOWN6, 0x14) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A0A4 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806A144 } },
|
||||
}
|
||||
};
|
||||
const u16 gUnk_08111F74[][5] = {
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3b),
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3c),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x32),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x34),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3b),
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3c),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x32),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x34),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3b),
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3c),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x32),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x34),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3b),
|
||||
TEXT_INDEX(TEXT_TOWN, 0x3c),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x32),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x34),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x30),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x31),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x32),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x34),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN3, 0x2c),
|
||||
TEXT_INDEX(TEXT_TOWN3, 0x2d),
|
||||
TEXT_INDEX(TEXT_TOWN3, 0x2e),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN3, 0x2f),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x28),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x29),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x2a),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x2b),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x28),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x29),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x2a),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x2b),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x21),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x22),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x23),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x24),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x21),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x22),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x23),
|
||||
TEXT_INDEX(TEXT_TOWN2, 0x33),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x24),
|
||||
},
|
||||
};
|
||||
const u16 gUnk_08111FD8[] = {
|
||||
TEXT_INDEX(TEXT_TOWN8, 0x7), TEXT_INDEX(TEXT_TOWN8, 0x8), TEXT_INDEX(TEXT_TOWN8, 0x9),
|
||||
TEXT_INDEX(TEXT_TOWN8, 0x11), TEXT_INDEX(TEXT_TOWN8, 0x3),
|
||||
};
|
||||
void Dog(Entity* this) {
|
||||
gUnk_08111D88[this->action](this);
|
||||
sub_0806ED78(this);
|
||||
@@ -41,7 +186,7 @@ void sub_08069B44(Entity* this) {
|
||||
u32 sVar3;
|
||||
u32 uVar4;
|
||||
u32 uVar5;
|
||||
if (sub_08069EF0(this) != 0) {
|
||||
if (sub_08069EF0(this)) {
|
||||
uVar5 = sub_0805ACC0(this);
|
||||
if (uVar5 == 0) {
|
||||
sVar3 = this->x.HALF.HI;
|
||||
@@ -234,13 +379,13 @@ void sub_08069EE8(Entity* this) {
|
||||
this->action = 5;
|
||||
}
|
||||
|
||||
u32 sub_08069EF0(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111D58[this->type * 3]) == 0) {
|
||||
return 0;
|
||||
bool32 sub_08069EF0(Entity* this) {
|
||||
if (!LoadExtraSpriteData(this, &gUnk_08111D58[this->type * 3])) {
|
||||
return FALSE;
|
||||
}
|
||||
this->action = 1;
|
||||
this->field_0x68.HWORD = gUnk_08111E30[this->type];
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Dog_Head(Entity* this) {
|
||||
@@ -358,7 +503,7 @@ void sub_0806A144(Entity* this) {
|
||||
|
||||
void Dog_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (sub_08069EF0(this) != 0) {
|
||||
if (sub_08069EF0(this)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ void sub_0806BC58(Entity* this);
|
||||
|
||||
void Farmers(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113140[this->type * 3]) == 0) {
|
||||
if (!LoadExtraSpriteData(this, &gUnk_08113140[this->type * 3])) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
@@ -81,8 +81,8 @@ void sub_0806BCE8(Entity* this) {
|
||||
|
||||
void Farmers_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113140[this->type * 3]) != 0) {
|
||||
this->action = this->action + 1;
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113140[this->type * 3])) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->spriteSettings.flipX = 0;
|
||||
sub_0806BC58(this);
|
||||
|
||||
+505
-19
@@ -1,24 +1,510 @@
|
||||
#include "npc.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "playeritem.h"
|
||||
#include "item.h"
|
||||
#include "kinstone.h"
|
||||
#include "npc.h"
|
||||
#include "object.h"
|
||||
#include "playeritem.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern SpriteLoadData gUnk_0810A348;
|
||||
extern u8* gUnk_08109D18[];
|
||||
extern u8 gUnk_08109C98[];
|
||||
extern u16 gUnk_0810A354[];
|
||||
extern Dialog gUnk_08109DC8[];
|
||||
extern u16 gUnk_0810A35A[];
|
||||
extern u16 gUnk_0810A362[];
|
||||
const FrameStruct gUnk_08109C98[] = {
|
||||
{ 36, 26 }, { 37, 26 }, { 38, 26 }, { 39, 155 }, { 40, 155 }, { 41, 155 }, { 42, 155 }, { 43, 152 },
|
||||
{ 28, 152 }, { 29, 152 }, { 30, 153 }, { 31, 153 }, { 32, 153 }, { 33, 153 }, { 34, 26 }, { 35, 26 },
|
||||
{ 36, 154 }, { 37, 154 }, { 38, 27 }, { 39, 27 }, { 40, 27 }, { 41, 27 }, { 42, 27 }, { 43, 152 },
|
||||
{ 28, 152 }, { 29, 152 }, { 30, 152 }, { 31, 153 }, { 32, 153 }, { 33, 153 }, { 34, 154 }, { 35, 154 },
|
||||
{ 36, 154 }, { 37, 154 }, { 38, 155 }, { 39, 155 }, { 40, 155 }, { 41, 155 }, { 42, 24 }, { 43, 24 },
|
||||
{ 28, 24 }, { 29, 24 }, { 30, 24 }, { 31, 153 }, { 32, 153 }, { 33, 153 }, { 34, 153 }, { 35, 154 },
|
||||
{ 36, 154 }, { 37, 154 }, { 38, 154 }, { 39, 155 }, { 40, 155 }, { 41, 155 }, { 42, 152 }, { 43, 152 },
|
||||
{ 28, 152 }, { 29, 152 }, { 30, 25 }, { 31, 25 }, { 32, 25 }, { 33, 25 }, { 34, 25 }, { 35, 154 },
|
||||
};
|
||||
extern Script script_BombMinish;
|
||||
extern Script script_BombMinishKinstone;
|
||||
extern Script script_ForestMinish1;
|
||||
extern Script script_ForestMinish2;
|
||||
extern Script script_ForestMinish3;
|
||||
extern Script script_ForestMinish4;
|
||||
extern Script script_ForestMinish5;
|
||||
extern Script script_ForestMinish6;
|
||||
extern Script script_ForestMinish7;
|
||||
extern Script script_ForestMinish8;
|
||||
extern Script script_ForestMinish9;
|
||||
extern Script script_ForestMinish10;
|
||||
extern Script script_ForestMinish11;
|
||||
extern Script script_ForestMinish12;
|
||||
extern Script script_ForestMinish13;
|
||||
extern Script script_ForestMinish14;
|
||||
extern Script script_ForestMinish15;
|
||||
extern Script script_ForestMinish16;
|
||||
extern Script script_ForestMinish17;
|
||||
extern Script script_ForestMinish18;
|
||||
extern Script script_ForestMinish19;
|
||||
extern Script script_ForestMinish20;
|
||||
extern Script script_ForestMinish21;
|
||||
Script* const gUnk_08109D18[] = {
|
||||
&script_BombMinish, &script_BombMinishKinstone, &script_ForestMinish12, &script_ForestMinish13,
|
||||
&script_ForestMinish14, &script_ForestMinish15, &script_ForestMinish16, &script_ForestMinish17,
|
||||
&script_ForestMinish18, &script_ForestMinish19, &script_ForestMinish20, &script_ForestMinish21,
|
||||
&script_ForestMinish1, &script_ForestMinish1, &script_ForestMinish1, &script_ForestMinish2,
|
||||
&script_ForestMinish3, &script_ForestMinish1, &script_ForestMinish1, &script_ForestMinish1,
|
||||
&script_ForestMinish1, &script_ForestMinish1, &script_ForestMinish10, &script_ForestMinish4,
|
||||
&script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4,
|
||||
&script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4,
|
||||
&script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4, &script_ForestMinish4,
|
||||
&script_ForestMinish11, &script_ForestMinish11, &script_ForestMinish11, &script_ForestMinish5,
|
||||
&script_ForestMinish6, &script_ForestMinish7, &script_ForestMinish8, &script_ForestMinish9,
|
||||
};
|
||||
|
||||
void sub_080601D4(Entity*);
|
||||
const Dialog gUnk_08109DC8[][4] = {
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ KINSTONE_24,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x4), TEXT_INDEX(TEXT_MINISH, 0x0) } },
|
||||
{ KINSTONE_24,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x4), TEXT_INDEX(TEXT_MINISH, 0x0) } },
|
||||
{ KINSTONE_24,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x4), TEXT_INDEX(TEXT_MINISH, 0x0) } },
|
||||
{ KINSTONE_24,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x4), TEXT_INDEX(TEXT_MINISH, 0x0) } },
|
||||
},
|
||||
{
|
||||
{ KINSTONE_14,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x9), TEXT_INDEX(TEXT_MINISH, 0x5) } },
|
||||
{ KINSTONE_14,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x9), TEXT_INDEX(TEXT_MINISH, 0x5) } },
|
||||
{ KINSTONE_14,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x9), TEXT_INDEX(TEXT_MINISH, 0x5) } },
|
||||
{ KINSTONE_14,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x9), TEXT_INDEX(TEXT_MINISH, 0x5) } },
|
||||
},
|
||||
{
|
||||
#if defined(USA) || defined(DEMO_USA)
|
||||
{ KINSTONE_3F,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_3F,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_3F,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_3F,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
#else
|
||||
{ KINSTONE_22,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_22,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_22,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
{ KINSTONE_22,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0xe), TEXT_INDEX(TEXT_MINISH, 0xa) } },
|
||||
#endif
|
||||
},
|
||||
{
|
||||
{ KINSTONE_2E,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x22), TEXT_INDEX(TEXT_MINISH, 0x1e) } },
|
||||
{ KINSTONE_2E,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x22), TEXT_INDEX(TEXT_MINISH, 0x1e) } },
|
||||
{ KINSTONE_2E,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x22), TEXT_INDEX(TEXT_MINISH, 0x1e) } },
|
||||
{ KINSTONE_2E,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x22), TEXT_INDEX(TEXT_MINISH, 0x1e) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x25) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x25) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x25) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x25) } },
|
||||
},
|
||||
{
|
||||
{ KINSTONE_23,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x13), TEXT_INDEX(TEXT_MINISH, 0xf) } },
|
||||
{ KINSTONE_23,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x13), TEXT_INDEX(TEXT_MINISH, 0xf) } },
|
||||
{ KINSTONE_23,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x13), TEXT_INDEX(TEXT_MINISH, 0xf) } },
|
||||
{ KINSTONE_23,
|
||||
DIALOG_KINSTONE,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_MINISH, 0x13), TEXT_INDEX(TEXT_MINISH, 0xf) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x1a) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x15) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_080601D4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_080601D4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_080601D4 } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_080601D4 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x1) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x3) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x23) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x24) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x6) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0xe) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0xe) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0xe) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x15) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x1a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x1a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x1a) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x1f) } },
|
||||
{ ITEM_GREEN_SWORD,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_FOREST_MINISH, 0x21), TEXT_INDEX(TEXT_FOREST_MINISH, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x21) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x24) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x25) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x25) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x29) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2b) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2e) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2f) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x2f) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x34) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x38) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x39) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x39) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x22) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x32) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x32) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x32) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_BELARI, 0x32) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x31) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x31) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x31) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FOREST_MINISH, 0x31) } },
|
||||
},
|
||||
{
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0x9), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x3) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0x9), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x3) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0x9), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x3) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0x9), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x3) } },
|
||||
},
|
||||
{
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xb), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x5) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xb), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x5) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xb), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x5) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xb), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x5) } },
|
||||
},
|
||||
{
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xc), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x6) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xc), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x6) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xc), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x6) } },
|
||||
{ ITEM_FLIPPERS,
|
||||
DIALOG_INVENTORY,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_TOWN_MINISH2, 0xc), TEXT_INDEX(TEXT_TOWN_MINISH2, 0x6) } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
},
|
||||
{
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
}
|
||||
};
|
||||
|
||||
const SpriteLoadData gUnk_0810A348[] = {
|
||||
{ 48, 31, 4 },
|
||||
{ 8240, 31, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
const u16 gUnk_0810A354[] = {
|
||||
TEXT_INDEX(TEXT_MINISH, 0x14),
|
||||
TEXT_INDEX(TEXT_MINISH, 0x18),
|
||||
TEXT_INDEX(TEXT_ANSWER_HOUSE, 0x26),
|
||||
};
|
||||
const u16 gUnk_0810A35A[] = {
|
||||
TEXT_INDEX(TEXT_UNK_WISE, 0x1),
|
||||
TEXT_INDEX(TEXT_UNK_WISE, 0x2),
|
||||
TEXT_INDEX(TEXT_UNK_WISE, 0x3),
|
||||
TEXT_INDEX(TEXT_UNK_WISE, 0x4),
|
||||
};
|
||||
const u16 gUnk_0810A362[] = {
|
||||
TEXT_INDEX(TEXT_BELARI, 0x2),
|
||||
TEXT_INDEX(TEXT_BELARI, 0x3),
|
||||
TEXT_INDEX(TEXT_BELARI, 0x9),
|
||||
TEXT_INDEX(TEXT_BELARI, 0x8),
|
||||
};
|
||||
|
||||
static void sub_080600F0(Entity* this);
|
||||
|
||||
void ForestMinish(Entity* this) {
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810A348)) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810A348)) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.draw = TRUE;
|
||||
this->field_0x68.HALF.HI = this->animationState = this->timer << 1;
|
||||
@@ -100,7 +586,7 @@ void sub_0806014C(Entity* this) {
|
||||
|
||||
void sub_08060158(Entity* this) {
|
||||
int index;
|
||||
u8* idx3;
|
||||
const FrameStruct* idx3;
|
||||
u8 tmp1, tmp2;
|
||||
|
||||
if (this->timer) {
|
||||
@@ -114,9 +600,9 @@ void sub_08060158(Entity* this) {
|
||||
index = state * 4;
|
||||
}
|
||||
|
||||
idx3 = gUnk_08109C98 + (this->animationState / 2) * 0x20 + (index >> 1) * 2;
|
||||
tmp1 = idx3[0];
|
||||
tmp2 = idx3[1];
|
||||
idx3 = gUnk_08109C98 + (this->animationState / 2) * 0x10 + (index >> 1);
|
||||
tmp1 = idx3->frame;
|
||||
tmp2 = idx3->frameIndex;
|
||||
|
||||
if (tmp2 & 0x80) {
|
||||
this->animationState = sub_0806F5B0(index);
|
||||
@@ -144,7 +630,7 @@ void sub_080601D4(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08060208(Entity* this) {
|
||||
ShowNPCDialogue(this, &gUnk_08109DC8[this->type2 * 0x4]);
|
||||
ShowNPCDialogue(this, gUnk_08109DC8[this->type2]);
|
||||
}
|
||||
|
||||
void sub_0806021C(Entity* this) {
|
||||
@@ -161,11 +647,11 @@ void sub_0806021C(Entity* this) {
|
||||
if (GetInventoryValue(ITEM_MOLE_MITTS)) {
|
||||
uVar2 = 3;
|
||||
}
|
||||
ShowNPCDialogue(this, gUnk_08109DC8 + this->type2 * 0x4 + uVar2);
|
||||
ShowNPCDialogue(this, &gUnk_08109DC8[this->type2][uVar2]);
|
||||
}
|
||||
|
||||
void sub_0806025C(Entity* this) {
|
||||
ShowNPCDialogue(this, &gUnk_08109DC8[this->type2 * 0x4]);
|
||||
ShowNPCDialogue(this, gUnk_08109DC8[this->type2]);
|
||||
}
|
||||
|
||||
void sub_08060270(Entity* this) {
|
||||
@@ -249,7 +735,7 @@ u32 sub_08060354(void) {
|
||||
|
||||
void ForestMinish_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810A348)) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810A348)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = TRUE;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
|
||||
+57
-30
@@ -1,30 +1,57 @@
|
||||
#include "functions.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern void (*const gUnk_08111C48[])(Entity*);
|
||||
|
||||
void sub_080697A4(Entity* this);
|
||||
void sub_08069838(Entity* this);
|
||||
|
||||
extern SpriteLoadData gUnk_08111C3C;
|
||||
|
||||
extern u8 gUnk_08111C9C[];
|
||||
|
||||
extern u8 gUnk_08111CA8[];
|
||||
|
||||
extern u8 gUnk_08111CB4[];
|
||||
|
||||
extern u8 gUnk_08111CB8[];
|
||||
|
||||
void sub_08069888(Entity* this);
|
||||
|
||||
extern u16 gUnk_08111C50[];
|
||||
|
||||
extern const s16 gUnk_08111C5C[];
|
||||
extern const u8 gUnk_08111C74[];
|
||||
|
||||
extern const s16 gUnk_08111C84[];
|
||||
extern const u8 gUnk_08111C8C[];
|
||||
const SpriteLoadData gUnk_08111C3C[] = {
|
||||
{ 193, 64, 4 },
|
||||
{ 5313, 64, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
void sub_080697C4(Entity*);
|
||||
void sub_080697EC(Entity*);
|
||||
void (*const gUnk_08111C48[])(Entity*) = {
|
||||
sub_080697C4,
|
||||
sub_080697EC,
|
||||
};
|
||||
const u16 gUnk_08111C50[] = {
|
||||
TEXT_INDEX(TEXT_GORMAN_ORACLES, 0x1), TEXT_INDEX(TEXT_GORMAN_ORACLES, 0x2), TEXT_INDEX(TEXT_GORMAN_ORACLES, 0xc),
|
||||
TEXT_INDEX(TEXT_GORMAN_ORACLES, 0xd), TEXT_INDEX(TEXT_GORMAN_ORACLES, 0xe), TEXT_INDEX(TEXT_GORMAN_ORACLES, 0x15),
|
||||
};
|
||||
const Coords gUnk_08111C5C[] = {
|
||||
{ .HALF = { 0x68, 0x1c8 } }, { .HALF = { 0x28, 0x1c8 } }, { .HALF = { 0x68, 0x188 } },
|
||||
{ .HALF = { 0x68, 0x1c8 } }, { .HALF = { 0x28, 0x188 } }, { .HALF = { 0x68, 0x188 } }
|
||||
};
|
||||
const u8 gUnk_08111C74[] = {
|
||||
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 0,
|
||||
};
|
||||
const Coords gUnk_08111C84[] = {
|
||||
{ .HALF = { 0x178, 0x108 } },
|
||||
{ .HALF = { 0x138, 0x108 } },
|
||||
};
|
||||
const u8 gUnk_08111C8C[] = {
|
||||
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 0,
|
||||
};
|
||||
const u8 gUnk_08111C9C[] = {
|
||||
0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5,
|
||||
};
|
||||
const u8 gUnk_08111CA8[] = {
|
||||
1, 2, 0, 0, 3, 4, 1, 2, 5, 5, 3, 4,
|
||||
};
|
||||
const u8 gUnk_08111CB4[] = {
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
};
|
||||
const u8 gUnk_08111CB8[] = {
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
void Gorman(Entity* this) {
|
||||
if ((this->flags & ENT_SCRIPTED) != 0) {
|
||||
@@ -40,7 +67,7 @@ void sub_080697A4(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080697C4(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111C3C) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111C3C)) {
|
||||
this->action = 1;
|
||||
InitializeAnimation(this, 2);
|
||||
sub_08078778(this);
|
||||
@@ -69,7 +96,7 @@ void sub_080697EC(Entity* this) {
|
||||
|
||||
void sub_08069838(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111C3C) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_08111C3C)) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
@@ -107,11 +134,11 @@ void sub_08069888(Entity* this) {
|
||||
|
||||
void sub_0806991C(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 tmp;
|
||||
const s16* ptr;
|
||||
const Coords* ptr;
|
||||
this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c;
|
||||
ptr = &gUnk_08111C5C[*(s8*)&this->field_0x68.HALF.HI * 2];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr[0];
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr[1];
|
||||
ptr = &gUnk_08111C5C[*(s8*)&this->field_0x68.HALF.HI];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr->HALF.x;
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr->HALF.y;
|
||||
context->unk_19 = 8;
|
||||
context->postScriptActions |= 2;
|
||||
context->condition = 0;
|
||||
@@ -123,11 +150,11 @@ void sub_0806991C(Entity* this, ScriptExecutionContext* context) {
|
||||
|
||||
void sub_080699AC(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 tmp;
|
||||
const s16* ptr;
|
||||
const Coords* ptr;
|
||||
this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c;
|
||||
ptr = &gUnk_08111C84[*(s8*)&this->field_0x68.HALF.HI * 2];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr[0];
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr[1];
|
||||
ptr = &gUnk_08111C84[*(s8*)&this->field_0x68.HALF.HI];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr->HALF.x;
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr->HALF.y;
|
||||
context->unk_19 = 8;
|
||||
context->postScriptActions |= 2;
|
||||
context->condition = 0;
|
||||
|
||||
+3
-3
@@ -1,8 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "effects.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "kinstone.h"
|
||||
#include "message.h"
|
||||
#include "effects.h"
|
||||
#include "npc.h"
|
||||
|
||||
void sub_08069310(Entity*);
|
||||
@@ -158,7 +158,7 @@ void sub_080694EC(Entity* this) {
|
||||
u32 anim;
|
||||
this->animationState = 4;
|
||||
anim = 2;
|
||||
if (!CheckKinstoneFused(47))
|
||||
if (!CheckKinstoneFused(KINSTONE_2F))
|
||||
anim = 8;
|
||||
InitAnimationForceUpdate(this, anim);
|
||||
this->field_0x80.HWORD = anim;
|
||||
|
||||
+235
-5
@@ -24,12 +24,242 @@ extern void sub_08064428(Entity*);
|
||||
void sub_08063DC8(Entity*);
|
||||
void sub_08063F20(Entity*);
|
||||
|
||||
extern void (*const gUnk_0810F544[])(Entity*);
|
||||
extern void (*const gUnk_0810F550[])(Entity*);
|
||||
// TODO guardWithSpear rodata before this
|
||||
const Dialog gUnk_0810CF4C[] = {
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FINDING_EZLO, 0x17) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FINDING_EZLO, 0x18) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CARPENTERS, 0x6) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CARPENTERS, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x3e) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x40) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x3c) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x3b) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ TABIDACHI,
|
||||
DIALOG_GLOBAL_FLAG,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_PROLOGUE, 0x3f), TEXT_INDEX(TEXT_PROLOGUE, 0x3d) } },
|
||||
{ TABIDACHI,
|
||||
DIALOG_GLOBAL_FLAG,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_PROLOGUE, 0x3f), TEXT_INDEX(TEXT_PROLOGUE, 0x3d) } },
|
||||
{ TABIDACHI,
|
||||
DIALOG_GLOBAL_FLAG,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_PROLOGUE, 0x3f), TEXT_INDEX(TEXT_PROLOGUE, 0x3d) } },
|
||||
{ TABIDACHI,
|
||||
DIALOG_GLOBAL_FLAG,
|
||||
DIALOG_CHECK_FLAG,
|
||||
1,
|
||||
{ TEXT_INDEX(TEXT_PROLOGUE, 0x3f), TEXT_INDEX(TEXT_PROLOGUE, 0x3d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_VAATI, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_VAATI, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_VAATI, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_VAATI, 0x22) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_VAATI, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FESTIVAL, 0x1d) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x63) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_PROLOGUE, 0x64) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
};
|
||||
|
||||
// entity count
|
||||
extern SpriteLoadData gUnk_0810F524[];
|
||||
extern void* gUnk_0810F6BC[];
|
||||
const Dialog gUnk_0810D0A4[] = {
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN, 0x32) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN, 0x32) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x2d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x29) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x29) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x26) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x24) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x24) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x1d) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0xb) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x26) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x23) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x1c) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x8) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x35) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0xc) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x24) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x21) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x22) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x1b) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x38) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x32) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x2d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x2d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x26) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0xd) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN2, 0x16) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x16) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x4) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN6, 0x15) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x6) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x5) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x1) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0x9) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN7, 0xa) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN, 0x33) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x30) } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
{ 0, 0, DIALOG_NONE, 0, { 0, 0 } },
|
||||
};
|
||||
// Seemingly wasted space. Is this ever indexed?
|
||||
const u32 emptyDialogs[2048] = {};
|
||||
|
||||
const SpriteLoadData gUnk_0810F524[] = {
|
||||
{ 55, 43, 4 }, { 6199, 43, 4 }, { 22583, 43, 4 }, { 0, 0, 0 },
|
||||
{ 4, 43, 4 }, { 16388, 43, 4 }, { 8196, 43, 4 }, { 0, 0, 0 },
|
||||
};
|
||||
void sub_08063E90(Entity*);
|
||||
void sub_08063F20(Entity*);
|
||||
void sub_08063F78(Entity*);
|
||||
void (*const gUnk_0810F544[])(Entity*) = {
|
||||
sub_08063E90,
|
||||
sub_08063F20,
|
||||
sub_08063F78,
|
||||
};
|
||||
void sub_08063D44(Entity*);
|
||||
void sub_08063DC8(Entity*);
|
||||
void sub_08063E54(Entity*);
|
||||
void sub_08063E6C(Entity*);
|
||||
void (*const gUnk_0810F550[])(Entity*) = {
|
||||
sub_08063D44,
|
||||
sub_08063DC8,
|
||||
sub_08063E54,
|
||||
sub_08063E6C,
|
||||
};
|
||||
|
||||
extern void* gUnk_0810F6BC[]; // TODO find out type of second param for sub_0806EE04
|
||||
|
||||
void Guard(Entity* this) {
|
||||
if ((this->flags & ENT_SCRIPTED) != 0) {
|
||||
|
||||
@@ -13,7 +13,7 @@ void HurdyGurdyMan(Entity* this) {
|
||||
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, gUnk_081144F0) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_081144F0)) {
|
||||
this->action = 1;
|
||||
this->field_0x68.HALF.HI = 0;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
@@ -106,11 +106,8 @@ void sub_0806E440(Entity* this) {
|
||||
}
|
||||
|
||||
void HurdyGurdyMan_Fusion(Entity* this) {
|
||||
u32 uVar1;
|
||||
|
||||
if (this->action == 0) {
|
||||
uVar1 = LoadExtraSpriteData(this, gUnk_081144F0);
|
||||
if (uVar1 != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_081144F0)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
|
||||
+183
-21
@@ -2,14 +2,184 @@
|
||||
#include "message.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern void (*const gUnk_0810BE0C[])(Entity*);
|
||||
const SpriteLoadData gUnk_0810BD7C[] = {
|
||||
{ 58, 59, 4 },
|
||||
{ 10298, 59, 4 },
|
||||
{ 12288, 59, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
const SpriteLoadData gUnk_0810BD8C[] = {
|
||||
{ 58, 59, 4 },
|
||||
{ 8250, 59, 4 },
|
||||
{ 10241, 59, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
const SpriteLoadData gUnk_0810BD9C[] = {
|
||||
{ 16385, 59, 4 },
|
||||
{ 58, 59, 4 },
|
||||
{ 8250, 59, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
const SpriteLoadData gUnk_0810BDAC[] = {
|
||||
{ 58, 59, 4 },
|
||||
{ 6202, 59, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
const SpriteLoadData gUnk_0810BDB8[] = {
|
||||
{ 58, 59, 4 },
|
||||
{ 6202, 59, 4 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
|
||||
const SpriteLoadData* const gUnk_0810BDC4[] = {
|
||||
gUnk_0810BD7C, gUnk_0810BD7C, gUnk_0810BD7C, gUnk_0810BD7C, gUnk_0810BD8C,
|
||||
gUnk_0810BD8C, gUnk_0810BD9C, gUnk_0810BDAC, gUnk_0810BDB8,
|
||||
};
|
||||
|
||||
const u16 gUnk_0810BDE8[][2] = { {
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
TEXT_INDEX(TEXT_EMPTY, 0x1),
|
||||
} };
|
||||
void sub_080620F4(Entity*);
|
||||
void sub_08062130(Entity*);
|
||||
void sub_08062194(Entity*);
|
||||
void (*const gUnk_0810BE0C[])(Entity*) = { sub_080620F4, sub_08062130, sub_08062194 };
|
||||
|
||||
void sub_08062194(Entity*);
|
||||
const Dialog gUnk_0810BE10[] = {
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FESTIVAL, 0xf) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x7) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x4) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0xb) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0xb) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x5) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0xc) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0xc) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SCHOOL, 0x8) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN8, 0x2e) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN8, 0x2e) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FESTIVAL, 0xe) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN8, 0x2d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN8, 0x2d) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x36) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SIMON, 0x13) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_SIMON, 0x13) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_FESTIVAL, 0x14) } },
|
||||
{ 9, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x31), TEXT_INDEX(TEXT_TOWN, 0x30) } },
|
||||
{ 9, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x31), TEXT_INDEX(TEXT_TOWN, 0x30) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x10) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x35) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x16) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x16) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1e) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1e) } },
|
||||
{ 0, 0, DIALOG_CHECK_FLAG, 1, { TEXT_INDEX(TEXT_FESTIVAL, 0x20), TEXT_INDEX(TEXT_FESTIVAL, 0x13) } },
|
||||
#if defined(USA) || defined(DEMO_USA)
|
||||
{ 212, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2a), TEXT_INDEX(TEXT_TOWN, 0x29) } },
|
||||
{ 212, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2a), TEXT_INDEX(TEXT_TOWN, 0x29) } },
|
||||
#else
|
||||
{ 209, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2a), TEXT_INDEX(TEXT_TOWN, 0x29) } },
|
||||
{ 209, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2a), TEXT_INDEX(TEXT_TOWN, 0x29) } },
|
||||
#endif
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x11) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x33) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x17) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x17) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x20) } },
|
||||
{ 0, 0, DIALOG_CHECK_FLAG, 1, { TEXT_INDEX(TEXT_FESTIVAL, 0x21), TEXT_INDEX(TEXT_FESTIVAL, 0x1e) } },
|
||||
#if defined(USA) || defined(DEMO_USA)
|
||||
{ 213, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2c), TEXT_INDEX(TEXT_TOWN, 0x2b) } },
|
||||
{ 213, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2c), TEXT_INDEX(TEXT_TOWN, 0x2b) } },
|
||||
#else
|
||||
{ 210, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2c), TEXT_INDEX(TEXT_TOWN, 0x2b) } },
|
||||
{ 210, DIALOG_LOCAL_FLAG, DIALOG_SET_FLAG, 1, { TEXT_INDEX(TEXT_TOWN, 0x2c), TEXT_INDEX(TEXT_TOWN, 0x2b) } },
|
||||
#endif
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x12) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN3, 0x34) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN4, 0x18) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_TOWN5, 0x18) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x21) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x21) } },
|
||||
};
|
||||
const FrameStruct gUnk_0810C0A0[] = {
|
||||
{ 25, 0 }, { 128, 15 }, { 37, 0 }, { 128, 15 }, { 46, 0 }, { 128, 15 },
|
||||
{ 55, 0 }, { 128, 15 }, { 64, 15 }, { 128, 15 }, { 72, 15 }, { 128, 15 },
|
||||
{ 120, 83 }, { 128, 15 }, { 131, 102 }, { 128, 15 }, { 139, 111 }, { 128, 15 },
|
||||
};
|
||||
|
||||
void sub_080621AC(Entity*);
|
||||
|
||||
extern SpriteLoadData* gUnk_0810BDC4[];
|
||||
|
||||
void sub_080622F4(Entity*);
|
||||
void sub_0806265C(Entity*, ScriptExecutionContext*);
|
||||
|
||||
void sub_0806252C(Entity*);
|
||||
|
||||
typedef struct {
|
||||
@@ -23,12 +193,6 @@ typedef struct {
|
||||
#define KID_HEAP_COUNT 0x14
|
||||
typedef KidHeapItem KidHeap[KID_HEAP_COUNT];
|
||||
|
||||
extern u16 gUnk_0810BDE8[][2];
|
||||
|
||||
extern Dialog gUnk_0810BE10[];
|
||||
|
||||
extern u8 gUnk_0810C0A0[];
|
||||
|
||||
void Kid(Entity* this) {
|
||||
if ((this->flags & ENT_SCRIPTED) != 0) {
|
||||
sub_080621AC(this);
|
||||
@@ -38,7 +202,7 @@ void Kid(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080620F4(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type])) {
|
||||
this->animationState = 4;
|
||||
this->field_0x68.HALF.LO = 0;
|
||||
this->action = 1;
|
||||
@@ -76,7 +240,7 @@ void sub_080621AC(Entity* this) {
|
||||
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type])) {
|
||||
this->action = 1;
|
||||
this->animationState = this->timer;
|
||||
this->timer = 0;
|
||||
@@ -204,7 +368,7 @@ void sub_0806265C(Entity* this, ScriptExecutionContext* context) {
|
||||
if (gSave.global_progress == 0) {
|
||||
MessageNoOverlap(0, this);
|
||||
} else {
|
||||
Dialog* pDialog = &gUnk_0810BE10[this->type * 9];
|
||||
const Dialog* pDialog = &gUnk_0810BE10[this->type * 9 - 1];
|
||||
pDialog += gSave.global_progress;
|
||||
ShowNPCDialogue(this, pDialog);
|
||||
}
|
||||
@@ -273,17 +437,15 @@ void sub_080627E8(Entity* this, ScriptExecutionContext* context) {
|
||||
}
|
||||
|
||||
void Kid_Head(Entity* this) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
u32 uVar4;
|
||||
u32 uVar5;
|
||||
u8* ptr;
|
||||
const FrameStruct* ptr;
|
||||
|
||||
uVar1 = this->type * 4;
|
||||
ptr = &gUnk_0810C0A0[uVar1];
|
||||
uVar3 = ((u8)this->frame & 0x1f) + ptr[0];
|
||||
uVar4 = (this->frameIndex & 0x1f) + ptr[1];
|
||||
ptr = &gUnk_0810C0A0[this->type * 2];
|
||||
uVar3 = ((u8)this->frame & 0x1f) + ptr->frame;
|
||||
uVar4 = (this->frameIndex & 0x1f) + ptr->frameIndex;
|
||||
switch (this->type) {
|
||||
case 0:
|
||||
case 1:
|
||||
@@ -400,7 +562,7 @@ void sub_08062A48(Entity* this, ScriptExecutionContext* context) {
|
||||
void Kid_Fusion(Entity* this) {
|
||||
u32 tmp;
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type]) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810BDC4[this->type])) {
|
||||
this->action = this->action + 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->y.HALF.HI = this->y.HALF.HI + -8;
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ void Mama(Entity* this) {
|
||||
}
|
||||
|
||||
bool32 sub_0806C454(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08113754) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_08113754)) {
|
||||
return FALSE;
|
||||
} else {
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
|
||||
+2
-2
@@ -26,7 +26,7 @@ void Melari(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08068708(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111520) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111520)) {
|
||||
this->action = 1;
|
||||
InitializeAnimation(this, 0);
|
||||
sub_08078778(this);
|
||||
@@ -60,7 +60,7 @@ void sub_08068780(Entity* this) {
|
||||
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, gUnk_08111520) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_08111520)) {
|
||||
return;
|
||||
}
|
||||
this->action = 1;
|
||||
|
||||
@@ -22,7 +22,7 @@ void MinishEzlo(Entity* this) {
|
||||
{ 0x0, 0x0, 0x0 },
|
||||
};
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810C48C) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_0810C48C)) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
|
||||
@@ -55,7 +55,7 @@ void MountainMinish(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08067E60(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111358) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111358)) {
|
||||
this->action = 1;
|
||||
sub_08078778(this);
|
||||
InitializeAnimation(this, 2);
|
||||
@@ -106,7 +106,7 @@ void sub_08067EF0(Entity* this) {
|
||||
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, gUnk_08111358) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_08111358)) {
|
||||
return;
|
||||
}
|
||||
this->action = 1;
|
||||
@@ -265,7 +265,7 @@ void MountainMinish_Head(Entity* this) {
|
||||
|
||||
void MountainMinish_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111358) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08111358)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitializeAnimation(this, 6);
|
||||
|
||||
+1
-1
@@ -89,7 +89,7 @@ void sub_08067100(Entity* this) {
|
||||
|
||||
void Mutoh_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110C00) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110C00)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = TRUE;
|
||||
InitializeAnimation(this, 2);
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ void NPC58(Entity* this) {
|
||||
Entity* entity;
|
||||
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_081146D0) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_081146D0)) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
|
||||
+1
-1
@@ -168,7 +168,7 @@ void sub_0806B60C(Entity* this) {
|
||||
|
||||
void Percy_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08112E1C) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08112E1C)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitializeAnimation(this, 2);
|
||||
|
||||
@@ -193,14 +193,14 @@ const static Font gUnk_081146B8 = {
|
||||
void sub_0806EABC(Entity* this) {
|
||||
sub_08050384();
|
||||
sub_08057044((s16)this->field_0x68.HWORD, gUnk_020227E8, 0x202020);
|
||||
sub_0805F46C(0x3302, &gUnk_081146B8);
|
||||
ShowTextBox(0x3302, &gUnk_081146B8);
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
#else
|
||||
void sub_0806EABC(Entity* this, u32 param) {
|
||||
sub_08050384();
|
||||
sub_08057044(param, gUnk_020227E8, 0x202020);
|
||||
sub_0805F46C(0x3302, &gUnk_081146B8);
|
||||
ShowTextBox(0x3302, &gUnk_081146B8);
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
+150
-23
@@ -3,24 +3,151 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "npc.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern void sub_08060528(Entity*);
|
||||
extern void sub_080604DC(Entity*);
|
||||
extern void sub_080606D8(Entity*);
|
||||
extern void sub_080606C0(Entity*);
|
||||
|
||||
extern const s8 gUnk_0810AA70[][4][4];
|
||||
const Coords gUnk_0810A66C[] = {
|
||||
{ .HALF = { 0x0, 0x0 } }, { .HALF = { 0x48, 0xa8 } }, { .HALF = { 0x0, 0xf0 } },
|
||||
{ .HALF = { 0x1f8, 0x0 } }, { .HALF = { 0x3f8, 0xf0 } }, { .HALF = { 0x1f8, 0x3c8 } },
|
||||
{ .HALF = { 0x48, 0xf0 } }, { .HALF = { 0x60, 0xf0 } }, { .HALF = { 0x60, 0x188 } },
|
||||
{ .HALF = { 0x78, 0x188 } }, { .HALF = { 0x78, 0x270 } }, { .HALF = { 0x38, 0x270 } },
|
||||
{ .HALF = { 0x38, 0x328 } }, { .HALF = { 0x98, 0x328 } }, { .HALF = { 0xd8, 0x328 } },
|
||||
{ .HALF = { 0x108, 0x328 } }, { .HALF = { 0x188, 0x328 } }, { .HALF = { 0x188, 0x368 } },
|
||||
{ .HALF = { 0x108, 0x278 } }, { .HALF = { 0x128, 0x278 } }, { .HALF = { 0x128, 0x1d0 } },
|
||||
{ .HALF = { 0x1a8, 0x1d0 } }, { .HALF = { 0x1f8, 0x1d0 } }, { .HALF = { 0x1a8, 0x288 } },
|
||||
{ .HALF = { 0x1f8, 0x288 } }, { .HALF = { 0x1f8, 0x328 } }, { .HALF = { 0x268, 0x328 } },
|
||||
{ .HALF = { 0x268, 0x368 } }, { .HALF = { 0x268, 0x390 } }, { .HALF = { 0x1f8, 0xf0 } },
|
||||
{ .HALF = { 0x248, 0x1d0 } }, { .HALF = { 0x248, 0x1c0 } }, { .HALF = { 0x248, 0x288 } },
|
||||
{ .HALF = { 0x298, 0x288 } }, { .HALF = { 0x298, 0x328 } }, { .HALF = { 0x328, 0x328 } },
|
||||
{ .HALF = { 0x328, 0x390 } }, { .HALF = { 0x368, 0x328 } }, { .HALF = { 0x368, 0x318 } },
|
||||
{ .HALF = { 0x3a0, 0x318 } }, { .HALF = { 0x3a0, 0x290 } }, { .HALF = { 0x370, 0x290 } },
|
||||
{ .HALF = { 0x370, 0x280 } }, { .HALF = { 0x360, 0x280 } }, { .HALF = { 0x360, 0x270 } },
|
||||
{ .HALF = { 0x340, 0x270 } }, { .HALF = { 0x340, 0x248 } }, { .HALF = { 0x320, 0x248 } },
|
||||
{ .HALF = { 0x2e0, 0x248 } }, { .HALF = { 0x2e0, 0x1d0 } }, { .HALF = { 0x2d0, 0x1d0 } },
|
||||
{ .HALF = { 0x2d0, 0x1c0 } }, { .HALF = { 0x320, 0x168 } }, { .HALF = { 0x378, 0x168 } },
|
||||
{ .HALF = { 0x378, 0xf0 } }, { .HALF = { 0x2b0, 0x288 } }, { .HALF = { 0x2b0, 0x280 } },
|
||||
{ .HALF = { 0x2c0, 0x280 } }, { .HALF = { 0x2c0, 0x270 } }, { .HALF = { 0x2d0, 0x270 } },
|
||||
{ .HALF = { 0x2d0, 0x248 } }, { .HALF = { 0x78, 0x1f0 } }, { .HALF = { 0x78, 0x230 } },
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
s16 x;
|
||||
s16 y;
|
||||
} Coords16;
|
||||
// Indices into the coords array above
|
||||
const s8 gUnk_0810A768[] = { 1, -4, 0, 1, 2 };
|
||||
const s8 gUnk_0810A76D[] = { 6, 0, 2, 4, 21 };
|
||||
const s8 gUnk_0810A772[] = { 6, 0, 2, 1, 21 };
|
||||
const s8 gUnk_0810A777[] = { 2, -5, 3, 5, 7, 9 };
|
||||
const s8 gUnk_0810A77D[] = { 29, 0, 3, 20, 17, 16 };
|
||||
const s8 gUnk_0810A783[] = { 3, -5, 3, 3, 7, 9 };
|
||||
const s8 gUnk_0810A789[] = { 54, 0, 2, 18, 62 };
|
||||
const s8 gUnk_0810A78E[] = { 4, -5, 3, 3, 5, 9 };
|
||||
const s8 gUnk_0810A794[] = { 25, 0, 3, 46, 30, 31 };
|
||||
const s8 gUnk_0810A79A[] = { 5, -5, 3, 3, 5, 7 };
|
||||
const s8 gUnk_0810A7A0[] = { 24, 0, 3, 45, 47, 14 };
|
||||
const s8 gUnk_0810A7A6[] = { 22, 0, 3, 15, 66, 63 };
|
||||
const s8 gUnk_0810A7AC[] = { 23, 24, 0, 3, 12, 47, 45 };
|
||||
const s8 gUnk_0810A7B3[] = { 23, 21, 0, 2, 65, 26 };
|
||||
const s8 gUnk_0810A7B9[] = { 29, 0, 3, 6, 20, 17 };
|
||||
const s8 gUnk_0810A7BF[] = { 22, 0, 3, 66, 11, 63 };
|
||||
const s8 gUnk_0810A7C5[] = { 54, 0, 2, 8, 62 };
|
||||
const s8 gUnk_0810A7CA[] = { 29, 0, 3, 6, 20, 16 };
|
||||
const s8 gUnk_0810A7D0[] = { 29, 0, 3, 6, 17, 16 };
|
||||
const s8 gUnk_0810A7D6[] = { 7, 0, 2, 22, 23 };
|
||||
const s8 gUnk_0810A7DB[] = { 7, 0, 2, 23, 19 };
|
||||
const s8 gUnk_0810A7E0[] = { 6, 0, 2, 1, 4 };
|
||||
const s8 gUnk_0810A7E5[] = { 8, 9, 61, -1, 62, 10, 11, 12, 13, -1, 14, 15, 0, 2, 27, 25 };
|
||||
const s8 gUnk_0810A7F5[] = { 14, -1, 13, 12, 11, 10, 62, -1, 61, 9, 8, 7, 0, 2, 22, 19 };
|
||||
const s8 gUnk_0810A805[] = { 18, 19, 20, 21, 0, 2, 65, 13 };
|
||||
const s8 gUnk_0810A80D[] = { 20, 19, 18, 15, 0, 2, 24, 27 };
|
||||
const s8 gUnk_0810A815[] = { 16, 0, 2, 29, 33 };
|
||||
const s8 gUnk_0810A81A[] = { 15, 0, 2, 24, 25 };
|
||||
const s8 gUnk_0810A81F[] = { 25, 0, 3, 46, 31, 10 };
|
||||
const s8 gUnk_0810A825[] = { 16, 0, 2, 28, 33 };
|
||||
const s8 gUnk_0810A82A[] = { 26, 0, 2, 41, 43 };
|
||||
const s8 gUnk_0810A82F[] = { 25, 0, 3, 10, 46, 30 };
|
||||
const s8 gUnk_0810A835[] = { 17, 27, 0, 2, 42, 35 };
|
||||
const s8 gUnk_0810A83B[] = { 17, 16, 0, 2, 28, 29 };
|
||||
const s8 gUnk_0810A841[] = { 28, 36, 35, 0, 2, 40, 37 };
|
||||
const s8 gUnk_0810A848[] = { 36, 28, 27, 0, 2, 34, 42 };
|
||||
const s8 gUnk_0810A84F[] = { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 2, 57, 61 };
|
||||
const s8 gUnk_0810A85E[] = { 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 35, 0, 2, 36, 40 };
|
||||
const s8 gUnk_0810A86D[] = { 35, 0, 2, 36, 37 };
|
||||
const s8 gUnk_0810A872[] = { 34, 0, 2, 44, 52 };
|
||||
const s8 gUnk_0810A877[] = { 27, 0, 2, 34, 35 };
|
||||
const s8 gUnk_0810A87C[] = { 26, 0, 2, 32, 43 };
|
||||
const s8 gUnk_0810A881[] = { 34, 0, 2, 52, 39 };
|
||||
const s8 gUnk_0810A886[] = { 26, 0, 2, 32, 41 };
|
||||
const s8 gUnk_0810A88B[] = { 25, 0, 3, 10, 30, 31 };
|
||||
const s8 gUnk_0810A891[] = { 24, 0, 3, 14, 12, 47 };
|
||||
const s8 gUnk_0810A897[] = { 32, 0, 2, 54, 49 };
|
||||
const s8 gUnk_0810A89C[] = { 24, 0, 3, 14, 12, 45 };
|
||||
const s8 gUnk_0810A8A2[] = { 33, 0, 2, 51, 55 };
|
||||
const s8 gUnk_0810A8A7[] = { 32, 0, 2, 48, 54 };
|
||||
const s8 gUnk_0810A8AC[] = { 34, 0, 2, 44, 39 };
|
||||
const s8 gUnk_0810A8B1[] = { 33, 0, 2, 50, 55 };
|
||||
const s8 gUnk_0810A8B6[] = { 32, 0, 2, 48, 49 };
|
||||
const s8 gUnk_0810A8BB[] = { 30, 0, 2, 64, 59 };
|
||||
const s8 gUnk_0810A8C0[] = { 55, 56, 57, 58, 59, 60, 48, 0, 2, 60, 58 };
|
||||
const s8 gUnk_0810A8CB[] = { 60, 59, 58, 57, 56, 55, 33, 0, 2, 50, 51 };
|
||||
const s8 gUnk_0810A8D6[] = { 48, 0, 2, 60, 56 };
|
||||
const s8 gUnk_0810A8DB[] = { 47, 0, 2, 38, 61 };
|
||||
const s8 gUnk_0810A8E0[] = { 31, 51, 50, 49, 48, 0, 2, 56, 58 };
|
||||
const s8 gUnk_0810A8E9[] = { 49, 50, 51, 31, 30, 0, 2, 64, 53 };
|
||||
const s8 gUnk_0810A8F2[] = { 52, 53, 54, 0, 2, 8, 18 };
|
||||
const s8 gUnk_0810A8F9[] = { 53, 52, 47, 0, 2, 38, 57 };
|
||||
const s8 gUnk_0810A900[] = { 30, 0, 2, 53, 59 };
|
||||
const s8 gUnk_0810A905[] = { 22, 0, 3, 66, 11, 15 };
|
||||
const s8 gUnk_0810A90B[] = { 22, 0, 3, 11, 15, 63 };
|
||||
const s8 gUnk_0810A911[] = { 21, 0, 2, 26, 13, 0, 0 };
|
||||
|
||||
extern Coords16 gUnk_0810A66C[];
|
||||
extern s8* gUnk_0810A918[];
|
||||
const s8* const gUnk_0810A918[] = {
|
||||
gUnk_0810A768, gUnk_0810A768, gUnk_0810A76D, gUnk_0810A772, gUnk_0810A777, gUnk_0810A77D, gUnk_0810A783,
|
||||
gUnk_0810A789, gUnk_0810A78E, gUnk_0810A794, gUnk_0810A79A, gUnk_0810A7A0, gUnk_0810A7A6, gUnk_0810A7AC,
|
||||
gUnk_0810A7B3, gUnk_0810A7B9, gUnk_0810A7BF, gUnk_0810A7C5, gUnk_0810A7CA, gUnk_0810A7D0, gUnk_0810A7D6,
|
||||
gUnk_0810A7DB, gUnk_0810A7E0, gUnk_0810A7E5, gUnk_0810A7F5, gUnk_0810A805, gUnk_0810A80D, gUnk_0810A815,
|
||||
gUnk_0810A81A, gUnk_0810A81F, gUnk_0810A825, gUnk_0810A82A, gUnk_0810A82F, gUnk_0810A835, gUnk_0810A83B,
|
||||
gUnk_0810A841, gUnk_0810A848, gUnk_0810A84F, gUnk_0810A85E, gUnk_0810A86D, gUnk_0810A872, gUnk_0810A877,
|
||||
gUnk_0810A87C, gUnk_0810A881, gUnk_0810A886, gUnk_0810A88B, gUnk_0810A891, gUnk_0810A897, gUnk_0810A89C,
|
||||
gUnk_0810A8A2, gUnk_0810A8A7, gUnk_0810A8AC, gUnk_0810A8B1, gUnk_0810A8B6, gUnk_0810A8BB, gUnk_0810A8C0,
|
||||
gUnk_0810A8CB, gUnk_0810A8D6, gUnk_0810A8DB, gUnk_0810A8E0, gUnk_0810A8E9, gUnk_0810A8F2, gUnk_0810A8F9,
|
||||
gUnk_0810A900, gUnk_0810A905, gUnk_0810A90B, gUnk_0810A911,
|
||||
};
|
||||
void sub_08060428(Entity*);
|
||||
void sub_0806045C(Entity*);
|
||||
void sub_080604C8(Entity*);
|
||||
void (*const gUnk_0810AA24[])(Entity*) = {
|
||||
sub_08060428,
|
||||
sub_0806045C,
|
||||
sub_080604C8,
|
||||
};
|
||||
|
||||
extern void (*const gUnk_0810AA24[])(Entity*);
|
||||
extern Dialog gUnk_0810AA30[];
|
||||
const Dialog gUnk_0810AA30[] = {
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0xc) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0xc) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0xd) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0xe) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0xf) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0x10) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0x11) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_POST, 0x12) } },
|
||||
};
|
||||
|
||||
const Rect gUnk_0810AA70[][4] = {
|
||||
{
|
||||
{ 0, -16, 16, 16 },
|
||||
{ 16, 0, 16, 16 },
|
||||
{ 0, 16, 16, 16 },
|
||||
{ -16, 0, 16, 16 },
|
||||
},
|
||||
{
|
||||
{ 0, -16, 32, 32 },
|
||||
{ 16, 0, 32, 32 },
|
||||
{ 0, 16, 32, 32 },
|
||||
{ -16, 0, 32, 32 },
|
||||
},
|
||||
};
|
||||
|
||||
void Postman(Entity* this) {
|
||||
if ((this->flags & ENT_SCRIPTED) != 0) {
|
||||
@@ -181,10 +308,10 @@ void sub_080606D8(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08060700(Entity* entity, ScriptExecutionContext* context) {
|
||||
s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO];
|
||||
Coords16* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]];
|
||||
u32 x = coords->x + gRoomControls.origin_x;
|
||||
u32 y = coords->y + gRoomControls.origin_y;
|
||||
const s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO];
|
||||
const Coords* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]];
|
||||
u32 x = coords->HALF.x + gRoomControls.origin_x;
|
||||
u32 y = coords->HALF.y + gRoomControls.origin_y;
|
||||
sub_0807DEDC(entity, context, x, y);
|
||||
gActiveScriptInfo.flags |= 1;
|
||||
}
|
||||
@@ -200,8 +327,8 @@ void sub_0806076C(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 uVar6;
|
||||
s32 uVar9;
|
||||
int local_24;
|
||||
Coords16* ptr;
|
||||
s8* pbVar10;
|
||||
const Coords* ptr;
|
||||
const s8* pbVar10;
|
||||
|
||||
if (this->z.WORD < 0) {
|
||||
gActiveScriptInfo.commandSize = 0;
|
||||
@@ -244,8 +371,8 @@ void sub_0806076C(Entity* this, ScriptExecutionContext* context) {
|
||||
this->field_0x68.HALF.LO = pbVar10[local_24];
|
||||
cVar2 = gUnk_0810A918[(s8)this->field_0x68.HALF.LO][0];
|
||||
ptr = &gUnk_0810A66C[cVar2];
|
||||
this->x.HALF_U.HI = gRoomControls.origin_x + ptr->x;
|
||||
this->y.HALF_U.HI = gRoomControls.origin_y + ptr->y;
|
||||
this->x.HALF_U.HI = gRoomControls.origin_x + ptr->HALF.x;
|
||||
this->y.HALF_U.HI = gRoomControls.origin_y + ptr->HALF.y;
|
||||
if (CheckOnScreen(this) == 0)
|
||||
break;
|
||||
local_24 = (s32)(local_24 + 1) % uVar9;
|
||||
@@ -265,14 +392,14 @@ void sub_080608E4(Entity* this, ScriptExecutionContext* context) {
|
||||
if (this->z.WORD >= 0) {
|
||||
if ((this->collisionLayer != 1 || gPlayerEntity.collisionLayer != 2) &&
|
||||
(this->collisionLayer != 2 || gPlayerEntity.collisionLayer != 1)) {
|
||||
const s8* ptr = gUnk_0810AA70[context->intVariable][this->animationState >> 1];
|
||||
u32 x = this->x.HALF.HI + ptr[0];
|
||||
u32 y = this->y.HALF.HI + ptr[1];
|
||||
const Rect* ptr = &gUnk_0810AA70[context->intVariable][this->animationState >> 1];
|
||||
u32 x = this->x.HALF.HI + ptr->x;
|
||||
u32 y = this->y.HALF.HI + ptr->y;
|
||||
x = gPlayerEntity.x.HALF.HI - x;
|
||||
y = gPlayerEntity.y.HALF.HI - y;
|
||||
x += ptr[2];
|
||||
y += ptr[3];
|
||||
if (ptr[2] * 2 > x && ptr[3] * 2 > y) {
|
||||
x += ptr->width;
|
||||
y += ptr->height;
|
||||
if (ptr->width * 2 > x && ptr->height * 2 > y) {
|
||||
context->condition = 1;
|
||||
this->field_0x6a.HWORD += 2;
|
||||
}
|
||||
|
||||
+105
-11
@@ -1,15 +1,109 @@
|
||||
#include "npc.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*SittingPersion_Actions[])(Entity*);
|
||||
const SpriteLoadData gUnk_0810CB78[] = {
|
||||
{ 63, 61, 4 }, { 8255, 61, 4 }, { 0, 0, 0 }, { 62, 61, 4 }, { 8255, 61, 4 }, { 0, 0, 0 },
|
||||
{ 64, 61, 4 }, { 8254, 61, 4 }, { 0, 0, 0 }, { 64, 61, 4 }, { 8256, 61, 4 }, { 0, 0, 0 },
|
||||
{ 64, 61, 4 }, { 8255, 61, 4 }, { 0, 0, 0 }, { 62, 61, 4 }, { 8255, 61, 4 }, { 0, 0, 0 },
|
||||
};
|
||||
const FrameStruct gUnk_0810CBC0[] = {
|
||||
{ 4, 0 }, { 0, 0 }, { 12, 0 }, { 0, 0 }, { 20, 0 }, { 0, 0 },
|
||||
{ 28, 1 }, { 0, 0 }, { 36, 1 }, { 0, 0 }, { 44, 0 }, { 0, 0 },
|
||||
};
|
||||
void SittingPersion_Init(Entity*);
|
||||
void sub_080637B8(Entity*);
|
||||
void sub_08063830(Entity*);
|
||||
void (*const SittingPersion_Actions[])(Entity*) = {
|
||||
SittingPersion_Init,
|
||||
sub_080637B8,
|
||||
sub_08063830,
|
||||
};
|
||||
|
||||
extern Dialog gUnk_0810CC08[];
|
||||
const u16 gUnk_0810CBE4[][4] = { {
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x2f),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x30),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x31),
|
||||
TEXT_INDEX(TEXT_TOWN4, 0x32),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x2f),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x30),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x31),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x32),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x28),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x29),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x2a),
|
||||
TEXT_INDEX(TEXT_TOWN6, 0x2b),
|
||||
},
|
||||
{
|
||||
TEXT_INDEX(TEXT_TOWN7, 0xe),
|
||||
TEXT_INDEX(TEXT_TOWN7, 0xf),
|
||||
TEXT_INDEX(TEXT_TOWN7, 0x10),
|
||||
TEXT_INDEX(TEXT_TOWN7, 0x11),
|
||||
} };
|
||||
|
||||
extern SpriteLoadData gUnk_0810CB78[];
|
||||
extern u16 gUnk_0810CC04[];
|
||||
extern u16 gUnk_0810CBE4[][4];
|
||||
extern u8 gUnk_0810CBC0[];
|
||||
extern u8 gUnk_0810CD88[][4];
|
||||
const u16 gUnk_0810CC04[] = {
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x37),
|
||||
TEXT_INDEX(TEXT_TOWN5, 0x38),
|
||||
};
|
||||
|
||||
void sub_0806387C(Entity*);
|
||||
void sub_0806390C(Entity*);
|
||||
const Dialog gUnk_0810CC08[] = {
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x5), TEXT_INDEX(TEXT_CAFE, 0x4) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x5), TEXT_INDEX(TEXT_CAFE, 0x4) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0xf), TEXT_INDEX(TEXT_CAFE, 0xe) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x1d), TEXT_INDEX(TEXT_CAFE, 0x1c) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x29), TEXT_INDEX(TEXT_CAFE, 0x28) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x35), TEXT_INDEX(TEXT_CAFE, 0x34) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x41), TEXT_INDEX(TEXT_CAFE, 0x40) } },
|
||||
{ 2, DIALOG_ROOM_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x4b), TEXT_INDEX(TEXT_CAFE, 0x4a) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x8) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x8) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x12) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x20) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x2c) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x38) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x44) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_CAFE, 0x4e) } },
|
||||
{ 0, 0, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xf), TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xe) } },
|
||||
{ 0, 0, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xf), TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xe) } },
|
||||
{ 0, 0, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xf), TEXT_INDEX(TEXT_HAPPY_HEARTH, 0xe) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x16) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x17) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x19) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1b) } },
|
||||
{ 0, 0, DIALOG_NORMAL, 1, { 0, TEXT_INDEX(TEXT_HAPPY_HEARTH, 0x1b) } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806387C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 0, 0, DIALOG_CALL_FUNC, 0, { .func = sub_0806390C } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x52), TEXT_INDEX(TEXT_CAFE, 0x51) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x52), TEXT_INDEX(TEXT_CAFE, 0x51) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x54), TEXT_INDEX(TEXT_CAFE, 0x53) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x56), TEXT_INDEX(TEXT_CAFE, 0x55) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x58), TEXT_INDEX(TEXT_CAFE, 0x57) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x5a), TEXT_INDEX(TEXT_CAFE, 0x59) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x5c), TEXT_INDEX(TEXT_CAFE, 0x5b) } },
|
||||
{ 89, DIALOG_LOCAL_FLAG, DIALOG_TOGGLE_FLAG, 1, { TEXT_INDEX(TEXT_CAFE, 0x5e), TEXT_INDEX(TEXT_CAFE, 0x5d) } },
|
||||
};
|
||||
const u8 gUnk_0810CD88[][4] = {
|
||||
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 2, 0 }, { 0, 1, 2, 0 }, { 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
extern void sub_08096208(Entity*, u32);
|
||||
void sub_080637B8(Entity* this);
|
||||
@@ -134,9 +228,9 @@ void SittingPersion_ShowDialogue(Entity* this, ScriptExecutionContext* context)
|
||||
}
|
||||
|
||||
void SittingPerson_Head(Entity* this) {
|
||||
u8* ptr = &gUnk_0810CBC0[this->type * 4];
|
||||
SetExtraSpriteFrame(this, 0, *ptr + (this->frame & 0xf));
|
||||
SetExtraSpriteFrame(this, 1, gUnk_0810CD88[this->type][this->frameIndex & 3] + *(ptr + 1));
|
||||
const FrameStruct* ptr = &gUnk_0810CBC0[this->type * 2];
|
||||
SetExtraSpriteFrame(this, 0, ptr->frame + (this->frame & 0xf));
|
||||
SetExtraSpriteFrame(this, 1, gUnk_0810CD88[this->type][this->frameIndex & 3] + ptr->frameIndex);
|
||||
SetSpriteSubEntryOffsetData1(this, 1, 0);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
@@ -148,7 +242,7 @@ void sub_080639D0(Entity* this) {
|
||||
|
||||
void SittingPerson_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810CB78[this->type * 3]) != 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810CB78[this->type * 3])) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->spriteSettings.flipX = 0;
|
||||
|
||||
+3
-3
@@ -71,7 +71,7 @@ void Smith_Head(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080660EC(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354)) {
|
||||
this->action = 1;
|
||||
this->field_0x68.HALF.LO = sub_0801E99C(this);
|
||||
InitAnimationForceUpdate(this, 2);
|
||||
@@ -106,7 +106,7 @@ void sub_08066170(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08066178(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354)) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->field_0x68.HALF.LO = sub_0801E99C(this);
|
||||
@@ -221,7 +221,7 @@ void sub_08066288(Entity* this) {
|
||||
|
||||
void Smith_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08110354)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitAnimationForceUpdate(this, 6);
|
||||
|
||||
+27
-11
@@ -4,16 +4,32 @@
|
||||
#include "object.h"
|
||||
#include "item.h"
|
||||
|
||||
extern u16 gUnk_0810FA54[];
|
||||
const SpriteLoadData gUnk_0810FA38[] = {
|
||||
{ 59, 140, 0 },
|
||||
{ 59, 140, 0 },
|
||||
{ 0, 0, 0 },
|
||||
};
|
||||
void sub_08064B44(Entity*);
|
||||
void sub_08064B88(Entity*);
|
||||
void sub_08064C2C(Entity*);
|
||||
void sub_08064C50(Entity*);
|
||||
void (*const gUnk_0810FA44[])(Entity*) = {
|
||||
sub_08064B44,
|
||||
sub_08064B88,
|
||||
sub_08064C2C,
|
||||
sub_08064C50,
|
||||
};
|
||||
|
||||
extern SpriteLoadData gUnk_0810FA38;
|
||||
extern const u16 gUnk_0810FA54[];
|
||||
// const u16 gUnk_0810FA54[] = {
|
||||
// TEXT_INDEX(TEXT_LIBRARY, 0xe),
|
||||
// TEXT_INDEX(TEXT_LIBRARY, 0x15),
|
||||
// TEXT_INDEX(TEXT_LIBRARY, 0x11),
|
||||
// };
|
||||
extern u32 gUnk_0810FA5A; // TODO second parameter of sub_0806EE04
|
||||
|
||||
extern u32 gUnk_0810FA5A;
|
||||
void sub_08064CC0(Entity* this);
|
||||
|
||||
extern void (*const gUnk_0810FA44[])(Entity*);
|
||||
void sub_08064C9C(Entity* this);
|
||||
|
||||
void sub_08064CD8(Entity* this);
|
||||
|
||||
void Sturgeon(Entity* this) {
|
||||
@@ -22,7 +38,7 @@ void Sturgeon(Entity* this) {
|
||||
sub_0806ED78(this);
|
||||
} else {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FA38)) {
|
||||
this->action = 1;
|
||||
this->timer = 0;
|
||||
sub_0807DD50(this);
|
||||
@@ -30,13 +46,13 @@ void Sturgeon(Entity* this) {
|
||||
} else {
|
||||
u32 tmp = this->action & 0x80;
|
||||
if (tmp) {
|
||||
if (UpdateFuseInteraction(this) != 0) {
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 1;
|
||||
}
|
||||
} else {
|
||||
if (this->interactType == 2) {
|
||||
this->action = this->action | 0xff;
|
||||
this->interactType = tmp;
|
||||
this->interactType = 0;
|
||||
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
@@ -49,7 +65,7 @@ void Sturgeon(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08064B44(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FA38)) {
|
||||
InitializeAnimation(this, 2);
|
||||
sub_0806EE04(this, &gUnk_0810FA5A, 0);
|
||||
sub_08064CC0(this);
|
||||
@@ -152,7 +168,7 @@ void sub_08064D10(Entity* this) {
|
||||
|
||||
void Sturgeon_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810FA38) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FA38)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitializeAnimation(this, 6);
|
||||
|
||||
+1
-3
@@ -29,13 +29,11 @@ void Syrup(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0806A1F8(Entity* this) {
|
||||
u32 iVar1;
|
||||
const SpriteLoadData* paVar2;
|
||||
|
||||
this->type == 0 ? (paVar2 = gUnk_081121B4) : (paVar2 = gUnk_081121C4);
|
||||
|
||||
iVar1 = LoadExtraSpriteData(this, paVar2);
|
||||
if (iVar1) {
|
||||
if (LoadExtraSpriteData(this, paVar2)) {
|
||||
this->action = 1;
|
||||
SetDefaultPriority(this, PRIO_MESSAGE);
|
||||
sub_0807DD50(this);
|
||||
|
||||
+3
-3
@@ -35,7 +35,7 @@ void Talon(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08065570(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0)) {
|
||||
InitializeAnimation(this, 0);
|
||||
sub_08078778(this);
|
||||
this->action = 1;
|
||||
@@ -75,7 +75,7 @@ void sub_0806559C(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08065608(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0)) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->field_0x68.HALF.LO = sub_0801E99C(this);
|
||||
@@ -164,7 +164,7 @@ void Talon_Head(Entity* this) {
|
||||
|
||||
void Talon_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0) != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810FEB0)) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitializeAnimation(this, 6);
|
||||
|
||||
+12
-12
@@ -127,8 +127,8 @@ void sub_08064EE8(Entity* this) {
|
||||
void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 roomFlag;
|
||||
u32 bVar2;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
s32 iVar3;
|
||||
s32 remainingFusions;
|
||||
u32 uVar5;
|
||||
|
||||
context->condition = 0;
|
||||
@@ -148,35 +148,35 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
|
||||
}
|
||||
}
|
||||
}
|
||||
iVar4 = -1;
|
||||
remainingFusions = -1;
|
||||
} else {
|
||||
if (CheckGlobalFlag(KAKERA_COMPLETE) == 0) {
|
||||
iVar4 = 100 - gSave.unk117;
|
||||
if (iVar4 < 1) {
|
||||
remainingFusions = 100 - gSave.fusedKinstoneCount;
|
||||
if (remainingFusions < 1) {
|
||||
uVar5 = 8;
|
||||
iVar4 = 0;
|
||||
remainingFusions = 0;
|
||||
SetGlobalFlag(KAKERA_COMPLETE);
|
||||
context->condition = 1;
|
||||
} else {
|
||||
uVar5 = 7;
|
||||
if (9 < iVar4) {
|
||||
if (9 < remainingFusions) {
|
||||
uVar5 = 6;
|
||||
}
|
||||
if (0x27 < iVar4) {
|
||||
if (0x27 < remainingFusions) {
|
||||
uVar5 = 5;
|
||||
}
|
||||
if (0x45 < iVar4) {
|
||||
if (0x45 < remainingFusions) {
|
||||
uVar5 = 4;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uVar5 = 8;
|
||||
iVar4 = 0;
|
||||
remainingFusions = 0;
|
||||
}
|
||||
}
|
||||
MessageNoOverlap(TingleSiblings_MessageIndices[this->type][uVar5], this);
|
||||
if (iVar4 > 0) {
|
||||
gMessage.rupees = (u16)iVar4;
|
||||
if (remainingFusions > 0) {
|
||||
gMessage.rupees = (u16)remainingFusions;
|
||||
}
|
||||
|
||||
if (CheckRoomFlag(roomFlag) == 0) {
|
||||
|
||||
@@ -199,7 +199,7 @@ void sub_0806ACC4(Entity* this) {
|
||||
u8 delay;
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, gUnk_08112674[this->type]) == 0)
|
||||
if (!LoadExtraSpriteData(this, gUnk_08112674[this->type]))
|
||||
return;
|
||||
|
||||
this->action = 1;
|
||||
|
||||
@@ -9,18 +9,18 @@ typedef struct {
|
||||
u8 unk3;
|
||||
} struct_0810B680;
|
||||
|
||||
extern void (*const gUnk_0810B774[])(Entity*);
|
||||
extern void (*const gUnk_0810B77C[])(Entity*);
|
||||
extern void sub_08061CB4(Entity*, u32);
|
||||
extern void sub_08061D64(Entity*);
|
||||
extern void sub_08062048(Entity*);
|
||||
|
||||
extern SpriteLoadData* gUnk_0810B6EC[];
|
||||
extern u8 gUnk_0810B78C[];
|
||||
extern struct_0810B680 gUnk_0810B680[];
|
||||
extern SpriteLoadData* gUnk_0810B6EC[];
|
||||
extern u32 gUnk_0810B740[]; // TODO fourth parameter of sub_08078850
|
||||
extern u8 gUnk_0810B748[]; // TODO third parameter of sub_08078850
|
||||
extern u16 gUnk_0810B74A[];
|
||||
extern u8 gUnk_0810B748[];
|
||||
extern u32 gUnk_0810B740[];
|
||||
extern void (*const gUnk_0810B774[])(Entity*);
|
||||
extern void (*const gUnk_0810B77C[])(Entity*);
|
||||
extern u8 gUnk_0810B78C[];
|
||||
extern u16 gUnk_0810B790[];
|
||||
extern u16 gUnk_0810B7BA[];
|
||||
extern Dialog gUnk_0810B7C0[];
|
||||
@@ -283,7 +283,7 @@ void sub_08062048(Entity* this) {
|
||||
|
||||
void Townsperson_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_0810B6EC[this->type]) == 0) {
|
||||
if (!LoadExtraSpriteData(this, gUnk_0810B6EC[this->type])) {
|
||||
return;
|
||||
}
|
||||
this->action++;
|
||||
|
||||
@@ -39,10 +39,7 @@ void WindTribespeople(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0806C798(Entity* this) {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = LoadExtraSpriteData(this, gUnk_08113A1C + (this->type * 4));
|
||||
if (iVar1 != 0) {
|
||||
if (LoadExtraSpriteData(this, gUnk_08113A1C + (this->type * 4))) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->animationState = this->timer;
|
||||
@@ -274,7 +271,7 @@ void sub_0806CA5C(Entity* this, ScriptExecutionContext* context) {
|
||||
|
||||
void WindTribespeople_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113A1C[this->type * 4]) != 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08113A1C[this->type * 4])) {
|
||||
this->action++;
|
||||
this->spriteSettings.draw = 1;
|
||||
InitializeAnimation(this, 6);
|
||||
|
||||
+10
-14
@@ -5,8 +5,8 @@
|
||||
#include "flags.h"
|
||||
#include "npc.h"
|
||||
|
||||
void sub_08068680(Entity*, Entity*);
|
||||
void sub_08068694(Entity*, Entity*);
|
||||
void ZeldaFollower_Hide(Entity*, Entity*);
|
||||
void ZeldaFollower_Show(Entity*, Entity*);
|
||||
extern Entity* GetEntityByType(u32, u32);
|
||||
extern void sub_080686C4(Entity*, Entity*);
|
||||
void sub_08066CCC(Entity*);
|
||||
@@ -44,7 +44,7 @@ void sub_08066D14(Entity* this, ScriptExecutionContext* context) {
|
||||
this->animationState = parent->animationState;
|
||||
this->spriteSettings.draw = 1;
|
||||
CopyPosition(parent, this);
|
||||
sub_08068680(this, this->parent);
|
||||
ZeldaFollower_Hide(this, this->parent);
|
||||
context->condition = 1;
|
||||
} else {
|
||||
context->condition = 0;
|
||||
@@ -52,16 +52,14 @@ void sub_08066D14(Entity* this, ScriptExecutionContext* context) {
|
||||
}
|
||||
|
||||
void sub_08066D4C(Entity* this, ScriptExecutionContext* context) {
|
||||
Entity* parent;
|
||||
|
||||
parent = this->parent;
|
||||
Entity* parent = this->parent;
|
||||
if (this->parent != NULL) {
|
||||
CopyPosition(this, parent);
|
||||
this->parent->spriteSettings.draw = 1;
|
||||
this->parent->animationState = this->animationState;
|
||||
this->spriteSettings.draw = 0;
|
||||
this->followerFlag &= 0xFE;
|
||||
sub_08068694(this, this->parent);
|
||||
ZeldaFollower_Show(this, this->parent);
|
||||
context->condition = 1;
|
||||
} else {
|
||||
context->condition = 0;
|
||||
@@ -85,13 +83,11 @@ void sub_08066D94(Entity* this) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
void SetZeldaFollowTarget(Entity* this) {
|
||||
Entity* pEVar1;
|
||||
|
||||
pEVar1 = DeepFindEntityByID(NPC, ZELDA_FOLLOWER);
|
||||
if (pEVar1 != NULL) {
|
||||
CopyPosition(this, pEVar1);
|
||||
sub_080686C4(this, pEVar1);
|
||||
void SetZeldaFollowTarget(Entity* target) {
|
||||
Entity* follower = DeepFindEntityByID(NPC, ZELDA_FOLLOWER);
|
||||
if (follower != NULL) {
|
||||
CopyPosition(target, follower);
|
||||
sub_080686C4(target, follower);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+14
-15
@@ -3,9 +3,8 @@
|
||||
#include "functions.h"
|
||||
#include "common.h"
|
||||
|
||||
extern void sub_08068318(Entity*);
|
||||
extern void sub_0806854C(Entity*, u32*);
|
||||
|
||||
void sub_08068318(Entity*);
|
||||
void sub_0806854C(Entity*, u32*);
|
||||
void sub_08068578(Entity* this);
|
||||
|
||||
void ZeldaFollower(Entity* this) {
|
||||
@@ -40,20 +39,20 @@ void sub_0806854C(Entity* this, u32* none) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/zeldaFollower/sub_08068578.inc", void sub_08068578(Entity* this))
|
||||
|
||||
void sub_08068680(Entity* this, Entity* entity) {
|
||||
entity->field_0x68.HALF.LO = 0;
|
||||
entity->spriteSettings.draw = 0;
|
||||
void ZeldaFollower_Hide(Entity* zelda, Entity* follower) {
|
||||
follower->field_0x68.HALF.LO = 0;
|
||||
follower->spriteSettings.draw = 0;
|
||||
}
|
||||
|
||||
void sub_08068694(Entity* this, Entity* entity) {
|
||||
entity->field_0x68.HALF.LO = 1;
|
||||
entity->spriteSettings.draw = 1;
|
||||
entity->animationState = this->animationState;
|
||||
sub_08068578(entity);
|
||||
InitAnimationForceUpdate(entity, entity->animationState / 2);
|
||||
void ZeldaFollower_Show(Entity* zelda, Entity* follower) {
|
||||
follower->field_0x68.HALF.LO = 1;
|
||||
follower->spriteSettings.draw = 1;
|
||||
follower->animationState = zelda->animationState;
|
||||
sub_08068578(follower);
|
||||
InitAnimationForceUpdate(follower, follower->animationState / 2);
|
||||
}
|
||||
|
||||
void sub_080686C4(Entity* this, Entity* entity) {
|
||||
entity->y.HALF.HI -= 0x10;
|
||||
sub_08068578(entity);
|
||||
void sub_080686C4(Entity* zelda, Entity* follower) {
|
||||
follower->y.HALF.HI -= 0x10;
|
||||
sub_08068578(follower);
|
||||
}
|
||||
|
||||
@@ -495,3 +495,16 @@ void ShowNPCDialogue(Entity* ent, const Dialog* dia) {
|
||||
MessageFromTarget(uVar2);
|
||||
}
|
||||
}
|
||||
|
||||
const u8 gUnk_08114F30[] = {
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
};
|
||||
const u8 gUnk_08114F34[] = {
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
3,
|
||||
};
|
||||
|
||||
@@ -6,13 +6,12 @@
|
||||
*/
|
||||
#include "asm.h"
|
||||
#include "entity.h"
|
||||
#include "hitbox.h"
|
||||
#include "physics.h"
|
||||
#include "projectile.h"
|
||||
#include "room.h"
|
||||
#include "sound.h"
|
||||
|
||||
extern Hitbox gUnk_080FD178;
|
||||
|
||||
void AngryStatue_Init(Entity*);
|
||||
void AngryStatue_Action1(Entity*);
|
||||
void AngryStatue_Action2(Entity*);
|
||||
@@ -29,7 +28,7 @@ void AngryStatue(Entity* this) {
|
||||
|
||||
void AngryStatue_Init(Entity* this) {
|
||||
this->action = 1;
|
||||
this->hitbox = &gUnk_080FD178;
|
||||
this->hitbox = (Hitbox*)&gUnk_080FD178;
|
||||
SetTile(0x4022, COORD_TO_TILE(this), this->collisionLayer);
|
||||
InitializeAnimation(this, this->type);
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ void CameraTarget_Action2(Entity* this) {
|
||||
u32 bVar3;
|
||||
u32 temp;
|
||||
u32 temp2;
|
||||
const struct_080C9CBC* ptr;
|
||||
const KinstoneWorldEvent* ptr;
|
||||
|
||||
if ((this->type != 1) &&
|
||||
(((u8)(gUnk_03003DF0.unk_4[3] - 1) >= 100 || (this->child != *(Entity**)(gUnk_03003DF0.unk_4 + 8))))) {
|
||||
@@ -132,7 +132,7 @@ void CameraTarget_Action2(Entity* this) {
|
||||
} else {
|
||||
bVar2 = this->type2;
|
||||
}
|
||||
ptr = gUnk_080C9CBC + bVar2;
|
||||
ptr = gKinstoneWorldEvents + bVar2;
|
||||
bVar1 = ptr->unk6;
|
||||
bVar3 = bVar1 & 1;
|
||||
this->palette.b.b0 = bVar3;
|
||||
|
||||
@@ -13,16 +13,25 @@
|
||||
#include "screen.h"
|
||||
#include "script.h"
|
||||
|
||||
extern u8 gUnk_08114F30[];
|
||||
extern u8 gUnk_08114F34[];
|
||||
extern u8 gUnk_08122AE0[];
|
||||
extern u16 gUnk_08122AE8[];
|
||||
extern s8 gUnk_08122AF8[];
|
||||
extern s8 gUnk_08122AF8[]; // TODO struct s8XY
|
||||
extern u16 gUnk_08122B00[];
|
||||
extern s16 gUnk_08122B0E[];
|
||||
extern u16 gUnk_08122B1E[];
|
||||
extern s8 gUnk_08122B2E[];
|
||||
extern Coords8 gUnk_08122B2E[]; // TODO struct xy
|
||||
typedef struct {
|
||||
Hitbox hit;
|
||||
u8 _8[4]; // TODO fourth param of sub_08078850
|
||||
u8 _c;
|
||||
} HitboxCfg;
|
||||
extern HitboxCfg gUnk_08122B3C[];
|
||||
|
||||
// npcUtils.c
|
||||
extern u8 gUnk_08114F30[];
|
||||
extern u8 gUnk_08114F34[];
|
||||
|
||||
// TODO use Script type
|
||||
extern u16 script_CutsceneMiscObjectTheLittleHat;
|
||||
extern u16 script_CutsceneMiscObjectSwordInChest;
|
||||
extern u16 script_08015B14;
|
||||
@@ -56,13 +65,6 @@ typedef struct {
|
||||
u32 anim;
|
||||
} Type1F;
|
||||
|
||||
typedef struct {
|
||||
Hitbox hit;
|
||||
u8 _8[4];
|
||||
u8 _c;
|
||||
} HitboxCfg;
|
||||
extern HitboxCfg gUnk_08122B3C[];
|
||||
|
||||
typedef void(CutsceneMiscObjectTypeAction)(CutsceneMiscObjectEntity*);
|
||||
|
||||
CutsceneMiscObjectTypeAction sub_08094A5C;
|
||||
@@ -1265,10 +1267,10 @@ void sub_080961F4(CutsceneMiscObjectEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08096208(CutsceneMiscObjectEntity* this, u32 x) {
|
||||
s8* p = &gUnk_08122B2E[x * 2];
|
||||
Coords8* p = &gUnk_08122B2E[x];
|
||||
Entity* e = CreateObject(CUTSCENE_MISC_OBJECT, 0x26, 0);
|
||||
if (e != NULL) {
|
||||
PositionRelative(super, e, Q_16_16(p[0]), Q_16_16(p[1]));
|
||||
PositionRelative(super, e, Q_16_16(p->x), Q_16_16(p->y));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
-18
@@ -6,9 +6,10 @@
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "figurineMenu.h"
|
||||
#include "fileselect.h"
|
||||
#include "functions.h"
|
||||
#include "global.h"
|
||||
#include "kinstone.h"
|
||||
#include "item.h"
|
||||
#include "message.h"
|
||||
#include "object.h"
|
||||
@@ -43,13 +44,6 @@ typedef struct {
|
||||
|
||||
extern void ModShells(s32);
|
||||
extern u8 gUnk_020227F0;
|
||||
typedef struct {
|
||||
u32 unk_0;
|
||||
u16 unk_4;
|
||||
u8 unk_6;
|
||||
u8 unk_7;
|
||||
} struct_080FC3E4;
|
||||
extern const struct_080FC3E4 gUnk_080FC3E4[];
|
||||
|
||||
void sub_0808804C(FigurineDeviceEntity*);
|
||||
void sub_08087F58(FigurineDeviceEntity*);
|
||||
@@ -509,13 +503,13 @@ NONMATCH("asm/non_matching/figurineDevice/sub_08088160.inc",
|
||||
switch (ptr->unk_6) {
|
||||
case 0x8:
|
||||
case 0x40:
|
||||
if (CheckLocalFlagByBank(ptr->unk_0, ptr->unk_4)) {
|
||||
if (CheckLocalFlagByBank(ptr->bank, ptr->flag)) {
|
||||
result = TRUE;
|
||||
}
|
||||
return result;
|
||||
break;
|
||||
case 0x10:
|
||||
if (CheckKinstoneFused(gUnk_080FC3E4[param_2].unk_4)) {
|
||||
if (CheckKinstoneFused(gUnk_080FC3E4[param_2].flag)) {
|
||||
result = TRUE;
|
||||
}
|
||||
return result;
|
||||
@@ -523,30 +517,34 @@ NONMATCH("asm/non_matching/figurineDevice/sub_08088160.inc",
|
||||
default:
|
||||
return result;
|
||||
case 0x20:
|
||||
switch (gUnk_080FC3E4[param_2].unk_4) {
|
||||
switch (gUnk_080FC3E4[param_2].flag) {
|
||||
case 0:
|
||||
if (CheckKinstoneFused(0x20) || CheckKinstoneFused(0x10) || CheckKinstoneFused(0x19)) {
|
||||
if (CheckKinstoneFused(KINSTONE_20) || CheckKinstoneFused(KINSTONE_10) ||
|
||||
CheckKinstoneFused(KINSTONE_19)) {
|
||||
result = TRUE;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if ((u8)this->unk_7c >= 5 && CheckKinstoneFused(0x28)) {
|
||||
if ((u8)this->unk_7c >= 5 && CheckKinstoneFused(KINSTONE_28)) {
|
||||
result = TRUE;
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
if (CheckKinstoneFused(0x54) || CheckKinstoneFused(0x56) || CheckKinstoneFused(0x3d)) {
|
||||
if (CheckKinstoneFused(KINSTONE_54) || CheckKinstoneFused(KINSTONE_56) ||
|
||||
CheckKinstoneFused(KINSTONE_3D)) {
|
||||
result = TRUE;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (CheckKinstoneFused(0x3b) || CheckKinstoneFused(0x4a) || CheckKinstoneFused(0xd)) {
|
||||
if (CheckKinstoneFused(KINSTONE_3B) || CheckKinstoneFused(KINSTONE_4A) ||
|
||||
CheckKinstoneFused(KINSTONE_D)) {
|
||||
result = TRUE;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (CheckKinstoneFused(0x49) || CheckKinstoneFused(0x55) || CheckKinstoneFused(0x3c)) {
|
||||
if (CheckKinstoneFused(KINSTONE_49) || CheckKinstoneFused(KINSTONE_55) ||
|
||||
CheckKinstoneFused(KINSTONE_3C)) {
|
||||
result = TRUE;
|
||||
}
|
||||
break;
|
||||
@@ -598,9 +596,9 @@ void sub_080882A8(FigurineDeviceEntity* this) {
|
||||
sub_08057044(this->unk_83, &gUnk_020227E8[1], 0x202020);
|
||||
ptr = (u8*)0x02000000;
|
||||
if (ptr[7] == 0) {
|
||||
sub_0805F46C((u32)gUnk_08120AE4[super->type2], (Font*)&gUnk_08120AB4); // TODO convert data
|
||||
ShowTextBox(gUnk_08120AE4[super->type2], (Font*)&gUnk_08120AB4); // TODO convert data
|
||||
} else {
|
||||
sub_0805F46C((u32)gUnk_08120AE4[super->type2], (Font*)&gUnk_08120ACC); // TODO convert data
|
||||
ShowTextBox(gUnk_08120AE4[super->type2], (Font*)&gUnk_08120ACC); // TODO convert data
|
||||
}
|
||||
gScreen.bg0.updated = 1;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ void sub_0808E7F0(Entity* this) {
|
||||
|
||||
void sub_0808E818(Entity* this) {
|
||||
u32 var0;
|
||||
u32 var1;
|
||||
u32 offset;
|
||||
|
||||
if (!sub_0808E950()) {
|
||||
int var2 = -1;
|
||||
@@ -104,8 +104,8 @@ void sub_0808E818(Entity* this) {
|
||||
this->field_0x68.HWORD = CheckGlobalFlag(EZERO_1ST) == 0 ? 0x400 : 0x100;
|
||||
this->field_0x70.BYTES.byte0 = 4;
|
||||
this->animationState = 2;
|
||||
var1 = gUnk_08133368[GetPlayerPalette(TRUE) - 22] & 0xFFFFFF;
|
||||
LoadPalettes(&gGlobalGfxAndPalettes[var1], 31, 1);
|
||||
offset = gUnk_08133368[GetPlayerPalette(TRUE) - 22] & 0xFFFFFF;
|
||||
LoadPalettes(&gGlobalGfxAndPalettes[offset], 31, 1);
|
||||
}
|
||||
|
||||
if (gUI.lastState == 0) {
|
||||
|
||||
@@ -307,7 +307,7 @@ void FrozenOctorok_Action1SubAction5(FrozenOctorokEntity* this) {
|
||||
void FrozenOctorok_Action1SubAction6(FrozenOctorokEntity* this) {
|
||||
LinearMoveUpdate(super);
|
||||
if ((gRoomControls.origin_y + 0x1c8) < super->y.HALF.HI) {
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
SetLocalFlag(0x9b);
|
||||
DeleteEntity(super->parent);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "effects.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "hitbox.h"
|
||||
#include "object.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
@@ -23,8 +24,6 @@ typedef struct {
|
||||
union SplitWord unk84;
|
||||
} GleerokParticleEntity;
|
||||
|
||||
extern Hitbox gUnk_080FD2E8;
|
||||
|
||||
void GleerokParticle_Init(GleerokParticleEntity*);
|
||||
void GleerokParticle_Action1(GleerokParticleEntity*);
|
||||
void GleerokParticle_Action2(GleerokParticleEntity*);
|
||||
|
||||
@@ -60,10 +60,10 @@ void GreatFairy_CallBehavior(Entity* this) {
|
||||
if ((gPlayerEntity.y.HALF.HI - gRoomControls.origin_y) < 168) {
|
||||
|
||||
gRoomControls.camera_target = this;
|
||||
gRoomControls.unk5 = 2;
|
||||
gRoomControls.scrollSpeed = 2;
|
||||
} else {
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
gRoomControls.unk5 = 2;
|
||||
gRoomControls.scrollSpeed = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ void KinstoneSpark(Entity* this) {
|
||||
this->spriteRendering.b3 = 1;
|
||||
this->spritePriority.b0 = 0;
|
||||
this->spriteOrientation.flipY = 1;
|
||||
ChangeObjPalette(this, gUnk_080C9CBC[gFuseInfo._3].unk0);
|
||||
ChangeObjPalette(this, gKinstoneWorldEvents[gFuseInfo.kinstoneId].objPalette);
|
||||
}
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
+10
-10
@@ -42,7 +42,7 @@ void LightRay_Type0(LightRayEntity* this) {
|
||||
super->timer = 60;
|
||||
super->subtimer = 0;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
@@ -76,7 +76,7 @@ void LightRay_Type0(LightRayEntity* this) {
|
||||
case 2:
|
||||
if (--super->timer == 0) {
|
||||
gScreen.lcd.displayControl |= 0x4800;
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
(super->parent)->subAction = 1;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
@@ -116,7 +116,7 @@ void LightRay_Type1(LightRayEntity* this) {
|
||||
super->timer = 60;
|
||||
super->subtimer = 32;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
@@ -148,7 +148,7 @@ void LightRay_Type1(LightRayEntity* this) {
|
||||
break;
|
||||
case 2:
|
||||
if (--super->timer == 0) {
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
gScreen.lcd.displayControl &= 0xd7ff;
|
||||
(super->parent)->subAction = 1;
|
||||
DeleteThisEntity();
|
||||
@@ -167,7 +167,7 @@ void LightRay_Type2(LightRayEntity* this) {
|
||||
super->timer = 60;
|
||||
super->subtimer = 0;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
@@ -214,12 +214,12 @@ void LightRay_Type2(LightRayEntity* this) {
|
||||
if (--super->timer == 0) {
|
||||
super->action = 4;
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
gRoomControls.unk5 = 2;
|
||||
gRoomControls.scrollSpeed = 2;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (sub_0809BE78(this)) {
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
(super->parent)->subAction = 1;
|
||||
SetRoomFlag(100);
|
||||
DeleteThisEntity();
|
||||
@@ -237,7 +237,7 @@ void LightRay_Type3(LightRayEntity* this) {
|
||||
super->timer = 60;
|
||||
super->subtimer = 0;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
@@ -293,7 +293,7 @@ void LightRay_Type4(LightRayEntity* this) {
|
||||
super->timer = 60;
|
||||
super->subtimer = 128;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 1;
|
||||
gRoomControls.scrollSpeed = 1;
|
||||
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
|
||||
tmp = 2;
|
||||
} else {
|
||||
@@ -319,7 +319,7 @@ void LightRay_Type4(LightRayEntity* this) {
|
||||
break;
|
||||
case 2:
|
||||
if (--super->timer == 0) {
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
(super->parent)->subAction = 1;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
@@ -19,12 +19,6 @@ typedef struct {
|
||||
/*0x68*/ u16 unk_68;
|
||||
} LinkHoldingItemEntity;
|
||||
|
||||
typedef struct {
|
||||
u8 unk_0[6];
|
||||
u16 unk_6;
|
||||
} struct_080FD964;
|
||||
extern const struct_080FD964 gUnk_080FD964[];
|
||||
|
||||
void LinkHoldingItem_Init(LinkHoldingItemEntity*);
|
||||
void LinkHoldingItem_Action1(LinkHoldingItemEntity*);
|
||||
void LinkHoldingItem_Action2(LinkHoldingItemEntity*);
|
||||
@@ -74,7 +68,7 @@ void LinkHoldingItem_Action1(LinkHoldingItemEntity* this) {
|
||||
break;
|
||||
case 2:
|
||||
GiveItem(super->type, super->type2);
|
||||
this->unk_68 = gUnk_080FD964[super->type].unk_6;
|
||||
this->unk_68 = gUnk_080FD964[super->type].gotItemMessageId;
|
||||
SoundReq(SFX_ITEM_GET);
|
||||
break;
|
||||
case 5:
|
||||
|
||||
@@ -223,7 +223,7 @@ void LockedDoor_Action8(Entity* this) {
|
||||
this->timer = 20;
|
||||
sub_08083658(this);
|
||||
SetFlag(this->field_0x86.HWORD);
|
||||
sub_080526F8(-1);
|
||||
ModDungeonKeys(-1);
|
||||
}
|
||||
|
||||
void sub_08083638(Entity* this) {
|
||||
|
||||
@@ -134,7 +134,7 @@ void Minecart_Action3(MinecartEntity* this) {
|
||||
u32 iVar2;
|
||||
u32 uVar3;
|
||||
|
||||
gRoomControls.unk5 = 7;
|
||||
gRoomControls.scrollSpeed = 7;
|
||||
if ((gPlayerState.flags & PL_IN_MINECART) == 0) {
|
||||
super->action = 1;
|
||||
return;
|
||||
|
||||
@@ -40,7 +40,7 @@ void ObjectA(Entity* this) {
|
||||
SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
|
||||
SetFlag(this->field_0x86.HWORD);
|
||||
CreateDust(this);
|
||||
sub_080526F8(-1);
|
||||
ModDungeonKeys(-1);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ void PushableGrave_Action2(PushableGraveEntity* this) {
|
||||
super->subAction = 1;
|
||||
super->subtimer = 120;
|
||||
gRoomControls.camera_target = super;
|
||||
gRoomControls.unk5 = 2;
|
||||
gRoomControls.scrollSpeed = 2;
|
||||
}
|
||||
} else {
|
||||
if (--super->subtimer == 0) {
|
||||
@@ -122,7 +122,7 @@ void PushableGrave_Action3(PushableGraveEntity* this) {
|
||||
sub_080977F4(this);
|
||||
if (super->type == 0) {
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
gRoomControls.unk5 = 4;
|
||||
gRoomControls.scrollSpeed = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
#include "hitbox.h"
|
||||
#include "object.h"
|
||||
|
||||
extern void sub_0807CAC8(u32);
|
||||
extern u32 sub_0807CAEC(u32);
|
||||
extern void EnableDungeonWarp(u32);
|
||||
extern u32 IsDungeonWarpActive(u32);
|
||||
|
||||
void WarpPoint_Init(Entity*);
|
||||
void WarpPoint_Action1(Entity*);
|
||||
@@ -50,7 +50,7 @@ void WarpPoint_Init(Entity* this) {
|
||||
if (CheckFlags(this->field_0x86.HWORD)) {
|
||||
sub_0808B830(this);
|
||||
} else {
|
||||
if (AreaIsDungeon() && sub_0807CAEC(this->type)) {
|
||||
if (AreaIsDungeon() && IsDungeonWarpActive(this->type)) {
|
||||
sub_0808B830(this);
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ void WarpPoint_Action1(Entity* this) {
|
||||
if (CheckFlags(this->field_0x86.HWORD)) {
|
||||
sub_0808B830(this);
|
||||
if (AreaIsDungeon()) {
|
||||
sub_0807CAC8(this->type);
|
||||
EnableDungeonWarp(this->type);
|
||||
}
|
||||
this->action = 2;
|
||||
this->subtimer = 60;
|
||||
|
||||
+15
-1
@@ -13,6 +13,19 @@ extern const ObjectDefinition gObjectDefinitions[];
|
||||
|
||||
static Entity* CreateSpeechBubble(Entity*, u32, s32, s32);
|
||||
|
||||
const s8 gUnk_08126EE4[] = {
|
||||
0, -32, //
|
||||
22, -6, //
|
||||
0, 12, //
|
||||
-22, -6,
|
||||
};
|
||||
const s8 gUnk_08126EEC[] = {
|
||||
0, -13, //
|
||||
13, 0, //
|
||||
0, 16, //
|
||||
-13, 0,
|
||||
};
|
||||
|
||||
Entity* CreateLinkAnimation(Entity* parent, u32 type, u32 type2) {
|
||||
Entity* e = CreateItemGetEntity();
|
||||
if (e != NULL) {
|
||||
@@ -253,7 +266,8 @@ void CreateSparkle(Entity* entity) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/objectUtils/sub_080A2BE4.inc", void SyncPlayerToPlatform(Entity* this, bool32 param_2)) {
|
||||
NONMATCH("asm/non_matching/objectUtils/SyncPlayerToPlatform.inc",
|
||||
void SyncPlayerToPlatform(Entity* this, bool32 param_2)) {
|
||||
s16 oldValue;
|
||||
s32 diff;
|
||||
u16 newValue;
|
||||
|
||||
+13
-13
@@ -167,9 +167,9 @@ void LinearMoveUpdate(Entity* ent) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806F704(Entity* ent, u32 a2) {
|
||||
ent->x.HALF.HI = (((16 * a2) & 0x3F0) | 8) + gRoomControls.origin_x;
|
||||
ent->y.HALF.HI = (((a2 >> 2) & 0x3F0) | 8) + gRoomControls.origin_y;
|
||||
void sub_0806F704(Entity* this, u32 tilePos) {
|
||||
this->x.HALF.HI = (((16 * tilePos) & 0x3F0) | 8) + gRoomControls.origin_x;
|
||||
this->y.HALF.HI = (((tilePos >> 2) & 0x3F0) | 8) + gRoomControls.origin_y;
|
||||
}
|
||||
|
||||
/** Calculates the tile position of the player but modifies it by the hitbox depending on the animation state. */
|
||||
@@ -509,30 +509,30 @@ bool32 sub_0806FDA0(Entity* this) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 LoadExtraSpriteData(Entity* ent, const SpriteLoadData* data) {
|
||||
bool32 LoadExtraSpriteData(Entity* entity, const SpriteLoadData* spriteData) {
|
||||
const SpriteLoadData* ptr;
|
||||
u32 index;
|
||||
struct_gUnk_020000C0_1* ptr2;
|
||||
if (sub_0806FDA0(ent) == 0)
|
||||
return 0;
|
||||
if (sub_0806FDA0(entity) == 0)
|
||||
return FALSE;
|
||||
|
||||
UnloadOBJPalette(ent);
|
||||
ptr2 = gUnk_020000C0[ent->spriteAnimation[2]].unk_00;
|
||||
ptr = data;
|
||||
UnloadOBJPalette(entity);
|
||||
ptr2 = gUnk_020000C0[entity->spriteAnimation[2]].unk_00;
|
||||
ptr = spriteData;
|
||||
|
||||
for (index = 0; index < 4 && (((u16*)ptr)[1] & 0x3ff); index++) {
|
||||
u32 pal = LoadObjPalette(ent, ((*(u32*)ptr) << 0x16) >> 0x16);
|
||||
u32 pal = LoadObjPalette(entity, ((*(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);
|
||||
sub_0806FEFC(ptr2, entity);
|
||||
}
|
||||
|
||||
ptr2++;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
ent->spriteAnimation[1] = 0;
|
||||
return 1;
|
||||
entity->spriteAnimation[1] = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void UnloadOBJPalette2(Entity* ent) {
|
||||
|
||||
@@ -262,3 +262,69 @@ void sub_08019468(PlayerItemBowEntity* this) {
|
||||
CreateFx(super, FX_REFLECT5, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Probably belongs to collision.c, but needs to be placed at the end of playerItemBow.c or start of
|
||||
// playerItemSwordBeam.c
|
||||
const u8 gUnk_080B3E80[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255,
|
||||
255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 255,
|
||||
0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 48, 34, 34, 36, 0, 0, 29, 29, 29, 255, 255, 29,
|
||||
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 255, 255, 255, 255, 255, 29, 29, 29, 255, 255, 29, 29,
|
||||
255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 32, 32,
|
||||
15, 15, 15, 15, 0, 0, 0, 0, 21, 21, 20, 20, 95, 255, 255, 255, 255, 255, 255, 15, 41, 41, 41,
|
||||
41, 0, 36, 36, 36, 15, 15, 15, 15, 255, 255, 255, 255, 255, 255, 15, 15, 15, 15, 39, 39, 15, 15,
|
||||
15, 39, 15, 15, 35, 15, 15, 35, 15, 15, 15, 15, 15, 15, 15, 15, 15, 39, 15, 15, 39, 39, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 39, 15, 15, 255, 39, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 39, 39, 15, 15, 39, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, 15, 15, 35,
|
||||
35, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, 35, 15, 15, 35, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 15, 15, 15, 15, 15, 15, 95, 255, 255, 15, 15, 21, 15, 0, 0, 0, 255, 12, 0, 0, 12,
|
||||
12, 66, 96, 15, 29, 255, 15, 15, 15, 0, 15, 15, 15, 15, 10, 5, 10, 5, 1, 1, 1, 0, 0,
|
||||
0, 0, 0, 0, 5, 15, 10, 0, 0, 5, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
|
||||
10, 4, 12, 8, 0, 0, 0, 5, 0, 10, 4, 12, 8, 15, 15, 15, 15, 15, 16, 17, 17, 16, 42,
|
||||
42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 27, 25, 28, 26, 43, 43, 97, 23, 23, 84, 23, 23,
|
||||
23, 0, 0, 84, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 18, 15, 15, 19, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 5, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 1, 3, 2, 0, 0, 5, 15, 10, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 71, 15, 15, 15, 1, 3, 2, 15, 15, 5, 15, 10, 15,
|
||||
15, 4, 0, 8, 15, 12, 12, 0, 12, 12, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 16, 15, 17, 15, 15, 15, 15, 15,
|
||||
15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 15, 0, 0, 5, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
39, 15, 15, 39, 255, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 39, 15, 15, 39, 255, 15, 15,
|
||||
15, 15, 255, 255, 255, 255, 255, 255, 15, 39, 15, 15, 255, 39, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
|
||||
0, 0, 0, 5, 0, 10, 4, 12, 8, 70, 75, 74, 72, 71, 96, 98, 97, 99, 100, 102, 15, 80, 48,
|
||||
48, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 37, 15, 255, 255, 255, 255, 255, 255, 0, 0, 33, 33,
|
||||
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
|
||||
33, 33, 33, 33, 33, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 255, 255, 255, 255, 255,
|
||||
40, 255, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 21, 20, 20,
|
||||
15, 15, 15, 15, 15, 15, 15, 15, 255, 1, 1, 1, 255, 255, 255, 255, 24, 24, 24, 24, 38, 15, 0,
|
||||
28, 26, 27, 25, 255, 0, 15, 21, 15, 15, 15, 19, 18, 15, 15, 15, 18, 19, 35, 39, 0, 0, 2,
|
||||
14, 13, 12, 3, 9, 6, 4, 8, 11, 7, 10, 5, 3, 107, 103, 106, 15, 12, 20, 21, 15, 0, 15,
|
||||
40, 95, 15, 5, 10, 16, 17, 18, 19, 71, 12, 13, 14, 71, 20, 92, 13, 5, 4, 8, 1, 2, 10,
|
||||
5, 10, 15, 4, 8, 15, 3, 2, 5, 15, 10, 4, 12, 8, 3, 2, 5, 15, 10, 4, 12, 8, 92,
|
||||
84, 81, 83, 81, 82, 83, 90, 87, 91, 95, 84, 88, 92, 85, 93, 94, 39, 88, 85, 10, 83, 90, 81,
|
||||
15, 89, 0, 0, 69, 71, 67, 70, 0, 3, 15, 1, 2, 3, 10, 12, 5, 4, 8, 4, 1, 3, 15,
|
||||
95, 97, 0, 3, 28, 27, 21, 69, 3, 96, 12, 102, 100, 101, 26, 25, 18, 17, 19, 16, 2, 4, 8,
|
||||
14, 15, 11, 84, 69, 68, 4, 13, 0, 0, 12, 12, 15, 15, 10, 5, 10, 5, 12, 97, 10, 5, 11,
|
||||
7, 67, 69, 1, 2, 4, 8, 13, 3, 3, 7, 15, 3, 0, 2, 84, 92, 88, 12, 67, 0, 0, 8,
|
||||
1, 2, 87, 95, 91, 82, 14, 18, 19, 10, 5, 0, 10, 5, 3, 63, 19, 18, 47, 46, 17, 16, 11,
|
||||
7, 15, 0, 3, 15, 15, 1, 8, 12, 12, 15, 1, 3, 2, 5, 10, 4, 12, 8, 9, 39, 2, 14,
|
||||
13, 12, 3, 6, 9, 4, 8, 11, 7, 10, 5, 34, 35, 4, 12, 3, 3, 1, 5, 10, 4, 8, 0,
|
||||
107, 103, 106, 18, 45, 44, 0, 15, 41, 40, 0, 0, 0, 0, 0, 0, 0, 20, 33, 39, 67, 4, 8,
|
||||
12, 3, 3, 1, 2, 0, 12, 3, 2, 5, 10, 14, 13, 4, 8, 11, 7, 12, 0, 0, 39, 1, 2,
|
||||
1, 2, 4, 12, 7, 11, 4, 8, 16, 17, 43, 43, 18, 19, 10, 5, 2, 1, 35, 1, 3, 2, 5,
|
||||
10, 14, 13, 11, 7, 4, 8, 10, 5, 10, 5, 13, 14, 8, 4, 7, 11, 0, 9, 6, 0, 15, 7,
|
||||
11, 3, 33, 33, 33, 33, 33, 33, 33, 15, 5, 10, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 3, 48, 48, 0, 0, 0, 0, 0, 0, 48, 48,
|
||||
33, 33, 0, 15, 83, 92, 85, 90, 96, 97, 95, 18, 19, 16, 10, 10, 35, 10, 5, 14, 13, 11, 7,
|
||||
10, 5, 14, 13, 11, 7, 0, 0, 3, 0, 39, 12, 12, 33, 0, 0,
|
||||
};
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
#include "common.h"
|
||||
#include "asm.h"
|
||||
|
||||
extern const u8 gUnk_080B7910[];
|
||||
extern const u8 gUnk_080B79A7[];
|
||||
extern const u8 gUnk_080B7A3E[]; // TODO figure out type from arm_sub_080B1B84 and arm_sub_080B1BA4
|
||||
|
||||
void PlayerItemCellOverwriteSet(Entity* this) {
|
||||
static const s8 gUnk_080B7B6C[] = { 0x0, -0x10, 0x10, 0x0, 0x0, 0x10, -0x10, 0x0 };
|
||||
u32 tmp;
|
||||
|
||||
@@ -3,7 +3,11 @@
|
||||
#include "functions.h"
|
||||
#include "sound.h"
|
||||
|
||||
extern const u8* gUnk_08132714[]; // Anim index lists?
|
||||
// TODO spriteAnimations in here
|
||||
// TODO sprite frame in here
|
||||
extern Hitbox gUnk_08132B28;
|
||||
|
||||
void sub_080ADC84(Entity*);
|
||||
void PlayerItemGustJar_Init(Entity*);
|
||||
void PlayerItemGustJar_Action1(Entity*);
|
||||
@@ -143,8 +147,6 @@ void sub_080ADC84(Entity* this) {
|
||||
this->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX;
|
||||
}
|
||||
|
||||
extern const u8* gUnk_08132714[];
|
||||
|
||||
void sub_080ADCA0(Entity* this, u32 param_2) {
|
||||
const u8* pFVar1 = gUnk_08132714[(param_2 + (gPlayerEntity.animationState >> 1))];
|
||||
const u8* pFVar2;
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include "collision.h"
|
||||
#include "playeritem.h"
|
||||
|
||||
const Hitbox gUnk_081271CC = { 0, 0, { 1, 0, 0, 1 }, 8, 8 };
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 unk_68;
|
||||
@@ -17,9 +19,35 @@ typedef struct {
|
||||
u32 unk_78;
|
||||
u8* unk_7c;
|
||||
} PlayerItemShieldEntity;
|
||||
void sub_080A2D98(PlayerItemShieldEntity*);
|
||||
void sub_080A2E00(PlayerItemShieldEntity*);
|
||||
void (*const gUnk_081271D4[])(PlayerItemShieldEntity*) = {
|
||||
sub_080A2D98,
|
||||
sub_080A2E00,
|
||||
};
|
||||
const u8 gUnk_081271DC[] = {
|
||||
7, 60, 0, 0, 0, 2, 0, 0, 1, 2, 0, 0, 2, 2, 0, 0, 3, 2, 0, 0, 4, 2, 0, 0, 5, 2, 0, 0, 6, 2, 0, 0, 7, 20,
|
||||
0, 0, 0, 2, 0, 0, 1, 2, 0, 0, 2, 2, 0, 0, 3, 2, 0, 0, 4, 2, 0, 0, 5, 2, 0, 0, 6, 2, 0, 0, 255, 0, 0, 0,
|
||||
};
|
||||
const u8 gUnk_08127220[] = {
|
||||
0, 1, 0, 0, 1, 2, 0, 0, 2, 4, 0, 0, 3, 2, 0, 0, 4, 3, 0, 0, 5, 2, 0, 0, 3, 2, 0, 0, 255, 0, 0, 0,
|
||||
};
|
||||
|
||||
const Hitbox gUnk_08127250;
|
||||
const Hitbox gUnk_08127258;
|
||||
const Hitbox gUnk_08127260;
|
||||
const Hitbox gUnk_08127268;
|
||||
const Hitbox* const gUnk_08127240[] = {
|
||||
&gUnk_08127250,
|
||||
&gUnk_08127258,
|
||||
&gUnk_08127260,
|
||||
&gUnk_08127268,
|
||||
};
|
||||
const Hitbox gUnk_08127250 = { 0, -7, { 0, 0, 0, 0 }, 6, 7 };
|
||||
const Hitbox gUnk_08127258 = { 5, -4, { 0, 0, 0, 0 }, 5, 7 };
|
||||
const Hitbox gUnk_08127260 = { 0, 0, { 0, 0, 0, 0 }, 6, 7 };
|
||||
const Hitbox gUnk_08127268 = { -5, -4, { 0, 0, 0, 0 }, 5, 7 };
|
||||
|
||||
extern void (*const gUnk_081271D4[])(PlayerItemShieldEntity*);
|
||||
extern u8 gUnk_081271DC[];
|
||||
void sub_080A2E00(PlayerItemShieldEntity* this);
|
||||
|
||||
void PlayerItemShield(PlayerItemShieldEntity* this) {
|
||||
@@ -38,7 +66,7 @@ void sub_080A2D98(PlayerItemShieldEntity* this) {
|
||||
this->unk_70 = 0x27;
|
||||
this->unk_78 = gUnk_081271DC[1];
|
||||
this->unk_74 = 0;
|
||||
this->unk_7c = gUnk_081271DC;
|
||||
this->unk_7c = (u8*)gUnk_081271DC;
|
||||
} else {
|
||||
this->unk_70 = 0;
|
||||
}
|
||||
@@ -48,9 +76,6 @@ void sub_080A2D98(PlayerItemShieldEntity* this) {
|
||||
sub_080A2E00(this);
|
||||
}
|
||||
|
||||
extern Hitbox* gUnk_08127240[];
|
||||
extern u8 gUnk_08127220[];
|
||||
|
||||
void sub_080A2E00(PlayerItemShieldEntity* this) {
|
||||
Entity* playerItem;
|
||||
u8* pbVar3;
|
||||
@@ -66,7 +91,7 @@ void sub_080A2E00(PlayerItemShieldEntity* this) {
|
||||
|
||||
if ((gPlayerState.shield_status != 0) && (super == gPlayerState.item)) {
|
||||
if ((gPlayerState.shield_status & 0x80) != 0) {
|
||||
super->hitbox = gUnk_08127240[super->animationState >> 1];
|
||||
super->hitbox = (Hitbox*)gUnk_08127240[super->animationState >> 1];
|
||||
super->collisionFlags = (gPlayerEntity.collisionFlags + 1) | 0x20;
|
||||
COLLISION_ON(super);
|
||||
gPlayerState.shield_status &= ~0x80;
|
||||
@@ -84,7 +109,7 @@ void sub_080A2E00(PlayerItemShieldEntity* this) {
|
||||
}
|
||||
this->unk_78 = gUnk_08127220[1];
|
||||
this->unk_74 = 0;
|
||||
this->unk_7c = gUnk_08127220;
|
||||
this->unk_7c = (u8*)gUnk_08127220;
|
||||
gPlayerState.shield_status |= 0x40;
|
||||
}
|
||||
if (this->bounceTimer == 0) {
|
||||
@@ -117,7 +142,7 @@ void sub_080A2E00(PlayerItemShieldEntity* this) {
|
||||
pbVar3 = &this->unk_7c[tmp2];
|
||||
if (pbVar3[0] == 0xff) {
|
||||
if ((gPlayerState.shield_status & 0x40) != 0) {
|
||||
this->unk_7c = gUnk_081271DC;
|
||||
this->unk_7c = (u8*)gUnk_081271DC;
|
||||
gPlayerState.shield_status &= ~0x40;
|
||||
}
|
||||
this->unk_74 = 0;
|
||||
|
||||
+230
-36
@@ -33,7 +33,6 @@ void sub_08079064(Entity*);
|
||||
|
||||
extern u8 gMapData;
|
||||
extern const u8 gUnk_020176E0[];
|
||||
extern const s8* gUnk_0811C0E8[];
|
||||
extern const u8 gUnk_0800851C[];
|
||||
extern const u8 gUnk_080084BC[];
|
||||
extern const u8 gUnk_0800845C[];
|
||||
@@ -58,14 +57,7 @@ void sub_0807AAF8(Entity*, u32);
|
||||
void sub_0807A750(u32, u32, const u8*, u32);
|
||||
|
||||
extern ItemDefinition gItemDefinitions[];
|
||||
extern void (*const gUnk_0811C27C[])(Entity*);
|
||||
extern void (*const gUnk_0811C284[])(PlayerEntity*);
|
||||
extern void (*const gUnk_0811C298[])(PlayerEntity*);
|
||||
extern bool32 (*const gPlayerChargeActions[])(ChargeState*);
|
||||
extern u8 gUnk_0811C000[];
|
||||
extern const u8 gUnk_0811C118[];
|
||||
extern void (*const gUnk_0811C120[])(Entity*);
|
||||
extern u16 gUnk_0811C268[];
|
||||
|
||||
extern ItemBehavior* (*const gCreateItemsFuncs[])(Item);
|
||||
|
||||
extern void DeleteLoadedTileEntity(u32, u32);
|
||||
@@ -83,24 +75,15 @@ void sub_0807BFD0(void);
|
||||
void ForceSetPlayerState(u32 framestate);
|
||||
struct_03003DF8* sub_080784E4(void);
|
||||
|
||||
extern const u16 gUnk_0811C0F8[];
|
||||
|
||||
u32 sub_08079778(void);
|
||||
u32 GetPlayerTilePos(void);
|
||||
|
||||
extern const u16 gUnk_0811C108[];
|
||||
|
||||
extern const u16 gUnk_0811C110[];
|
||||
|
||||
extern const u16 gUnk_08007CAC[];
|
||||
|
||||
u32 sub_0807BEEC(u32 param_1, u32 param_2, u32 param_3);
|
||||
|
||||
extern const u16 gUnk_0811C466[];
|
||||
bool32 sub_0807B434(u32 position, u32 layer);
|
||||
|
||||
extern const u16 gUnk_0811C2AC[];
|
||||
|
||||
void sub_0807B820(u32);
|
||||
void sub_0807B8A8(u32);
|
||||
void sub_0807B930(u32);
|
||||
@@ -108,15 +91,10 @@ bool32 sub_0807B464(u32 param_1, u32 param_2);
|
||||
void sub_0807B55C(u32, u32, u16*);
|
||||
void sub_0807B480(u32, u32);
|
||||
|
||||
extern const s16 gUnk_0811C456[];
|
||||
|
||||
bool32 sub_0807B600(u32);
|
||||
|
||||
bool32 sub_0807B464(u32 tilePos, u32 param_2);
|
||||
|
||||
extern const u16 gUnk_0811C2CC[];
|
||||
extern const u16 gUnk_0811C2EC[];
|
||||
|
||||
bool32 sub_0807B464(u32 param_1, u32 param_2);
|
||||
|
||||
extern void CreateRandomWaterTrace(Entity* parent, int range);
|
||||
@@ -167,9 +145,6 @@ void sub_0807C5B0(void);
|
||||
extern u8 gUnk_080082DC[];
|
||||
extern u32 sub_08004202(Entity*, u8*, u32);
|
||||
|
||||
extern s8* gUnk_0811C0B0[];
|
||||
extern u8 gUnk_0811C01C[];
|
||||
|
||||
extern u32 gUnk_02022830[];
|
||||
extern u16* gUnk_0800823C[];
|
||||
|
||||
@@ -294,6 +269,16 @@ bool32 IsTryingToPickupObject(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ItemBehavior* CreateItemNone(Item);
|
||||
ItemBehavior* CreateItem1(Item);
|
||||
ItemBehavior* CreateItem2(Item);
|
||||
ItemBehavior* CreateItem3(Item);
|
||||
ItemBehavior* CreateItem4(Item);
|
||||
ItemBehavior* CreateItem5(Item);
|
||||
ItemBehavior* (*const gCreateItemsFuncs[])(Item) = {
|
||||
CreateItemNone, CreateItem1, CreateItem2, CreateItem3, CreateItem4, CreateItem5,
|
||||
};
|
||||
|
||||
ItemBehavior* CreateItem(Item itemId) {
|
||||
if (((((gPlayerState.queued_action == PLAYER_ROLL) && (itemId != ITEM_TRY_PICKUP_OBJECT)) ||
|
||||
(((gPlayerState.flags & (PL_ROLLING | PL_CLONING)) != 0 && (ITEM_FOURSWORD < itemId)))) ||
|
||||
@@ -659,6 +644,215 @@ bool32 PlayerTryDropObject(ItemBehavior* this, u32 index) {
|
||||
|
||||
// TODO move above into a itemUtils.c ?
|
||||
|
||||
const u8 gUnk_0811BFE0[] = {
|
||||
3, 10, 12, 3, 3, 14, 12, 3,
|
||||
};
|
||||
|
||||
bool32 sub_08078008(ChargeState* state);
|
||||
bool32 sub_08078124(ChargeState* state);
|
||||
bool32 sub_08078140(ChargeState* state);
|
||||
bool32 sub_08078070(ChargeState* state);
|
||||
bool32 sub_080780E0(ChargeState* state);
|
||||
bool32 sub_08078108(ChargeState* state);
|
||||
bool32 (*const gPlayerChargeActions[])(ChargeState*) = {
|
||||
sub_08078008, sub_08078124, sub_08078140, sub_08078070, sub_080780E0, sub_08078108,
|
||||
};
|
||||
|
||||
const u8 gUnk_0811C000[] = {
|
||||
0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
const u8 gUnk_0811C00C[] = {
|
||||
0, 238, 14, 255, 0, 10, 241, 255,
|
||||
};
|
||||
const u8 gUnk_0811C014[] = {
|
||||
0, 242, 10, 255, 0, 6, 245, 255,
|
||||
};
|
||||
const u8 gUnk_0811C01C[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 3, 4, 3, 0, 1, 2, 0, 3, 3, 4, 3, 10, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 6, 5, 5, 5, 5, 5, 6, 6, 6, 5, 5, 5, 5, 11, 12, 5, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 8, 7, 9, 9, 7, 7, 8, 8, 8, 7, 9, 9, 7, 13, 14, 7, 0, 0,
|
||||
};
|
||||
|
||||
const s8 gUnk_0811C070[] = { 0, 16, 0, 17, 0, 18, 0, 15, 0, 14, 25, -4, 25, -3, 0, -24,
|
||||
0, -23, 0, -25, 0, 10, 21, -4, 16, -4, 0, -18, 0, -14, 0, 6 };
|
||||
const s8 gUnk_0811C090[] = { 0, 18, 0, 19, 0, 20, 0, 17, 0, 16, 24, -2, 24, -1, 0, -22,
|
||||
0, -21, 0, -23, 0, 12, 20, -4, 15, -4, 0, -16, 0, -12, 0, 8 };
|
||||
const s8* const gUnk_0811C0B0[] = {
|
||||
gUnk_0811C070,
|
||||
gUnk_0811C090,
|
||||
};
|
||||
|
||||
const s8 gUnk_0811C0B8[] = { 0, -9, 0, -15, 0, -16, 12, -3, 10, -9, 0, 7, 0, -17, 0, -18 };
|
||||
const s8 gUnk_0811C0C8[] = { 0, -5, 0, -11, 0, -15, 12, 1, 10, -5, 0, 11, 0, -17, 0, -18 };
|
||||
const s8 gUnk_0811C0D8[] = { 0, -19, 0, -19, 0, -24, 32, -7, 10, -13, 0, 26, 0, -25, 0, -26 };
|
||||
const s8* const gUnk_0811C0E8[] = {
|
||||
gUnk_0811C0B8,
|
||||
gUnk_0811C0D8,
|
||||
gUnk_0811C0B8,
|
||||
gUnk_0811C0C8,
|
||||
};
|
||||
|
||||
const u16 gUnk_0811C0F8[] = { 1024, 256, 2048, 512 };
|
||||
const s8 gUnk_0811C100[] = { 0, -8, 8, 0, 0, 3, -8, 0 };
|
||||
const u16 gUnk_0811C108[] = { 6, 24576, 96, 1536 };
|
||||
const u16 gUnk_0811C110[] = { 6, 24576, 96, 1536 };
|
||||
const u8 gUnk_0811C118[] = {
|
||||
19, 18, 18, 16, 16, 17, 17, 19,
|
||||
};
|
||||
|
||||
void SurfaceAction_DoNothing(Entity*);
|
||||
void SurfaceAction_Pit(Entity*);
|
||||
void SurfaceAction_SlopeGndGndVertical(Entity*);
|
||||
void SurfaceAction_SlopeGndGndHorizontal(Entity*);
|
||||
void SurfaceAction_6(Entity*);
|
||||
void SurfaceAction_7(Entity*);
|
||||
void SurfaceAction_MinishDoorFront(Entity*);
|
||||
void SurfaceAction_MinishDoorBack(Entity*);
|
||||
void SurfaceAction_A(Entity*);
|
||||
void SurfaceAction_B(Entity*);
|
||||
void SurfaceAction_SlopeGndWater(Entity*);
|
||||
void SurfaceAction_ConveyerNorth(Entity*);
|
||||
void SurfaceAction_ConveyerSouth(Entity*);
|
||||
void SurfaceAction_ConveyerWest(Entity*);
|
||||
void SurfaceAction_ConveyerEast(Entity*);
|
||||
void SurfaceAction_Swamp(Entity*);
|
||||
void SurfaceAction_14(Entity*);
|
||||
void SurfaceAction_CloneTile(Entity*);
|
||||
void SurfaceAction_16(Entity*);
|
||||
void SurfaceAction_Ice(Entity*);
|
||||
void SurfaceAction_ShallowWater(Entity*);
|
||||
void SurfaceAction_Water(Entity*);
|
||||
void SurfaceAction_Button(Entity*);
|
||||
void SurfaceAction_1B(Entity*);
|
||||
void SurfaceAction_1C(Entity*);
|
||||
void SurfaceAction_Ladder(Entity*);
|
||||
void SurfaceAction_20(Entity*);
|
||||
void SurfaceAction_22(Entity*);
|
||||
void SurfaceAction_Dust(Entity*);
|
||||
void SurfaceAction_26(Entity*);
|
||||
void SurfaceAction_Hole(Entity*);
|
||||
void SurfaceAction_AutoLadder(Entity*);
|
||||
void SurfaceAction_ClimbWall(Entity*);
|
||||
void SurfaceAction_2C(Entity*);
|
||||
|
||||
void (*const gUnk_0811C120[])(Entity*) = {
|
||||
SurfaceAction_DoNothing,
|
||||
SurfaceAction_Pit,
|
||||
NULL,
|
||||
NULL,
|
||||
SurfaceAction_SlopeGndGndVertical,
|
||||
SurfaceAction_SlopeGndGndHorizontal,
|
||||
SurfaceAction_6,
|
||||
SurfaceAction_7,
|
||||
SurfaceAction_MinishDoorFront,
|
||||
SurfaceAction_MinishDoorBack,
|
||||
SurfaceAction_A,
|
||||
SurfaceAction_B,
|
||||
SurfaceAction_SlopeGndWater,
|
||||
SurfaceAction_ConveyerNorth,
|
||||
SurfaceAction_ConveyerSouth,
|
||||
SurfaceAction_ConveyerWest,
|
||||
SurfaceAction_ConveyerEast,
|
||||
SurfaceAction_Swamp,
|
||||
SurfaceAction_DoNothing,
|
||||
SurfaceAction_DoNothing,
|
||||
SurfaceAction_14,
|
||||
SurfaceAction_CloneTile,
|
||||
SurfaceAction_16,
|
||||
SurfaceAction_Ice,
|
||||
SurfaceAction_ShallowWater,
|
||||
SurfaceAction_Water,
|
||||
SurfaceAction_Button,
|
||||
SurfaceAction_1B,
|
||||
SurfaceAction_1C,
|
||||
NULL,
|
||||
SurfaceAction_Ladder,
|
||||
NULL,
|
||||
SurfaceAction_20,
|
||||
SurfaceAction_16,
|
||||
SurfaceAction_22,
|
||||
SurfaceAction_6,
|
||||
SurfaceAction_6,
|
||||
SurfaceAction_Dust,
|
||||
SurfaceAction_26,
|
||||
SurfaceAction_Hole,
|
||||
SurfaceAction_SlopeGndGndVertical,
|
||||
SurfaceAction_SlopeGndGndHorizontal,
|
||||
SurfaceAction_AutoLadder,
|
||||
SurfaceAction_ClimbWall,
|
||||
SurfaceAction_2C,
|
||||
SurfaceAction_Dust,
|
||||
};
|
||||
|
||||
const u16 gUnk_0811C240[];
|
||||
const u16 gUnk_0811C24A[];
|
||||
const u16 gUnk_0811C254[];
|
||||
const u16 gUnk_0811C25E[];
|
||||
const u16 gUnk_0811C1F8[];
|
||||
const u16 gUnk_0811C20A[];
|
||||
const u16 gUnk_0811C21C[];
|
||||
const u16 gUnk_0811C22E[];
|
||||
|
||||
const u16* const gUnk_0811C1D8[] = {
|
||||
gUnk_0811C240,
|
||||
gUnk_0811C24A,
|
||||
gUnk_0811C254,
|
||||
gUnk_0811C25E,
|
||||
};
|
||||
const u16* const gUnk_0811C1E8[] = {
|
||||
gUnk_0811C1F8,
|
||||
gUnk_0811C20A,
|
||||
gUnk_0811C21C,
|
||||
gUnk_0811C22E,
|
||||
};
|
||||
|
||||
const u16 gUnk_0811C1F8[] = { 43, 1, 65, 1, 78, 8, 76, 2, 0 };
|
||||
const u16 gUnk_0811C20A[] = { 44, 3, 66, 3, 76, 2, 77, 4, 0 };
|
||||
const u16 gUnk_0811C21C[] = { 42, 5, 64, 5, 79, 6, 77, 4, 0 };
|
||||
const u16 gUnk_0811C22E[] = { 45, 7, 67, 7, 78, 8, 79, 6, 0 };
|
||||
const u16 gUnk_0811C240[] = { 42, 1, 38, 1, 0 };
|
||||
const u16 gUnk_0811C24A[] = { 45, 1, 39, 1, 0 };
|
||||
const u16 gUnk_0811C254[] = { 43, 1, 38, 1, 0 };
|
||||
const u16 gUnk_0811C25E[] = { 44, 1, 39, 1, 0 };
|
||||
const u16 gUnk_0811C268[] = { 16, 1, 90, 1, 17, 1, 19, 1, 0, 0 };
|
||||
void sub_0807B114(PlayerEntity*);
|
||||
void sub_0807B128(PlayerEntity*);
|
||||
void (*const gUnk_0811C27C[])(PlayerEntity*) = {
|
||||
sub_0807B114,
|
||||
sub_0807B128,
|
||||
};
|
||||
void sub_0807B1A8(PlayerEntity*);
|
||||
void sub_0807B144(PlayerEntity*);
|
||||
void nullsub_506(PlayerEntity*);
|
||||
void sub_0807B178(PlayerEntity*);
|
||||
void sub_0807B2F8(PlayerEntity*);
|
||||
|
||||
void (*const gUnk_0811C284[])(PlayerEntity*) = {
|
||||
sub_0807B1A8, sub_0807B144, nullsub_506, sub_0807B178, sub_0807B2F8,
|
||||
};
|
||||
void sub_0807B1DC(PlayerEntity*);
|
||||
void sub_0807B1EC(PlayerEntity*);
|
||||
void sub_0807B21C(PlayerEntity*);
|
||||
void sub_0807B264(PlayerEntity*);
|
||||
void sub_0807B2B8(PlayerEntity*);
|
||||
void (*const gUnk_0811C298[])(PlayerEntity*) = {
|
||||
sub_0807B1DC, sub_0807B1EC, sub_0807B21C, sub_0807B264, sub_0807B2B8,
|
||||
};
|
||||
|
||||
const u16 gUnk_0811C2AC[] = { 678, 693, 688, 685, 691, 692, 684, 682, 690, 687, 689, 681, 686, 683, 680, 679 };
|
||||
const u16 gUnk_0811C2CC[] = { 710, 747, 720, 717, 737, 744, 716, 714, 730, 719, 727, 713, 718, 715, 712, 711 };
|
||||
const u16 gUnk_0811C2EC[] = {
|
||||
694, 15, 0, 695, 0, 15, 696, 1, 14, 697, 4, 11, 698, 8, 7, 699, 2, 13, 700, 9, 6, 701, 12, 3, 702, 3, 12,
|
||||
703, 6, 9, 704, 13, 2, 705, 5, 10, 706, 7, 8, 707, 11, 4, 708, 10, 5, 709, 14, 1, 710, 0, 0, 711, 0, 15,
|
||||
712, 0, 14, 713, 0, 11, 714, 0, 7, 715, 0, 13, 716, 0, 6, 717, 0, 3, 718, 0, 12, 719, 0, 9, 720, 0, 2,
|
||||
721, 12, 2, 722, 5, 2, 723, 9, 2, 724, 4, 2, 725, 1, 2, 726, 8, 2, 727, 0, 10, 728, 4, 10, 729, 1, 10,
|
||||
730, 0, 8, 731, 6, 8, 732, 5, 8, 733, 3, 8, 734, 4, 8, 735, 1, 8, 736, 2, 8, 737, 0, 4, 738, 10, 4,
|
||||
739, 3, 4, 740, 9, 4, 741, 2, 4, 742, 8, 4, 743, 1, 4, 744, 0, 5, 745, 2, 5, 746, 8, 5, 747, 0, 1,
|
||||
748, 10, 1, 749, 6, 1, 750, 12, 1, 751, 2, 1, 752, 8, 1, 753, 4, 1, 0,
|
||||
};
|
||||
const s16 gUnk_0811C456[] = { 0, -13, 13, 0, 0, 16, -13, 0 };
|
||||
const u16 gUnk_0811C466[] = { 803, 819, 822, 825, 820, 828, 826, 829, 821, 823, 831, 830, 824, 827, 832, 53, 0 };
|
||||
|
||||
void sub_08077F84(void) {
|
||||
Entity* obj;
|
||||
|
||||
@@ -1194,7 +1388,7 @@ void UpdateCarriedObject(void) {
|
||||
void sub_08078CD0(PlayerEntity* this) {
|
||||
Entity* entity;
|
||||
u32 tmp;
|
||||
s8* ptr;
|
||||
const s8* ptr;
|
||||
|
||||
entity = this->unk_70;
|
||||
entity->z.HALF.HI = super->z.HALF.HI - 1;
|
||||
@@ -2610,8 +2804,8 @@ void sub_0807B0C8(void) {
|
||||
sub_0806FEBC(&gPlayerEntity, 3, 0);
|
||||
}
|
||||
|
||||
void PlayerWarp(Entity* player) {
|
||||
gUnk_0811C27C[player->subAction](player);
|
||||
void PlayerWarp(PlayerEntity* this) {
|
||||
gUnk_0811C27C[super->subAction](this);
|
||||
}
|
||||
|
||||
void sub_0807B114(PlayerEntity* this) {
|
||||
@@ -2632,7 +2826,7 @@ void sub_0807B144(PlayerEntity* this) {
|
||||
SetPlayerActionNormal();
|
||||
}
|
||||
|
||||
void nullsub_506(void) {
|
||||
void nullsub_506(PlayerEntity* this) {
|
||||
}
|
||||
|
||||
void sub_0807B178(PlayerEntity* this) {
|
||||
@@ -3100,8 +3294,8 @@ void sub_0807BC84(void) {
|
||||
bool32 sub_0807BD14(Entity* this, u32 scrollDirection) {
|
||||
u32 room = sub_0807BEEC(this->x.HALF.HI, this->y.HALF.HI, scrollDirection);
|
||||
if (room != 0xff) {
|
||||
gRoomControls.unk3 = 2;
|
||||
gRoomControls.unk4 = 0;
|
||||
gRoomControls.scrollAction = 2;
|
||||
gRoomControls.scrollSubAction = 0;
|
||||
gRoomControls.reload_flags = 1;
|
||||
gRoomControls.room = room;
|
||||
gRoomControls.scroll_direction = scrollDirection;
|
||||
@@ -3696,12 +3890,12 @@ u32 SetInventoryValue(u32 item, u32 value) {
|
||||
return masked_value >> offset;
|
||||
}
|
||||
|
||||
void sub_0807CAC8(u32 param_1) {
|
||||
gSave.unk47C[gArea.dungeon_idx] |= (1 << param_1);
|
||||
void EnableDungeonWarp(u32 warp) {
|
||||
gSave.dungeonWarps[gArea.dungeon_idx] |= (1 << warp);
|
||||
}
|
||||
|
||||
u32 sub_0807CAEC(u32 param_1) {
|
||||
return gSave.unk47C[gArea.dungeon_idx] >> param_1 & 1;
|
||||
u32 IsDungeonWarpActive(u32 warp) {
|
||||
return gSave.dungeonWarps[gArea.dungeon_idx] >> warp & 1;
|
||||
}
|
||||
|
||||
u32 CheckLocalFlagByBank(u32 bank, u32 flag) {
|
||||
|
||||
+10
-10
@@ -50,8 +50,8 @@ const ProjectileDefinition gProjectileDefinitions[] = {
|
||||
{ 16400, 288, { &gHitbox_0 }, 107, 2, { 0, 1, 1, 1 }, 4, 384, 3, 11 }, // TODO sprite index too high
|
||||
MULTI_FORM(gProjectileDefinition_14),
|
||||
{ 16400, 1, { &gHitbox_0 }, SPRITE_SPIDERWEB, 0, { 0, 1, 1, 1 }, 65, 640, 159, 143 },
|
||||
{ 0, 0, { &gHitbox_20 }, SPRITE_TORCHTRAPPROJECTILE_0, 0, { 0, 1, 1, 1 }, 66, 640, 146, 11 },
|
||||
{ 399, 0, { &gHitbox_20 }, SPRITE_TORCHTRAPPROJECTILE_1, 0, { 0, 1, 1, 1 }, 65, 640, 10, 11 },
|
||||
{ 0, 0, { (Hitbox*)&gHitbox_20 }, SPRITE_TORCHTRAPPROJECTILE_0, 0, { 0, 1, 1, 1 }, 66, 640, 146, 11 },
|
||||
{ 399, 0, { (Hitbox*)&gHitbox_20 }, SPRITE_TORCHTRAPPROJECTILE_1, 0, { 0, 1, 1, 1 }, 65, 640, 10, 11 },
|
||||
{ 405, 0, { &gHitbox_0 }, SPRITE_V1DARKMAGICPROJECTILE, 0, { 3, 1, 1, 1 }, 66, 256, 46, 15 },
|
||||
#ifdef EU
|
||||
{ 401, 112, { &gHitbox_1 }, 488, 0, { 1, 1, 1, 1 }, 65, 640, 162, 11 }, // TODO sprite index too high
|
||||
@@ -64,8 +64,8 @@ const ProjectileDefinition gProjectileDefinitions[] = {
|
||||
MULTI_FORM(gProjectileDefinition_1D),
|
||||
MULTI_FORM(gProjectileDefinition_1E),
|
||||
MULTI_FORM(gProjectileDefinition_1F),
|
||||
{ 415, 4, { &gHitbox_20 }, SPRITE_V3HANDPROJECTILE, 0, { 1, 1, 1, 1 }, 66, 704, 60, 11 },
|
||||
{ 415, 320, { &gHitbox_20 }, SPRITE_V3HANDPROJECTILE, 0, { 1, 1, 1, 1 }, 66, 512, 164, 11 },
|
||||
{ 415, 4, { (Hitbox*)&gHitbox_20 }, SPRITE_V3HANDPROJECTILE, 0, { 1, 1, 1, 1 }, 66, 704, 60, 11 },
|
||||
{ 415, 320, { (Hitbox*)&gHitbox_20 }, SPRITE_V3HANDPROJECTILE, 0, { 1, 1, 1, 1 }, 66, 512, 164, 11 },
|
||||
MULTI_FORM(gProjectileDefinition_22),
|
||||
{ 493, 0, { &gHitbox_22 }, SPRITE_GYORGMALEENERGYPROJECTILE, 0, { 0, 1, 1, 1 }, 66, 256, 31, 11 },
|
||||
{ 418, 1, { &gHitbox_22 }, SPRITE_WRATHEYE, 0, { 1, 1, 1, 1 }, 66, 512, 55, 11 },
|
||||
@@ -113,18 +113,18 @@ const ProjectileDefinition gProjectileDefinition_F[] = {
|
||||
{ 32992, 1, { &gHitbox_0 }, SPRITE_POT, 0, { 3, 1, 1, 1 }, 66, 384, 157, 11 },
|
||||
};
|
||||
const ProjectileDefinition gProjectileDefinition_10[] = {
|
||||
{ 33008, 1, { &gUnk_080FD3FC }, 167, 1, { 0, 0, 1, 0 }, 65, 640, 110, 4 },
|
||||
{ 366, 0, { &gUnk_080FD3FC }, SPRITE_FLYINGSKULL, 0, { 0, 0, 1, 0 }, 65, 640, 110, 4 },
|
||||
{ 33008, 1, { (Hitbox*)&gUnk_080FD3FC }, 167, 1, { 0, 0, 1, 0 }, 65, 640, 110, 4 },
|
||||
{ 366, 0, { (Hitbox*)&gUnk_080FD3FC }, SPRITE_FLYINGSKULL, 0, { 0, 0, 1, 0 }, 65, 640, 110, 4 },
|
||||
}; // TODO sprite index too high
|
||||
#ifdef EU
|
||||
const ProjectileDefinition gProjectileDefinition_14[] = {
|
||||
{ 387, 20, { &gHitbox_2 }, 486, 0, { 0, 1, 1, 1 }, 65, 640, 110, 12 },
|
||||
{ 387, 20, { &gUnk_080FD43C }, 486, 4, { 0, 1, 1, 1 }, 65, 640, 88, 5 },
|
||||
{ 387, 20, { (Hitbox*)&gUnk_080FD43C }, 486, 4, { 0, 1, 1, 1 }, 65, 640, 88, 5 },
|
||||
}; // TODO sprite index too high
|
||||
#else
|
||||
const ProjectileDefinition gProjectileDefinition_14[] = {
|
||||
{ 387, 20, { &gHitbox_2 }, 487, 0, { 0, 1, 1, 1 }, 65, 640, 110, 12 },
|
||||
{ 387, 20, { &gUnk_080FD43C }, 487, 4, { 0, 1, 1, 1 }, 65, 640, 88, 5 },
|
||||
{ 387, 20, { (Hitbox*)&gUnk_080FD43C }, 487, 4, { 0, 1, 1, 1 }, 65, 640, 88, 5 },
|
||||
}; // TODO sprite index too high
|
||||
#endif
|
||||
const ProjectileDefinition gProjectileDefinition_1B[] = {
|
||||
@@ -164,12 +164,12 @@ const ProjectileDefinition gProjectileDefinition_1F[] = {
|
||||
#ifdef EU
|
||||
const ProjectileDefinition gProjectileDefinition_22[] = {
|
||||
{ 492, 372, { &gHitbox_1 }, 497, 0, { 0, 0, 1, 1 }, 65, 640, 29, 11 },
|
||||
{ 491, 338, { &gHitbox_20 }, 496, 0, { 0, 1, 1, 1 }, 65, 640, 29, 11 },
|
||||
{ 491, 338, { (Hitbox*)&gHitbox_20 }, 496, 0, { 0, 1, 1, 1 }, 65, 640, 29, 11 },
|
||||
}; // TODO sprite index too high
|
||||
#else
|
||||
const ProjectileDefinition gProjectileDefinition_22[] = {
|
||||
{ 492, 372, { &gHitbox_1 }, 498, 0, { 0, 0, 1, 1 }, 65, 640, 29, 11 },
|
||||
{ 491, 338, { &gHitbox_20 }, 497, 0, { 0, 1, 1, 1 }, 65, 640, 29, 11 },
|
||||
{ 491, 338, { (Hitbox*)&gHitbox_20 }, 497, 0, { 0, 1, 1, 1 }, 65, 640, 29, 11 },
|
||||
}; // TODO sprite index too high
|
||||
#endif
|
||||
|
||||
|
||||
+1
-2
@@ -11,7 +11,6 @@
|
||||
static void sub_0804B058(EntityData* dat);
|
||||
extern void sub_0801AC98(void);
|
||||
extern u32 sub_08049D1C(u32);
|
||||
extern void* GetRoomProperty(u32, u32, u32);
|
||||
|
||||
extern void** gCurrentRoomProperties;
|
||||
extern void*** gAreaTable[];
|
||||
@@ -374,7 +373,7 @@ void sub_0804B388(u32 a1, u32 a2) {
|
||||
e->collisionLayer = a2;
|
||||
sub_0806F704(e, a1);
|
||||
}
|
||||
sub_080526F8(-1);
|
||||
ModDungeonKeys(-1);
|
||||
}
|
||||
|
||||
void sub_0804B3C4(TileEntity* tile) {
|
||||
|
||||
+10
-10
@@ -2724,7 +2724,7 @@ extern EntityData gUnk_080E3850;
|
||||
void sub_StateChange_FortressOfWindsTop_Main(void) {
|
||||
SetGlobalFlag(LV3_CLEAR);
|
||||
UpdateGlobalProgress();
|
||||
sub_0805B4D0(3);
|
||||
LoadStaticBackground(3);
|
||||
if (!GetInventoryValue(ITEM_OCARINA) && CheckLocalFlag(0x45)) {
|
||||
LoadRoomEntityList(&gUnk_080E3850);
|
||||
}
|
||||
@@ -3609,7 +3609,7 @@ u32 sub_unk3_DarkHyruleCastleBridge_Main(void) {
|
||||
}
|
||||
|
||||
void sub_StateChange_DarkHyruleCastleBridge_Main(void) {
|
||||
sub_0805B4D0(6);
|
||||
LoadStaticBackground(6);
|
||||
}
|
||||
|
||||
u32 sub_unk3_VaatisArms_First(void) {
|
||||
@@ -3635,7 +3635,7 @@ extern EntityData gUnk_080EAD68;
|
||||
extern EntityData gUnk_080EADB8;
|
||||
|
||||
void sub_StateChange_DarkHyruleCastleOutside_ZeldaStatuePlatform(void) {
|
||||
sub_0805B4D0(4);
|
||||
LoadStaticBackground(4);
|
||||
if (!CheckLocalFlag(0x77)) {
|
||||
LoadRoomEntityList(&gUnk_080EAD68);
|
||||
} else if (!CheckLocalFlag(0x79)) {
|
||||
@@ -4405,7 +4405,7 @@ void sub_StateChange_HyruleTown_0(void) {
|
||||
} else {
|
||||
LoadRoomEntityList(&gUnk_080EE9DC);
|
||||
}
|
||||
if ((gSave.global_progress > 4) && !CheckKinstoneFused(0xb) &&
|
||||
if ((gSave.global_progress > 4) && !CheckKinstoneFused(KINSTONE_B) &&
|
||||
(CheckGlobalFlag(RENTED_HOUSE_DIN) || CheckGlobalFlag(RENTED_HOUSE_NAYRU) ||
|
||||
CheckGlobalFlag(RENTED_HOUSE_FARORE))) {
|
||||
LoadRoomEntityList(&gUnk_080EEA5C);
|
||||
@@ -5543,7 +5543,7 @@ u32 sub_unk3_WindTribeTowerRoof_Main(void) {
|
||||
extern EntityData gUnk_080F66AC;
|
||||
|
||||
void sub_StateChange_WindTribeTowerRoof_Main(void) {
|
||||
sub_0805B4D0(5);
|
||||
LoadStaticBackground(5);
|
||||
if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(FLAG_BANK_1, 5)) {
|
||||
LoadRoomEntityList(&gUnk_080F66AC);
|
||||
}
|
||||
@@ -5972,7 +5972,7 @@ extern EntityData gUnk_080F8430;
|
||||
|
||||
void sub_StateChange_HyruleField_WesternWoodsCenter(void) {
|
||||
CloudOverlayManager_Main(NULL);
|
||||
if (CheckKinstoneFused(KINSTONE_21) && !CheckLocalFlagByBank(FLAG_BANK_2, 0x42)) {
|
||||
if (CheckKinstoneFused(KINSTONE_21) && !CheckLocalFlagByBank(FLAG_BANK_2, MHOUSE08_03)) {
|
||||
LoadRoomEntityList(&gUnk_080F8430);
|
||||
}
|
||||
}
|
||||
@@ -6261,7 +6261,7 @@ u32 sub_unk3_VeilFallsTop_Main(void) {
|
||||
}
|
||||
|
||||
void sub_StateChange_VeilFallsTop_Main(void) {
|
||||
sub_0805B4D0(2);
|
||||
LoadStaticBackground(2);
|
||||
sub_0806D0B0(0);
|
||||
}
|
||||
|
||||
@@ -6555,12 +6555,12 @@ void sub_StateChange_MtCrenel_MountainTop(void) {
|
||||
} else {
|
||||
LoadRoomEntityList(&gUnk_080FACB8);
|
||||
}
|
||||
sub_0805B4D0(0);
|
||||
LoadStaticBackground(0);
|
||||
sub_08059994();
|
||||
}
|
||||
|
||||
void sub_unk1_MtCrenel_MountainTop(void) {
|
||||
sub_0805B4D0(0);
|
||||
LoadStaticBackground(0);
|
||||
}
|
||||
|
||||
u32 sub_unk3_MtCrenel_WallClimb(void) {
|
||||
@@ -6578,7 +6578,7 @@ extern EntityData gUnk_080FAFE4;
|
||||
extern EntityData gUnk_080FB004;
|
||||
|
||||
void sub_StateChange_MtCrenel_CaveOfFlamesEntrance(void) {
|
||||
sub_0805B4D0(1);
|
||||
LoadStaticBackground(1);
|
||||
if (CheckGlobalFlag(LV2_CLEAR) && !CheckLocalFlag(LV1_CLEAR)) {
|
||||
LoadRoomEntityList(&gUnk_080FAFE4);
|
||||
}
|
||||
|
||||
+7
-1
@@ -46,7 +46,13 @@ const char gUnk_0811E470[4] = "LINK";
|
||||
#if defined(DEMO_USA) || defined(DEMO_JP)
|
||||
const u8 demoUnknown0 = 0x0;
|
||||
#ifdef DEMO_USA
|
||||
const u8 demoUnknown1[] = { 0x0f, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x08, 0x05, 0x05, 0x00, 0x00 };
|
||||
const u8 demoUnknown1[] = {
|
||||
// demo_timer for the three save files
|
||||
0x0f, 0x0a, 0x0a, // gUnk_02000010.field_0x7 == 0
|
||||
0x0f, 0x0f, 0x0f, // gUnk_02000010.field_0x7 == 1
|
||||
0x08, 0x05, 0x05, // gUnk_02000010.field_0x7 == 2
|
||||
0x00, 0x00
|
||||
};
|
||||
#else
|
||||
const u8 demoUnknown1[] = { 0 };
|
||||
#endif
|
||||
|
||||
+11
-11
@@ -10,7 +10,7 @@
|
||||
#include "item.h"
|
||||
#include "ui.h"
|
||||
|
||||
void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script);
|
||||
void InitScriptExecutionContext(ScriptExecutionContext* context, Script* script);
|
||||
void sub_0807DE80(Entity*);
|
||||
void DisablePauseMenu(void);
|
||||
void ScriptCommandNop(Entity* entity, ScriptExecutionContext* context);
|
||||
@@ -149,7 +149,7 @@ void ScriptCommand_SetInventoryValue(Entity* entity, ScriptExecutionContext* con
|
||||
void ScriptCommand_InitItemGetSequence(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_CameraTargetEntity(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_SetScrollSpeed(Entity* entity, ScriptExecutionContext* context);
|
||||
void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context);
|
||||
|
||||
typedef void (*ScriptCommand)(Entity*, ScriptExecutionContext*);
|
||||
@@ -185,7 +185,7 @@ void DestroyScriptExecutionContext(ScriptExecutionContext* context) {
|
||||
MemClear(context, sizeof(ScriptExecutionContext));
|
||||
}
|
||||
|
||||
ScriptExecutionContext* StartCutscene(Entity* entity, u16* script) {
|
||||
ScriptExecutionContext* StartCutscene(Entity* entity, Script* script) {
|
||||
ScriptExecutionContext* context;
|
||||
|
||||
context = CreateScriptExecutionContext();
|
||||
@@ -195,7 +195,7 @@ ScriptExecutionContext* StartCutscene(Entity* entity, u16* script) {
|
||||
return context;
|
||||
}
|
||||
|
||||
void InitScriptForEntity(Entity* entity, ScriptExecutionContext* context, u16* script) {
|
||||
void InitScriptForEntity(Entity* entity, ScriptExecutionContext* context, Script* script) {
|
||||
entity->flags |= ENT_SCRIPTED;
|
||||
*(ScriptExecutionContext**)&entity->cutsceneBeh = context;
|
||||
InitScriptExecutionContext(context, script);
|
||||
@@ -209,7 +209,7 @@ void UnloadCutsceneData(Entity* entity) {
|
||||
}
|
||||
}
|
||||
|
||||
void StartPlayerScript(u16* script) {
|
||||
void StartPlayerScript(Script* script) {
|
||||
Entity* player;
|
||||
|
||||
MemClear(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext));
|
||||
@@ -222,7 +222,7 @@ void StartPlayerScript(u16* script) {
|
||||
gPlayerState.field_0x38 = 0;
|
||||
}
|
||||
|
||||
UNUSED ScriptExecutionContext* StartCutscene2(Entity* entity, u16* script) {
|
||||
UNUSED ScriptExecutionContext* StartCutscene2(Entity* entity, Script* script) {
|
||||
ScriptExecutionContext* context;
|
||||
|
||||
context = CreateScriptExecutionContext();
|
||||
@@ -234,7 +234,7 @@ UNUSED ScriptExecutionContext* StartCutscene2(Entity* entity, u16* script) {
|
||||
return context;
|
||||
}
|
||||
|
||||
void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script) {
|
||||
void InitScriptExecutionContext(ScriptExecutionContext* context, Script* script) {
|
||||
MemClear(context, sizeof(ScriptExecutionContext));
|
||||
context->scriptInstructionPointer = script;
|
||||
}
|
||||
@@ -325,7 +325,7 @@ void sub_0807DD64(Entity* entity) {
|
||||
entity->field_0x82.HWORD = 0;
|
||||
}
|
||||
|
||||
void sub_0807DD80(Entity* entity, u16* script) {
|
||||
void sub_0807DD80(Entity* entity, Script* script) {
|
||||
InitScriptExecutionContext(*(ScriptExecutionContext**)&entity->cutsceneBeh, script);
|
||||
sub_0807DD64(entity);
|
||||
}
|
||||
@@ -597,7 +597,7 @@ void ExecuteScript(Entity* entity, ScriptExecutionContext* context) {
|
||||
ScriptCommand_InitItemGetSequence,
|
||||
ScriptCommand_CameraTargetEntity,
|
||||
ScriptCommand_CameraTargetPlayer,
|
||||
ScriptCommand_0807F0B4,
|
||||
ScriptCommand_SetScrollSpeed,
|
||||
ScriptCommand_0807F0C8,
|
||||
};
|
||||
|
||||
@@ -1516,8 +1516,8 @@ void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* co
|
||||
gRoomControls.camera_target = &gPlayerEntity;
|
||||
}
|
||||
|
||||
void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context) {
|
||||
gRoomControls.unk5 = context->scriptInstructionPointer[1] & 7;
|
||||
void ScriptCommand_SetScrollSpeed(Entity* entity, ScriptExecutionContext* context) {
|
||||
gRoomControls.scrollSpeed = context->scriptInstructionPointer[1] & 7;
|
||||
}
|
||||
|
||||
void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context) {
|
||||
|
||||
+60
-60
@@ -72,13 +72,13 @@ void UpdateScroll(void) {
|
||||
};
|
||||
|
||||
gRoomControls.scroll_flags &= 0xfb;
|
||||
gUnk_0811E768[gRoomControls.unk3](&gRoomControls);
|
||||
gUnk_0811E768[gRoomControls.scrollAction](&gRoomControls);
|
||||
}
|
||||
|
||||
void sub_0807FC64(RoomControls* controls) {
|
||||
controls->unk3 = 1;
|
||||
controls->scrollAction = 1;
|
||||
controls->reload_flags = 0;
|
||||
controls->unk5 = 4;
|
||||
controls->scrollSpeed = 4;
|
||||
sub_0807FC7C(controls);
|
||||
UpdateIsDiggingCave();
|
||||
}
|
||||
@@ -98,8 +98,8 @@ void sub_0807FC7C(RoomControls* controls) {
|
||||
uVar5 = controls->scroll_x & 7;
|
||||
if (uVar3 >= 1) {
|
||||
if (controls->origin_x < controls->scroll_x) {
|
||||
if (controls->unk5 <= uVar3) {
|
||||
uVar3 = controls->unk5;
|
||||
if (controls->scrollSpeed <= uVar3) {
|
||||
uVar3 = controls->scrollSpeed;
|
||||
controls->scroll_flags |= 4;
|
||||
}
|
||||
controls->scroll_x = controls->scroll_x - uVar3;
|
||||
@@ -113,8 +113,8 @@ void sub_0807FC7C(RoomControls* controls) {
|
||||
} else {
|
||||
uVar2 = controls->origin_x + controls->width - 0xf0;
|
||||
if (controls->scroll_x < uVar2) {
|
||||
if (-controls->unk5 >= uVar3) {
|
||||
uVar3 = -controls->unk5;
|
||||
if (-controls->scrollSpeed >= uVar3) {
|
||||
uVar3 = -controls->scrollSpeed;
|
||||
controls->scroll_flags |= 4;
|
||||
}
|
||||
controls->scroll_x -= uVar3;
|
||||
@@ -135,8 +135,8 @@ void sub_0807FC7C(RoomControls* controls) {
|
||||
uVar5 = controls->scroll_y & 7;
|
||||
if (uVar3 >= 1) {
|
||||
if (controls->origin_y < controls->scroll_y) {
|
||||
if (controls->unk5 <= uVar3) {
|
||||
uVar3 = controls->unk5;
|
||||
if (controls->scrollSpeed <= uVar3) {
|
||||
uVar3 = controls->scrollSpeed;
|
||||
controls->scroll_flags |= 4;
|
||||
}
|
||||
controls->scroll_y = controls->scroll_y - uVar3;
|
||||
@@ -150,8 +150,8 @@ void sub_0807FC7C(RoomControls* controls) {
|
||||
} else {
|
||||
uVar2 = controls->origin_y + controls->height - DISPLAY_HEIGHT;
|
||||
if (controls->scroll_y < uVar2) {
|
||||
if (-controls->unk5 >= uVar3) {
|
||||
uVar3 = -controls->unk5;
|
||||
if (-controls->scrollSpeed >= uVar3) {
|
||||
uVar3 = -controls->scrollSpeed;
|
||||
controls->scroll_flags |= 4;
|
||||
}
|
||||
controls->scroll_y -= uVar3;
|
||||
@@ -174,19 +174,19 @@ void sub_0807FDB0(RoomControls* controls) {
|
||||
sub_0807FDE4,
|
||||
sub_0807FDF8,
|
||||
};
|
||||
gUnk_0811E780[controls->unk4](controls);
|
||||
gUnk_0811E780[controls->scrollSubAction](controls);
|
||||
}
|
||||
|
||||
void sub_0807FDC8(RoomControls* controls) {
|
||||
gUpdateVisibleTiles = 1;
|
||||
UpdateScrollVram();
|
||||
controls->unk4 = 1;
|
||||
controls->scrollSubAction = 1;
|
||||
gUpdateVisibleTiles = 0;
|
||||
}
|
||||
|
||||
void sub_0807FDE4(RoomControls* controls) {
|
||||
controls->unk4 = 2;
|
||||
controls->filler2[0] = 0;
|
||||
controls->scrollSubAction = 2;
|
||||
controls->unk_18 = 0;
|
||||
gUpdateVisibleTiles = 2;
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
s32 iVar3;
|
||||
|
||||
gUpdateVisibleTiles = 2;
|
||||
controls->filler2[0]++;
|
||||
controls->unk_18++;
|
||||
switch (controls->scroll_direction) {
|
||||
case 0:
|
||||
controls->scroll_y -= 4;
|
||||
@@ -204,7 +204,7 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
if (pEVar2 == &gPlayerEntity) {
|
||||
pEVar2->y.WORD = gPlayerEntity.y.WORD - Q_16_16(0.375);
|
||||
}
|
||||
if (controls->filler2[0] == 0x28) {
|
||||
if (controls->unk_18 == 0x28) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
@@ -213,7 +213,7 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
if (controls->camera_target == &gPlayerEntity) {
|
||||
gPlayerEntity.x.WORD += Q_16_16(0.25);
|
||||
}
|
||||
if (controls->filler2[0] == 0x3c) {
|
||||
if (controls->unk_18 == 0x3c) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
@@ -223,7 +223,7 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
if (pEVar2 == &gPlayerEntity) {
|
||||
pEVar2->y.WORD = gPlayerEntity.y.WORD + Q_16_16(0.375);
|
||||
}
|
||||
if (controls->filler2[0] == 0x28) {
|
||||
if (controls->unk_18 == 0x28) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
@@ -232,7 +232,7 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
if (controls->camera_target == &gPlayerEntity) {
|
||||
gPlayerEntity.x.WORD -= Q_16_16(0.25);
|
||||
}
|
||||
if (controls->filler2[0] == 0x3c) {
|
||||
if (controls->unk_18 == 0x3c) {
|
||||
sub_0807FEC8(controls);
|
||||
}
|
||||
break;
|
||||
@@ -242,11 +242,11 @@ void sub_0807FDF8(RoomControls* controls) {
|
||||
sub_08080BC4();
|
||||
}
|
||||
|
||||
void sub_0807FEC8(RoomControls* this) {
|
||||
this->unk3 = 0;
|
||||
void sub_0807FEC8(RoomControls* controls) {
|
||||
controls->scrollAction = 0;
|
||||
MemFill32(0xffffffff, gPlayerState.path_memory, sizeof(gPlayerState.path_memory));
|
||||
gPlayerState.startPosX = this->camera_target->x.HALF.HI;
|
||||
gPlayerState.startPosY = this->camera_target->y.HALF.HI;
|
||||
gPlayerState.startPosX = controls->camera_target->x.HALF.HI;
|
||||
gPlayerState.startPosY = controls->camera_target->y.HALF.HI;
|
||||
}
|
||||
|
||||
void sub_0807FEF0(RoomControls* controls) {
|
||||
@@ -254,20 +254,20 @@ void sub_0807FEF0(RoomControls* controls) {
|
||||
sub_0807FF08,
|
||||
sub_0807FF1C,
|
||||
};
|
||||
gUnk_0811E78C[controls->unk4](controls);
|
||||
gUnk_0811E78C[controls->scrollSubAction](controls);
|
||||
}
|
||||
|
||||
void sub_0807FF08(RoomControls* controls) {
|
||||
controls->unk4 = 1;
|
||||
controls->filler2[0] = 0;
|
||||
controls->scrollSubAction = 1;
|
||||
controls->unk_18 = 0;
|
||||
gUpdateVisibleTiles = 3;
|
||||
}
|
||||
|
||||
void sub_0807FF1C(RoomControls* controls) {
|
||||
if ((gRoomTransition.frameCount & 1U) == 0) {
|
||||
gUpdateVisibleTiles = 3;
|
||||
if (++controls->filler2[0] > 0x13) {
|
||||
controls->unk3 = 0;
|
||||
if (++controls->unk_18 > 0x13) {
|
||||
controls->scrollAction = 0;
|
||||
ResetSystemPriority();
|
||||
}
|
||||
}
|
||||
@@ -277,11 +277,11 @@ void sub_0807FF54(RoomControls* controls) {
|
||||
static void (*const gUnk_0811E794[])(RoomControls*) = {
|
||||
sub_0807FF6C, sub_0807FFE4, sub_08080040, sub_08080108, sub_08080198, sub_080801BC,
|
||||
};
|
||||
gUnk_0811E794[controls->unk4](controls);
|
||||
gUnk_0811E794[controls->scrollSubAction](controls);
|
||||
}
|
||||
|
||||
void sub_0807FF6C(RoomControls* controls) {
|
||||
controls->unk4 = 1;
|
||||
controls->scrollSubAction = 1;
|
||||
gScreen.lcd.displayControl |= DISPCNT_WIN1_ON;
|
||||
gScreen.controls.windowInsideControl = (u8)gScreen.controls.windowInsideControl | 0x1700;
|
||||
gScreen.controls.windowOutsideControl = (gScreen.controls.windowOutsideControl & 0xff00) | 7;
|
||||
@@ -298,8 +298,8 @@ void sub_0807FF6C(RoomControls* controls) {
|
||||
}
|
||||
|
||||
void sub_0807FFE4(RoomControls* controls) {
|
||||
controls->unk4 = 2;
|
||||
controls->filler2[0] = sub_080803D0() + 6;
|
||||
controls->scrollSubAction = 2;
|
||||
controls->unk_18 = sub_080803D0() + 6;
|
||||
gUnk_0200B640 = sub_08080278();
|
||||
sub_080197D4(*gUnk_08109194[gDiggingCaveEntranceTransition.entrance->type]);
|
||||
sub_0807C8B0(gMapTop.mapData, controls->width >> 4, controls->height >> 4);
|
||||
@@ -314,32 +314,32 @@ void sub_08080040(RoomControls* controls) {
|
||||
s32 iVar7;
|
||||
s32 temp;
|
||||
|
||||
controls->filler2[0] -= 6;
|
||||
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
|
||||
if (0x2a < controls->filler2[0]) {
|
||||
controls->unk_18 -= 6;
|
||||
controls->unk_1a = (controls->unk_18 << 1) / 3;
|
||||
if (0x2a < controls->unk_18) {
|
||||
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
|
||||
uVar6 = (iVar2 - controls->filler2[0]) + 8;
|
||||
uVar6 = (iVar2 - controls->unk_18) + 8;
|
||||
if (uVar6 < 0) {
|
||||
uVar6 = 0;
|
||||
}
|
||||
iVar7 = iVar2 + controls->filler2[0] - 8;
|
||||
iVar7 = iVar2 + controls->unk_18 - 8;
|
||||
if (DISPLAY_WIDTH < iVar7) {
|
||||
iVar7 = DISPLAY_WIDTH;
|
||||
}
|
||||
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
|
||||
uVar5 = (temp - controls->filler2[1]) + 8;
|
||||
uVar5 = (temp - controls->unk_1a) + 8;
|
||||
if (uVar5 < 0) {
|
||||
uVar5 = 0;
|
||||
}
|
||||
iVar3 = temp + controls->filler2[1] - 8;
|
||||
iVar3 = temp + controls->unk_1a - 8;
|
||||
if (DISPLAY_HEIGHT < iVar3) {
|
||||
iVar3 = DISPLAY_HEIGHT;
|
||||
}
|
||||
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
|
||||
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
|
||||
}
|
||||
if (controls->filler2[0] == 0) {
|
||||
controls->unk4 = 3;
|
||||
if (controls->unk_18 == 0) {
|
||||
controls->scrollSubAction = 3;
|
||||
DeleteSleepingEntities();
|
||||
sub_0807C810();
|
||||
sub_08080C80(*(gUnk_08109194[gDiggingCaveEntranceTransition.entrance->type] + 1));
|
||||
@@ -349,7 +349,7 @@ void sub_08080040(RoomControls* controls) {
|
||||
}
|
||||
|
||||
void sub_08080108(RoomControls* controls) {
|
||||
controls->unk4 = 4;
|
||||
controls->scrollSubAction = 4;
|
||||
MemCopy(gMapBottom.mapData, gMapBottom.mapDataClone, sizeof(gMapBottom.mapData));
|
||||
MemCopy(gMapTop.mapData, gMapTop.mapDataClone, sizeof(gMapTop.mapData));
|
||||
sub_08080368();
|
||||
@@ -365,8 +365,8 @@ void sub_08080108(RoomControls* controls) {
|
||||
}
|
||||
|
||||
void sub_08080198(RoomControls* controls) {
|
||||
controls->unk4 = 5;
|
||||
controls->filler2[2] = 0xff;
|
||||
controls->scrollSubAction = 5;
|
||||
controls->unk_1c = 0xff;
|
||||
LoadRoom();
|
||||
CallRoomProp5And7();
|
||||
gUpdateVisibleTiles = 0;
|
||||
@@ -381,32 +381,32 @@ void sub_080801BC(RoomControls* controls) {
|
||||
s32 iVar7;
|
||||
s32 temp;
|
||||
|
||||
controls->filler2[0] += 6;
|
||||
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
|
||||
if (0x1e < controls->filler2[0]) {
|
||||
controls->unk_18 += 6;
|
||||
controls->unk_1a = (controls->unk_18 << 1) / 3;
|
||||
if (0x1e < controls->unk_18) {
|
||||
iVar2 = controls->camera_target->x.HALF.HI - controls->scroll_x;
|
||||
uVar6 = (iVar2 - controls->filler2[0]);
|
||||
uVar6 = (iVar2 - controls->unk_18);
|
||||
if (uVar6 < 0) {
|
||||
uVar6 = 0;
|
||||
}
|
||||
iVar7 = iVar2 + controls->filler2[0];
|
||||
iVar7 = iVar2 + controls->unk_18;
|
||||
if (DISPLAY_WIDTH < iVar7) {
|
||||
iVar7 = DISPLAY_WIDTH;
|
||||
}
|
||||
temp = controls->camera_target->y.HALF.HI - controls->scroll_y;
|
||||
uVar5 = (temp - controls->filler2[1]);
|
||||
uVar5 = (temp - controls->unk_1a);
|
||||
if (uVar5 < 0) {
|
||||
uVar5 = 0;
|
||||
}
|
||||
iVar3 = temp + controls->filler2[1];
|
||||
iVar3 = temp + controls->unk_1a;
|
||||
if (DISPLAY_HEIGHT < iVar3) {
|
||||
iVar3 = DISPLAY_HEIGHT;
|
||||
}
|
||||
gScreen.controls.window1HorizontalDimensions = ((uVar6 & 0xff) << 8) | (iVar7 & 0xff);
|
||||
gScreen.controls.window1VerticalDimensions = ((uVar5 & 0xff) << 8) | (iVar3 & 0xff);
|
||||
}
|
||||
if (controls->filler2[2] == 0) {
|
||||
controls->unk3 = 0;
|
||||
if (controls->unk_1c == 0) {
|
||||
controls->scrollAction = 0;
|
||||
controls->reload_flags = 0;
|
||||
ResetSystemPriority();
|
||||
gScreen.lcd.displayControl &= ~DISPCNT_WIN1_ON;
|
||||
@@ -414,7 +414,7 @@ void sub_080801BC(RoomControls* controls) {
|
||||
gScreen.controls.windowOutsideControl &= 0xff00;
|
||||
} else {
|
||||
gUpdateVisibleTiles = 4;
|
||||
controls->filler2[2] = 0;
|
||||
controls->unk_1c = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,7 +461,7 @@ void UpdateIsDiggingCave(void) {
|
||||
void ClearTilemaps(void) {
|
||||
MemClear(&gRoomControls, sizeof(gRoomControls));
|
||||
MemClear(&gDiggingCaveEntranceTransition, sizeof(gDiggingCaveEntranceTransition));
|
||||
gRoomControls.filler3 = 0xffff;
|
||||
gRoomControls.unk_22 = 0xffff;
|
||||
gDiggingCaveEntranceTransition.previousArea = 0xff;
|
||||
gUnk_02034480.unk_00 = 0;
|
||||
MemClear(&gMapDataBottomSpecial, 0x8000);
|
||||
@@ -630,8 +630,8 @@ void sub_0808091C(const ScreenTransitionData* screenTransition, u32 transitionTy
|
||||
}
|
||||
|
||||
void sub_08080930(u32 unused) {
|
||||
gRoomControls.unk3 = 5;
|
||||
gRoomControls.unk4 = 0;
|
||||
gRoomControls.scrollAction = 5;
|
||||
gRoomControls.scrollSubAction = 0;
|
||||
gRoomControls.reload_flags = 2;
|
||||
gRoomControls.scroll_direction = 0;
|
||||
SetInitializationPriority();
|
||||
@@ -821,8 +821,8 @@ NONMATCH("asm/non_matching/scroll/sub_08080CB4.inc", void sub_08080CB4(Entity* t
|
||||
if (this->type != this->animIndex) {
|
||||
InitAnimationForceUpdate(this, this->type);
|
||||
if (this->type == 0x5c) {
|
||||
const struct_080C9CBC* ptr = &gUnk_080C9CBC[this->type2];
|
||||
this->palette.raw = ((ptr->unk0 & 0xf) << 4) | ptr->unk0;
|
||||
const KinstoneWorldEvent* ptr = &gKinstoneWorldEvents[this->type2];
|
||||
this->palette.raw = ((ptr->objPalette & 0xf) << 4) | ptr->objPalette;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
+14
-9
@@ -1,13 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "room.h"
|
||||
#include "main.h"
|
||||
#include "save.h"
|
||||
#include "flags.h"
|
||||
#include "fileselect.h"
|
||||
#include "screen.h"
|
||||
/**
|
||||
* @file staffroll.c
|
||||
* @ingroup Tasks
|
||||
*
|
||||
* @brief Staffroll task
|
||||
*/
|
||||
#include "common.h"
|
||||
#include "menu.h"
|
||||
#include "fileselect.h"
|
||||
#include "flags.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "room.h"
|
||||
#include "save.h"
|
||||
#include "screen.h"
|
||||
#include "subtask.h"
|
||||
|
||||
typedef struct {
|
||||
@@ -125,7 +130,7 @@ void StaffrollTask_State1MenuType2(void) {
|
||||
switch (gStaffrollMenu.base.overlayType) {
|
||||
case 0:
|
||||
MemClear(&gBG1Buffer, sizeof(gBG1Buffer));
|
||||
sub_0805F46C(gStaffrollMenu.unk_10, (Font*)gUnk_081272E0[gStaffrollMenu.unk_19]);
|
||||
ShowTextBox(gStaffrollMenu.unk_10, gUnk_081272E0[gStaffrollMenu.unk_19]);
|
||||
gScreen.bg1.updated = 1;
|
||||
gStaffrollMenu.base.overlayType++;
|
||||
gStaffrollMenu.unk_18 = 0;
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "menu.h"
|
||||
#include "room.h"
|
||||
#include "functions.h"
|
||||
#include "screen.h"
|
||||
|
||||
extern void (*const gUnk_080FF420[])(void);
|
||||
extern void sub_0804B0B0(u32, u32);
|
||||
extern void sub_08055B70(u32, u32, u32, u32);
|
||||
|
||||
struct {
|
||||
/*0x00*/ u8 unk0;
|
||||
/*0x10*/ u8 filler1[0x1B];
|
||||
/*0x1c*/ u8 unk1C;
|
||||
/*0x1d*/ u8 unk1D;
|
||||
/*0x1e*/ u8 unk1E;
|
||||
/*0x1f*/ u8 unk1F;
|
||||
} gUpdateVisibleTiles;
|
||||
|
||||
extern EntityData gUnk_080FF400;
|
||||
|
||||
void sub_08055E08(void) {
|
||||
gUnk_080FF420[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
void sub_08055E24(void) {
|
||||
gMenu.overlayType++;
|
||||
gUpdateVisibleTiles.unk0 = 1;
|
||||
sub_0804B0B0(gMenu.field_0xc[2], gMenu.field_0xc[3]);
|
||||
LoadRoomEntityList(&gUnk_080FF400);
|
||||
sub_08055B70(gMenu.field_0x4, 0, 0, 0);
|
||||
SetFade(FADE_INSTANT, 0x10);
|
||||
}
|
||||
|
||||
void nullsub_493(void) {
|
||||
}
|
||||
+245
-805
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* @file subtaskAuxCutscene.c
|
||||
*
|
||||
* @brief Aux Cutscene Subtask
|
||||
*/
|
||||
#include "area.h"
|
||||
#include "asm.h"
|
||||
#include "common.h"
|
||||
#include "fileselect.h"
|
||||
#include "flags.h"
|
||||
#include "functions.h"
|
||||
#include "game.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "message.h"
|
||||
#include "room.h"
|
||||
#include "screen.h"
|
||||
#include "sound.h"
|
||||
#include "subtask.h"
|
||||
|
||||
typedef void(AuxCutsceneState)(void);
|
||||
typedef void(CutsceneMainState)(void);
|
||||
|
||||
static AuxCutsceneState AuxCutscene_Init;
|
||||
static AuxCutsceneState AuxCutscene_Main;
|
||||
static AuxCutsceneState AuxCutscene_Exit;
|
||||
|
||||
CutsceneMainState CutsceneMain_Init;
|
||||
CutsceneMainState CutsceneMain_Update;
|
||||
CutsceneMainState CutsceneMain_Exit;
|
||||
|
||||
typedef struct {
|
||||
u8 area;
|
||||
RoomID room : 8;
|
||||
u8 _2;
|
||||
u8 _3;
|
||||
u16 x;
|
||||
u16 y;
|
||||
} CutsceneData;
|
||||
static const CutsceneData sCutsceneData[];
|
||||
|
||||
void Subtask_AuxCutscene(void) {
|
||||
static AuxCutsceneState* const sStates[] = {
|
||||
AuxCutscene_Init,
|
||||
AuxCutscene_Main,
|
||||
AuxCutscene_Exit,
|
||||
};
|
||||
|
||||
sStates[gMenu.menuType]();
|
||||
}
|
||||
|
||||
static void AuxCutscene_Init(void) {
|
||||
const CutsceneData* p = &sCutsceneData[gUI.field_0x3];
|
||||
gRoomControls.area = p->area;
|
||||
gRoomControls.room = p->room;
|
||||
LoadGfxGroups();
|
||||
gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area);
|
||||
SetCurrentRoomPropertyList(p->area, p->room);
|
||||
LoadAuxiliaryRoom(p->area, p->room);
|
||||
gRoomControls.scroll_x = gRoomControls.origin_x + p->x;
|
||||
gRoomControls.scroll_y = gRoomControls.origin_y + p->y;
|
||||
gMenu.field_0x0 = p->_2;
|
||||
gMenu.field_0x3 = p->_3 & 0xf;
|
||||
gMenu.field_0xc = (void*)p;
|
||||
gMenu.menuType++;
|
||||
gMenu.overlayType = 0;
|
||||
gMenu.transitionTimer = 300;
|
||||
AuxCutscene_Main(); // init
|
||||
}
|
||||
|
||||
static void AuxCutscene_Main(void) {
|
||||
static CutsceneMainState* const sStates[] = {
|
||||
CutsceneMain_Init,
|
||||
CutsceneMain_Update,
|
||||
CutsceneMain_Exit,
|
||||
};
|
||||
|
||||
sStates[gMenu.field_0x0]();
|
||||
FlushSprites();
|
||||
UpdateEntities();
|
||||
DrawEntities();
|
||||
CopyOAM();
|
||||
UpdateScroll();
|
||||
UpdateBgAnimations();
|
||||
UpdateManagers();
|
||||
UpdateScrollVram();
|
||||
}
|
||||
|
||||
static const CutsceneData sCutsceneData[] = {
|
||||
{ AREA_MINISH_WOODS, 0, 0, 0, 336, 528 },
|
||||
{ AREA_HYRULE_FIELD, 1, 1, 0, 472, 312 },
|
||||
{ AREA_HYRULE_CASTLE, 2, 1, 1, 16, 16 },
|
||||
{ AREA_SANCTUARY, 2, 1, 2, 0, 0 },
|
||||
{ AREA_EZLO_CUTSCENE, 0, 1, 3, 0, 0 },
|
||||
{ AREA_HOUSE_INTERIORS_2, 16, 1, 4, 0, 0 },
|
||||
{ AREA_DARK_HYRULE_CASTLE_OUTSIDE, 0, 1, 5, 0, 40 },
|
||||
{ AREA_FORTRESS_OF_WINDS, 28, 2, 0, 0, 0 },
|
||||
{ AREA_FORTRESS_OF_WINDS, 29, 2, 1, 0, 0 },
|
||||
{ AREA_DARK_HYRULE_CASTLE, 14, 2, 2, 16, 16 },
|
||||
};
|
||||
|
||||
static void AuxCutscene_Exit(void) {
|
||||
u32 flag = sCutsceneData[gUI.field_0x3]._3;
|
||||
if (flag & 0xF0) {
|
||||
MenuFadeIn(2, flag >> 4);
|
||||
} else {
|
||||
gUI.nextToLoad = 3; // Subtask_FadeOut
|
||||
SetFadeInverted(0x10);
|
||||
MessageInitialize();
|
||||
}
|
||||
}
|
||||
|
||||
// end of auxCutscene?
|
||||
|
||||
void sub_08051F78(void) {
|
||||
u32 idx = gUI.field_0x3;
|
||||
const CutsceneData* p = &sCutsceneData[idx];
|
||||
sub_08051F9C(p->area, p->room, p->x, p->y);
|
||||
}
|
||||
|
||||
void sub_08051F9C(u32 a1, u32 a2, u32 a3, u32 a4) {
|
||||
u32 tmp = gScreen.lcd.displayControl & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
|
||||
sub_08052FF4(a1, a2);
|
||||
gRoomControls.scroll_x = gRoomControls.origin_x + a3;
|
||||
gRoomControls.scroll_y = gRoomControls.origin_y + a4;
|
||||
InitializeCamera();
|
||||
gUpdateVisibleTiles = 1;
|
||||
gUsedPalettes = 0;
|
||||
gScreen.lcd.displayControl |= tmp;
|
||||
}
|
||||
|
||||
void sub_08051FF0(void) {
|
||||
sub_0804B0B0(gMenu.field_0xc[0], gMenu.field_0xc[1]);
|
||||
}
|
||||
|
||||
void sub_08052004(void) {
|
||||
gMenu.menuType = 2;
|
||||
}
|
||||
|
||||
void sub_08052010(void) {
|
||||
InitSoundPlayingInfo();
|
||||
MessageInitialize();
|
||||
DispReset(1);
|
||||
MemClear(gBG1Buffer, sizeof(gBG1Buffer));
|
||||
MemClear(gBG2Buffer, sizeof(gBG2Buffer));
|
||||
sub_080A4D34();
|
||||
LoadPaletteGroup(0xA);
|
||||
SetColor(0, 0);
|
||||
LoadGfxGroup(4);
|
||||
MemClear((void*)0x06000000, 0x20);
|
||||
MemClear(&gGenericMenu, sizeof(gGenericMenu));
|
||||
gScreen.lcd.displayControl |= DISPCNT_OBJ_ON;
|
||||
gScreen.bg1.control = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28) | BGCNT_CHARBASE(0);
|
||||
gScreen.bg2.control = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(29) | BGCNT_CHARBASE(1);
|
||||
gScreen.bg1.updated = 1;
|
||||
gScreen.bg2.updated = 1;
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
/**
|
||||
* @file subtaskFastTravel.c
|
||||
* @ingroup Subtasks
|
||||
*
|
||||
* @brief Fast Travel Subtask
|
||||
*/
|
||||
#include "subtask.h"
|
||||
#include "common.h"
|
||||
#include "menu.h"
|
||||
#include "functions.h"
|
||||
#include "message.h"
|
||||
#include "sound.h"
|
||||
#include "save.h"
|
||||
|
||||
extern void (*const Subtask_FastTravel_Functions[])(void);
|
||||
void sub_080A6E70(void);
|
||||
u32 sub_080A6D74(u32);
|
||||
void sub_080A6EE0(u32 param_1);
|
||||
|
||||
extern const ScreenTransitionData gUnk_08128024[];
|
||||
|
||||
void Subtask_FastTravel(void) {
|
||||
FlushSprites();
|
||||
Subtask_FastTravel_Functions[gMenu.menuType]();
|
||||
if (gMenu.field_0x0 != 0) {
|
||||
sub_080A6E70();
|
||||
}
|
||||
sub_080A6498();
|
||||
CopyOAM();
|
||||
}
|
||||
|
||||
void Subtask_FastTravel_0(void) {
|
||||
sub_080A4D34();
|
||||
sub_080A4DB8(0xd);
|
||||
sub_080A6290();
|
||||
gMenu.field_0x3 = sub_080A6D74(0);
|
||||
SetMenuType(1);
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void Subtask_FastTravel_1(void) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
|
||||
if (gFadeControl.active) {
|
||||
return;
|
||||
}
|
||||
|
||||
gMenu.field_0x0 = 1;
|
||||
uVar2 = 0;
|
||||
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_LEFT:
|
||||
case DPAD_UP:
|
||||
uVar2 = -1;
|
||||
break;
|
||||
case DPAD_RIGHT:
|
||||
case DPAD_DOWN:
|
||||
uVar2 = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
case START_BUTTON:
|
||||
gMenu.field_0x0 = 2;
|
||||
SetMenuType(2);
|
||||
MessageFromTarget(TEXT_INDEX(TEXT_WINDCRESTS, 0x04));
|
||||
break;
|
||||
case B_BUTTON:
|
||||
gMenu.field_0x0 = 3;
|
||||
SetMenuType(3);
|
||||
break;
|
||||
}
|
||||
|
||||
if (uVar2) {
|
||||
uVar1 = sub_080A6D74(uVar2);
|
||||
if (uVar1 != gMenu.field_0x3) {
|
||||
gMenu.field_0x3 = uVar1;
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_080A6D74(u32 param_1) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
|
||||
uVar3 = gSave.windcrests >> 0x18;
|
||||
uVar2 = gMenu.field_0x3;
|
||||
if (param_1 == 0) {
|
||||
uVar2 = 0;
|
||||
if ((uVar3 & 1) == 0) {
|
||||
while (++uVar2 < 8 && ((1 << uVar2) & uVar3) == 0) {}
|
||||
}
|
||||
} else if (uVar3 != 0) {
|
||||
do {
|
||||
uVar2 = (uVar2 + param_1 + 8) & 7;
|
||||
} while ((1 << uVar2 & uVar3) == 0);
|
||||
}
|
||||
return uVar2 & 7;
|
||||
}
|
||||
|
||||
void Subtask_FastTravel_2(void) {
|
||||
u32 tmp;
|
||||
switch (sub_08056338()) {
|
||||
#ifdef EU
|
||||
case 0:
|
||||
gMenu.field_0x0 = 2;
|
||||
break;
|
||||
case 1:
|
||||
gMenu.field_0x0 = 3;
|
||||
tmp = 1;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (tmp) {
|
||||
SetMenuType(3);
|
||||
}
|
||||
#else
|
||||
case 0:
|
||||
gMenu.field_0x0 = 2;
|
||||
tmp = 3;
|
||||
break;
|
||||
case 1:
|
||||
tmp = 1;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
SetMenuType(tmp);
|
||||
#endif
|
||||
}
|
||||
|
||||
void Subtask_FastTravel_3(void) {
|
||||
if (gMenu.field_0x0 == 2) {
|
||||
SetMenuType(4);
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
} else {
|
||||
ResetPlayerAnimationAndAction();
|
||||
sub_080042D0(&gPlayerEntity, (u32)gPlayerEntity.animIndex, gPlayerEntity.spriteIndex);
|
||||
Subtask_Exit();
|
||||
gPauseMenuOptions.disabled = 0;
|
||||
SoundReq(SFX_MENU_CANCEL);
|
||||
}
|
||||
}
|
||||
|
||||
void Subtask_FastTravel_4(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
sub_080A71F4(&gUnk_08128024[gMenu.field_0x3]);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A6E70(void) {
|
||||
u32 frameIndex;
|
||||
u32 i;
|
||||
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0x400;
|
||||
gGenericMenu.unk2c++;
|
||||
sub_080A6EE0(gMenu.field_0x3);
|
||||
if ((gGenericMenu.unk2c & 0x10) != 0) {
|
||||
frameIndex = 0x5d;
|
||||
} else {
|
||||
frameIndex = 0x5e;
|
||||
}
|
||||
|
||||
DrawDirect(DRAW_DIRECT_SPRITE_INDEX, frameIndex);
|
||||
for (i = 0; i < 8; i++) {
|
||||
if ((gSave.windcrests & (1 << (i + 0x18))) != 0) {
|
||||
sub_080A6EE0(i);
|
||||
DrawDirect(DRAW_DIRECT_SPRITE_INDEX, 0x5c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A6EE0(u32 param_1) {
|
||||
u32 x;
|
||||
u32 y;
|
||||
RoomHeader* roomHeader;
|
||||
const ScreenTransitionData* ptr = &gUnk_08128024[param_1];
|
||||
|
||||
x = (u16)ptr->playerXPos;
|
||||
y = (u16)ptr->playerYPos;
|
||||
roomHeader = &gAreaRoomHeaders[ptr->area][ptr->room];
|
||||
x += roomHeader->map_x;
|
||||
y += roomHeader->map_y;
|
||||
gOamCmd.x = (s32)(x * DISPLAY_HEIGHT) / 0xf90 + 0x28;
|
||||
gOamCmd.y = (s32)(y * DISPLAY_HEIGHT) / 0xf90 + 0xc;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user