mirror of
https://github.com/zeldaret/st
synced 2026-07-03 13:00:15 -04:00
Decompile overlay 1 (Part 3) (#95)
* ZeldaArrangeBinary OK * ZeldaMapBinary 26% * UnkStruct_SceneChange1 -> EntranceInfo * cleanup EntranceInfo ctors * fix regressions * ZeldaMapBinary 47% * fix regressions * ZeldaMapBinary 73% * ZeldaMapBinary 89% * ZeldaMapBinary 99%
This commit is contained in:
@@ -18,13 +18,9 @@ public:
|
||||
/* 0E */ s8 mUnk_0E;
|
||||
/* 0F */ bool mUnk_0F;
|
||||
/* 10 */ u16 mParams[4];
|
||||
/* 18 */ Vec2b mUnk_18;
|
||||
/* 1A */ u16 mUnk_1A;
|
||||
/* 1C */ union {
|
||||
unk32 mUnk_1C;
|
||||
u16 mUnk_1C_0;
|
||||
u16 mUnk_1C_2;
|
||||
};
|
||||
/* 18 */ u8 mUnk_18[2];
|
||||
/* 1A */ u16 mUnk_1A[2];
|
||||
/* 1E */ u16 mUnk_1E;
|
||||
/* 20 */ union {
|
||||
unk32 mUnk_20;
|
||||
unk16 mUnk_20_0;
|
||||
@@ -52,6 +48,7 @@ public:
|
||||
ActorProfile **func_ov000_02073dc();
|
||||
ActorProfile **func_ov000_02073e8();
|
||||
ActorProfile *GetProfileFromId(ActorId actorId);
|
||||
void func_ov000_02097444(ActorId actorId, ActorParams *pParams, unk32 param3);
|
||||
};
|
||||
|
||||
class Actor_C4;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include "files.h"
|
||||
#include "types.h"
|
||||
|
||||
class UnkStruct_SceneChange1;
|
||||
class EntranceInfo;
|
||||
|
||||
class ActorManager : public AutoInstance<ActorManager> {
|
||||
public:
|
||||
@@ -54,13 +54,13 @@ public:
|
||||
void func_ov001_020bb488();
|
||||
void func_ov001_020bb548();
|
||||
void func_ov001_020bb630();
|
||||
void func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020bb6b0(EntranceInfo *param1);
|
||||
void func_ov001_020bb7b0(ZeldaObjectList *pObjList);
|
||||
void func_ov001_020bb7f0();
|
||||
|
||||
static ActorManager *Create();
|
||||
static void Destroy();
|
||||
static bool func_ov001_020bb728(s32 param1);
|
||||
static bool func_ov001_020bb728(ActorId actorId);
|
||||
static void func_ov001_020bb824();
|
||||
static void func_ov001_020bb844();
|
||||
};
|
||||
|
||||
@@ -13,7 +13,10 @@ class ActorProfile {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ Cylinder mUnk_04;
|
||||
/* 14 */ unk8 mUnk_14[0x18 - 0x14];
|
||||
/* 14 */ unk8 mUnk_14;
|
||||
/* 15 */ bool mUnk_15;
|
||||
/* 16 */ unk8 mUnk_16;
|
||||
/* 17 */ unk8 mUnk_17;
|
||||
/* 18 */ unk8 mUnk_18;
|
||||
/* 19 */ unk8 mUnk_19;
|
||||
/* 1A */ unk16 mUnk_1A;
|
||||
|
||||
@@ -76,7 +76,7 @@ struct CutsceneParamsEntry {
|
||||
};
|
||||
|
||||
CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex);
|
||||
s32 func_ov000_020a7840(unk32 param1);
|
||||
s32 func_ov000_020a7840(unk32 param1, unk32 param2);
|
||||
bool Cutscene_IsAdventureFlagSet(s32 csIndex);
|
||||
|
||||
extern const CutsceneParamsEntry gCSParamsEntries[CutsceneIndex_Max];
|
||||
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
/* 28 */ u16 mUnk_28;
|
||||
/* 2A */ u16 mPostDate;
|
||||
/* 2C */ union {
|
||||
Vec2b mStampPositions[StampType_Max];
|
||||
Vec2bCpp mStampPositions[StampType_Max];
|
||||
u16 mStampPos[StampType_Max];
|
||||
};
|
||||
/* 54 */ s8 mObtainedLetters[LetterType_Max];
|
||||
@@ -100,7 +100,7 @@ public:
|
||||
unk32 func_ov024_020d6468();
|
||||
unk32 GetStamp(unk32 index);
|
||||
u16 *GetStampDate(unk32 index);
|
||||
Vec2b *GetStampPos(unk32 index);
|
||||
Vec2bCpp *GetStampPos(unk32 index);
|
||||
void func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3);
|
||||
void func_ov024_020d6530();
|
||||
unk32 GetNumPostcards();
|
||||
|
||||
@@ -96,19 +96,17 @@ public:
|
||||
|
||||
class MapObject_20 {
|
||||
public:
|
||||
/* 00 */ u16 mUnk_00[4]; // parameters
|
||||
/* 00 */ u16 mParams[4]; // parameters
|
||||
/* 08 */ u8 mUnk_08[2];
|
||||
/* 0A */ u16 mUnk_0A[2];
|
||||
/* 0E */ unk16 mUnk_0E;
|
||||
/* 10 */ unk32 mUnk_10;
|
||||
/* 14 */ s16 mUnk_14;
|
||||
/* 16 */ bool mUnk_16;
|
||||
/* 16 */ unk8 mUnk_17;
|
||||
/* 17 */ s8 mUnk_17;
|
||||
/* 18 */
|
||||
|
||||
MapObject_20() {}
|
||||
|
||||
void func_ov000_0209c7c8();
|
||||
void Init();
|
||||
|
||||
static void func_ov000_0209c790(MapObjectId mapObjId, MapObjectProfile *pProfile);
|
||||
static void func_ov000_0209c7ac(MapObjectId mapObjId);
|
||||
@@ -129,7 +127,7 @@ public:
|
||||
/* 20 */ MapObject_20 mUnk_20; // parameters
|
||||
/* 38 */ unk8 mUnk_38;
|
||||
/* 39 */ unk8 mUnk_39;
|
||||
/* 3A */ Vec2b mUnk_3A;
|
||||
/* 3A */ Vec2bCpp mUnk_3A;
|
||||
/* 3C */ MapObjectProfile *mpProfile;
|
||||
/* 40 */
|
||||
|
||||
@@ -175,7 +173,7 @@ public:
|
||||
void func_ov000_0209d274(unk32 param1);
|
||||
bool func_ov000_0209d29c(unk32 param1);
|
||||
void func_ov000_0209d2c4(unk32 param1, bool param2);
|
||||
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3);
|
||||
void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3);
|
||||
void func_ov000_0209d3b4(unk32 param1, fx32 size);
|
||||
void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3);
|
||||
void func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3, u8 param4);
|
||||
@@ -184,7 +182,7 @@ public:
|
||||
bool func_ov000_0209d668();
|
||||
void func_ov000_0209d6ac(VecFx32 *param1);
|
||||
|
||||
static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx);
|
||||
static void func_ov000_0209d0bc(Vec2bCpp *param1, MapObject *thisx);
|
||||
static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2);
|
||||
static void func_ov000_0209d54c(ActorRef *param1, MapObject *thisx, u16 param2, const VecFx32 *pPos, s16 param3,
|
||||
u16 param4);
|
||||
|
||||
@@ -9,6 +9,15 @@
|
||||
|
||||
typedef void (*UnkCallback_func_01fff4cc)(void *, void *);
|
||||
|
||||
struct UnkStruct_MapObjCreateData {
|
||||
/* 00 */ u16 unk_00;
|
||||
/* 02 */ union {
|
||||
Vec2b pos;
|
||||
u16 raw_pos;
|
||||
};
|
||||
/* 04 */
|
||||
};
|
||||
|
||||
class MapObjectManager : public AutoInstance<MapObjectManager> {
|
||||
public:
|
||||
/* 00 */ MapObject **mMapObjTable;
|
||||
@@ -31,14 +40,15 @@ public:
|
||||
~MapObjectManager();
|
||||
|
||||
// itcm
|
||||
MapObject *func_01fff498(Vec2b param1);
|
||||
MapObject *func_01fff498(Vec2bCpp param1);
|
||||
void func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2);
|
||||
MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2);
|
||||
|
||||
// overlay 0
|
||||
MapObjectId func_ov000_0209c3a8(Vec2b *param1);
|
||||
MapObjectId func_ov000_0209c3a8(Vec2bCpp *param1);
|
||||
void func_ov000_0209c3e8();
|
||||
void func_ov000_0209c444();
|
||||
MapObject *AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5);
|
||||
|
||||
static void func_ov000_0209c490();
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
/* 48 */ unk32 mUnk_48;
|
||||
/* 4C */ unk32 mUnk_4C;
|
||||
/* 50 */ unk32 mUnk_50;
|
||||
/* 54 */ UnkStruct_SceneChange1 mUnk_54;
|
||||
/* 54 */ EntranceInfo mUnk_54;
|
||||
/* 68 */ unk32 mUnk_68;
|
||||
/* 6C */ s32 mUnk_6C;
|
||||
/* 70 */ volatile VecFx32 mUnk_70;
|
||||
|
||||
@@ -67,7 +67,7 @@ struct SaveMiscAdvManager {
|
||||
/* 28 */ u16 unk_28;
|
||||
/* 2A */ u16 postDate;
|
||||
/* 2C */ union {
|
||||
Vec2b stampPositions[StampType_Max];
|
||||
Vec2bCpp stampPositions[StampType_Max];
|
||||
u16 stampPos[StampType_Max];
|
||||
};
|
||||
/* 54 */ s8 obtainedLetters[LetterType_Max];
|
||||
@@ -327,7 +327,7 @@ struct SaveFile_00000_2600_Data {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ Vec2b unk_03[61];
|
||||
/* 03 */ Vec2bCpp unk_03[61];
|
||||
/* 7E */ u16 unk_7E;
|
||||
/* 80 */
|
||||
};
|
||||
|
||||
@@ -399,6 +399,10 @@ public:
|
||||
return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito;
|
||||
}
|
||||
|
||||
bool IsASR() {
|
||||
return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR;
|
||||
}
|
||||
|
||||
void Load(OverlaySlot slot, OverlayIndex index);
|
||||
void LoadIfNotLoaded(OverlaySlot slot, OverlayIndex index);
|
||||
void Unload(OverlaySlot slot);
|
||||
|
||||
@@ -1073,7 +1073,7 @@ struct UnkDataStruct4_14_2 {
|
||||
/* 12C */
|
||||
};
|
||||
|
||||
struct UnkStruct_SceneChange1;
|
||||
struct EntranceInfo;
|
||||
struct UnkDataStruct4 {
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ u16 mUnk_04;
|
||||
@@ -1097,7 +1097,7 @@ struct UnkDataStruct4 {
|
||||
|
||||
void func_ov024_020d2518();
|
||||
void func_ov024_020d251c();
|
||||
void func_ov024_020d2520(UnkStruct_SceneChange1 *param1);
|
||||
void func_ov024_020d2520(EntranceInfo *param1);
|
||||
void func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3);
|
||||
void func_ov024_020d2564();
|
||||
void func_ov024_020d258c(u32 sceneIndex, u8 roomIndex);
|
||||
|
||||
@@ -68,18 +68,23 @@ public:
|
||||
~UnkStruct_027e0960();
|
||||
|
||||
// overlay 0
|
||||
void func_ov000_0205a11c();
|
||||
void func_ov000_0205a120();
|
||||
void func_ov000_0205a160();
|
||||
void func_ov000_0205a164();
|
||||
void func_ov000_0205a1a4();
|
||||
void func_ov000_0205a1fc(u8 nEntries);
|
||||
void func_ov000_0205a288(unk32 index, const ZMBEntryRALB *pEntry);
|
||||
void func_ov000_0205a2a4(volatile unk32 index, ZMBRALBPoint *pPoint);
|
||||
void func_ov000_0205a2c8();
|
||||
UnkStruct_027e0960_TableEntry *func_ov000_0205a390(u8 param1);
|
||||
UnkStruct_027e0960_TableEntry *func_ov000_0205a3fc(VecFx32 param1, unk32 param4);
|
||||
|
||||
static UnkStruct_027e0960 *Create();
|
||||
|
||||
// overlay 1
|
||||
void func_ov000_0205a11c();
|
||||
void func_ov000_0205a120();
|
||||
void func_ov000_0205a160();
|
||||
void func_ov000_0205a164();
|
||||
|
||||
static void Destroy();
|
||||
};
|
||||
|
||||
// path manager?
|
||||
extern UnkStruct_027e0960 *data_027e0960;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_0204a060.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a0.hpp"
|
||||
#include "files.h"
|
||||
#include "global.h"
|
||||
#include "iterator.hpp"
|
||||
#include "types.h"
|
||||
@@ -16,57 +17,87 @@ class UnkStruct_027e09a4;
|
||||
|
||||
#define ROOM_INDEX_NONE 0xFF
|
||||
|
||||
struct UnkStruct_SceneChange1 {
|
||||
/* 00 */ unk32 mSceneIndex;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk16 mUnk_08;
|
||||
/* 0A */ u8 mRoomIndex;
|
||||
/* 0B */ u8 mSpawnIndex;
|
||||
/* 0C */ bool mIsCS;
|
||||
/* 0D */ u8 mUnk_0D;
|
||||
/* 0E */ u8 mCutsceneIndex;
|
||||
/* 0F */ u8 mUnk_0F;
|
||||
/* 10 */ u8 mUnk_10;
|
||||
/* 11 */ u8 mUnk_11;
|
||||
/* 12 */ u16 mUnk_12;
|
||||
struct EntranceInfo {
|
||||
/* 00 */ s32 sceneIndex;
|
||||
/* 04 */ unk32 unk_04;
|
||||
/* 08 */ unk16 unk_08;
|
||||
/* 0A */ u8 roomIndex;
|
||||
/* 0B */ u8 spawnIndex;
|
||||
/* 0C */ bool isCS;
|
||||
/* 0D */ u8 unk_0D;
|
||||
/* 0E */ u8 csIndex;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u8 unk_10;
|
||||
/* 11 */ u8 unk_11;
|
||||
/* 12 */ u16 unk_12;
|
||||
/* 14 */
|
||||
|
||||
UnkStruct_SceneChange1() {
|
||||
this->mSceneIndex = SceneIndex_Max;
|
||||
this->mUnk_04 = 0;
|
||||
this->mUnk_08 = 0;
|
||||
this->mRoomIndex = ROOM_INDEX_NONE;
|
||||
this->mSpawnIndex = 0;
|
||||
this->mIsCS = false;
|
||||
this->mUnk_0D = 0;
|
||||
this->mCutsceneIndex = CutsceneIndex_None;
|
||||
this->mUnk_0F = 0;
|
||||
this->mUnk_10 = 0;
|
||||
EntranceInfo() {}
|
||||
|
||||
EntranceInfo(bool isCS) {
|
||||
this->sceneIndex = SceneIndex_Max;
|
||||
this->unk_04 = 0;
|
||||
this->unk_08 = 0;
|
||||
this->roomIndex = ROOM_INDEX_NONE;
|
||||
this->spawnIndex = 0;
|
||||
this->isCS = isCS;
|
||||
this->unk_0D = 0;
|
||||
this->csIndex = CutsceneIndex_None;
|
||||
this->unk_0F = 0;
|
||||
this->unk_10 = 0;
|
||||
}
|
||||
|
||||
UnkStruct_SceneChange1(CutsceneParamsEntry *pEntry, bool nextIsCS) {
|
||||
EntranceInfo(CutsceneParamsEntry *pEntry, bool isCS) {
|
||||
u8 sceneIndex = pEntry->mSceneIndex;
|
||||
u8 cutsceneIndex = pEntry->mCutsceneIndex;
|
||||
u8 spawnIndex = pEntry->mSpawnIndex;
|
||||
u8 roomIndex = pEntry->mRoomIndex;
|
||||
|
||||
this->mSceneIndex = sceneIndex;
|
||||
this->mUnk_04 = 0;
|
||||
this->mUnk_08 = 0;
|
||||
this->mRoomIndex = roomIndex;
|
||||
this->mSpawnIndex = spawnIndex;
|
||||
this->mIsCS = nextIsCS;
|
||||
this->mUnk_0D = 0;
|
||||
this->mCutsceneIndex = cutsceneIndex;
|
||||
this->mUnk_0F = 0;
|
||||
this->mUnk_10 = 0;
|
||||
this->sceneIndex = sceneIndex;
|
||||
this->unk_04 = 0;
|
||||
this->unk_08 = 0;
|
||||
this->roomIndex = roomIndex;
|
||||
this->spawnIndex = spawnIndex;
|
||||
this->isCS = isCS;
|
||||
this->unk_0D = 0;
|
||||
this->csIndex = cutsceneIndex;
|
||||
this->unk_0F = 0;
|
||||
this->unk_10 = 0;
|
||||
}
|
||||
|
||||
UnkStruct_SceneChange1(const UnkStruct_SceneChange1 *pSource) {
|
||||
MI_CpuCopy32((void *) pSource, this, sizeof(UnkStruct_SceneChange1));
|
||||
EntranceInfo(const ZMBEntryWARP *pEntry) {
|
||||
SceneIndex sceneIndex = data_027e09a0->GetSceneIndexFromName(pEntry->destName);
|
||||
u8 unk_04 = pEntry->unk_01;
|
||||
s32 cutsceneIndex = CutsceneIndex_None;
|
||||
|
||||
if (pEntry->unk_14 != 0 || pEntry->unk_15 != 0) {
|
||||
cutsceneIndex = func_ov000_020a7840(pEntry->unk_14, pEntry->unk_15);
|
||||
}
|
||||
|
||||
u8 unk_10 = pEntry->unk_17;
|
||||
u8 unk_00 = pEntry->unk_00;
|
||||
u8 spawnIndex = pEntry->spawnIndex;
|
||||
u8 roomIndex = pEntry->roomIndex;
|
||||
|
||||
this->sceneIndex = sceneIndex;
|
||||
this->unk_04 = unk_04;
|
||||
this->unk_08 = 0;
|
||||
this->roomIndex = roomIndex;
|
||||
this->spawnIndex = spawnIndex;
|
||||
this->isCS = false;
|
||||
this->unk_0D = unk_00;
|
||||
this->csIndex = cutsceneIndex;
|
||||
this->unk_0F = 0;
|
||||
this->unk_10 = unk_10;
|
||||
}
|
||||
|
||||
UnkStruct_SceneChange1(s32) {}
|
||||
EntranceInfo(const EntranceInfo *pSource) {
|
||||
MI_CpuCopy32((void *) pSource, this, sizeof(EntranceInfo));
|
||||
}
|
||||
|
||||
EntranceInfo(const EntranceInfo &refSource) {
|
||||
MI_CpuCopy32((void *) &refSource, this, sizeof(EntranceInfo));
|
||||
}
|
||||
};
|
||||
|
||||
class UnkStruct_WarpUnk1_24 : public UnkStruct_0204a060_Base3 {
|
||||
@@ -109,8 +140,8 @@ public:
|
||||
/* 00 (base) */
|
||||
/* 24 */ UnkStruct_WarpUnk1_24 mUnk_24;
|
||||
/* 50 */ UnkStruct_WarpUnk1_50 mUnk_50;
|
||||
/* 78 */ UnkStruct_SceneChange1 mUnk_78; // current scene?
|
||||
/* 8C */ UnkStruct_SceneChange1 mUnk_8C; // next scene
|
||||
/* 78 */ EntranceInfo mCurEntrance;
|
||||
/* 8C */ EntranceInfo mNextEntrance;
|
||||
/* A0 */ UnkStruct_WarpUnk1_A0 mUnk_A0;
|
||||
/* B4 */ unk32 mSpawnTransitionType; // the behavior of Link when entering a new scene
|
||||
/* B8 */
|
||||
@@ -142,8 +173,8 @@ public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ Iterator<UnkStruct_027e09a4_54_04> mUnk_04;
|
||||
/* 0C */ wchar_t mUnk_0C[8];
|
||||
/* 1C */ UnkStruct_SceneChange1 mUnk_1C;
|
||||
/* 30 */ unk16 mUnk_30;
|
||||
/* 1C */ EntranceInfo mUnk_1C;
|
||||
/* 30 */ u16 mUnk_30;
|
||||
/* 32 */ bool mUnk_32;
|
||||
/* 33 */ unk8 mUnk_33;
|
||||
/* 34 */
|
||||
@@ -186,8 +217,8 @@ public:
|
||||
|
||||
class UnkStruct_027e09a4 : public AutoInstance<UnkStruct_027e09a4> {
|
||||
public:
|
||||
/* 00 */ UnkStruct_SceneChange1 mUnk_00; // the infos of the current area, this isn't saved when you save the game
|
||||
/* 14 */ UnkStruct_SceneChange1 mUnk_14;
|
||||
/* 00 */ EntranceInfo mUnk_00; // the infos of the current area, this isn't saved when you save the game
|
||||
/* 14 */ EntranceInfo mUnk_14;
|
||||
/* 28 */ unk32 mUnk_28;
|
||||
/* 2C */ UnkStruct_027e09a4_2C mUnk_2C;
|
||||
/* 40 */ UnkStruct_027e09a4_2C mUnk_40;
|
||||
@@ -200,15 +231,15 @@ public:
|
||||
/* 68 */
|
||||
|
||||
bool IsCutscene() {
|
||||
return this->mUnk_00.mIsCS == true;
|
||||
return this->mUnk_00.isCS == true;
|
||||
}
|
||||
|
||||
bool IsNotCutscene() {
|
||||
return this->mUnk_00.mIsCS != true;
|
||||
return this->mUnk_00.isCS != true;
|
||||
}
|
||||
|
||||
u8 CurrentCSIndex() {
|
||||
return this->mUnk_00.mCutsceneIndex;
|
||||
return this->mUnk_00.csIndex;
|
||||
}
|
||||
|
||||
bool UnkCheck(unk32 sceneIndex) {
|
||||
@@ -245,31 +276,31 @@ public:
|
||||
}
|
||||
|
||||
SceneIndex CurrentSceneIndex() {
|
||||
return this->mUnk_00.mSceneIndex;
|
||||
return this->mUnk_00.sceneIndex;
|
||||
}
|
||||
|
||||
bool IsDarkRealm() {
|
||||
return this->mUnk_00.mSceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.mSceneIndex >= SceneIndex_t_eviltrain;
|
||||
return this->mUnk_00.sceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.sceneIndex >= SceneIndex_t_eviltrain;
|
||||
}
|
||||
|
||||
bool IsDungeonTower() {
|
||||
return this->mUnk_00.mSceneIndex == SceneIndex_d_main;
|
||||
return this->mUnk_00.sceneIndex == SceneIndex_d_main;
|
||||
}
|
||||
|
||||
bool IsPirate() {
|
||||
return this->mUnk_00.mSceneIndex == SceneIndex_f_pirate;
|
||||
return this->mUnk_00.sceneIndex == SceneIndex_f_pirate;
|
||||
}
|
||||
|
||||
bool IsWater3() {
|
||||
return this->mUnk_00.mSceneIndex == SceneIndex_f_water3;
|
||||
return this->mUnk_00.sceneIndex == SceneIndex_f_water3;
|
||||
}
|
||||
|
||||
bool IsSnowdriftStation() {
|
||||
return this->mUnk_00.mSceneIndex == SceneIndex_f_kakushi1;
|
||||
return this->mUnk_00.sceneIndex == SceneIndex_f_kakushi1;
|
||||
}
|
||||
|
||||
bool IsPassenger() {
|
||||
return this->mUnk_00.mSceneIndex == SceneIndex_f_passenger;
|
||||
return this->mUnk_00.sceneIndex == SceneIndex_f_passenger;
|
||||
}
|
||||
|
||||
UnkStruct_027e09a4(unk32 param1);
|
||||
@@ -282,7 +313,7 @@ public:
|
||||
|
||||
// overlay 0
|
||||
unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2);
|
||||
UnkStruct_SceneChange1 *func_ov000_02070560();
|
||||
EntranceInfo *func_ov000_02070560();
|
||||
void func_ov000_020707a8(void *param1);
|
||||
void func_ov000_02070834(void *param1);
|
||||
void func_ov000_0207087c(unk32 param1);
|
||||
@@ -291,18 +322,18 @@ public:
|
||||
void func_ov000_02070a4c(unk32 param1);
|
||||
unk32 func_ov000_02070554();
|
||||
UnkStruct_WarpUnk1_A0 *func_ov000_02070538();
|
||||
bool func_ov000_02070a9c(UnkStruct_SceneChange1 *param1);
|
||||
bool func_ov000_02072154(UnkStruct_SceneChange1 *param1, unk32 param2);
|
||||
bool func_ov000_02070a9c(EntranceInfo *param1);
|
||||
bool func_ov000_02072154(EntranceInfo *param1, unk32 param2);
|
||||
bool func_ov000_0207056c();
|
||||
void func_ov000_020705e8(SaveFile *param1, unk32 param2);
|
||||
|
||||
// overlay 1
|
||||
void func_ov001_020b662c();
|
||||
void func_ov001_020b66dc();
|
||||
void func_ov001_020b6758(const UnkStruct_SceneChange1 *param1, bool param2);
|
||||
void func_ov001_020b6758(const EntranceInfo *param1, bool param2);
|
||||
void func_ov001_020b68a4(bool param1, bool param2, bool param3);
|
||||
void func_ov001_020b6924(const UnkStruct_SceneChange1 *param1, bool param2);
|
||||
void func_ov001_020b69b4(const UnkStruct_SceneChange1 *param1, bool param2);
|
||||
void func_ov001_020b6924(const EntranceInfo *param1, bool param2);
|
||||
void func_ov001_020b69b4(const EntranceInfo *param1, bool param2);
|
||||
|
||||
static UnkStruct_027e09a4 *Create(unk32 param1);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "math.hpp"
|
||||
#include "types.h"
|
||||
|
||||
#include "Actor/Actor.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
#include "Render/ModelRender.hpp"
|
||||
#include "Save/SaveFile.hpp"
|
||||
@@ -58,6 +59,7 @@ public:
|
||||
/* 14 */ unk32 mUnk_14;
|
||||
/* 18 */
|
||||
|
||||
UnkStruct_ov001_020c40f4(int) {}
|
||||
UnkStruct_ov001_020c40f4() {
|
||||
this->mUnk_0E = -1;
|
||||
this->mUnk_0F = 0;
|
||||
@@ -145,15 +147,35 @@ public:
|
||||
~UnkStruct_027e0cd8_0C_Base_148_02();
|
||||
};
|
||||
|
||||
// UnkStruct_ov001_020c2a40 ?
|
||||
class UnkStruct_027e0cd8_0C_Base_154_00 {
|
||||
public:
|
||||
/* 00 */ STRUCT_PAD(0x00, 0x14);
|
||||
/* 14 */
|
||||
typedef u16 UnkFlags1;
|
||||
enum UnkFlags1_ {
|
||||
UnkFlags1_None = 0,
|
||||
UnkFlags1_1 = 1,
|
||||
UnkFlags1_2 = 2,
|
||||
UnkFlags1_3 = 3,
|
||||
UnkFlags1_4 = 4,
|
||||
UnkFlags1_5 = 5,
|
||||
UnkFlags1_6 = 6,
|
||||
UnkFlags1_7 = 7,
|
||||
UnkFlags1_Max = 8,
|
||||
};
|
||||
|
||||
UnkStruct_027e0cd8_0C_Base_154_00(const UnkStruct_027e0cd8_0C_Base_154_00 &ref) {
|
||||
MI_CpuCopy32((void *) &ref, this, sizeof(UnkStruct_027e0cd8_0C_Base_154_00));
|
||||
}
|
||||
typedef u16 UnkFlags2;
|
||||
enum UnkFlags2_ {
|
||||
UnkFlags2_None = 0,
|
||||
UnkFlags2_0 = 0,
|
||||
UnkFlags2_1 = 1,
|
||||
UnkFlags2_2 = 2,
|
||||
UnkFlags2_3 = 3,
|
||||
UnkFlags2_4 = 4,
|
||||
UnkFlags2_5 = 5,
|
||||
UnkFlags2_6 = 6,
|
||||
UnkFlags2_7 = 7,
|
||||
UnkFlags2_8 = 8,
|
||||
UnkFlags2_9 = 9,
|
||||
UnkFlags2_10 = 10,
|
||||
UnkFlags2_11 = 11,
|
||||
UnkFlags2_Max = 12,
|
||||
};
|
||||
|
||||
class UnkStruct_027e0cd8_0C_Base {
|
||||
@@ -171,7 +193,7 @@ public:
|
||||
};
|
||||
/* 088 */ UnkStruct_027e0cd8_0C_Base_88 mUnk_088;
|
||||
/* 098 */ UnkStruct_027e0cd8_0C_Base_98 *mUnk_098;
|
||||
/* 09C */ Vec2s mUnk_09C;
|
||||
/* 09C */ Vec2us mUnk_09C;
|
||||
/* 0A0 */ unk32 mUnk_0A0;
|
||||
/* 0A4 */ unk32 mUnk_0A4;
|
||||
/* 0A8 */ unk32 mUnk_0A8;
|
||||
@@ -179,14 +201,17 @@ public:
|
||||
/* 0AC */ bool mUnk_0AD;
|
||||
/* 0AC */ bool mUnk_0AE;
|
||||
/* 0AC */ bool mUnk_0AF;
|
||||
/* 0B0 */ unk32 mUnk_0B0;
|
||||
/* 0B0 */ u8 mUnk_0B0;
|
||||
/* 0B1 */ u8 mUnk_0B1;
|
||||
/* 0B2 */ u8 mUnk_0B2;
|
||||
/* 0B3 */ u8 mUnk_0B3;
|
||||
/* 0B4 */ ZeldaObjectList *mUnk_0B4;
|
||||
/* 0B8 */ ZeldaObjectList *mUnk_0B8[8]; // map objects
|
||||
/* 0D8 */ ZeldaObjectList *mUnk_0D8;
|
||||
/* 0DC */ ZeldaObjectList *mUnk_0DC[8]; // actors
|
||||
/* 0FC */ unk32 mUnk_0FC;
|
||||
/* 100 */ volatile BOOL mIsCS;
|
||||
/* 104 */ unk16 mUnk_104;
|
||||
/* 104 */ UnkFlags1 mUnk_104;
|
||||
/* 108 */ unk32 mUnk_108;
|
||||
/* 10C */ unk32 mUnk_10C;
|
||||
/* 110 */ unk32 mUnk_110;
|
||||
@@ -195,18 +220,18 @@ public:
|
||||
/* 11C */ unk32 mUnk_11C;
|
||||
/* 120 */ unk32 mUnk_120;
|
||||
/* 124 */ unk32 mUnk_124;
|
||||
/* 128 */ u16 mUnk_128;
|
||||
/* 128 */ UnkFlags2 mUnk_128;
|
||||
/* 12A */ bool mUnk_12A;
|
||||
/* 12B */ bool mUnk_12B;
|
||||
/* 12C */ bool mUnk_12C;
|
||||
/* 12D */ bool mUnk_12D;
|
||||
/* 12E */ bool mUnk_12E;
|
||||
/* 130 */ unk32 mUnk_130;
|
||||
/* 134 */ unk32 mUnk_134;
|
||||
/* 138 */ unk32 mUnk_138;
|
||||
/* 13C */ FixedVector<UnkStruct_ov001_020c40f4> mUnk_13C;
|
||||
/* 148 */ CustomVector<UnkStruct_027e0cd8_0C_Base_148_00_Base *> mUnk_148;
|
||||
/* 154 */ CustomVector<UnkStruct_027e0cd8_0C_Base_154_00> mUnk_154;
|
||||
/* 130 */ ZMBSectionROMB *mpROMB;
|
||||
/* 134 */ ZMBSectionCAME *mpCAME;
|
||||
/* 138 */ ZMBSectionCMPT *mpCMPT;
|
||||
/* 13C */ FixedVector<UnkStruct_ov001_020c40f4> mUnk_13C; // related to player
|
||||
/* 148 */ CustomVector<UnkStruct_027e0cd8_0C_Base_148_00_Base *> mUnk_148; // related to "arrange" stuff
|
||||
/* 154 */ CustomVector<EntranceInfo> mUnk_154; // exit list?
|
||||
/* 160 */
|
||||
|
||||
UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param1);
|
||||
@@ -217,43 +242,43 @@ public:
|
||||
/* 10 */ virtual void vfunc_10();
|
||||
/* 14 */ virtual void vfunc_14();
|
||||
/* 18 */ virtual void vfunc_18();
|
||||
/* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3);
|
||||
/* 1C */ virtual void vfunc_1C(const EntranceInfo *param1, bool param2, bool param3);
|
||||
/* 20 */ virtual void vfunc_20();
|
||||
/* 24 */ virtual void vfunc_24();
|
||||
/* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3);
|
||||
/* 2C */ virtual void vfunc_2C();
|
||||
/* 30 */ virtual void LoadSceneModel(const UnkStruct_SceneChange1 *param1);
|
||||
/* 34 */ virtual void vfunc_34(unk32 param1);
|
||||
/* 30 */ virtual void LoadSceneModel(const EntranceInfo *param1);
|
||||
/* 34 */ virtual void ZMB_ParseROMB(ZMBSectionROMB *pROMB);
|
||||
/* 38 */ virtual void vfunc_38();
|
||||
/* 3C */ virtual void vfunc_3C();
|
||||
/* 40 */ virtual void vfunc_40(u8 spawnIndex);
|
||||
|
||||
// itcm
|
||||
fx32 func_01ffedf4(Vec2b *pPos);
|
||||
fx32 func_01ffedf4(Vec2bCpp *pPos);
|
||||
|
||||
// overlay 0
|
||||
unk32 func_ov000_02080180(void *param1);
|
||||
void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3);
|
||||
void func_ov000_020801b0(Vec2bCpp *param1, unk32 param2, unk32 param3);
|
||||
bool func_ov000_020802ec(u16 param1, VecFx32 *param2);
|
||||
void func_ov000_020803ec(u16 param1);
|
||||
void func_ov000_0208053c(u16 param1);
|
||||
bool func_ov000_02080658(unk32 param1, UnkStruct_SceneChange1 *param2);
|
||||
void func_ov000_020808f4(void *param1, void *param2, unk32 param3);
|
||||
bool func_ov000_02080658(unk32 param1, EntranceInfo *param2);
|
||||
void func_ov000_020808f4(void *param1, void *param2, u8 param3);
|
||||
unk32 func_ov000_02080a44();
|
||||
void func_ov000_02080a5c(VecFx32 *param1);
|
||||
void func_ov000_02080a78(VecFx32 *param1);
|
||||
|
||||
// overlay 1
|
||||
void func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020b85d0(const EntranceInfo *param1);
|
||||
void func_ov001_020b88c0(unk32 param1);
|
||||
void func_ov001_020b88ec();
|
||||
const UnkStruct_ov001_020c40f4 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1);
|
||||
void func_ov001_020b8aec();
|
||||
void func_ov001_020b8b94(ZMBEntryARAB *pARAB);
|
||||
void func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1);
|
||||
void func_ov001_020b8c30(const EntranceInfo ¶m1);
|
||||
void *func_ov001_020b8c80(unk32 param1);
|
||||
void func_ov001_020b8c90(unk32 param1);
|
||||
void func_ov001_020b8c98(unk32 param1);
|
||||
void func_ov001_020b8c90(ZMBSectionCMPT *pCMPT);
|
||||
void func_ov001_020b8c98(ZMBSectionCAME *pCAME);
|
||||
void func_ov001_020b8db8();
|
||||
void func_ov001_020b8e24();
|
||||
void func_ov001_020b8e54();
|
||||
@@ -275,7 +300,7 @@ public:
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 14 */ virtual void vfunc_14() override;
|
||||
/* 18 */ virtual void vfunc_18() override;
|
||||
/* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) override;
|
||||
/* 1C */ virtual void vfunc_1C(const EntranceInfo *param1, bool param2, bool param3) override;
|
||||
/* 20 */ virtual void vfunc_20() override;
|
||||
/* 24 */ virtual void vfunc_24() override;
|
||||
/* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3) override;
|
||||
@@ -316,8 +341,15 @@ public:
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0C */ UnkStruct_027e0cd8_04_0C *mUnk_0C;
|
||||
/* 10 */ u8 mUnk_10;
|
||||
/* 11 */ u8 mUnk_11;
|
||||
/* 12 */ STRUCT_PAD(0x12, 0x40);
|
||||
/* 10 */ u8 mUnk_11;
|
||||
/* 12 */ u8 mUnk_12;
|
||||
/* 12 */ u8 mUnk_13;
|
||||
/* 14 */ u8 mUnk_14;
|
||||
/* 14 */ u8 mUnk_15;
|
||||
/* 16 */ u8 mUnk_16;
|
||||
/* 16 */ u8 mUnk_17;
|
||||
/* 18 */ Vec2p mUnk_18;
|
||||
/* 20 */ STRUCT_PAD(0x20, 0x40);
|
||||
/* 40 */ u8 mUnk_40[1][10]; // at least one
|
||||
STRUCT_PAD(0x4C, 0xB4);
|
||||
/* B4 */
|
||||
@@ -327,6 +359,10 @@ public:
|
||||
|
||||
void func_ov000_02081354(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1,
|
||||
SaveFile_00000_0000_Data_184 *param3, bool param4);
|
||||
void func_ov000_02081874(u16 nEntries);
|
||||
void func_ov000_020819a4(const UnkStruct_func_ov000_020702a8 *pUnk1);
|
||||
void func_ov000_020818d0(CourseListRoomEntry *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
|
||||
void func_ov000_0208199c(SceneIndex sceneIndex, void *param2, unk32 param3);
|
||||
};
|
||||
|
||||
class UnkStruct_027e0cd8_10 : public UnkDataStruct4 {
|
||||
@@ -374,15 +410,16 @@ public:
|
||||
bool func_ov000_02082124();
|
||||
bool func_ov000_02081c28();
|
||||
void func_ov000_02081ca0();
|
||||
bool func_ov000_02081edc(u16 param1);
|
||||
|
||||
// overlay 1
|
||||
void func_ov001_020b7830(const UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020b7830(const EntranceInfo *param1);
|
||||
void func_ov001_020b7a7c();
|
||||
void func_ov001_020b7b38(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1);
|
||||
void func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2);
|
||||
void func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020b7c08(const EntranceInfo *param1, const UnkStruct_WarpUnk1_A0 *param2);
|
||||
void func_ov001_020b7d64(const EntranceInfo *param1);
|
||||
void func_ov001_020b7e50();
|
||||
void func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2);
|
||||
void func_ov001_020b7e68(const EntranceInfo *param1, bool param2);
|
||||
void func_ov001_020b803c();
|
||||
bool func_ov001_020b80fc(SceneIndex sceneIndex);
|
||||
void func_ov001_020b8120(SceneIndex sceneIndex);
|
||||
|
||||
@@ -397,6 +397,8 @@ class UnkStruct_027e0ce0_1C {
|
||||
public:
|
||||
/* 00 */ STRUCT_PAD(0x00, 0x0C);
|
||||
/* 0C */ MapObjectProfile_Derived2_20_Base *mUnk_0C;
|
||||
|
||||
void func_ov001_020bd0a4(bool param1);
|
||||
};
|
||||
|
||||
// PlayerManager?
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "types.h"
|
||||
|
||||
class UnkStruct_SceneChange1;
|
||||
class EntranceInfo;
|
||||
|
||||
class UnkStruct_ov018_020c5ac0 {
|
||||
public:
|
||||
@@ -63,10 +63,10 @@ public:
|
||||
void func_ov001_020bd87c(void);
|
||||
void func_ov001_020bd8dc(void);
|
||||
void func_ov001_020bd8ac(void);
|
||||
void func_ov001_020bd970(UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020bd970(EntranceInfo *param1);
|
||||
void func_ov001_020bde5c(void);
|
||||
void func_ov001_020bde04(UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020bde4c(const UnkStruct_SceneChange1 *param1);
|
||||
void func_ov001_020bde04(EntranceInfo *param1);
|
||||
void func_ov001_020bde4c(const EntranceInfo *param1);
|
||||
|
||||
// overlay 18
|
||||
UnkStruct_ov018_020c5ac0 *func_ov018_020c5718(void);
|
||||
|
||||
+298
-67
@@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/ActorId.hpp"
|
||||
#include "Actor/ActorRef.hpp"
|
||||
#include "Map/MapObjectId.hpp"
|
||||
#include "types.h"
|
||||
|
||||
@@ -11,11 +13,13 @@ extern "C" {
|
||||
|
||||
typedef u32 FileType;
|
||||
enum FileType_ {
|
||||
FileType_ZOB = 'BLOZ',
|
||||
FileType_ZTB = '1BTZ',
|
||||
FileType_ZMB = '1BMZ',
|
||||
FileType_CIB = 'ZCIB',
|
||||
FileType_CLB = 'ZCLB',
|
||||
FileType_ZOB = 'BLOZ',
|
||||
FileType_ZTB = '1BTZ',
|
||||
FileType_ZAB = 'ZCAB',
|
||||
FileType_ZMBv1 = 'ZMB1',
|
||||
FileType_ZMBv2 = 'ZMB2',
|
||||
FileType_CIB = 'ZCIB',
|
||||
FileType_CLB = 'ZCLB',
|
||||
};
|
||||
|
||||
typedef struct FileInfos {
|
||||
@@ -23,6 +27,55 @@ typedef struct FileInfos {
|
||||
/* 04 */ size_t size;
|
||||
} FileInfos;
|
||||
|
||||
// .cib
|
||||
typedef struct CourseInitEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ STRUCT_PAD(0x10, 0x24);
|
||||
} CourseInitEntry; // size = 0x24
|
||||
|
||||
typedef struct CourseInitHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseInitHeader; // size = 0x10
|
||||
|
||||
// .clb
|
||||
typedef struct CourseListRoomEntry {
|
||||
/* 00 */ u8 roomIndex;
|
||||
/* 01 */ u8 mapPaintIndex;
|
||||
/* 02 */ u16 unk_02;
|
||||
} CourseListRoomEntry; // size = 0x08
|
||||
|
||||
typedef struct CourseListEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ unk32 unk_10;
|
||||
/* 14 */ u8 numRooms;
|
||||
/* 15 */ unk8 unk_15;
|
||||
/* 16 */ unk8 titleCardMsgIndex;
|
||||
/* 17 */ u8 saveCourseIndex;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
/* 1C */ u8 unk_1C;
|
||||
/* 1D */ u8 unk_1D;
|
||||
/* 1E */ u8 unk_1E;
|
||||
/* 1F */ u8 unk_1F;
|
||||
/* 20 */ u8 defaultMapPaintIndex;
|
||||
/* 21 */ s8 unk_21; // scene index but unknown purpose
|
||||
/* 22 */ unk8 unk_22; // pad?
|
||||
/* 23 */ unk8 unk_23; // pad?
|
||||
/* 24 */ CourseListRoomEntry roomEntries[];
|
||||
} CourseListEntry; // size >= 0x28
|
||||
|
||||
typedef struct CourseListHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseListHeader; // size = 0x10
|
||||
|
||||
// .zob
|
||||
typedef struct ZOBHeader {
|
||||
/* 00 */ FileType type; // always "ZOLB"
|
||||
@@ -51,7 +104,7 @@ typedef struct ZTBHeader {
|
||||
/* 00 */ u32 magic; // 'MTRB'
|
||||
/* 04 */ FileType type; // always "ZTB1"
|
||||
/* 08 */ size_t nSize;
|
||||
/* 0C */ u32 nEntries;
|
||||
/* 0C */ u32 nSections;
|
||||
/* 10 */ u8 unused[0x10];
|
||||
} ZTBHeader; // size = 0x20
|
||||
|
||||
@@ -129,35 +182,90 @@ extern BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectio
|
||||
extern BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB);
|
||||
extern BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK);
|
||||
|
||||
// .zab
|
||||
typedef u32 ZABSectionType;
|
||||
enum ZABSectionType_ {
|
||||
ZABSectionType_CABM = 'CABM',
|
||||
ZABSectionType_CABI = 'CABI',
|
||||
};
|
||||
|
||||
typedef struct ZABHeader {
|
||||
/* 00 */ FileType type; // always "ZCAB" (probably "Zelda Course Arrange Binary"?)
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nSections;
|
||||
/* 0C */ unk32 unk_0C;
|
||||
} ZABHeader; // size = 0x10
|
||||
|
||||
typedef struct ZABEntryCABM {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ s8 unk_03;
|
||||
/* 04 */ u32 unk_04;
|
||||
} ZABEntryCABM; // size = 0x08
|
||||
|
||||
typedef struct ZABSectionHeader {
|
||||
/* 00 */ ZABSectionType type;
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u8 unk_08;
|
||||
/* 09 */ u8 unk_09;
|
||||
/* 0A */ u8 unk_0A;
|
||||
/* 0B */ u8 unk_0B;
|
||||
/* 0C */ u8 unk_0C;
|
||||
/* 0D */ u8 unk_0D;
|
||||
/* 0E */ u16 nEntries;
|
||||
} ZABSectionHeader; // size = 0x10
|
||||
|
||||
typedef struct ZABSectionCABM {
|
||||
/* 00 */ ZABSectionHeader header;
|
||||
/* 10 */ ZABEntryCABM entries[];
|
||||
} ZABSectionCABM;
|
||||
|
||||
typedef struct ZABSectionCABI {
|
||||
/* 00 */ ZABSectionHeader header;
|
||||
/* 10 */ // unknown
|
||||
} ZABSectionCABI;
|
||||
|
||||
struct UnkStruct_027e0cd8_04;
|
||||
struct UnkStruct_func_ov000_020702a8;
|
||||
|
||||
extern BOOL ZAB_ParseFile(FileInfos *pFileInfos, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, const CourseListEntry *pEntry,
|
||||
const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6);
|
||||
extern BOOL ZAB_ParseCAMB(FileInfos *pFileInfos, ZABSectionCABM *pCABM, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst,
|
||||
const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6);
|
||||
extern BOOL ZAB_ParseCABI(FileInfos *pFileInfos, ZABSectionCABI *pCABI, BOOL param3);
|
||||
extern BOOL ZAB_GetRoomEntry(FileInfos *pFileInfos, u8 param2, const CourseListEntry *pEntry, CourseListRoomEntry *param4);
|
||||
|
||||
// .zmb
|
||||
typedef u32 ZMBSectionType;
|
||||
enum ZMBSectionType_ {
|
||||
ZMBSectionType_LDLB = 'LDLB', // related to script triggers
|
||||
ZMBSectionType_ROMB = 'ROMB', // unknown
|
||||
ZMBSectionType_ROOB = 'ROOM', // room settings
|
||||
ZMBSectionType_ARAB = 'ARAB', // locations? (?)
|
||||
ZMBSectionType_RALB = 'RALB', // paths?
|
||||
ZMBSectionType_WARP = 'WARP', // exits?
|
||||
ZMBSectionType_CAME = 'CAME', // camera settings?
|
||||
ZMBSectionType_PLYR = 'PLYR', // player entrances?
|
||||
ZMBSectionType_MPOB = 'MPOB', // map object list, parameters are stored here
|
||||
ZMBSectionType_NPCA = 'NPCA', // actor list, same as above
|
||||
ZMBSectionType_ROMB = 'ROMB', // unknown
|
||||
ZMBSectionType_ROOM = 'ROOM', // room settings
|
||||
ZMBSectionType_LDLB = 'LDLB', // related to script triggers
|
||||
ZMBSectionType_MapObjects = 'MPOB', // map object list, parameters are stored here
|
||||
ZMBSectionType_ARAB = 'ARAB', // locations? (?)
|
||||
ZMBSectionType_RALB = 'RALB', // paths?
|
||||
ZMBSectionType_NPCA = 'NPCA', // actor list, same as above
|
||||
ZMBSectionType_PLYR = 'PLYR', // player entrances?
|
||||
ZMBSectionType_WARP = 'WARP', // exits?
|
||||
ZMBSectionType_CAME = 'CAME', // camera settings?
|
||||
ZMBSectionType_CMPT = 'CMPT', // ?
|
||||
};
|
||||
|
||||
typedef struct ZMBFileInfos {
|
||||
/* 00 */ void *pFile;
|
||||
/* 04 */ size_t size;
|
||||
/* 08 */ unk16 unk_08;
|
||||
/* 0A */ unk16 unk_0A;
|
||||
/* 0C */ unk16 unk_0C;
|
||||
/* 10 */ unk16 unk_10;
|
||||
/* 14 */ unk16 unk_14;
|
||||
} ZMBFileInfos;
|
||||
/* 0E */ s16 unk_0E;
|
||||
} ZMBFileInfos; // size = 0x10
|
||||
|
||||
typedef struct ZMBHeader {
|
||||
/* 00 */ u32 magic; // 'MAPB'
|
||||
/* 04 */ FileType type; // always "ZMB1"
|
||||
/* 08 */ size_t nSize;
|
||||
/* 0C */ u32 nEntries;
|
||||
/* 0C */ u32 nSections;
|
||||
/* 10 */ u8 unused[0x10];
|
||||
} ZMBHeader; // size = 0x20
|
||||
|
||||
@@ -169,18 +277,68 @@ typedef struct ZMBSectionHeader {
|
||||
/* 0B */ u8 unk_0B;
|
||||
} ZMBSectionHeader; // size = 0x0C
|
||||
|
||||
typedef struct ZMBEntryRALB {
|
||||
typedef struct ZMBSectionROMB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */
|
||||
} ZMBSectionROMB;
|
||||
|
||||
typedef struct ZMBEntryROOM {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
/* 04 */ unk32 unk_04;
|
||||
} ZMBEntryRALB; // size = 0x08
|
||||
/* 04 */ u8 unk_04;
|
||||
/* 05 */ u8 unk_05;
|
||||
/* 06 */ u8 unk_06;
|
||||
/* 07 */ u8 unk_07;
|
||||
/* 08 */ u32 unk_08;
|
||||
/* 0C */ u8 unk_0C;
|
||||
/* 0D */ union {
|
||||
u8 unk_0D;
|
||||
bool unk_0D_bool;
|
||||
};
|
||||
/* 0E */ u8 unk_0E;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u16 unk_10;
|
||||
/* 12 */ unk16 unk_12; // pad
|
||||
} ZMBEntryROOM; // size = 0x14
|
||||
|
||||
typedef struct ZMBSectionRALB {
|
||||
typedef struct ZMBSectionROOM {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryRALB entries[];
|
||||
} ZMBSectionRALB;
|
||||
/* 0C */ ZMBEntryROOM entries[];
|
||||
} ZMBSectionROOM;
|
||||
|
||||
typedef struct ZMBEntryLBLB {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
/* 04 */ u16 unk_04;
|
||||
/* 06 */ unk16 unk_06;
|
||||
} ZMBEntryLBLB; // size = 0x08
|
||||
|
||||
typedef struct ZMBSectionLDLB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryLBLB entries[];
|
||||
} ZMBSectionLDLB;
|
||||
|
||||
typedef struct ZMBMapObjEntry {
|
||||
/* 00 */ u32 id;
|
||||
/* 04 */ Vec2b pos;
|
||||
/* 06 */ u16 angle;
|
||||
/* 08 */ u16 params[4];
|
||||
/* 10 */ u16 unk_10[2];
|
||||
/* 14 */ unk32 unk_14;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
} ZMBMapObjEntry; // size = 0x1C
|
||||
|
||||
typedef struct ZMBSectionMapObjectList {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBMapObjEntry entries[];
|
||||
} ZMBSectionMapObjectList;
|
||||
|
||||
typedef struct ZMBEntryARAB {
|
||||
/* 00 */ u8 unk_00;
|
||||
@@ -195,57 +353,130 @@ typedef struct ZMBEntryARAB {
|
||||
/* 0F */ unk8 unk_0F;
|
||||
} ZMBEntryARAB; // size = 0x10
|
||||
|
||||
struct UnkStruct_027e0cd8_0C_Base;
|
||||
typedef struct ZMBSectionARAB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryARAB entries[];
|
||||
} ZMBSectionARAB;
|
||||
|
||||
extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, BOOL param3);
|
||||
// ZMBPathPoint?
|
||||
typedef struct ZMBRALBPoint {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ fx16 angle;
|
||||
/* 04 */ VecFx32 pos;
|
||||
/* 10 */ unk16 unk_10;
|
||||
/* 12 */ u16 unk_12;
|
||||
/* 14 */ unk32 unk_14;
|
||||
} ZMBRALBPoint; // size = 0x18
|
||||
|
||||
// .cib
|
||||
typedef struct CourseInitEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ STRUCT_PAD(0x10, 0x24);
|
||||
} CourseInitEntry; // size = 0x24
|
||||
|
||||
typedef struct CourseInitHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseInitHeader; // size = 0x10
|
||||
|
||||
// .clb
|
||||
typedef struct CourseListRoomEntry {
|
||||
/* 00 */ u8 roomIndex;
|
||||
/* 01 */ u8 mapPaintIndex;
|
||||
// ZMBPathEntry?
|
||||
typedef struct ZMBEntryRALB {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 numPoints;
|
||||
/* 02 */ u8 unk_02;
|
||||
/* 03 */ u8 unk_03;
|
||||
} CourseListRoomEntry; // size = 0x08
|
||||
/* 04 */ unk32 unk_04;
|
||||
} ZMBEntryRALB; // size = 0x08
|
||||
|
||||
typedef struct CourseListEntry {
|
||||
/* 00 */ const char name[16];
|
||||
/* 10 */ unk32 unk_10;
|
||||
/* 14 */ unk8 numRooms;
|
||||
/* 15 */ unk8 unk_15;
|
||||
/* 16 */ unk8 titleCardMsgIndex;
|
||||
/* 17 */ u8 saveCourseIndex;
|
||||
/* 18 */ u8 unk_18;
|
||||
/* 19 */ u8 unk_19;
|
||||
/* 1A */ u8 unk_1A;
|
||||
/* 1B */ u8 unk_1B;
|
||||
typedef struct ZMBSectionRALB {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryRALB entries[];
|
||||
} ZMBSectionRALB;
|
||||
|
||||
typedef struct ZMBActorEntry {
|
||||
/* 00 */ u32 id;
|
||||
/* 04 */ struct {
|
||||
u16 x, y;
|
||||
} pos;
|
||||
/* 08 */ s8 unk_08;
|
||||
/* 08 */ s8 unk_09;
|
||||
/* 0A */ u16 angle;
|
||||
/* 0C */ u16 params[4];
|
||||
/* 14 */ u16 unk_14[2];
|
||||
/* 18 */ u32 unk_18;
|
||||
/* 1C */ u8 unk_1C;
|
||||
/* 1D */ u8 unk_1D;
|
||||
/* 1E */ u8 unk_1E;
|
||||
/* 1F */ u8 unk_1F;
|
||||
/* 20 */ u8 defaultMapPaintIndex;
|
||||
/* 21 */ s8 unk_21; // scene index but unknown purpose
|
||||
/* 24 */ CourseListRoomEntry roomEntries[];
|
||||
} CourseListEntry; // size >= 0x28
|
||||
} ZMBActorEntry; // size = 0x20
|
||||
|
||||
typedef struct CourseListHeader {
|
||||
/* 00 */ FileType type; // always "ZCIB"
|
||||
/* 04 */ size_t nSize;
|
||||
/* 08 */ u32 nEntries;
|
||||
/* 0C */ u32 nEntries2; // same value as above?
|
||||
} CourseListHeader; // size = 0x10
|
||||
typedef struct ZMBSectionActorList {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBActorEntry entries[];
|
||||
} ZMBSectionActorList;
|
||||
|
||||
typedef struct ZMBEntryPLYR {
|
||||
/* 00 */ VecFx32 unk_00;
|
||||
/* 0C */ u16 unk_0C;
|
||||
/* 0E */ u8 unk_0E;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u8 unk_10;
|
||||
/* 11 */ u8 unk_11;
|
||||
/* 12 */ u8 unk_12;
|
||||
/* 13 */ u8 unk_13;
|
||||
} ZMBEntryPLYR; // size = 0x14
|
||||
|
||||
typedef struct ZMBSectionPLYR {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryPLYR entries[];
|
||||
} ZMBSectionPLYR;
|
||||
|
||||
typedef struct ZMBEntryWARP {
|
||||
/* 00 */ u8 unk_00;
|
||||
/* 01 */ u8 unk_01;
|
||||
/* 02 */ u8 roomIndex;
|
||||
/* 03 */ u8 spawnIndex;
|
||||
/* 04 */ const char destName[16];
|
||||
/* 14 */ u8 unk_14;
|
||||
/* 15 */ u8 unk_15;
|
||||
/* 16 */ u8 unk_16;
|
||||
/* 17 */ u8 unk_17;
|
||||
} ZMBEntryWARP; // size = 0x18
|
||||
|
||||
typedef struct ZMBSectionWARP {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryWARP entries[];
|
||||
} ZMBSectionWARP;
|
||||
|
||||
typedef struct ZMBEntryCAME {
|
||||
/* 00 */ fx32 unk_00;
|
||||
/* 04 */ VecFx32 unk_04;
|
||||
/* 10 */ s16 unk_10;
|
||||
/* 12 */ s16 unk_12;
|
||||
/* 14 */ unk32 unk_14[2]; // pad
|
||||
} ZMBEntryCAME; // size = 0x1C
|
||||
|
||||
typedef struct ZMBSectionCAME {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryCAME entries[];
|
||||
} ZMBSectionCAME;
|
||||
|
||||
typedef struct ZMBEntryCMPT {
|
||||
/* 04 */ VecFx32 unk_00;
|
||||
/* 10 */ u8 unk_0C;
|
||||
/* 12 */ u8 unk_0D;
|
||||
/* 14 */ unk16 unk_0E; // pad
|
||||
} ZMBEntryCMPT; // size = 0x10
|
||||
|
||||
typedef struct ZMBSectionCMPT {
|
||||
/* 00 */ ZMBSectionHeader header;
|
||||
/* 0C */ ZMBEntryCMPT entries[];
|
||||
} ZMBSectionCMPT;
|
||||
|
||||
struct UnkStruct_027e0cd8_0C_Base;
|
||||
|
||||
extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, bool param3);
|
||||
extern BOOL ZMB_ParseROMB(ZMBFileInfos *pFileInfos, ZMBSectionROMB *pROMB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseLDLB(ZMBFileInfos *pFileInfos, ZMBSectionLDLB *pLDLB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseARAB(ZMBFileInfos *pFileInfos, ZMBSectionARAB *pARAB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseRALB(ZMBFileInfos *pFileInfos, ZMBSectionRALB *pRALB, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseWARP(ZMBFileInfos *pFileInfos, ZMBSectionWARP *pWARP, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseMapObjList(ZMBFileInfos *pFileInfos, ZMBSectionMapObjectList *pMapObjs, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pNPCA, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseROOM(ZMBFileInfos *pFileInfos, ZMBSectionROOM *pROOM, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParsePLYR(ZMBFileInfos *pFileInfos, ZMBSectionPLYR *pPLYR, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseCAME(ZMBFileInfos *pFileInfos, ZMBSectionCAME *pCAME, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
extern BOOL ZMB_ParseCMPT(ZMBFileInfos *pFileInfos, ZMBSectionCMPT *pCMPT, UnkStruct_027e0cd8_0C_Base *pDst);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
||||
+4
-1
@@ -11,11 +11,14 @@
|
||||
*/
|
||||
|
||||
#define GET_FLAG(arr, pos) (((arr)[((u32) (pos)) >> 5] & (1 << ((pos) & 0x1F))) != 0)
|
||||
#define GET_FLAG2(var, pos) ((var) & (1 << pos))
|
||||
#define SET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] |= 1 << ((pos) & 0x1F))
|
||||
#define UNSET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1F)))
|
||||
#define FLAG(index, pos) (((index) << 5) | ((pos) & 0x1F))
|
||||
|
||||
#define GET_FLAG2(var, pos) (((var) & (1 << (pos))) != 0)
|
||||
#define SET_FLAG2(var, pos) ((var) |= 1 << (pos))
|
||||
#define UNSET_FLAG2(var, pos) ((var) &= ~(1 << (pos)))
|
||||
|
||||
#define GET_FLAG_ALT(arr, pos) (((arr)[(pos) >> 5] & (1 << ((0x1F - ((pos) & 0x1F))))) != 0)
|
||||
#define SET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((0x1F - ((pos) & 0x1F))))
|
||||
#define UNSET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] &= ~(1 << ((0x1F - ((pos) & 0x1F)))))
|
||||
|
||||
+15
-11
@@ -160,6 +160,10 @@ union Vec2us {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
Vec2us(Vec2us *pFrom) {
|
||||
x = pFrom->x;
|
||||
y = pFrom->y;
|
||||
}
|
||||
};
|
||||
|
||||
#define Vec2us_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2us, a, b, dst)
|
||||
@@ -204,7 +208,7 @@ static inline void Vec2us_Copy(const Vec2us *a, Vec2us *dst) {
|
||||
#endif
|
||||
}
|
||||
|
||||
union Vec2b {
|
||||
union Vec2bCpp {
|
||||
struct {
|
||||
/* 0 */ u8 x;
|
||||
/* 2 */ u8 y;
|
||||
@@ -212,24 +216,24 @@ union Vec2b {
|
||||
};
|
||||
u8 coords[2];
|
||||
|
||||
void operator=(const Vec2b &from) {
|
||||
void operator=(const Vec2bCpp &from) {
|
||||
this->x = from.x;
|
||||
this->y = from.y;
|
||||
}
|
||||
|
||||
Vec2b() {}
|
||||
Vec2b(u8 X, u8 Y) {
|
||||
Vec2bCpp() {}
|
||||
Vec2bCpp(u8 X, u8 Y) {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
};
|
||||
|
||||
#define Vec2b_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2b, a, b, dst)
|
||||
#define Vec2b_CopySub(a, b, dst) Vec2_CopySub(Vec2b, a, b, dst)
|
||||
#define Vec2b_CopyAdd(a, b, dst) Vec2_CopyAdd(Vec2bCpp, a, b, dst)
|
||||
#define Vec2b_CopySub(a, b, dst) Vec2_CopySub(Vec2bCpp, a, b, dst)
|
||||
#define Vec2b_Set(a, dst) Vec2_Set(a, dst)
|
||||
|
||||
static inline void Vec2b_Clear(Vec2b *dst) {
|
||||
Vec2b empty;
|
||||
static inline void Vec2b_Clear(Vec2bCpp *dst) {
|
||||
Vec2bCpp empty;
|
||||
empty.x = 0;
|
||||
empty.y = 0;
|
||||
|
||||
@@ -241,7 +245,7 @@ static inline void Vec2b_Clear(Vec2b *dst) {
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void Vec2b_Add(const Vec2b *a, const Vec2b *b, Vec2b *dst) {
|
||||
static inline void Vec2b_Add(const Vec2bCpp *a, const Vec2bCpp *b, Vec2bCpp *dst) {
|
||||
u8 x = a->x + b->x;
|
||||
u8 y = a->y + b->y;
|
||||
|
||||
@@ -249,7 +253,7 @@ static inline void Vec2b_Add(const Vec2b *a, const Vec2b *b, Vec2b *dst) {
|
||||
dst->y = y;
|
||||
}
|
||||
|
||||
static inline void Vec2b_Sub(const Vec2b *a, const Vec2b *b, Vec2b *dst) {
|
||||
static inline void Vec2b_Sub(const Vec2bCpp *a, const Vec2bCpp *b, Vec2bCpp *dst) {
|
||||
u8 x = a->x - b->x;
|
||||
u8 y = a->y - b->y;
|
||||
|
||||
@@ -257,7 +261,7 @@ static inline void Vec2b_Sub(const Vec2b *a, const Vec2b *b, Vec2b *dst) {
|
||||
dst->y = y;
|
||||
}
|
||||
|
||||
static inline void Vec2b_Copy(const Vec2b *a, Vec2b *dst) {
|
||||
static inline void Vec2b_Copy(const Vec2bCpp *a, Vec2bCpp *dst) {
|
||||
#if __MWERKS__
|
||||
dst->coords = a->coords;
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user