mirror of
https://github.com/zeldaret/ss
synced 2026-09-02 01:43:04 -04:00
@@ -15,6 +15,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
int abs(int);
|
||||
int labs(int);
|
||||
double acos(double);
|
||||
float acosf(float);
|
||||
double asin(double);
|
||||
|
||||
@@ -21,7 +21,7 @@ struct ObjInfo {
|
||||
/* 0x04 */ u16 obj_id;
|
||||
/* 0x06 */ u16 obj_id2;
|
||||
/* 0x08 */ u16 fiTextEntryId;
|
||||
/* 0x0A */ u8 unk_0xA;
|
||||
/* 0x0A */ s8 unk_0xA;
|
||||
/* 0x0B */ u8 subtype;
|
||||
};
|
||||
|
||||
|
||||
+59
-36
@@ -12,13 +12,34 @@
|
||||
#include "toBeSorted/room_manager.h"
|
||||
|
||||
class dAcBase_c;
|
||||
|
||||
struct SoundSource {
|
||||
// TODO
|
||||
};
|
||||
|
||||
struct SoundInfo {
|
||||
dAcBase_c *actor;
|
||||
void *obj_sound;
|
||||
SoundSource *sound_source;
|
||||
mVec3_c *obj_pos;
|
||||
SoundInfo *next;
|
||||
SoundInfo *prev;
|
||||
};
|
||||
|
||||
template <typename T, int offset>
|
||||
struct TList {
|
||||
T *GetOffset() {
|
||||
return (T *)((u8 *)this - offset);
|
||||
}
|
||||
TList() {
|
||||
sound_info_next = GetOffset();
|
||||
sound_info_tail = GetOffset();
|
||||
count = 0;
|
||||
}
|
||||
T *sound_info_tail;
|
||||
T *sound_info_next;
|
||||
s32 count;
|
||||
};
|
||||
|
||||
// Ghidra: ActorBase
|
||||
// size: 0xFC
|
||||
// non-official name
|
||||
@@ -26,16 +47,14 @@ class dAcBase_c : public dBase_c {
|
||||
public:
|
||||
/* 0x68 */ mHeapAllocator_c heap_allocator;
|
||||
/* 0x84 */ ObjInfo *obj_info;
|
||||
/* 0x88 */ void *sound_info_tail;
|
||||
/* 0x8c */ void *sound_info_next;
|
||||
/* 0x90 */ int count;
|
||||
/* 0x94 */ void *obj_sound;
|
||||
/* 0x88 */ TList<SoundInfo, 0xC> sound_list;
|
||||
/* 0x94 */ SoundSource *sound_source;
|
||||
/* 0x9C */ mVec3_c *obj_pos;
|
||||
/* 0x9c */ mVec3_c pos_copy;
|
||||
/* 0xa8 */ u32 params2;
|
||||
/* 0xAC */ mAng3_c rot_copy;
|
||||
/* 0xB2 */ u16 obj_id; // enemydefeat flag / id on obj-map
|
||||
/* 0xB4 */ u8 room_id_copy;
|
||||
/* 0xB4 */ s8 room_id_copy;
|
||||
/* 0xB5 */ u8 viewclip_index;
|
||||
/* 0xB6 */ u8 subtype;
|
||||
/* 0xB8 */ mAng3_c rotation;
|
||||
@@ -44,7 +63,7 @@ public:
|
||||
/* 0xD8 */ u32 actor_properties;
|
||||
/* 0xDC */ fLiNdBa_c actor_node;
|
||||
/* 0xE8 */ u32 field_0xe8;
|
||||
/* 0xEC */ u8 roomid;
|
||||
/* 0xEC */ s8 roomid;
|
||||
/* 0xED */ u8 actor_subtype;
|
||||
/* 0xF0 */ u32 JStudio_actor;
|
||||
/* 0xF4 */ char someStr[4];
|
||||
@@ -74,56 +93,58 @@ protected:
|
||||
public:
|
||||
/* 8002c3b0 */ dAcBase_c();
|
||||
|
||||
void setPostion(mVec3_c *r) {
|
||||
position.set(r->x, r->y, r->z);
|
||||
void setPostion(mVec3_c &r) {
|
||||
position = r;
|
||||
}
|
||||
void setScale(f32 x, f32 y, f32 z) {
|
||||
scale.set(x, y, z);
|
||||
void SetScale(mVec3_c &r) {
|
||||
scale = r;
|
||||
}
|
||||
void setScale(mVec3_c *r) {
|
||||
scale.set(r->x, r->y, r->z);
|
||||
}
|
||||
void setRotation(mAng3_c *r) {
|
||||
rotation = *r;
|
||||
void SetRotation(mAng3_c &r) {
|
||||
rotation = r;
|
||||
}
|
||||
|
||||
void copyPosition() {
|
||||
pos_copy.x = position.x;
|
||||
pos_copy.y = position.y;
|
||||
pos_copy.z = position.z;
|
||||
pos_copy = position;
|
||||
}
|
||||
|
||||
const mVec3_c &GetPostion() const {
|
||||
return position;
|
||||
}
|
||||
void copyRotation() {
|
||||
rot_copy = rotation;
|
||||
}
|
||||
mVec3_c GetPostionDifference(const dAcBase_c *other) {
|
||||
return position - other->position;
|
||||
}
|
||||
|
||||
public:
|
||||
// funcs found in TU
|
||||
/* 8002c650 */ static void setTempCreateParams(mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, s32 roomId, u32 params2,
|
||||
dAcBase_c *parent, u8 subtype, s16 unkFlag, u8 viewClipIdx, ObjInfo *objInfo);
|
||||
|
||||
/* 8002c690 */ void *FUN_8002c690();
|
||||
/* 8002c690 */ SoundSource *FUN_8002c690();
|
||||
/* 8002c710 */ int initAllocatorWork1Heap(int size, char *name, int align);
|
||||
/* 8002c720 */ int initAllocator(int size, char *name, EGG::Heap *heap, int align);
|
||||
/* 8002c7b0 */ bool addActorToRoom(s32 roomId);
|
||||
/* 8002c840 */ void setBit_field_0xE8(s32);
|
||||
/* 8002cf10 */ u32 itemDroppingAndGivingRelated(Vec3f *spawnPos, int subtype);
|
||||
/* 8002cf10 */ u32 itemDroppingAndGivingRelated(mVec3_c *spawnPos, int subtype);
|
||||
/* 8002cf90 */ void fillUpperParams2Byte();
|
||||
/* 8002cfa0 */ u32 getParams2_ignoreLower();
|
||||
/* 8002cfb0 */ void setParams2Upper_ignoreLower(u32 val);
|
||||
/* 8002cfc0 */ u8 getParams2UpperByte();
|
||||
/* 8002cfd0 */ void setParams2UpperByte(u32 val);
|
||||
/* 8002cff0 */ static u32 buildParams2(u32 lower, u8 upper);
|
||||
/* 8002cff0 */ static u32 buildParams2(u32 lower, u32 upper);
|
||||
/* 8002d010 */ u32 getParams2Lower();
|
||||
/* 8002d020 */ static dAcBase_c *findActor(char *objName, dAcBase_c *parent);
|
||||
/* 8002d0a0 */ static dAcBase_c *searchActor(dAcBase_c &optionalParent);
|
||||
/* 8002d0a0 */ static dAcBase_c *searchActor(dAcBase_c *parent);
|
||||
// Kinda performs the code of the first param on every actor (second param is optional parent)
|
||||
/* 8002d130 */ static void forEachActor(void *, dAcBase_c &);
|
||||
/* 8002d130 */ static void forEveryActor(void *func(dAcBase_c *, dAcBase_c *), dAcBase_c *parent);
|
||||
// Not really static, but we currently dont have a type for the return (not just simply a s16)
|
||||
/* 8002d190 */ mAng getXZAngleToPlayer();
|
||||
/* 8002d190 */ mAng getXZAngleToPlayer(s16 *angle);
|
||||
// returns true if under the distThresh, False if not. the actual distance is returned in outDist
|
||||
/* 8002d1d0 */ bool getDistanceToActor(dAcBase_c &actor, f32 distThresh, f32 *outDist);
|
||||
/* 8002d1d0 */ bool getDistanceToActor(dAcBase_c *actor, f32 distThresh, f32 *outDist);
|
||||
// same concept as above
|
||||
/* 8002d290 */ bool getDistanceAndAngleToActor(dAcBase_c &actor, f32 distThresh, s16 yAngle, s16 xAngle,
|
||||
/* 8002d290 */ bool getDistanceAndAngleToActor(dAcBase_c *actor, f32 distThresh, s16 yAngle, s16 xAngle,
|
||||
f32 *outDist, s16 *outDiffAngleY, s16 *outDiffAngleX);
|
||||
/* 8002d3e0 */ bool isWithinPlayerRadius(f32 radius);
|
||||
/* 8002d440 */ bool getDistanceAndAngleToPlayer(f32 distThresh, s16 yAngle, s16 xAngle, f32 *outDist,
|
||||
@@ -132,7 +153,8 @@ public:
|
||||
/* 8002d4a0 */ f32 getSquareDistToPlayer();
|
||||
/* 8002d4b0 */ void updateRoomId(f32 yOffs);
|
||||
/* 8002d540 */ bool isRoomFlags_0x6_Set();
|
||||
// Begin Sound Effect Related
|
||||
|
||||
// Start of SoundSource stuff
|
||||
/* 8002d590 */ void FUN_8002d590();
|
||||
/* 8002d5b0 */ void FUN_8002d5b0();
|
||||
/* 8002d5d0 */ void playSound();
|
||||
@@ -148,20 +170,21 @@ public:
|
||||
/* 8002d810 */ void FUN_8002d810();
|
||||
/* 8002d830 */ void FUN_8002d830();
|
||||
/* 8002d860 */ void FUN_8002d860();
|
||||
/* 8002d880 */ void FUN_8002d880();
|
||||
// End Sound Effect Related
|
||||
/* 8002d880 */ SoundSource *getSoundSource();
|
||||
// End of SoundSource stuff
|
||||
|
||||
/* 8002d890 */ void FUN_8002d890();
|
||||
/* 8002d920 */ void setActorRef(dBase_c *);
|
||||
// next three funcs are related
|
||||
/* 8002d930 */ void setUnkFlag();
|
||||
/* 8002d940 */ void FUN_8002d940();
|
||||
/* 8002d960 */ void FUN_8002d960();
|
||||
/* 8002d930 */ void setEnemyDefeatFlag();
|
||||
/* 8002d940 */ void changeLoadedEntitiesWithSet();
|
||||
/* 8002d960 */ void changeLoadedEntitiesNoSet();
|
||||
|
||||
/* 8002d980 */ static dAcBase_c createActor(ProfileName actorId, u32 params1, Vec3f *pos, Vec3s *rot, Vec3f *scale,
|
||||
/* 8002d980 */ dAcBase_c *createActor(ProfileName actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale,
|
||||
u32 params2, s32 roomId, dBase_c *ref);
|
||||
|
||||
/* 8002da80 */ static dAcBase_c createActorUnkGroup3(ProfileName actorId, u32 params1, Vec3f *pos, Vec3s *rot,
|
||||
Vec3f *scale, u32 params2, s32 roomId, dBase_c *ref);
|
||||
/* 8002da80 */ dAcBase_c *createActorStage(ProfileName actorId, u32 params1, mVec3_c *pos, mAng3_c *rot,
|
||||
mVec3_c *scale, u32 params2, s32 roomId, dBase_c *ref);
|
||||
|
||||
/* 8002dc20 */ void FUN_8002dc20(s16 *, s16 *);
|
||||
/* 8002dc50 */ void incrementKillCounter();
|
||||
|
||||
@@ -11,6 +11,20 @@
|
||||
class dAcObjBase_c : public dAcBase_c {
|
||||
public:
|
||||
// Data Members
|
||||
f32 yoffset;
|
||||
char _0[4];
|
||||
f32 unkfloat;
|
||||
char _1[12];
|
||||
u16 targetFiTextId;
|
||||
u8 unkByteTargetFiRelated;
|
||||
mVec3_c poscopy1;
|
||||
mVec3_c poscopy2;
|
||||
mVec3_c poscopy3;
|
||||
mAng3_c rotcopy1;
|
||||
f32 forwardSpeed;
|
||||
f32 forwardAccel;
|
||||
f32 forwardMaxSpeed;
|
||||
// TODO: add the rest
|
||||
|
||||
public:
|
||||
// could be their own thing?
|
||||
@@ -72,4 +86,5 @@ public:
|
||||
/* 8002f260 */ static dAcBase_c createActorUnkGroup3(char *name, u32 roomId, u32 params1, mVec3_c *pos,
|
||||
mAng3_c *rot, mVec3_c *scale, u32 params2, u16 id, u8 viewclipId);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef D_PLAYER_H
|
||||
#define D_PLAYER_H
|
||||
|
||||
#include <common.h>
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
|
||||
class dPlayer: public dAcObjBase_c {
|
||||
public:
|
||||
static dPlayer *LINK;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -14,6 +14,8 @@ struct mAng {
|
||||
|
||||
class mAng3_c {
|
||||
public:
|
||||
mAng3_c() {}
|
||||
|
||||
s16 x, y, z;
|
||||
mAng3_c(s16 fx, s16 fy, s16 fz) : x(fx), y(fy), z(fz) {}
|
||||
|
||||
|
||||
+3
-17
@@ -9,7 +9,7 @@ class mVec3_c : public EGG::Vector3f {
|
||||
public:
|
||||
/// @brief Constructs an empty vector.
|
||||
/* 80009ee0 */ mVec3_c() {}
|
||||
/* 80007460 */ ~mVec3_c() {}
|
||||
// /* 80007460 */ ~mVec3_c() {}
|
||||
|
||||
/// @brief Constructs a vector from a float array.
|
||||
mVec3_c(const f32 *p) {
|
||||
@@ -17,6 +17,7 @@ public:
|
||||
y = p[1];
|
||||
z = p[2];
|
||||
}
|
||||
|
||||
mVec3_c(const mVec3_c &other) {
|
||||
x = other.x;
|
||||
y = other.y;
|
||||
@@ -30,15 +31,8 @@ public:
|
||||
z = fz;
|
||||
}
|
||||
|
||||
void set(f32 fx, f32 fy, f32 fz) {
|
||||
x = fx;
|
||||
y = fy;
|
||||
z = fz;
|
||||
}
|
||||
mVec3_c &operator=(const mVec3_c &r) {
|
||||
x = r.x;
|
||||
y = r.y;
|
||||
z = r.z;
|
||||
set(r.x, r.y, r.z);
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -86,14 +80,6 @@ public:
|
||||
return (const nw4r::math::VEC3 *)&x;
|
||||
}
|
||||
|
||||
/// @brief Augmented addition operator.
|
||||
mVec3_c &operator+=(const mVec3_c &v) {
|
||||
x += v.x;
|
||||
y += v.y;
|
||||
z += v.z;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// @brief Augmented subtraction operator.
|
||||
mVec3_c &operator-=(const mVec3_c &v) {
|
||||
x -= v.x;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef EVENT_H
|
||||
#define EVENT_H
|
||||
|
||||
#include <common.h>
|
||||
|
||||
class Event {
|
||||
public:
|
||||
void *unk;
|
||||
u32 eventFlags;
|
||||
s32 roomid;
|
||||
s32 toolDataid;
|
||||
char eventName[32];
|
||||
void *eventZevData;
|
||||
void *callback1;
|
||||
void *callback2;
|
||||
|
||||
public:
|
||||
/** 0x800A0C40 */
|
||||
Event(char *eventName, u32 unk, u32 eventFlags, void *callback1, void *callback2);
|
||||
/** 0x800A1240 */
|
||||
virtual ~Event();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -162,10 +162,10 @@ public:
|
||||
|
||||
/* 8000BA70 */ void setBeaconPos(u32 beaconArea, u32 beaconNum, mVec3_c *pos);
|
||||
/* 8000BB80 */ mVec3_c *getBeaconPos(u32 beaconArea, u32 beaconNum);
|
||||
/* 8000BC70 */ void setEnemyKillCount(u32 enemy, u16 killCount);
|
||||
/* 8000BCE0 */ u16 getEnemyKillCount(u32 enemy);
|
||||
/* 8000BD60 */ void setHitCountFromEnemy(u32 enemy, u16 hitCount);
|
||||
/* 8000BDD0 */ u16 getHitCountFromEnemy(u32 enemy);
|
||||
/* 8000BC70 */ void setEnemyKillCount(u8 enemy, u16 killCount);
|
||||
/* 8000BCE0 */ u16 getEnemyKillCount(u8 enemy);
|
||||
/* 8000BD60 */ void setHitCountFromEnemy(u8 enemy, u16 hitCount);
|
||||
/* 8000BDD0 */ u16 getHitCountFromEnemy(u8 enemy);
|
||||
|
||||
/* 8000BE50 */ void setLoadRoomT1_FileB(s16 roomId);
|
||||
/* 8000BE80 */ s16 getLoadRoomT1_FileB();
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
#ifndef MISC_FLAG_MANAGERS_H
|
||||
#define MISC_FLAG_MANAGERS_H
|
||||
|
||||
#include <common.h>
|
||||
#include <toBeSorted/bitwise_flag_helper.h>
|
||||
#include <toBeSorted/flag_space.h>
|
||||
|
||||
class CommittableFlagManager {
|
||||
public:
|
||||
bool mNeedsCommit;
|
||||
|
||||
virtual void doCommit() = 0;
|
||||
bool commitIfNecessary();
|
||||
void setNeedsCommit(bool commit) {
|
||||
mNeedsCommit = commit;
|
||||
}
|
||||
CommittableFlagManager() {
|
||||
mNeedsCommit = false;
|
||||
}
|
||||
CommittableFlagManager(bool commit) {
|
||||
mNeedsCommit = commit;
|
||||
}
|
||||
};
|
||||
|
||||
class TBoxFlagManager : public CommittableFlagManager {
|
||||
public:
|
||||
FlagSpace mFlagSpace;
|
||||
u16 mSceneIndex;
|
||||
BitwiseFlagHelper mFlagHelper;
|
||||
|
||||
static u16 sTBoxFlags[2];
|
||||
|
||||
static TBoxFlagManager *sInstance;
|
||||
|
||||
virtual void doCommit() override;
|
||||
bool checkUncommittedFlag(u16 flag);
|
||||
TBoxFlagManager();
|
||||
virtual ~TBoxFlagManager() {}
|
||||
void init();
|
||||
void copyFromSave(s16 sceneIndex);
|
||||
bool checkFlag(u16 sceneIndex, u16 flag);
|
||||
virtual u16 getFlagCount() const;
|
||||
void setFlag(u16 flag);
|
||||
bool checkUncommittedFlag(u16 sceneIndex, u16 flag);
|
||||
u16 checkUncommittedFlag2(u16 flag) {
|
||||
return checkUncommittedFlag(flag);
|
||||
}
|
||||
};
|
||||
|
||||
// NOTE: Not actually Enemy Defeat.
|
||||
// This is a little more than that, it keeps track of live objects based on their id as a whole
|
||||
class EnemyDefeatManager : public CommittableFlagManager {
|
||||
public:
|
||||
FlagSpace mFlagSpace;
|
||||
BitwiseFlagHelper mFlagHelper;
|
||||
u16 mSceneIndex;
|
||||
|
||||
static u16 sEnemyDefeatFlags[4096];
|
||||
|
||||
static EnemyDefeatManager *sInstance;
|
||||
|
||||
void clearSavedFlags();
|
||||
bool checkUncommittedFlag(u16 flag);
|
||||
u16 checkUncommittedFlag2(u16 flag) {
|
||||
return checkUncommittedFlag(flag);
|
||||
}
|
||||
EnemyDefeatManager();
|
||||
void init();
|
||||
void copyFromSave(u16 sceneIndex);
|
||||
void updateFlagIndex(u16 sceneIndex);
|
||||
void clearAll();
|
||||
bool checkIsValidFlag(u16 flag);
|
||||
bool checkFlag(u16 flag);
|
||||
virtual ~EnemyDefeatManager() {}
|
||||
virtual u16 getFlagCount() const;
|
||||
void setFlag(u16 flag);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -2,17 +2,81 @@
|
||||
#define ROOM_MANAGER_H
|
||||
|
||||
#include "d/d_base.h"
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/types_m.h"
|
||||
#include <common.h>
|
||||
|
||||
#define MAX_ROOM_NUMBER 64
|
||||
|
||||
class dRoom;
|
||||
class RoomTable {
|
||||
RoomTable();
|
||||
virtual ~RoomTable();
|
||||
class dRoomModel {
|
||||
char mainModel[28]; // Actually smdl_c
|
||||
nw4r::math::AABB *roomBounds;
|
||||
m3d::anmMatClr_c *anmMatClr;
|
||||
m3d::anmTexPat_c *anmTexPat;
|
||||
m3d::anmTexSrt_c *anmTexSrt;
|
||||
m3d::anmVis_c *anmVis;
|
||||
};
|
||||
|
||||
class dRoomCollision {
|
||||
char todo[352];
|
||||
};
|
||||
|
||||
class dRoom : dBase_c {
|
||||
public:
|
||||
mAllocator_c allocator;
|
||||
nw4r::g3d::ResFile *roomRes;
|
||||
char unkWithWater[24];
|
||||
dRoomModel roomModels[8];
|
||||
dRoomCollision roomCollisions[2];
|
||||
char stateMgr[60];
|
||||
char _0[4];
|
||||
void *SCEN;
|
||||
void *PLY;
|
||||
void *CAM;
|
||||
void *EVNT;
|
||||
void *PATH;
|
||||
void *PNT;
|
||||
void *BPNT;
|
||||
void *SPTH;
|
||||
void *_1;
|
||||
void *_2;
|
||||
void *AREA;
|
||||
char _3[4];
|
||||
short plyCount;
|
||||
short camCount;
|
||||
short evntCount;
|
||||
short pathCount;
|
||||
short pntCount;
|
||||
short bpntCount;
|
||||
short spthCount;
|
||||
short _4;
|
||||
short _5;
|
||||
short areaCount;
|
||||
char _6[4];
|
||||
u8 flags;
|
||||
void *BZS;
|
||||
s8 roomid;
|
||||
char _7[3];
|
||||
bool hasAnmTexPat;
|
||||
bool didAlreadyInit;
|
||||
};
|
||||
|
||||
class dRoomTable {
|
||||
/* 801b4670 */ dRoomTable(dRoomTable *roomTable);
|
||||
virtual ~dRoomTable();
|
||||
dRoom *rooms[MAX_ROOM_NUMBER - 1];
|
||||
};
|
||||
|
||||
class MapRelated {
|
||||
public:
|
||||
mAllocator_c allocator;
|
||||
char unk[472];
|
||||
|
||||
public:
|
||||
/* 801b4780 */ void init(MapRelated *);
|
||||
/* 801b4900 */ void fn_801b4900();
|
||||
};
|
||||
|
||||
// OBJ NAME: STAGE
|
||||
// Ghidra: RoomManager
|
||||
// size: 0x239c
|
||||
@@ -20,9 +84,9 @@ class RoomTable {
|
||||
class RoomManager : public dBase_c {
|
||||
public:
|
||||
/* 0068 */ char field_0x68[0x7C - 0x68];
|
||||
/* 007C */ RoomTable rooms;
|
||||
/* 017c */ char fader[0x1a0 - 0x17c]; // size unk
|
||||
/* 01a0 */ char mapRelated[0x39c - 0x1a0]; // size unk
|
||||
/* 007C */ dRoomTable rooms;
|
||||
/* 017c */ char fader[0x1a0 - 0x174]; // size unk
|
||||
/* 01a0 */ MapRelated mapRelated;
|
||||
/* 039c */ u32 loaded_entities[2047];
|
||||
/* 2398 */ u8 curr_room_id;
|
||||
|
||||
@@ -30,7 +94,16 @@ public:
|
||||
/* 80575760 */ static RoomManager *m_Instance;
|
||||
|
||||
public:
|
||||
dRoom *GetRoomByIndex(int roomid);
|
||||
/* 801b42b0 */ static dBase_c *getRoom(int roomid);
|
||||
/* 801b42d0 */ static void bindStageResToFile(nw4r::g3d::ResFile *);
|
||||
/* 801b4320 */ static void bindSkyCmnToResFile(nw4r::g3d::ResFile *);
|
||||
/* 801b4380 */ static bool getMA0AnmTexSrt(nw4r::g3d::ResAnmTexSrt *, char *);
|
||||
/* 801b4420 */ static bool getMA0IndirectSrt(nw4r::g3d::ResAnmTexSrt *, char *);
|
||||
/* 801b44c0 */ static void changeLoadedEntities(RoomManager *mgr, u32 index_shift, bool set);
|
||||
/* 801b4510 */ static u32 checkRoomFlag(RoomManager *mgr, u32 flag);
|
||||
/* 801b4550 */ static bool checkEnemyDefeatFlag(RoomManager *mgr, u32 flag);
|
||||
/* 801b45c0 */ static bool fn_801B45C0(RoomManager *mgr /* plus others */);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef SCGAME_H
|
||||
#define SCGAME_H
|
||||
|
||||
#include <common.h>
|
||||
|
||||
struct SpawnInfo {
|
||||
/* 0x00 */ char stageName[32];
|
||||
/* 0x20 */ s16 transitionFadeFrames;
|
||||
/* 0x22 */ s8 room;
|
||||
/* 0x23 */ s8 layer;
|
||||
/* 0x24 */ s8 entrance;
|
||||
/* 0x25 */ s8 night;
|
||||
/* 0x26 */ s8 trial;
|
||||
/* 0x27 */ s8 transitionType;
|
||||
/* 0x28 */ s32 unk;
|
||||
};
|
||||
|
||||
class ScGame {
|
||||
public:
|
||||
static SpawnInfo currentSpawnInfo;
|
||||
static SpawnInfo nextSpawnInfo;
|
||||
static ScGame *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef SPECIAL_ITEM_DROP_MGR_H
|
||||
#define SPECIAL_ITEM_DROP_MGR_H
|
||||
|
||||
#include <common.h>
|
||||
|
||||
class SpecialItemDropMgr {
|
||||
public:
|
||||
static SpecialItemDropMgr *sInstance;
|
||||
|
||||
SpecialItemDropMgr();
|
||||
static int fn_800C7BB0(SpecialItemDropMgr *mgr, int specialItemId);
|
||||
static short fn_800C7D00(SpecialItemDropMgr *mgr, int specialItemId);
|
||||
static short fn_800C7D20(SpecialItemDropMgr *mgr, int specialItemId);
|
||||
static int giveSpecialDropItem(SpecialItemDropMgr *mgr, int specialItemId, int roomid, mVec3_c *pos, int subtype, s16 *rot, s32 unused);
|
||||
static bool spawnSpecialDropItem(SpecialItemDropMgr *mgr, int specialItemId, int roomid, mVec3_c *pos, int subtype, s16 *rot);
|
||||
static void fn_800C81D0(s16, s16, s16);
|
||||
~SpecialItemDropMgr();
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user