diff options
author | Colin Noga <Tempus@Spectrum-Song.local> | 2011-07-19 17:07:00 -0500 |
---|---|---|
committer | Colin Noga <Tempus@Spectrum-Song.local> | 2011-07-19 17:07:00 -0500 |
commit | c2cc0c0d58b09d4e11003ca53e33b38723709bc1 (patch) | |
tree | 63cca09448468beaa000b055acb6d70c712c7ba3 | |
parent | 4457c47b7cb1e56577760df0e6ddfdc8bf28a7a8 (diff) | |
download | kamek-c2cc0c0d58b09d4e11003ca53e33b38723709bc1.tar.gz kamek-c2cc0c0d58b09d4e11003ca53e33b38723709bc1.zip |
Bunch of fixes, Zorder stuff, and non-working sprespawner
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | growup.yaml | 41 | ||||
-rw-r--r--[-rwxr-xr-x] | include/common.h | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | include/game.h | 758 | ||||
-rw-r--r-- | include/statelib.h | 133 | ||||
-rw-r--r-- | kamek_pal.x | 1788 | ||||
-rwxr-xr-x | src/growup.s | 143 | ||||
-rw-r--r-- | src/levelspecial.cpp | 148 | ||||
-rwxr-xr-x | src/spritespawner.cpp | 36 |
9 files changed, 2253 insertions, 801 deletions
@@ -2,3 +2,6 @@ processed AnotherASM NewerASM + +*.pyc +.DS_Store
\ No newline at end of file diff --git a/growup.yaml b/growup.yaml index f6f37f7..c7238ae 100644 --- a/growup.yaml +++ b/growup.yaml @@ -251,6 +251,47 @@ hooks: addr_pal: 0x802EE81C
+ + + - name: GlobalZOrderDeath
+ type: branch_insn
+ branch_type: bl
+ src_addr_pal: 0x800980A4
+ target_func: 'GlobalZOrderDeath' + + - name: PokeyZOrderDeath
+ type: branch_insn
+ branch_type: bl
+ src_addr_pal: 0x80A9ED2C
+ target_func: 'PokeyZOrderDeath' + + - name: PokeyZOrderDeathFreeze
+ type: branch_insn
+ branch_type: bl
+ src_addr_pal: 0x80A9EE58
+ target_func: 'PokeyZOrderDeathFreeze' + + - name: PokeyZOrderDamage
+ type: branch_insn
+ branch_type: bl
+ src_addr_pal: 0x800A18E8
+ target_func: 'PokeyZOrderDamage' + + + - name: GabonRockZOrderDeath
+ type: branch_insn
+ branch_type: b
+ src_addr_pal: 0x807FAAAC
+ target_func: 'GabonRockZOrderDeath' + + - name: GabonRockZOrderDeathDrop
+ type: branch_insn
+ branch_type: bl
+ src_addr_pal: 0x807FA9C0
+ target_func: 'GabonRockZOrderDeathDrop' + + + # # - name: Projectile_Lakitu
# type: branch_insn
diff --git a/include/common.h b/include/common.h index b8bce80..2e7dc80 100755..100644 --- a/include/common.h +++ b/include/common.h @@ -44,6 +44,9 @@ typedef struct { f32 x, y, z; } VEC3, Vec, *VecPtr, Point3d, *Point3dPtr; typedef struct { s16 x; s16 y; s16 z; }S16Vec, *S16VecPtr;
typedef struct { f32 x, y, z, w; } Quaternion, *QuaternionPtr, Qtrn, *QtrnPtr;
+extern "C" const char * strrchr ( const char * str, int character );
+extern "C" int strcmp ( const char * str1, const char * str2 );
+
#include "rvl/mtx.h"
@@ -76,6 +79,7 @@ int sprintf(char *buffer, const char *format, ...); int snprintf(char *buffer, int buff_size, const char *format, ...);
char *strcat(const char *destination, const char *source);
void *memset(void *ptr, int value, unsigned int num);
+int memcmp(const void *ptr1, const void *ptr2, unsigned int num);
void *AllocFromGameHeap1(u32 size);
void FreeFromGameHeap1(void *block);
diff --git a/include/game.h b/include/game.h index b26842b..81f4e69 100755..100644 --- a/include/game.h +++ b/include/game.h @@ -1,11 +1,14 @@ #ifndef __KAMEK_GAME_H
#define __KAMEK_GAME_H
+//#define offsetof(type, member) ((__std(size_t)) &(((type *) 0)->member))
+
#include <common.h>
#include <rvl/mtx.h>
#include <rvl/GXEnum.h>
#include <rvl/vifuncs.h>
#include <rvl/arc.h>
+#define offsetof(type, member) ((u32) &(((type *) 0)->member))
extern "C" {
@@ -281,6 +284,49 @@ void *BgTexMng__LoadAnimTile(void *self, int tileset, short tile, char *name, ch extern void *GameHeaps[];
+class dFlagMgr_c {
+public:
+ dFlagMgr_c();
+
+ enum ActionFlag {
+ ACTIVATE = 1,
+ TICKS = 2
+ };
+
+ u64 flags;
+ float _8[64], _108[64];
+ u8 _208[64];
+ u64 _248[64];
+ u8 _448[64];
+
+ u32 ticksRemainingForAction[64];
+ u8 actionFlag[64];
+ u32 _5C8[64]; // somehow sound related?! assigned by last param to set(); only checked for == 0
+ u8 _6C8; // assigned -1 by FlagMgr, and other values by the Switch object, nothing else though
+
+ void setup(bool isNewLevel);
+ void applyAndClearAllTimedActions(); // only used when setup(true) is called
+ void execute();
+
+ void set(u8 number, int delay, bool activate, bool reverseEffect, bool makeNoise, u32 unknown=0);
+
+ u8 findLowestFlagInSet(u32 unk, u64 set);
+
+ void setSpecial(u8 number, float to8, float to108, u8 to208, u32 unk, u64 to248);
+ float get8(u8 number);
+ float get108(u8 number);
+ u8 get208(u8 number);
+ u64 get248(u8 number);
+ u8 get448(u8 number);
+
+ // convenience inline functions which may or may not actually exist in Nintendo's original code
+ u64 mask(u8 number) { return (u64)1 << number; }
+ bool active(u8 number) { return (flags & mask(number)) != 0; }
+ bool inactive(u8 number) { return (flags & mask(number)) == 0; }
+
+ static dFlagMgr_c *instance;
+};
+
namespace nw4r {
@@ -386,7 +432,7 @@ namespace lyt { public:
//Pane(nw4r::lyt::res::Pane const *); // todo: this struct
Pane(void *);
- ~Pane();
+ virtual ~Pane();
virtual void *GetRuntimeTypeInfo() const;
virtual void CalculateMtx(const DrawInfo &info);
@@ -455,7 +501,7 @@ namespace lyt { u8 origin;
u8 flag;
- char name[0x14];
+ char name[0x11];
char userdata[8];
u8 _D5;
@@ -802,6 +848,238 @@ namespace EGG { }
+class TileRenderer {
+public:
+ TileRenderer();
+ ~TileRenderer();
+
+ TileRenderer *list1, *list2;
+ u16 tileNumber;
+ u8 unkFlag, someBool;
+ float x, y, z;
+ float scale;
+ s16 rotation;
+ u8 unkByte;
+
+ u16 getTileNum();
+ bool getSomeBool();
+ void setSomeBool(u8 value);
+
+ float getX();
+ float getY();
+ float getZ();
+ void setPosition(float x, float y);
+ void setPosition(float x, float y, float z);
+
+ u8 getUnkFlag();
+
+ void setVars(float scale); // sets unkFlag=1, rotation=0, unkByte=0
+ void setVars(float scale, s16 rotation); // sets unkFlag=2, unkByte=0
+
+ float getScale();
+ float getRotationFloat();
+ s16 getRotation();
+
+ u8 getUnkByte();
+
+ class List {
+ public:
+ u32 count;
+ TileRenderer *first, *last; // order?
+
+ void add(TileRenderer *r);
+ void remove(TileRenderer *r);
+ void removeAll();
+
+ List();
+ ~List();
+ };
+};
+
+class dActor_c; // forward declaration
+
+class Physics {
+public:
+ struct Unknown {
+ Unknown();
+ ~Unknown();
+
+ float x, y;
+ };
+
+ struct Info {
+ float x1, y1, x2, y2; // Might be distance to center/edge like APhysics
+ void *otherCallback1, *otherCallback2, *otherCallback3;
+ };
+
+ Physics();
+ ~Physics();
+
+ dActor_c *owner;
+ Physics *next, *prev;
+ u32 _C, _10, _14, _18, _1C, _20, _24, _28, _2C, _30, _34, _38, _3C;
+ void *otherCallback1, *otherCallback2, *otherCallback3;
+ void *callback1, *callback2, *callback3;
+ float lastX, lastY;
+ Unknown unkArray[4];
+ float x, y;
+ float _88, _8C, _90;
+ Vec lastActorPosition;
+ float _A0, _A4, last_A0, last_A4, _B0, _B4;
+ u32 _B8;
+ s16 *ptrToRotationShort;
+ s16 currentRotation;
+ s16 rotDiff;
+ s16 rotDiffAlt;
+ u32 isRound;
+ u32 _CC;
+ u32 flagsMaybe;
+ u32 _D4, _D8;
+ u8 isAddedToList, _DD, layer;
+ u32 id;
+
+ void addToList();
+ void removeFromList();
+
+ void baseSetup(dActor_c *actor, u32 t_40, u32 t_44, u32 t_48, u8 t_DD, u8 layer);
+
+ // note: Scale can be a null pointer (in that case, it'll use 1.0)
+ void setup(dActor_c *actor,
+ float x1, float y1, float x2, float y2,
+ void *otherCB1, void *otherCB2, void *otherCB3,
+ u8 t_DD, u8 layer, Vec2 *scale = 0);
+
+ void setup(dActor_c *actor,
+ Vec2 *p1, Vec2 *p2,
+ void *otherCB1, void *otherCB2, void *otherCB3,
+ u8 t_DD, u8 layer, Vec2 *scale = 0);
+
+ void setup(dActor_c *actor, Info *pInfo, u8 t_DD, u8 layer, Vec2 *scale = 0);
+
+ // radius might be diameter? dunno
+ void setupRound(dActor_c *actor,
+ float x, float y, float radius,
+ void *otherCB1, void *otherCB2, void *otherCB3,
+ u8 t_DD, u8 layer);
+
+ void setRect(float x1, float y1, float x2, float y2, Vec2 *scale = 0);
+ void setRect(Vec2 *p1, Vec2 *p2, Vec2 *scale = 0);
+
+ void setX(float value);
+ void setY(float value);
+ void setWidth(float value);
+ void setHeight(float value);
+
+ void setPtrToRotation(s16 *ptr);
+
+ void update();
+
+ // todo: more stuff that might not be relevant atm
+};
+
+
+class ActivePhysics {
+public:
+ struct Info; // forward declaration
+ typedef void (*Callback)(Info *self, Info *other);
+
+ struct Info {
+ float xDistToCenter;
+ float yDistToCenter;
+ float xDistToEdge;
+ float yDistToEdge;
+ u8 category1;
+ u8 category2;
+ u32 bitfield1;
+ u32 bitfield2;
+ u16 unkShort1C;
+ Callback callback;
+ };
+
+ ActivePhysics();
+ virtual ~ActivePhysics();
+
+ dActor_c *owner; // should be dStageActor? dunno
+ u32 _8;
+ u32 _C;
+ ActivePhysics *listPrev, *listNext;
+ u32 _18;
+ Info info;
+ u32 _40, _44, _48, _4C;
+ float firstFloatArray[8];
+ float secondFloatArray[8];
+ Vec2 positionOfLastCollision;
+ u16 result1;
+ u16 result2;
+ u16 result3;
+ u8 collisionCheckType;
+ u8 chainlinkMode;
+ u8 layer;
+ u8 someFlagByte;
+ u8 isLinkedIntoList;
+};
+
+
+#include <statelib.h>
+
+class dActorState_c;
+class dActorMultiState_c;
+
+
+class AcStateMgrBase {
+public:
+ virtual ~AcStateMgrBase();
+
+ u32 cls1, cls2, cls3;
+ dActorMultiState_c *owner;
+ u32 unkZero;
+
+ StateMgr<dActorMultiState_c> manager;
+
+ // All these are passed straight through to the manager
+ virtual void _vfC();
+ virtual void _vf10();
+ virtual void _vf14();
+ virtual void _vf18();
+ virtual void _vf1C();
+ virtual void _vf20();
+ virtual void _vf24();
+ virtual void _vf28();
+ virtual void _vf2C();
+};
+
+class AcStateMgr : public AcStateMgrBase {
+public:
+ ~AcStateMgr();
+};
+
+class MultiStateMgrBase {
+public:
+ virtual ~MultiStateMgrBase();
+
+ AcStateMgr s1, s2;
+ AcStateMgr *ptrToStateMgr;
+
+ virtual void _vfC(); // calls vfC on ptrToStateMgr
+ virtual void execute(); // calls vf10 on ptrToStateMgr
+ virtual void _vf14(); // if (isSecondStateMgr()) { disableSecond(); } else { ptrToStateMgr->_vf14(); }
+ virtual void setState(StateBase *state); // calls vf18 on ptrToStateMgr
+ virtual void _vf1C(); // calls vf1C on ptrToStateMgr
+ virtual void _vf20(); // calls vf20 on ptrToStateMgr
+ virtual void _vf24(); // calls vf24 on ptrToStateMgr
+ virtual StateBase *getCurrentState(); // calls vf28 on ptrToStateMgr
+ virtual void _vf2C(); // calls vf2C on ptrToStateMgr
+ virtual void enableSecond(); // sets ptrToStateMgr to s2, calls vf18 on it
+ virtual void disableSecond(); // if (isSecondStateMgr()) { ptrToStateMgr->vf14(); ptrToStateMgr = &s1; }
+ virtual bool isSecondStateMgr();
+ virtual void _vf3C(); // calls vf28 on s1
+};
+
+class MultiStateMgr : public MultiStateMgrBase {
+public:
+ // what the fuck does this do
+ ~MultiStateMgr();
+};
struct LinkListEntry {
@@ -875,19 +1153,19 @@ public: virtual int onCreate();
virtual int beforeCreate();
- virtual int afterCreate();
+ virtual int afterCreate(int);
virtual int onDelete();
virtual int beforeDelete();
- virtual int afterDelete();
+ virtual int afterDelete(int);
virtual int onExecute();
virtual int beforeExecute();
- virtual int afterExecute();
+ virtual int afterExecute(int);
virtual int onDraw();
virtual int beforeDraw();
- virtual int afterDraw();
+ virtual int afterDraw(int);
virtual void willBeDeleted();
@@ -915,13 +1193,13 @@ public: dBase_c();
int beforeCreate();
- int afterCreate();
+ int afterCreate(int);
int beforeDelete();
- int afterDelete();
+ int afterDelete(int);
int beforeExecute();
- int afterExecute();
+ int afterExecute(int);
int beforeDraw();
- int afterDraw();
+ int afterDraw(int);
~dBase_c();
@@ -935,13 +1213,13 @@ public: dScene_c();
int beforeCreate();
- int afterCreate();
+ int afterCreate(int);
int beforeDelete();
- int afterDelete();
+ int afterDelete(int);
int beforeExecute();
- int afterExecute();
+ int afterExecute(int);
int beforeDraw();
- int afterDraw();
+ int afterDraw(int);
~dScene_c();
@@ -982,6 +1260,386 @@ public: ~dActor_c();
};
+class dStageActor_c : public dActor_c {
+public:
+ u8 _125;
+ u32 _128, _12C, _130, _134, _138, _13C;
+ float _140;
+ u32 _144;
+ ActivePhysics aPhysics;
+ u8 classAt1EC[236];
+ u32 _2D8;
+ u8 classAt2DC[0x34];
+ u32 _310, _314;
+ float spriteSomeRectX, spriteSomeRectY;
+ float _320, _324, _328, _32C, _330, _334, _338, _33C, _340, _344;
+ u8 direction;
+ u8 currentZoneID;
+ u8 _34A, _34B;
+ u8 *spriteByteStorage;
+ u16 *spriteShortStorage;
+ u16 spriteEventNum;
+ u64 spriteEventMask;
+ u32 _360;
+ u16 spriteSomeFlag;
+ u8 _366, _367;
+ u32 _368;
+ u8 _36C, _36D;
+ Vec somethingRelatedToScale;
+ u32 _37C, _380, _384, _388;
+ u8 _38C, _38D, enableFlag, currentLayerID;
+ u8 _390, _391, _392, _padding;
+
+ dStageActor_c();
+
+ int beforeCreate();
+ int afterCreate(int);
+ int beforeDelete();
+ int afterDelete(int);
+ int beforeExecute();
+ int afterExecute(int);
+ int beforeDraw();
+ int afterDraw(int);
+
+ const char *GetExplanationString();
+
+ virtual bool _vf60(); // does stuff with BG_GM
+ virtual void kill(); // nullsub here, defined in StageActor. probably no params
+ virtual int _vf68(); // params unknown. return (1) might be bool
+ virtual u8 *_vf6C(); // returns byte 0x38D
+ virtual Vec2 _vf70(); // returns Vec Actor.pos + Vec Actor.field_D0
+ virtual int _vf74(); // params unknown. return (1) might be bool
+ virtual void _vf78(); // params unknown. nullsub
+ virtual void _vf7C(); // params unknown. nullsub
+ virtual void eatIn(); // copies Actor.scale into StageActor.somethingRelatedToScale
+ virtual void disableEatIn(); // params unknown. nullsub
+ virtual void _vf88(); // params unknown. nullsub
+ virtual bool _vf8C(void *other); // dAcPy_c/daPlBase_c? return (1) is probably bool. seems related to EatOut. uses vfA4
+ virtual bool _vf90(dStageActor_c *other); // does something with scores
+ virtual void _vf94(void *other); // dAcPy_c/daPlBase_c? modifies This's position
+ virtual void removeMyActivePhysics();
+ virtual void addMyActivePhysics();
+ virtual void returnRegularScale(); // the reverse of vf80, yay
+ virtual void _vfA4(void *other); // AcPy/PlBase? similar to vf94 but not quite the same
+ virtual float _vfA8(void *other); // AcPy/PlBase? what DOES this do...? does a bit of float math
+ virtual void _vfAC(void *other); // copies somethingRelatedToScale into scale, then multiplies scale by vfA8's return
+ virtual void _vfB0(); // plays Wm_en_burst_s at actor position
+ virtual void _vfB4(); // params unknown. nullsub
+ virtual void _vfB8(); // params unknown. nullsub
+ virtual void _vfBC(); // params unknown. nullsub
+ virtual void _vfC0(); // params unknown. nullsub
+ virtual void _vfC4(); // params unknown. nullsub
+ virtual void _vfC8(Vec2 *p); // does stuff including effects and playing PLAYER_SE_OBJ/GROUP_BOOT/SE_OBJ_CMN_SPLASH
+ virtual void _vfCC(Vec2 *p); // mostly same as vfC8, but uses PLAYER_SE_OBJ/GROUP_BOOT/SE_OBJ_CMN_SPLASH_LAVA
+ virtual void _vfD0(Vec2 *p); // mostly same as vfC8, but uses PLAYER_SE_OBJ/GROUP_BOOT/SE_OBJ_CMN_SPLASH_POISON
+
+ // I'll add methods as I need them
+ void checkZoneBoundaries(u32 flags); // I think this method is for that, anyway
+
+ ~dStageActor_c();
+
+
+ static void create(Actors type, u32 settings, Vec *pos, S16Vec *rot, u8 layer);
+ static void createChild(Actors type, u32 settings, Vec *pos, S16Vec *rot, u8 layer);
+};
+ + +class dAc_Py_c : public dStageActor_c { +public: + u8 data[0x1164 - 0x394]; + ActivePhysics bPhysics;
+ ActivePhysics cPhysics;
+ ActivePhysics dPhysics;
+ ActivePhysics ePhysics; + + dAc_Py_c();
+ + int beforeCreate();
+ int afterCreate(int);
+ int beforeDelete();
+ int afterDelete(int);
+ int beforeExecute();
+ int afterExecute(int);
+ int beforeDraw();
+ int afterDraw(int); +
+ ~dAc_Py_c();
+}; +
+
+/* TODO
+class dActorState_c : public dStageActor_c {
+public:
+ ~dActorState_c();
+
+ virtual void _vfD4();
+ virtual void _vfD8();
+ virtual void _vfDC();
+};
+*/
+
+
+class dActorMultiState_c : public dStageActor_c {
+public:
+ ~dActorMultiState_c();
+
+ MultiStateMgr acState;
+
+ virtual void doStateChange(StateBase *state); // might return bool? overridden by dEn_c
+ virtual void _vfD8(); // nullsub ??
+ virtual void _vfDC(); // nullsub ??
+ virtual void _vfE0(); // nullsub ??
+};
+
+
+class dEn_c : public dActorMultiState_c {
+public:
+ float _414, _418, _41C, _420;
+ void *nextState;
+ u32 _428, _42C;
+ u8 _430, _431, isDead;
+ u32 _434;
+ u16 _438;
+ u32 _43C;
+ Vec velocity1, velocity2;
+ u8 _458, _459, _45A, _45B, _45C, _45D, _45E;
+ u32 _460;
+ Vec initialScale;
+ float _470;
+ u32 _474, _478;
+ dEn_c *_47C;
+ u32 _480;
+ u8 classAt484[0x4EC - 0x484];
+ u32 _4EC;
+ float _4F0, _4F4, _4F8;
+ u32 flags_4FC;
+ u16 counter_500, counter_502;
+ u16 counter_504[4];
+ u16 counter_50C;
+ u32 _510, _514, _518;
+ void *_51C;
+ dEn_c *_520;
+ u32 _524, _528, _52C, _530;
+
+ dEn_c();
+
+ int afterCreate(int);
+ int beforeExecute(int);
+ int afterExecute(int);
+ int beforeDraw(int);
+
+ void kill();
+
+ void eatIn();
+ void disableEatIn();
+ bool _vf8C(void *other); // AcPy/PlBase?
+ void _vfAC();
+ void _vfCC(Vec2 *p);
+ void _vfD0(Vec2 *p);
+
+ void doStateChange(StateBase *state); // might return bool, dunno
+
+ // Now here's where the fun starts.
+
+ virtual bool preSpriteCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual bool prePlayerCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual bool preYoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+
+ virtual bool stageActorCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+
+ virtual void spriteCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void playerCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void yoshiCollision(ActivePhysics *apThis, ActivePhysics *apOther);
+
+ // WHAT A MESS
+ virtual void collisionCat3_StarPower(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat5_Mario(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void _vf108(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCatD_GroundPound(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void _vf110(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat8_FencePunch(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat7_WMWaggleWater(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat7_WMWaggleWaterYoshi(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void _vf120(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCatA_PenguinMario(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat11_PipeCannon(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat9_RollingObject(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat1_Fireball_E_Explosion(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat2_IceBall_15_YoshiIce(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat13_Hammer(ActivePhysics *apThis, ActivePhysics *apOther);
+ virtual void collisionCat14_YoshiFire(ActivePhysics *apThis, ActivePhysics *apOther);
+
+ virtual void _vf140(dStageActor_c *actor);
+ virtual void _vf144(int something);
+ virtual void _vf148(); // deletes actors held by Class484 and other stuff
+ virtual void _vf14C(); // deletes actors held by Class484 and makes an En Coin Jump
+ virtual u32 _vf150(); // reads some bits from a value in Class1EC
+ virtual void eatenByYoshiProbably(); // nullsub, params unknown
+ virtual void playHpdpSound1(); // plays PLAYER_SE_EMY/GROUP_BOOT/SE_EMY_DOWN_HPDP_S or _H
+ virtual void playEnemyDownSound1();
+ virtual void playEnemyDownComboSound(void *player); // AcPy_c/daPlBase_c?
+ virtual void playHpdpSound2(); // plays PLAYER_SE_EMY/GROUP_BOOT/SE_EMY_DOWN_HPDP_S or _H
+ virtual void _vf168(); // nullsub, params unknown
+
+ // State Functions
+ virtual void dieFumi_Begin(); // does something involving looping thruogh players
+ virtual void dieFumi_Execute(); // does movement and some other stuff
+ virtual void dieFumi_End(); // nullsub
+ virtual void dieFall_Begin(); // does something involving looping thruogh players
+ virtual void dieFall_Execute(); // does movement and some other stuff
+ virtual void dieFall_End(); // nullsub
+ virtual void dieBigFall_Begin(); // calls vf178 [dieFall_Begin]
+ virtual void dieBigFall_Execute(); // does movement and some other stuff (but less than 170 and 17C)
+ virtual void dieBigFall_End(); // calls vf180 [dieFall_End]
+ virtual void dieSmoke_Begin(); // spawns Wm_en_burst_m effect and then removeMyActivePhysics
+ virtual void dieSmoke_Execute(); // deletes actor with r4=1
+ virtual void dieSmoke_End(); // nullsub
+ virtual void dieYoshiFumi_Begin(); // spawns Wm_mr_yoshistep effect and then removeMyActivePhysics
+ virtual void dieYoshiFumi_Execute(); // deletes actor with r4=1
+ virtual void dieYoshiFumi_End(); // nullsub
+ virtual void dieIceVanish_Begin(); // lots of weird stuff
+ virtual void dieIceVanish_Execute(); // deletes actor with r4=1
+ virtual void dieIceVanish_End(); // nullsub
+ virtual void dieGoal_Begin(); // nullsub
+ virtual void dieGoal_Execute(); // nullsub
+ virtual void dieGoal_End(); // nullsub
+ virtual void dieOther_Begin(); // deletes actor with r4=1
+ virtual void dieOther_Execute(); // nullsub
+ virtual void dieOther_End(); // nullsub
+ virtual void eatIn_Begin(); // nullsub
+ virtual void eatIn_Execute(); // changes to EatNow on one condition, otherwise calls vfAC
+ virtual void eatIn_End(); // nullsub
+ virtual void eatNow_Begin(); // nullsub
+ virtual void eatNow_Execute(); // nullsub
+ virtual void eatNow_End(); // nullsub
+ virtual void eatOut_Begin(); // nullsub
+ virtual void eatOut_Execute(); // nullsub
+ virtual void eatOut_End(); // nullsub
+ virtual void hitSpin_Begin(); // nullsub
+ virtual void hitSpin_Execute(); // nullsub
+ virtual void hitSpin_End(); // nullsub
+ virtual void ice_Begin(); // does stuff with Class484 and lots of vf's
+ virtual void ice_Execute(); // tons of stuff with Class484
+ virtual void ice_End(); // sets a field in Class484 to 0
+
+ virtual void spawnHitEffectAtPosition(Vec2 pos);
+ virtual void doSomethingWithHardHitAndSoftHitEffects(Vec pos);
+ virtual void playEnemyDownSound2();
+ virtual void add2ToYSpeed();
+ virtual bool _vf218(); // stuff with floats and camera
+ virtual void _vf21C(); // does stuff with the speeds
+ virtual void _vf220(void *other); // some type of actor, PlBase? calls vf3F4 on other with r4=this, r5=0
+ virtual void _vf224(); // stores a couple of values into the struct at 464
+ virtual void _vf228(); // more fun stuff with 464 and floats
+ virtual bool _vf22C(); // does stuff involving ICE_ACTORs and arrays
+ virtual void _vf230(); // "relatedToPlayerOrYoshiCollision" apparently. nullsub, params unknown for now.
+ virtual void _vf234(); // nullsub, params unknown
+ virtual void _vf238(); // calls vf34 on class394, params unknown
+ virtual void _vf23C(); // nullsub, params unknown
+ virtual void _vf240(); // nullsub, params unknown
+ virtual int _vf244(); // returns 0. might be bool. params unknown
+ virtual int _vf248(int something); // does some math involving field510 and [7,7,4,0] and param
+ virtual void _vf24C(void *other); // deals with something in the class involving the bahp flag
+ virtual void _vf250(void *other);
+ virtual void _vf254(void *other);
+ virtual void _vf258(void *other);
+ virtual void _vf25C(void *other); // calls vf250
+ virtual void _vf260(void *other); // AcPy/PlBase? plays the SE_EMY_FUMU_%d sounds based on some value
+ virtual void _vf264(dStageActor_c *other); // if other is player or yoshi, do Wm_en_hit and a few other things
+ virtual void _vf268(void *other); // AcPy/PlBase? plays the SE_EMY_DOWN_SPIN_%d sounds based on some value
+ virtual void spawnHitEffectAtPositionAgain(Vec2 pos);
+ virtual void playMameStepSound(); // SE_EMY_MAME_STEP at actor position
+ virtual void _vf274(); // nullsub, params unknown
+ virtual void _vf278(void *other); // AcPy/PlBase? plays the SE_EMY_YOSHI_FUMU_%d sounds based on some value
+ virtual void _vf27C(); // nullsub, params unknown
+
+ ~dEn_c();
+};
+
+
+class daEnBlockMain_c : public dEn_c {
+public:
+ Physics physics;
+ float _618, _61C, _620;
+ u32 _624, _628, _62C;
+ float initialY;
+ float _634, _638, _63C, _640;
+ u32 countdown, _648, _64C;
+ u32 _650, _654, _658, _65C;
+ u16 _660;
+ u8 _662, _663, _664, _665, _666, _667;
+ u8 _668, _669, _66A, _66B, _66C, _66D, _66E, _66F;
+ u8 _670, _671, _672, _673;
+ u8 _674;
+ u8 _675, _676, _677, _678, _679, _67A, _67B, _67C;
+ u8 _67D, _67E, _67F, _680;
+ u32 _684;
+ u8 _688, isGroundPound, anotherFlag, _68B, _68C, _68D, _68E, _68F;
+ u32 _690;
+ u8 _694;
+
+ // Regular methods
+ void blockInit(float initialY);
+ void blockUpdate();
+ u8 blockResult();
+
+ virtual void calledWhenUpMoveBegins();
+ virtual void calledWhenDownMoveBegins();
+
+ virtual void calledWhenUpMoveExecutes();
+ virtual void calledWhenUpMoveDiffExecutes();
+ virtual void calledWhenDownMoveExecutes();
+ virtual void calledWhenDownMoveEndExecutes();
+ virtual void calledWhenDownMoveDiffExecutes();
+ virtual void calledWhenDownMoveDiffEndExecutes();
+
+ virtual void updateScale(bool movingDown);
+
+ // State functions
+ virtual void upMove_Begin();
+ virtual void upMove_Execute();
+ virtual void upMove_End();
+ virtual void downMove_Begin();
+ virtual void downMove_Execute();
+ virtual void downMove_End();
+ virtual void downMoveEnd_Begin();
+ virtual void downMoveEnd_Execute();
+ virtual void downMoveEnd_End();
+ virtual void upMove_Diff_Begin();
+ virtual void upMove_Diff_Execute();
+ virtual void upMove_Diff_End();
+ virtual void downMove_Diff_Begin();
+ virtual void downMove_Diff_Execute();
+ virtual void downMove_Diff_End();
+ virtual void downMove_DiffEnd_Begin();
+ virtual void downMove_DiffEnd_Execute();
+ virtual void downMove_DiffEnd_End();
+
+ static void *PhysicsCallback1;
+ static void *PhysicsCallback2;
+ static void *PhysicsCallback3;
+ static void *OPhysicsCallback1;
+ static void *OPhysicsCallback2;
+ static void *OPhysicsCallback3;
+
+ static State<daEnBlockMain_c> StateID_UpMove;
+ static State<daEnBlockMain_c> StateID_DownMove;
+ static State<daEnBlockMain_c> StateID_DownMoveEnd;
+ static State<daEnBlockMain_c> StateID_UpMove_Diff;
+ static State<daEnBlockMain_c> StateID_DownMove_Diff;
+ static State<daEnBlockMain_c> StateID_DownMove_DiffEnd;
+
+ ~daEnBlockMain_c();
+};
+
+
+class dBgGm_c {
+public:
+ // TODO TODO TODO TODO TODO
+ static dBgGm_c *instance;
+
+ TileRenderer::List *getTileRendererList(int index);
+};
class dPlayerModelBase_c {
@@ -1157,6 +1815,78 @@ private: +namespace nw4r {
+ namespace ut {
+ class CharWriter {
+ public:
+ CharWriter();
+ ~CharWriter();
+
+ void SetupGX();
+
+ void SetFontSize(float w, float h);
+ void SetFontSize(float v);
+ float GetFontWidth() const;
+ float GetFontHeight() const;
+ float GetFontAscent() const;
+ float GetFontDescent() const;
+
+ // returns width
+ float Print(ushort character);
+
+ void PrintGlyph(float, float, float, /* nw4r::ut::Glyph const & */ void*);
+
+ void UpdateVertexColor();
+
+ private:
+ void SetupGXWithColorMapping(Color c1, Color c2);
+
+ public:
+ Color colors[8]; // todo: document
+ u32 modeOfSomeKind;
+ float scaleX;
+ float scaleY;
+ float posX;
+ float posY;
+ float posZ;
+ GXTexFilter minFilt;
+ GXTexFilter magFilt;
+ u16 completelyUnknown;
+ u8 alpha;
+ u8 isFixedWidth;
+ float fixedWidthValue;
+ /* ResFont* */ void *font;
+ };
+
+ // actually TextWriterBase<w>, but ...
+ class TextWriter : public CharWriter {
+ public:
+ TextWriter();
+ ~TextWriter();
+
+ float GetLineHeight() const;
+
+ // left out most of these to avoid all the format string vararg bullshit
+ float CalcStringWidth(wchar_t const *string, int length) const;
+
+ float Print(wchar_t const *string, int length);
+
+ float CalcLineWidth(wchar_t const *string, int length);
+
+ float GetLineSpace() const;
+
+ bool IsDrawFlagSet(ulong, ulong) const;
+
+ float _4C;
+ float charSpace;
+ float somethingRelatedToLineHeight;
+ u32 _58;
+ u32 drawFlag;
+ void *tagProcessorMaybe;
+ };
+ }
+}
+
// More layout crap
// This file REALLY needs to be reorganised.
diff --git a/include/statelib.h b/include/statelib.h new file mode 100644 index 0000000..34ab282 --- /dev/null +++ b/include/statelib.h @@ -0,0 +1,133 @@ +/******************************************************************************/ +// StateBase class +/******************************************************************************/ + +class StateBase { +public: + StateBase(const char *name); + + virtual ~StateBase(); + virtual bool isInvalid(); + virtual bool isEqualNotUsedForSomeReason(StateBase *another); + virtual bool isEqual(StateBase *another); + virtual bool isNotEqual(StateBase *another); + virtual bool isSameStateName(const char *name); + virtual const char *getName(); + virtual int getID(); + + static StateBase mNoState; + +private: + const char *mName; + int mID; + + static int mLastID; +}; + +/******************************************************************************/ +// State<TOwner> : StateBase class +/******************************************************************************/ + +template <class TOwner> +class State : public StateBase { +public: + typedef void (TOwner::*funcPtr)(); + + State(const char *name, funcPtr begin, funcPtr execute, funcPtr end) : StateBase(name) { + mBegin = begin; + mExecute = execute; + mEnd = end; + } + + ~State(); + bool isSameStateName(const char *name); + + virtual void doBegin(TOwner *owner); + virtual void doExecute(TOwner *owner); + virtual void doEnd(TOwner *owner); + + funcPtr mBegin; + funcPtr mExecute; + funcPtr mEnd; +}; + +template <class TOwner> +State<TOwner>::~State() { } + +template <class TOwner> +bool State<TOwner>::isSameStateName(const char *name) { + const char *p = strrchr(name, ':'); + if (p) + name = p + 1; + + int cmp = strcmp(strrchr(getName(), ':')+1, name); + if (cmp == 0) + return true; + else + return false; +} + +template <class TOwner> +void State<TOwner>::doBegin(TOwner *owner) { + (owner->*mBegin)(); +} + +template <class TOwner> +void State<TOwner>::doExecute(TOwner *owner) { + (owner->*mExecute)(); +} + +template <class TOwner> +void State<TOwner>::doEnd(TOwner *owner) { + (owner->*mEnd)(); +} + +/******************************************************************************/ +// StateMgrBase class +/******************************************************************************/ + +class StateMgrBase { +public: + StateMgrBase(void *one, void *two, StateBase *pInitState); + + virtual ~StateMgrBase(); + virtual void _vf0C(); + virtual void execute(); + virtual void _vf14(); + virtual void setState(StateBase *pNewState); + virtual void setField10ToOne(); + virtual StateBase *getField20(); + virtual StateBase *getField14(); + virtual StateBase *getCurrentState_maybe(); + virtual StateBase *getField18(); + virtual bool _vf30() = 0; + virtual void _vf34() = 0; + virtual void _vf38() = 0; + virtual void _vf3C(StateBase *pState) = 0; + +private: + void *m04, *m08; + bool m0C, m0D, m0E, m0F, m10; + StateBase *m14, *m18, *m1C; + StateBase *m20; // maybe not a StateBase? +}; + +/******************************************************************************/ +// StateMgr<TOwner> : StateMgrBase class +/******************************************************************************/ + +template <class TOwner> +class StateMgr : public StateMgrBase { +public: + StateMgr(void *one, void *two, StateBase *pInitState); + ~StateMgr(); + + bool _vf30(); + void _vf34(); + void _vf38(); + void _vf3C(StateBase *pState); +}; + +// TODO: add template methods + + diff --git a/kamek_pal.x b/kamek_pal.x index 1cdb99a..1692927 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -6,6 +6,7 @@ OUTPUT_FORMAT ("binary") SECTIONS {
GetSpecificPlayerActor = 0x8005F900; + Actor_SearchByID = 0x80162E40; TimeStopFlag = 0x80429FDA; TimerBranch = 0x800E3AB8; MarioDescentRate = 0x8042BB44; @@ -17,773 +18,1020 @@ SECTIONS { AlwaysDrawBranch = 0x80064544; GenerateRandomNumber = 0x800B2EE0; - _savefpr_14 = 0x802DCF98;
- _savefpr_15 = 0x802DCF9C;
- _savefpr_16 = 0x802DCFA0;
- _savefpr_17 = 0x802DCFA4;
- _savefpr_18 = 0x802DCFA8;
- _savefpr_19 = 0x802DCFAC;
- _savefpr_20 = 0x802DCFB0;
- _savefpr_21 = 0x802DCFB4;
- _savefpr_22 = 0x802DCFB8;
- _savefpr_23 = 0x802DCFBC;
- _savefpr_24 = 0x802DCFC0;
- _savefpr_25 = 0x802DCFC4;
- _savefpr_26 = 0x802DCFC8;
- _savefpr_27 = 0x802DCFCC;
- _savefpr_28 = 0x802DCFD0;
- _savefpr_29 = 0x802DCFD4;
- _savefpr_30 = 0x802DCFD8;
- _savefpr_31 = 0x802DCFDC;
-
- _restfpr_14 = 0x802DCFE4;
- _restfpr_15 = 0x802DCFE8;
- _restfpr_16 = 0x802DCFEC;
- _restfpr_17 = 0x802DCFF0;
- _restfpr_18 = 0x802DCFF4;
- _restfpr_19 = 0x802DCFF8;
- _restfpr_20 = 0x802DCFFC;
- _restfpr_21 = 0x802DD000;
- _restfpr_22 = 0x802DD004;
- _restfpr_23 = 0x802DD008;
- _restfpr_24 = 0x802DD00C;
- _restfpr_25 = 0x802DD010;
- _restfpr_26 = 0x802DD014;
- _restfpr_27 = 0x802DD018;
- _restfpr_28 = 0x802DD01C;
- _restfpr_29 = 0x802DD020;
- _restfpr_30 = 0x802DD024;
- _restfpr_31 = 0x802DD028;
-
- _savegpr_14 = 0x802DD030;
- _savegpr_15 = 0x802DD034;
- _savegpr_16 = 0x802DD038;
- _savegpr_17 = 0x802DD03C;
- _savegpr_18 = 0x802DD040;
- _savegpr_19 = 0x802DD044;
- _savegpr_20 = 0x802DD048;
- _savegpr_21 = 0x802DD04C;
- _savegpr_22 = 0x802DD050;
- _savegpr_23 = 0x802DD054;
- _savegpr_24 = 0x802DD058;
- _savegpr_25 = 0x802DD05C;
- _savegpr_26 = 0x802DD060;
- _savegpr_27 = 0x802DD064;
- _savegpr_28 = 0x802DD068;
- _savegpr_29 = 0x802DD06C;
- _savegpr_30 = 0x802DD070;
- _savegpr_31 = 0x802DD074;
-
- _restgpr_14 = 0x802DD07C;
- _restgpr_15 = 0x802DD080;
- _restgpr_16 = 0x802DD084;
- _restgpr_17 = 0x802DD088;
- _restgpr_18 = 0x802DD08C;
- _restgpr_19 = 0x802DD090;
- _restgpr_20 = 0x802DD094;
- _restgpr_21 = 0x802DD098;
- _restgpr_22 = 0x802DD09C;
- _restgpr_23 = 0x802DD0A0;
- _restgpr_24 = 0x802DD0A4;
- _restgpr_25 = 0x802DD0A8;
- _restgpr_26 = 0x802DD0AC;
- _restgpr_27 = 0x802DD0B0;
- _restgpr_28 = 0x802DD0B4;
- _restgpr_29 = 0x802DD0B8;
- _restgpr_30 = 0x802DD0BC;
- _restgpr_31 = 0x802DD0C0;
-
- __shl2i = 0x802DD4DC;
-
- __nw__FUl = 0x802B9350;
- __dl__FPv = 0x802B93C0;
-
- __construct_new_array = 0x802DCAD0;
- __destroy_new_array = 0x802DCE00;
-
-
- setup__13FunctionChainFPPFPv_bUs = 0x8015F740;
-
- willBeDeleted__7fBase_cFv = 0x80162410;
- moreHeapShit__7fBase_cFUiPv = 0x80162730;
- createHeap__7fBase_cFUiPv = 0x80162930;
- heapCreated__7fBase_cFv = 0x801629F0;
- Delete__7fBase_cFv = 0x80162650;
- hasUninitialisedProcesses__7fBase_cFv = 0x80162B60;
-
- GetExplanationString__7dBase_cFv = 0x8006C660;
-
- __ct__8dScene_cFv = 0x800E1AA0;
- __dt__8dScene_cFv = 0x800E1B10;
- beforeCreate__8dScene_cFv = 0x800E1B90;
- afterCreate__8dScene_cFv = 0x800E1BD0;
- beforeDelete__8dScene_cFv = 0x800E1C40;
- afterDelete__8dScene_cFv = 0x800E1C70;
- beforeExecute__8dScene_cFv = 0x800E1CD0;
- afterExecute__8dScene_cFv = 0x800E1E10;
- beforeDraw__8dScene_cFv = 0x800E1E60;
- afterDraw__8dScene_cFv = 0x800E1E90;
-
- __ct__8dActor_cFv = 0x8006C6D0;
- __dt__8dActor_cFv = 0x8006C7F0;
-
- __ct__7dBase_cFv = 0x8006C420;
- __dt__7dBase_cFv = 0x8006C490;
- beforeCreate__7dBase_cFv = 0x8006C540;
- afterCreate__7dBase_cFv = 0x8006C570;
- beforeDelete__7dBase_cFv = 0x8006C580;
- afterDelete__7dBase_cFv = 0x8006C5B0;
- beforeExecute__7dBase_cFv = 0x8006C5C0;
- afterExecute__7dBase_cFv = 0x8006C600;
- beforeDraw__7dBase_cFv = 0x8006C610;
- afterDraw__7dBase_cFv = 0x8006C650;
-
- onDraw__7fBase_cFv = 0x80162310;
-
- specialDraw1__8dActor_cFv = 0x8006CA50;
- specialDraw2__8dActor_cFv = 0x8006CA60;
- _vf58__8dActor_cFv = 0x8001D1C0;
- _vf5C__8dActor_cFv = 0x8001D1B0;
-
- __ct__21dPlayerModelHandler_cFUc = 0x800D6DB0;
- loadModel__21dPlayerModelHandler_cFUcii = 0x800D6EE0;
- setSRT__21dPlayerModelHandler_cF7Point3d6S16Vec7Point3d = 0x800D7030;
- callVF20__21dPlayerModelHandler_cFv = 0x800D70F0;
- draw__21dPlayerModelHandler_cFv = 0x800D7110;
- update__21dPlayerModelHandler_cFv = 0x800D6F80;
-
- _Z15FindActorByType6ActorsP5Actor = 0x80162E90;
- FindActorByType__F6ActorsP5Actor = 0x80162E90;
- _Z19RetrieveFileFromArcPvPcS0_ = 0x800DF270;
- _Z8OSReportPKcz = 0x8015F870;
- OSReport__FPCce = 0x8015F870;
- _Z7OSFatal7GXColorS_PKc = 0x801AF710;
-
- GetCameraByID__Fi = 0x80164C60;
- GetCurrentCameraID__Fv = 0x80164C80;
- SetCurrentCameraID__Fi = 0x80164C90;
-
- LinkScene__Fi = 0x80164D50;
- UnlinkScene__Fi = 0x80164CD0;
-
- SceneCalcWorld__Fi = 0x80164E10;
- SceneCameraStuff__Fi = 0x80164EA0;
-
- CalcMaterial__Fv = 0x80164E90;
- DrawOpa__Fv = 0x80164F70;
- DrawXlu__Fv = 0x80164F80;
-
- ChangeAlphaUpdate__Fb = 0x802D3270;
-
- DoSpecialDrawing1__Fv = 0x8006CAE0;
- DoSpecialDrawing2__Fv = 0x8006CB40;
-
- SetupLYTDrawing__Fv = 0x80163360;
- ClearLayoutDrawList__Fv = 0x801632B0;
-
- DrawAllLayoutsBeforeX__Fi = 0x80163440;
- DrawAllLayoutsAfterX__Fi = 0x801634D0;
- DrawAllLayoutsAfterXandBeforeY__Fii = 0x80163560;
-
- findPaneByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007300;
- findTextBoxByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007320;
- findPictureByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x800073D0;
- findWindowByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007470;
- __ct__Q23m2d13EmbedLayout_cFv = 0x800C89A0;
- __dt__Q23m2d13EmbedLayout_cFv = 0x800C89F0;
- loadArc__Q23m2d13EmbedLayout_cFPCcb = 0x800C8D00;
- loadAnimations__Q23m2d13EmbedLayout_cFPPCci = 0x800C90A0;
- loadGroups__Q23m2d13EmbedLayout_cFPPCcPii = 0x800C91E0;
- enableNonLoopAnim__Q23m2d13EmbedLayout_cFib = 0x800C93E0;
- enableLoopAnim__Q23m2d13EmbedLayout_cFi = 0x800C9470;
- disableAllAnimations__Q23m2d13EmbedLayout_cFv = 0x800C95F0;
- free__Q23m2d13EmbedLayout_cFv = 0x800C9A20;
- execAnimations__Q23m2d13EmbedLayout_cFv = 0x800C9650;
- scheduleForDrawing__Q23m2d6Base_cFv = 0x80163990;
-
- RenderEffects__Fii = 0x80093F10;
-
- RemoveAllFromScnRoot__Fv = 0x80164FB0;
- Reset3DState__Fv = 0x80165000;
-
- GetRenderModeObj__Q34nw4r3g3d8G3DStateFv = 0x8024D710;
-
- __ct__Q34nw4r3g3d6CameraFPQ34nw4r3g3d10CameraData = 0x80253910;
- SetOrtho__Q34nw4r3g3d6CameraFffffff = 0x80253DB0;
- SetPerspective__Q34nw4r3g3d6CameraFffff = 0x80253D70;
- SetViewportJitter__Q34nw4r3g3d6CameraFUi = 0x80253F60;
- SetPosture__Q34nw4r3g3d6CameraFRCQ44nw4r3g3d6Camera11PostureInfo = 0x80253B00;
- SetPosition__Q34nw4r3g3d6CameraFRC7Point3d = 0x80253A90;
- SetCameraMtxDirectly__Q34nw4r3g3d6CameraFRA3_A4_Cf = 0x80253D20;
- GetCameraMtx__Q34nw4r3g3d6CameraCFPA3_A4_f = 0x802541F0;
-
- CheckRevision__Q34nw4r3g3d7ResFileCFv = 0x8023A9A0;
- Init__Q34nw4r3g3d7ResFileFv = 0x8023A6D0;
- Bind__Q34nw4r3g3d7ResFileFQ34nw4r3g3d7ResFile = 0x8023A490;
- GetResMdl__Q34nw4r3g3d7ResFileCFPCc = 0x80239F70;
- GetResTex__Q34nw4r3g3d7ResFileCFPCc = 0x8023A060;
- g3dMemAllocator__Q24nw4r3g3d = 0x8042A6A8;
- __ScnMdl__Construct__Q24nw4r3g3dFPvPUiPvUii = 0x8025CB60;
- __ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0x8025A4C0;
- InsertIntoScene__Q24nw4r3g3dFPv = 0x80164F90;
-
- GetResMat__Q34nw4r3g3d6ResMdlCFPCc = 0x8023B8A0;
-
- DisableIndirectTexturing__3m3dFv = 0x80165090;
- InitTexObjWithResTex__3m3dFP9_GXTexObjPv14_GXTexWrapMode14_GXTexWrapMode12_GXTexFilter12_GXTexFilter = 0x802C7F60;
-
- /* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */
- setup__Q23m3d6proc_cFPvPUi = 0x80165110;
- __ct__Q23m3d6proc_cFv = 0x8016A150;
- __dt__Q23m3d6proc_cFv = 0x8016A170;
- free__Q23m3d6proc_cFv = 0x8016A1D0;
- scheduleForDrawing__Q23m3d6proc_cFv = 0x8016A220;
- getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0x8016A2D0;
- returnUnknown__Q23m3d6proc_cFv = 0x8000F720;
- /* End preliminary section */
-
- __ct__Q23m3d5mdl_cFv = 0x80169E10;
- __dt__Q23m3d5mdl_cFv = 0x80169E60;
- setup__Q23m3d5mdl_cFQ34nw4r3g3d6ResMdlPvUiiPUi = 0x80169ED0;
- oneSetupType__Q23m3d5mdl_cFv = 0x80064C10;
- sub_80064BF0__Q23m3d5mdl_cFv = 0x80064BF0;
- setDrawMatrix__Q23m3d5mdl_cFPA4_Cf = 0x8016A2B0;
-
- SetupTextures_Player__FPQ23m3d5mdl_ci = 0x800B3E50;
- SetupTextures_Map__FPQ23m3d5mdl_ci = 0x800B3F50;
- SetupTextures_Boss__FPQ23m3d5mdl_ci = 0x800B4050;
- SetupTextures_Enemy__FPQ23m3d5mdl_ci = 0x800B4170;
- SetupTextures_MapObj__FPQ23m3d5mdl_ci = 0x800B42B0;
- SetupTextures_Item__FPQ23m3d5mdl_ci = 0x800B43D0;
-
- __ct__16mHeapAllocator_cFv = 0x80069020;
- __dt__16mHeapAllocator_cFv = 0x80069060;
- link__16mHeapAllocator_cFiPvPCci = 0x800690C0;
- unlink__16mHeapAllocator_cFv = 0x800690E0;
-
- __ct__10mTexture_cFUsUs9_GXTexFmt = 0x802C0D70;
- load__10mTexture_cF11_GXTexMapID = 0x802C0E50;
- flushDC__10mTexture_cFv = 0x802C0F10;
- makeLinearGradient__10mTexture_cFicUsUs8_GXColor8_GXColorb = 0x802C1120;
- allocateBuffer__10mTexture_cFPv = 0x802C14D0;
- plotPixel__10mTexture_cFUsUs8_GXColor = 0x802C1570;
-
- SetFontSize__Q34nw4r2ut10CharWriterFff = 0x8022D430;
-
- __ct__Q34nw4r2ut10TextWriterFv = 0x802308C0;
- __dt__Q34nw4r2ut10TextWriterFv = 0x80230920;
- CalcStringWidth__Q34nw4r2ut10TextWriterCFPCwi = 0x80231210;
-
- GameHeaps = 0x80377F48;
-
- BGDatClass = 0x8042A0D0;
- GetTilesetName__FPvii = 0x800813F0;
-
- IsWideScreen__Fv = 0x800B5500;
-
- Player_Active = 0x80355150;
- Player_ID = 0x80355160;
- Player_Powerup = 0x80355170;
- Player_Flags = 0x80355180;
- Player_Lives = 0x80355190;
- Player_Coins = 0x803551A0;
-
- AllocateMemoryBlock = 0x80162A00;
- EnsureAllArcsAreLoaded = 0x800DF5D0;
- FindRotationController = 0x8002AC00;
- GetObjectName = 0x801018C0;
- GetObjectParent = 0x801626D0;
- OSReport = 0x8015F870;
-
- StagePtr = 0x8042A4A8;
-
- _Z20CreateParentedObjectsPvic = 0x80162C40;
- _Z47CheckIfMenuShouldBeCancelledForSpecifiedWiimotei = 0x800B53F0;
- _Z21StartTitleScreenStagebi = 0x801018E0;
- _Z17CreateChildObjectsPviii = 0x8006CBA0;
-
- CreateParentedObject__FsPvic = 0x80162C40;
- CheckIfMenuShouldBeCancelledForSpecifiedWiimote__Fi = 0x800B53F0;
- StartTitleScreenStage__Fbi = 0x801018E0;
- CreateChildObject__FsPviii = 0x8006CBA0;
-
- ObjCreate1 = 0x80162C40;
- ObjCreate2 = 0x80162C60;
- RestoreObjectState = 0x800B0FD0;
- QueueArcLoad = 0x800DF930;
- RetrieveFileFromArc = 0x800DF270;
- RetrieveFileFromArcAlt = 0x800DF4B0;
-
- SpawnSprite = 0x80064610;
- StoreObjectState = 0x800B1100;
- TriggerEventFlag = 0x800E4B20;
-
- _ZN8SaveFile14CheckIfWritingEv = 0x800E0540;
- _Z8SaveGamePvb = 0x8092F5F0;
-
- CheckIfWriting__8SaveFileFv = 0x800E0540;
- SaveGame__FPvb = 0x8092F5F0;
-
- _Z9DVD_Startv = 0x8006A6F0;
- _Z12DVD_LoadFilePvPcS0_S_ = 0x800DF930;
- _Z12DVD_FreeFilePvPc = 0x800DF220;
- _Z16DVD_StillLoadingPv = 0x800DF5D0;
- _Z7DVD_Endv = 0x8006A760;
-
- DVD_Start__Fv = 0x8006A6F0;
- DVD_LoadFile__FPvPcPcPv = 0x800DF930;
- DVD_FreeFile__FPvPc = 0x800DF220;
- DVD_StillLoading__FPv = 0x800DF5D0;
- DVD_End__Fv = 0x8006A760;
- DVD_GetFile__FPvPCcPCc = 0x800DF270;
- DVD_GetFile__FPvPCcPCcPUi = 0x800DF2D0;
-
- __ct__12dDvdLoader_cFv = 0x8008F140;
- __dt__12dDvdLoader_cFv = 0x8008F170;
- load__12dDvdLoader_cFPCcUcPv = 0x8008F1B0;
- unload__12dDvdLoader_cFv = 0x8008F310;
-
- SZSDecompClass = 0x80377DE4;
- LZDecompClass = 0x80377DF0;
- LHDecompClass = 0x80377DFC;
- LRCDecompClass = 0x80377E08;
- RLDecompClass = 0x80377E14;
- StoreCompressionClassList = 0x8016B1D0;
- DecompBufferPointer = 0x80429758;
-
- TryAndFindCompressedFile = 0x8016BBE0;
-
- _Z22BgTexMng__LoadAnimTilePvisPcS0_c = 0x80087B60; /* same for ntsc */
- BgTexMng__LoadAnimTile__FPvisPcPcc = 0x80087B60; /* same for ntsc */
-
- _Z12ActivateWipei = 0x800B0DB0;
- ActivateWipe__Fi = 0x800B0DB0;
-
- CurrentDrawFunc = 0x8042A238;
-
- currentHeap = 0x8042B0F0;
-
- _Z20GameSetup__LoadScenePv = 0x80919560;
- _Z9FreeScenei = 0x801649F0;
- _Z17GameSetupDrawFuncv = 0x80917990;
- _Z16WorldMapDrawFuncv = 0x80926770;
-
- GameSetup__LoadScene__FPv = 0x80919560;
- FreeScene__Fi = 0x801649F0;
- GameSetupDrawFunc__Fv = 0x80917990;
- WorldMapDrawFunc__Fv = 0x80926770;
-
- memcpy = 0x80004364;
- memset = 0x800046B4;
- strncat = 0x802E1D58;
- strncpy = 0x802E1CE8;
- strcmp = 0x802E1DA4;
- sprintf = 0x802E1ACC;
-
- wcslen = 0x802E470C;
-
- IOS_Open = 0x80224DB0;
- IOS_Close = 0x80224FA0;
- IOS_Seek = 0x80225550;
- IOS_Read = 0x80225150;
- IOS_Write = 0x80225360;
-
- ArchiveHeap = 0x8042A72C;
- DVDClass = 0x8042A318;
- GameMgr = 0x8042A25C;
- SaveFileInstance = 0x8042A320;
- SaveHandlerInstance = 0x8042A298;
- RemoconMng = 0x8042A230;
- ActiveWiimoteID = 0x8042A744;
- ActiveWiimote = 0x8042A748;
-
- MakeScene = 0x80007610;
- GetRes = 0x800DF270;
- GetSceneLightInfo = 0x80164CB0;
- GetAnmScn = 0x8023A420;
- BindAnmScn = 0x80242810;
- AssignAnmScnToLightInfo = 0x802C8B30;
- LoadBlight = 0x809198F0;
- LoadBlmap = 0x809198E0;
-
- _Z23QueryPlayerAvailabilityi = 0x800B4760;
- _Z12DoStartLevelPvP10StartLevel = 0x800BB7D0;
- _Z20SetSomeConditionShitiij = 0x801027E0;
- _Z8WpadShiti = 0x8016F780;
- _Z32CheckIfContinueShouldBeActivatedv = 0x800B5340;
- _Z24SearchForIndexOfPlayerIDi = 0x80060110;
-
- QueryPlayerAvailability__Fi = 0x800B4760;
- DoStartLevel__FPvP14StartLevelInfo = 0x800BB7D0;
- SetSomeConditionShit__FiiUi = 0x801027E0;
- WpadShit__Fi = 0x8016F780;
- CheckIfContinueShouldBeActivated__Fv = 0x800B5340;
- SearchForIndexOfPlayerID__Fi = 0x80060110;
-
- _Z18AllocFromGameHeap1j = 0x80162A00;
- _Z17FreeFromGameHeap1Pv = 0x80162A60;
-
- AllocFromGameHeap1__FUi = 0x80162A00;
- FreeFromGameHeap1__FPv = 0x80162A60;
-
- AllocFromGameHeap1 = 0x80162A00;
-
- _Z19lyt__Layout__LayoutPv = 0x802ACC80;
- _Z15lyt__Layout__dtPvi = 0x802ACCC0;
- _Z18lyt__Layout__BuildPvPKvS_ = 0x802ACDF0;
-
- _Z47nsmbw__ArcResourceAccessor__ArcResourceAccessorPv = 0x802B6760;
- _Z30nsmbw__ArcResourceAccessor__dtPvi = 0x80006930;
- _Z31nsmbw__ArcResourceAccessor__SetPvS_PKc = 0x802B67C0;
- _Z39nsmbw__ArcResourceAccessor__GetResourcePvmPKcPm = 0x80006A50;
-
- _Z23lyt__DrawInfo__DrawInfoPv = 0x802B4E70;
- _Z17lyt__DrawInfo__dtPvi = 0x802B4EF0;
-
- _Z15PSMTXTransApplyPA4_fS0_fff = 0x801C0D50;
-
- _Z13NSMBWLoadFileP15NSMBWFileHandlePciPv = 0x8008F1B0;
- _Z13NSMBWFreeFileP15NSMBWFileHandle = 0x8008F310;
-
- _Z16NSMBWBrlan__LoadPvPKcS_S_b = 0x80163FA0;
- _Z16NSMBWBrlan__FreePv = 0x801640F0;
-
- _Z24DVDConvertPathToEntrynumPKc = 0x801CA7C0;
- _Z11DVDFastOpeniP9DVDHandle = 0x801CAAD0;
- _Z11DVDReadPrioP9DVDHandlePviii = 0x801CAC60;
- _Z8DVDCloseP9DVDHandle = 0x801CAB40;
-
- DVDConvertPathToEntrynum__FPCc = 0x801CA7C0;
- DVDFastOpen__FiP9DVDHandle = 0x801CAAD0;
- DVDReadPrio__FP9DVDHandlePviii = 0x801CAC60;
- DVDClose__FP9DVDHandle = 0x801CAB40;
-
- DVDConvertPathToEntrynum = 0x801CA7C0;
-
- _ZN8SaveFile8GetBlockEi = 0x800E0470;
- _ZN8SaveFile10GetQSBlockEi = 0x800E04A0;
-
- GetBlock__8SaveFileFi = 0x800E0470;
- GetQSBlock__8SaveFileFi = 0x800E04A0;
-
- _ZN9SaveBlock17GetLevelConditionEii = 0x800CE490;
-
- GetLevelCondition__9SaveBlockFii = 0x800CE490;
-
- _Z20CheckIfWeCantDoStuffv = 0x8076DB90;
- _Z15QueryGlobal5758j = 0x800B3B50;
-
-
-
-
- CheckIfWeCantDoStuff__Fv = 0x8076DB90;
- QueryGlobal5758__FUi = 0x800B3B50;
-
- _Z16EGG__Heap__allocmiPv = 0x802B8E00;
- _Z15EGG__Heap__freePvS_ = 0x802B90B0;
-
- EGG__Heap__alloc__FUliPv = 0x802B8E00;
- EGG__Heap__free__FPvPv = 0x802B90B0;
-
- _Z5__nwam = 0x802B9390;
- _Z19construct_new_arrayPvS_S_ii = 0x802DCAD0;
- _Z11DeleteArrayPvS_ = 0x802DCE00;
-
- _Z8MTXOrthoPA4_fffffff = 0x801C1490;
- _Z15GXSetProjectionPA4_fh = 0x801C9980;
-
- _Z8IOS_OpenPKcj = 0x80224DB0;
- _Z9IOS_WriteiPKvi = 0x80225360;
- _Z9IOS_Closei = 0x80224FA0;
-
- _Z6strlenPKc = 0x802DC98C;
- strlen__FPCc = 0x802DC98C;
- strlen = 0x802DC98C;
-
- atan = 0x802E7F04;
- atan2 = 0x802E8900;
- cos = 0x802E82AC;
- sin = 0x802E87B4;
-
- LayoutHelper_Link = 0x801637A0;
-
- __nwa__FUl = 0x802B9390;
-
- _Z19EmbeddedLayout_ctorP6Layout = 0x800C89A0;
- _Z19EmbeddedLayout_dtorP6Layoutb = 0x800C89F0;
- _Z19EmbeddedLayout_FreeP6Layout = 0x800C9A20;
- _Z25EmbeddedLayout_LoadArcOldP6LayoutPKcb = 0x800C8D00;
- _Z25EmbeddedLayout_LoadBrlansP6LayoutPPKci = 0x800C90A0;
- _Z25EmbeddedLayout_LoadGroupsP6LayoutPPKcPii = 0x800C91E0;
- _Z38EmbeddedLayout_ResetAnimToInitialStateP6Layoutib = 0x800C94C0;
- _Z22EmbeddedLayout_ProcessP6Layout = 0x800C9650;
- _Z28EmbeddedLayout_AddToDrawListP6Layout = 0x80163990;
- _Z32EmbeddedLayout_EnableNonLoopAnimP6Layoutib = 0x800C93E0;
- _Z29EmbeddedLayout_EnableLoopAnimP6Layouti = 0x800C9470;
- _Z30EmbeddedLayout_DisableAllAnimsP6Layout = 0x800C95F0;
- _Z35EmbeddedLayout_CheckIfAnimationIsOnP6Layouti = 0x800C9700;
- _Z29EmbeddedLayout_FindPaneByNameP6LayoutPKc = 0x80007300;
- _Z32EmbeddedLayout_FindTextBoxByNameP6LayoutPKc = 0x80007320;
-
- EmbeddedLayout_ctor__FP6Layout = 0x800C89A0;
- EmbeddedLayout_dtor__FP6Layoutb = 0x800C89F0;
- EmbeddedLayout_Free__FP6Layout = 0x800C9A20;
- EmbeddedLayout_LoadArcOld__FP6LayoutPKcb = 0x800C8D00;
- EmbeddedLayout_LoadBrlans__FP6LayoutPPCci = 0x800C90A0;
- EmbeddedLayout_LoadGroups__FP6LayoutPPCcPii = 0x800C91E0;
- EmbeddedLayout_ResetAnimToInitialState__FP6Layoutib = 0x800C94C0;
- EmbeddedLayout_Process__FP6Layout = 0x800C9650;
- EmbeddedLayout_AddToDrawList__FP6Layout = 0x80163990;
- EmbeddedLayout_EnableNonLoopAnim__FP6Layoutib = 0x800C93E0;
- EmbeddedLayout_EnableLoopAnim__FP6Layouti = 0x800C9470;
- EmbeddedLayout_DisableAllAnims__FP6Layout = 0x800C95F0;
- EmbeddedLayout_CheckIfAnimationIsOn__FP6Layouti = 0x800C9700;
- EmbeddedLayout_FindPaneByName__FP6LayoutPCc = 0x80007300;
- EmbeddedLayout_FindTextBoxByName__FP6LayoutPCc = 0x80007320;
-
- _Z6memsetPvij = 0x800046B4;
- _Z7sprintfPcPKcz = 0x802E1ACC;
- _Z8snprintfPciPKcz = 0x802E19D8;
- _Z6strcatPKcS0_ = 0x802E1D2C;
-
- _Z6memsetPvij = 0x800046B4;
- sprintf__FPcPCce = 0x802E1ACC;
- snprintf__FPciPCce = 0x802E19D8;
- memcmp__FPCvPCvUi = 0x802DF388;
- _Z6strcatPKcS0_ = 0x802E1D2C;
-
- _Znaj = 0x802B9350;
-
- _Z23Hook_GetGXRenderModeObjv = 0x8024D710;
- Hook_GetGXRenderModeObj__Fv = 0x8024D710;
-
- _Z3sinf = 0x802E87B4;
- _Z3cosf = 0x802E82AC;
-
- ARCInitHandle = 0x8019F7A0;
- ARCOpen = 0x8019F840;
- ARCFastOpen = 0x8019FAF0;
- ARCConvertPathToEntrynum = 0x8019FB40;
- ARCGetStartAddrInMem = 0x8019FF90;
- ARCGetStartOffset = 0x8019FFB0;
- ARCGetLength = 0x8019FFC0;
- ARCClose = 0x8019FFD0;
- ARCChangeDir = 0x8019FFE0;
- ARCOpenDir = 0x801A0040;
- ARCReadDir = 0x801A00C0;
- ARCCloseDir = 0x801A0180;
-
- DCStoreRangeNoSync = 0x801AC640;
-
- VIGetNextField = 0x801BE020;
-
- PSMTXIdentity = 0x801C0610;
- PSMTXCopy = 0x801C0640;
- PSMTXConcat = 0x801C0680;
- PSMTXInverse = 0x801C08E0;
- PSMTXRotRad = 0x801C0AB0;
- PSMTXRotAxisRad = 0x801C0C90;
- PSMTXTrans = 0x801C0D10;
- PSMTXTransApply = 0x801C0D50;
- PSMTXScale = 0x801C0DA0;
- PSMTXScaleApply = 0x801C0DD0;
- PSMTXMultVec = 0x801C12A0;
-
- PSVECScale = 0x801C1590;
- PSVECNormalize = 0x801C15B0;
-
- C_MTXLookAt = 0x801C0EE0;
- C_MTXFrustum = 0x801C1300;
- C_MTXPerspective = 0x801C13A0;
- C_MTXOrtho = 0x801C1490;
-
- GXSetVtxDesc = 0x801C3900;
- GXClearVtxDesc = 0x801C41B0;
- GXSetVtxAttrFmt = 0x801C41F0;
- GXSetArray = 0x801C48C0;
- GXInvalidateVtxCache = 0x801C4900;
- GXSetTexCoordGen2 = 0x801C4910;
- GXSetNumTexGens = 0x801C4B60;
- GXBegin = 0x801C56B0;
- GXSetCullMode = 0x801C59A0;
- GXInitLightAttn = 0x801C6570;
- GXInitLightSpot = 0x801C65B0;
- GXInitLightDistAttn = 0x801C6750;
- GXInitLightPos = 0x801C6820;
- GXInitLightDir = 0x801C6850;
- GXInitSpecularDir = 0x801C68A0;
- GXInitLightColor = 0x801C69B0;
- GXLoadLightObjImm = 0x801C69C0;
- GXSetChanAmbColor = 0x801C6A40;
- GXSetChanMatColor = 0x801C6B20;
- GXSetNumChans = 0x801C6C00;
- GXSetChanCtrl = 0x801C6C30;
- GXInitTexObj = 0x801C6ED0;
- GXInitTexObjCI = 0x801C70E0;
- GXInitTexObjLOD = 0x801C7130;
- GXInitTexObjTlut = 0x801C7260;
- GXInitTexObjWrapMode = 0x801C7240;
- GXLoadTexObj = 0x801C7600;
- GXInvalidateTexAll = 0x801C7800;
- GXSetTevDirect = 0x801C8270;
- GXSetTevOp = 0x801C8390;
- GXSetTevColorIn = 0x801C8430;
- GXSetTevAlphaIn = 0x801C8470;
- GXSetTevColorOp = 0x801C84B0;
- GXSetTevAlphaOp = 0x801C8510;
- GXSetTevColor = 0x801C8570;
- GXSetTevColorS10 = 0x801C85D0;
- GXSetTevKColor = 0x801C8640;
- GXSetTevKColorSel = 0x801C86A0;
- GXSetTevKAlphaSel = 0x801C86F0;
- GXSetTevSwapMode = 0x801C8740;
- GXSetTevSwapModeTable = 0x801C8780;
- GXSetAlphaCompare = 0x801C8800;
- GXSetTevOrder = 0x801C88D0;
- GXSetNumTevStages = 0x801C8A30;
- GXSetFog = 0x801C8A60;
- GXSetFogRangeAdj = 0x801C8DF0;
- GXSetBlendMode = 0x801C8F00;
- GXSetZMode = 0x801C8FB0;
- GXSetZCompLoc = 0x801C8FF0;
- GXSetDither = 0x801C90D0;
- GXCallDisplayList = 0x801C9720;
- GXSetProjection = 0x801C9980;
- GXLoadPosMtxImm = 0x801C9A80;
- GXLoadNrmMtxImm = 0x801C9B00;
- GXSetCurrentMtx = 0x801C9BA0;
- GXSetViewportJitter = 0x801C9D10;
- GXSetViewport = 0x801C9D50;
- GXDrawDone = 0x801C4FE0;
-
- GXWGFifo = 0xCC008000;
-
- TPLBind = 0x80228310;
- TPLGet = 0x80228430;
-
- /* Gakenoko stuff */
- mHeapAllocatorSubclass_Link = 0x800690C0;
- mHeapAllocatorSubclass_UnLink = 0x800690E0;
-
- GetResMdl = 0x80239F70;
- GetResAnmChr = 0x8023A1F0;
- GetResAnmTexPat = 0x8023A340;
-
- m3d__mdl_c__DoStuff = 0x80169ED0;
-
- __ashldi3 = 0x802DD4DC;
-
- _Z15fBase_c__DeletePv = 0x80162650;
- fBase_c__Delete__FPv = 0x80162650;
-
- _Z13FindActorByIDj = 0x80162E40;
- FindActorByID__FUi = 0x80162E40;
-
- EventTable = 0x8042A358;
- dBgActorManager = 0x8042A0B8;
-
- ContinueBgActorSpawn = 0x8007EA9C;
-
- SomeModelAnimationClass_Setup = 0x80165210;
-
- EGGTSystem_Pointer = 0x8042A36C;
-
- dSys_c__RootHeapMEM1 = 0x8042A370;
- dSys_c__RootHeapMEM2 = 0x8042A374;
-
- BG_GM_ptr = 0x8042A0B0;
-
- BgActorDefs = 0x8042A0BC;
-
- _Z16GetPointerToTileP9BG_GM_haxtttPsb = 0x80077520;
- GetPointerToTile__FP9BG_GM_haxUsUsUsPsb = 0x80077520;
-
- GameHeap1 = 0x80377F4C;
- GameHeap2 = 0x80377F50;
- WiimotePtr1 = 0x80377F88;
-
- continueFromFlagObjCheck = 0x807EBC64;
- returnFromFlagObjCheck = 0x807EBC7C;
-
- Global5758 = 0x8042A228;
-
- EggControllerClassPtrMaybe = 0x8042A230;
-
- MEMGetTotalFreeSizeForExpHeap = 0x801D4920;
-
- sub_80064BD0 = 0x80064BD0;
- sub_80166970 = 0x80166970;
- sub_80166D10 = 0x80166D10;
-
- daEnGakeNoko_c__StateID_FoolMove = 0x80B14BC0;
-
- EnItem_BindAnimation_Continued = 0x80A291E4;
- dAcPy_c__ChangePowerupWithAnimation = 0x80145C00;
- PlayerProjectileShooting = 0x8013BCD0;
-
- PlayPlayerSound = 0x80057E70;
- CreateActor = 0x80064610;
- Actor_SearchByName = 0x80162E90;
-
- daEnItem_c__GetWhetherPlayerCanGetPowerupOrNot = 0x80A2BE60;
-
- returnFromGPSFASixth = 0x80141FF8;
-
- continuePlumberSetPowerupTexture = 0x800CA71C;
- doneSettingThePowerupTexture = 0x800D483C;
- doneSettingThePowerupTexture2 = 0x80141574;
-
- continuePlumberSetPowerupTextureDebug = 0x800CA6B4;
-
- ExitFromTileGodHack = 0x807E1684;
-
- SomeTable_802F5440 = 0x802F5440;
- SomeTable_802F5580 = 0x802F5580;
- SomeTable_802F56C0 = 0x802F56C0;
-
- BlahTable = 0x803255A8;
-
- TileTable = 0x802EFCB8;
-
- CurrentLevel = 0x80315E9D;
- CurrentWorld = 0x80315E9C;
- CurrentStartedArea = 0x80315E96; /*WRONG*/
- CurrentStartedEntrance = 0x80315E97; /*WRONG*/
-
- GetRandomSeed = 0x800B2EC0;
- RandomSeed = 0x8042A224;
-
- StrangeReplayValue1 = 0x80427C2E;
- StrangeReplayValue2 = 0x8042A049;
- StrangeReplayValue3 = 0x8042A04A;
-
- OSGetTime = 0x801B60C0;
- OSTicksToCalendarTime = 0x801B61C0;
- snprintf = 0x802E19D8;
- continueFromReplayHookStart = 0x809246E4;
- continueFromReplayEndHook = 0x8010223C;
- returnFromRecorder = 0x800B60C0;
- GetSomeGlobalClass = 0x80109450;
- SomeUnknownClass5408 = 0x8042A578;
- SomeWipeClass = 0x8042A720;
- QueryGlobal5758 = 0x800B3B50;
-
- .text : {
- FILL (0)
-
- __text_start = . ;
- *(.init)
- *(.text)
- *(.ctors)
- *(.dtors)
- *(.rodata)
- /**(.sdata)*/
- *(.data)
- /**(.sbss)*/
- *(.bss)
- *(.fini)
- *(.rodata.*)
- __text_end = . ;
- }
-}
-
+ _savefpr_14 = 0x802DCF98; + _savefpr_15 = 0x802DCF9C; + _savefpr_16 = 0x802DCFA0; + _savefpr_17 = 0x802DCFA4; + _savefpr_18 = 0x802DCFA8; + _savefpr_19 = 0x802DCFAC; + _savefpr_20 = 0x802DCFB0; + _savefpr_21 = 0x802DCFB4; + _savefpr_22 = 0x802DCFB8; + _savefpr_23 = 0x802DCFBC; + _savefpr_24 = 0x802DCFC0; + _savefpr_25 = 0x802DCFC4; + _savefpr_26 = 0x802DCFC8; + _savefpr_27 = 0x802DCFCC; + _savefpr_28 = 0x802DCFD0; + _savefpr_29 = 0x802DCFD4; + _savefpr_30 = 0x802DCFD8; + _savefpr_31 = 0x802DCFDC; + + _restfpr_14 = 0x802DCFE4; + _restfpr_15 = 0x802DCFE8; + _restfpr_16 = 0x802DCFEC; + _restfpr_17 = 0x802DCFF0; + _restfpr_18 = 0x802DCFF4; + _restfpr_19 = 0x802DCFF8; + _restfpr_20 = 0x802DCFFC; + _restfpr_21 = 0x802DD000; + _restfpr_22 = 0x802DD004; + _restfpr_23 = 0x802DD008; + _restfpr_24 = 0x802DD00C; + _restfpr_25 = 0x802DD010; + _restfpr_26 = 0x802DD014; + _restfpr_27 = 0x802DD018; + _restfpr_28 = 0x802DD01C; + _restfpr_29 = 0x802DD020; + _restfpr_30 = 0x802DD024; + _restfpr_31 = 0x802DD028; + + _savegpr_14 = 0x802DD030; + _savegpr_15 = 0x802DD034; + _savegpr_16 = 0x802DD038; + _savegpr_17 = 0x802DD03C; + _savegpr_18 = 0x802DD040; + _savegpr_19 = 0x802DD044; + _savegpr_20 = 0x802DD048; + _savegpr_21 = 0x802DD04C; + _savegpr_22 = 0x802DD050; + _savegpr_23 = 0x802DD054; + _savegpr_24 = 0x802DD058; + _savegpr_25 = 0x802DD05C; + _savegpr_26 = 0x802DD060; + _savegpr_27 = 0x802DD064; + _savegpr_28 = 0x802DD068; + _savegpr_29 = 0x802DD06C; + _savegpr_30 = 0x802DD070; + _savegpr_31 = 0x802DD074; + + _restgpr_14 = 0x802DD07C; + _restgpr_15 = 0x802DD080; + _restgpr_16 = 0x802DD084; + _restgpr_17 = 0x802DD088; + _restgpr_18 = 0x802DD08C; + _restgpr_19 = 0x802DD090; + _restgpr_20 = 0x802DD094; + _restgpr_21 = 0x802DD098; + _restgpr_22 = 0x802DD09C; + _restgpr_23 = 0x802DD0A0; + _restgpr_24 = 0x802DD0A4; + _restgpr_25 = 0x802DD0A8; + _restgpr_26 = 0x802DD0AC; + _restgpr_27 = 0x802DD0B0; + _restgpr_28 = 0x802DD0B4; + _restgpr_29 = 0x802DD0B8; + _restgpr_30 = 0x802DD0BC; + _restgpr_31 = 0x802DD0C0; + + __shl2i = 0x802DD4DC; + + __nw__FUl = 0x802B9350; + __dl__FPv = 0x802B93C0; + + __construct_new_array = 0x802DCAD0; + __destroy_new_array = 0x802DCE00; + + __register_global_object = 0x802DCA70; + __ptmf_scall = 0x802DCEEC; + + + setup__13FunctionChainFPPFPv_bUs = 0x8015F740; + + willBeDeleted__7fBase_cFv = 0x80162410; + moreHeapShit__7fBase_cFUiPv = 0x80162730; + createHeap__7fBase_cFUiPv = 0x80162930; + heapCreated__7fBase_cFv = 0x801629F0; + Delete__7fBase_cFv = 0x80162650; + hasUninitialisedProcesses__7fBase_cFv = 0x80162B60; + + GetExplanationString__7dBase_cFv = 0x8006C660; + + __vt__15daEnBlockMain_c = 0x803021A8; + __dt__15daEnBlockMain_cFv = 0x80023340; + calledWhenUpMoveBegins__15daEnBlockMain_cFv = 0x80022E80; + calledWhenDownMoveBegins__15daEnBlockMain_cFv = 0x80022F60; + calledWhenUpMoveExecutes__15daEnBlockMain_cFv = 0x80022F30; + calledWhenUpMoveDiffExecutes__15daEnBlockMain_cFv = 0x800231A0; + calledWhenDownMoveExecutes__15daEnBlockMain_cFv = 0x80023010; + calledWhenDownMoveEndExecutes__15daEnBlockMain_cFv = 0x80023080; + calledWhenDownMoveDiffExecutes__15daEnBlockMain_cFv = 0x800232C0; + calledWhenDownMoveDiffEndExecutes__15daEnBlockMain_cFv = 0x80023330; + updateScale__15daEnBlockMain_cFb = 0x80022DC0; + upMove_Begin__15daEnBlockMain_cFv = 0x80022E60; + upMove_Execute__15daEnBlockMain_cFv = 0x80022EA0; + upMove_End__15daEnBlockMain_cFv = 0x80022E90; + downMove_Begin__15daEnBlockMain_cFv = 0x80022F40; + downMove_Execute__15daEnBlockMain_cFv = 0x80022F80; + downMove_End__15daEnBlockMain_cFv = 0x80022F70; + downMoveEnd_Begin__15daEnBlockMain_cFv = 0x80023020; + downMoveEnd_Execute__15daEnBlockMain_cFv = 0x80023040; + downMoveEnd_End__15daEnBlockMain_cFv = 0x80023030; + upMove_Diff_Begin__15daEnBlockMain_cFv = 0x80023090; + upMove_Diff_Execute__15daEnBlockMain_cFv = 0x800230D0; + upMove_Diff_End__15daEnBlockMain_cFv = 0x800230C0; + downMove_Diff_Begin__15daEnBlockMain_cFv = 0x800231B0; + downMove_Diff_Execute__15daEnBlockMain_cFv = 0x800231F0; + downMove_Diff_End__15daEnBlockMain_cFv = 0x800231E0; + downMove_DiffEnd_Begin__15daEnBlockMain_cFv = 0x800232D0; + downMove_DiffEnd_Execute__15daEnBlockMain_cFv = 0x800232F0; + downMove_DiffEnd_End__15daEnBlockMain_cFv = 0x800232E0; + blockInit__15daEnBlockMain_cFf = 0x80021690; + blockUpdate__15daEnBlockMain_cFv = 0x800217B0; + blockResult__15daEnBlockMain_cFv = 0x800212C0; + PhysicsCallback1__15daEnBlockMain_c = 0x80021180; + PhysicsCallback2__15daEnBlockMain_c = 0x80021170; + PhysicsCallback3__15daEnBlockMain_c = 0x800211A0; + OPhysicsCallback1__15daEnBlockMain_c = 0x80020BF0; + OPhysicsCallback2__15daEnBlockMain_c = 0x80020E70; + OPhysicsCallback3__15daEnBlockMain_c = 0x80021010; + StateID_UpMove__15daEnBlockMain_c = 0x80352D34; + StateID_DownMove__15daEnBlockMain_c = 0x80352D74; + StateID_DownMoveEnd__15daEnBlockMain_c = 0x80352DB4; + StateID_UpMove_Diff__15daEnBlockMain_c = 0x80352DF4; + StateID_DownMove_Diff__15daEnBlockMain_c = 0x80352E34; + StateID_DownMove_DiffEnd__15daEnBlockMain_c = 0x80352E74; + + __ct__5dEn_cFv = 0x80094E80; + afterCreate__5dEn_cFi = 0x800951D0; + afterExecute__5dEn_cFi = 0x80095480; + kill__5dEn_cFv = 0x80097F70; + eatIn__5dEn_cFv = 0x80097C40; + disableEatIn__5dEn_cFv = 0x80097CB0; + _vf8C__5dEn_cFPv = 0x80097D30; + _vfCC__5dEn_cFP7Point2d = 0x800973F0; + _vfD0__5dEn_cFP7Point2d = 0x800974F0; + doStateChange__5dEn_cFP9StateBase = 0x800A7DF0; + preSpriteCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095CE0; + prePlayerCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095D30; + preYoshiCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095F50; + stageActorCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80096060; + spriteCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095C10; + playerCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095C20; + yoshiCollision__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x80095C80; + collisionCat3_StarPower__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009F840; + collisionCat5_Mario__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FB50; + _vf108__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FE40; + collisionCatD_GroundPound__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FFD0; + _vf110__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FFC0; + collisionCat8_FencePunch__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FCE0; + collisionCat7_WMWaggleWater__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A0150; + collisionCat7_WMWaggleWaterYoshi__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A02D0; + _vf120__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FCD0; + collisionCatA_PenguinMario__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009FCC0; + collisionCat11_PipeCannon__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x8009F9D0; + collisionCat9_RollingObject__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A0700; + collisionCat1_Fireball_E_Explosion__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A08D0; + collisionCat2_IceBall_15_YoshiIce__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A0A30; + collisionCat13_Hammer__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A03C0; + collisionCat14_YoshiFire__5dEn_cFP13ActivePhysicsP13ActivePhysics = 0x800A0550; + _vf140__5dEn_cFP13dStageActor_c = 0x800A10B0; + _vf144__5dEn_cFi = 0x800A0C70; + _vf148__5dEn_cFv = 0x800A12A0; + _vf14C__5dEn_cFv = 0x800A1370; + _vf150__5dEn_cFv = 0x800206D0; + eatenByYoshiProbably__5dEn_cFv = 0x80096230; + playHpdpSound1__5dEn_cFv = 0x800A1C00; + playEnemyDownSound1__5dEn_cFv = 0x800A1BB0; + playEnemyDownComboSound__5dEn_cFPv = 0x800A1C80; + playHpdpSound2__5dEn_cFv = 0x800A1D90; + _vf168__5dEn_cFv = 0x800A1E10; + dieFumi_Begin__5dEn_cFv = 0x800A1470; + dieFumi_Execute__5dEn_cFv = 0x800A1600; + dieFumi_End__5dEn_cFv = 0x800A1820; + dieFall_Begin__5dEn_cFv = 0x800A16A0; + dieFall_Execute__5dEn_cFv = 0x800A1830; + dieFall_End__5dEn_cFv = 0x800A1820; + dieBigFall_Begin__5dEn_cFv = 0x800A1910; + dieBigFall_Execute__5dEn_cFv = 0x800A1930; + dieBigFall_End__5dEn_cFv = 0x800A1920; + dieSmoke_Begin__5dEn_cFv = 0x800A1980; + dieSmoke_Execute__5dEn_cFv = 0x800A1A00; + dieSmoke_End__5dEn_cFv = 0x800A19F0; + dieYoshiFumi_Begin__5dEn_cFv = 0x800A1AC0; + dieYoshiFumi_Execute__5dEn_cFv = 0x800A1B40; + dieYoshiFumi_End__5dEn_cFv = 0x800A1B30; + dieIceVanish_Begin__5dEn_cFv = 0x800A1A10; + dieIceVanish_Execute__5dEn_cFv = 0x800A1AB0; + dieIceVanish_End__5dEn_cFv = 0x800A1AA0; + dieGoal_Begin__5dEn_cFv = 0x800A1B50; + dieGoal_Execute__5dEn_cFv = 0x800A1B70; + dieGoal_End__5dEn_cFv = 0x800A1B60; + dieOther_Begin__5dEn_cFv = 0x800A1B80; + dieOther_Execute__5dEn_cFv = 0x800A1BA0; + dieOther_End__5dEn_cFv = 0x800A1B90; + eatIn_Begin__5dEn_cFv = 0x800A81C0; + eatIn_Execute__5dEn_cFv = 0x800A81E0; + eatIn_End__5dEn_cFv = 0x800A81D0; + eatNow_Begin__5dEn_cFv = 0x800A8260; + eatNow_Execute__5dEn_cFv = 0x800A8280; + eatNow_End__5dEn_cFv = 0x800A8270; + eatOut_Begin__5dEn_cFv = 0x800A8290; + eatOut_Execute__5dEn_cFv = 0x800A82B0; + eatOut_End__5dEn_cFv = 0x800A82A0; + hitSpin_Begin__5dEn_cFv = 0x800A8190; + hitSpin_Execute__5dEn_cFv = 0x800A81B0; + hitSpin_End__5dEn_cFv = 0x800A81A0; + ice_Begin__5dEn_cFv = 0x800A7E90; + ice_Execute__5dEn_cFv = 0x800A7F40; + ice_End__5dEn_cFv = 0x800A7F30; + spawnHitEffectAtPosition__5dEn_cF7Point2d = 0x80095520; + doSomethingWithHardHitAndSoftHitEffects__5dEn_cF7Point3d = 0x80095530; + playEnemyDownSound2__5dEn_cFv = 0x80095580; + add2ToYSpeed__5dEn_cFv = 0x800955D0; + _vf218__5dEn_cFv = 0x80095890; + _vf21C__5dEn_cFv = 0x80097770; + _vf220__5dEn_cFPv = 0x80097F20; + _vf224__5dEn_cFv = 0x80097F60; + _vf228__5dEn_cFv = 0x800206C0; + _vf22C__5dEn_cFv = 0x800A8060; + _vf230__5dEn_cFv = 0x800A8150; + _vf234__5dEn_cFv = 0x800A8160; + _vf238__5dEn_cFv = 0x800A8180; + _vf23C__5dEn_cFv = 0x800206B0; + _vf240__5dEn_cFv = 0x800206A0; + _vf244__5dEn_cFv = 0x80020690; + _vf248__5dEn_cFi = 0x800968E0; + _vf24C__5dEn_cFPv = 0x80096710; + _vf250__5dEn_cFPv = 0x80096700; + _vf254__5dEn_cFPv = 0x80096720; + _vf258__5dEn_cFPv = 0x80096760; + _vf25C__5dEn_cFPv = 0x80096770; + _vf260__5dEn_cFPv = 0x80096910; + _vf264__5dEn_cFP13dStageActor_c = 0x80096D60; + _vf268__5dEn_cFPv = 0x80096A20; + spawnHitEffectAtPositionAgain__5dEn_cF7Point2d = 0x80096DF0; + playMameStepSound__5dEn_cFv = 0x80096C40; + _vf274__5dEn_cFv = 0x80096E50; + _vf278__5dEn_cFPv = 0x80096B30; + _vf27C__5dEn_cFv = 0x80096E40; + + _vfD8__18dActorMultiState_cFv = 0x80067590; + _vfDC__18dActorMultiState_cFv = 0x800675B0; + _vfE0__18dActorMultiState_cFv = 0x800675A0; + + __ct__13dStageActor_cFv = 0x80064110; + __dt__13dStageActor_cFv = 0x800642B0; + beforeCreate__13dStageActor_cFv = 0x80064350; + afterCreate__13dStageActor_cFi = 0x80064380; + beforeDelete__13dStageActor_cFv = 0x80064390; + afterDelete__13dStageActor_cFi = 0x800643E0; + beforeExecute__13dStageActor_cFv = 0x800643F0; + afterExecute__13dStageActor_cFi = 0x80064490; + beforeDraw__13dStageActor_cFv = 0x80064540; + afterDraw__13dStageActor_cFi = 0x800645E0; + GetExplanationString__13dStageActor_cFv = 0x800645F0; + _vf60__13dStageActor_cFv = 0x80065080; + _vf68__13dStageActor_cFv = 0x8001D210; + _vf6C__13dStageActor_cFv = 0x8001D200; + _vf70__13dStageActor_cFv = 0x80065620; + _vf74__13dStageActor_cFv = 0x8001D1F0; + _vf78__13dStageActor_cFv = 0x80065820; + _vf7C__13dStageActor_cFv = 0x8001D1E0; + _vf88__13dStageActor_cFv = 0x80065860; + _vf90__13dStageActor_cFP13dStageActor_c = 0x80065880; + _vf94__13dStageActor_cFPv = 0x80065AC0; + removeMyActivePhysics__13dStageActor_cFv = 0x80066080; + addMyActivePhysics__13dStageActor_cFv = 0x80066090; + returnRegularScale__13dStageActor_cFv = 0x80065950; + _vfA4__13dStageActor_cFPv = 0x80065970; + _vfA8__13dStageActor_cFPv = 0x80065A00; + _vfAC__13dStageActor_cFPv = 0x80065A40; + _vfB0__13dStageActor_cFv = 0x80065660; + _vfB4__13dStageActor_cFv = 0x80065B40; + _vfB8__13dStageActor_cFv = 0x8001D1D0; + _vfBC__13dStageActor_cFv = 0x80065B50; + _vfC0__13dStageActor_cFv = 0x80065B60; + _vfC4__13dStageActor_cFv = 0x80065B70; + _vfC8__13dStageActor_cFP7Point2d = 0x80065CC0; + checkZoneBoundaries__13dStageActor_cFUi = 0x80064F50; + create__13dStageActor_cF6ActorsUiP7Point3dP6S16VecUc = 0x80064610; + + __ct__8dScene_cFv = 0x800E1AA0; + __dt__8dScene_cFv = 0x800E1B10; + beforeCreate__8dScene_cFv = 0x800E1B90; + afterCreate__8dScene_cFi = 0x800E1BD0; + beforeDelete__8dScene_cFv = 0x800E1C40; + afterDelete__8dScene_cFi = 0x800E1C70; + beforeExecute__8dScene_cFv = 0x800E1CD0; + afterExecute__8dScene_cFi = 0x800E1E10; + beforeDraw__8dScene_cFv = 0x800E1E60; + afterDraw__8dScene_cFi = 0x800E1E90; + + __ct__8dActor_cFv = 0x8006C6D0; + __dt__8dActor_cFv = 0x8006C7F0; + + __ct__7dBase_cFv = 0x8006C420; + __dt__7dBase_cFv = 0x8006C490; + beforeCreate__7dBase_cFv = 0x8006C540; + afterCreate__7dBase_cFi = 0x8006C570; + beforeDelete__7dBase_cFv = 0x8006C580; + afterDelete__7dBase_cFi = 0x8006C5B0; + beforeExecute__7dBase_cFv = 0x8006C5C0; + afterExecute__7dBase_cFi = 0x8006C600; + beforeDraw__7dBase_cFv = 0x8006C610; + afterDraw__7dBase_cFi = 0x8006C650; + + onDraw__7fBase_cFv = 0x80162310; + + specialDraw1__8dActor_cFv = 0x8006CA50; + specialDraw2__8dActor_cFv = 0x8006CA60; + _vf58__8dActor_cFv = 0x8001D1C0; + _vf5C__8dActor_cFv = 0x8001D1B0; + + __ct__9StateBaseFPCc = 0x8015F900; + __dt__9StateBaseFv = 0x8015F940; + isInvalid__9StateBaseFv = 0x8015F980; + isEqualNotUsedForSomeReason__9StateBaseFP9StateBase = 0x8015F990; + isEqual__9StateBaseFP9StateBase = 0x8015FA00; + isNotEqual__9StateBaseFP9StateBase = 0x8015FA10; + getName__9StateBaseFv = 0x8015FA60; + getID__9StateBaseFv = 0x8015FA70; + + __ct__10dFlagMgr_c = 0x800E3BD0; + setup__10dFlagMgr_cFb = 0x800E3C90; + applyAndClearAllTimedActions__10dFlagMgr_cFv = 0x800E4010; + execute__10dFlagMgr_cFv = 0x800E4100; + set__10dFlagMgr_cFUcibbbUi = 0x800E42B0; + findLowestFlagInSet__10dFlagMgr_cFUiUl = 0x800E4560; + setSpecial__10dFlagMgr_cFUcffUcUiUl = 0x800E4640; + get8__10dFlagMgr_cFUc = 0x800E4680; + get108__10dFlagMgr_cFUc = 0x800E4690; + get208__10dFlagMgr_cFUc = 0x800E46A0; + get248__10dFlagMgr_cFUc = 0x800E46B0; + get448__10dFlagMgr_cFUc = 0x800E46D0; + instance__10dFlagMgr_c = 0x8042A358; + + + __ct__7PhysicsFv = 0x8007F7A0; + setup__7PhysicsFP8dActor_cPQ27Physics4InfoUcUcP7Point2d = 0x8007FB10; + addToList__7PhysicsFv = 0x8007F900; + removeFromList__7PhysicsFv = 0x8007F950; + update__7PhysicsFv = 0x8007FDA0; + + getTileRendererList__7dBgGm_cFi = 0x80078520; + + add__Q212TileRenderer4ListFP12TileRenderer = 0x80014820; + remove__Q212TileRenderer4ListFP12TileRenderer = 0x80014860; + + __ct__12TileRendererFv = 0x800145B0; + __dt__12TileRendererFv = 0x800145F0; + setPosition__12TileRendererFfff = 0x800146B0; + setVars__12TileRendererFf = 0x800146D0; + + __ct__21dPlayerModelHandler_cFUc = 0x800D6DB0; + loadModel__21dPlayerModelHandler_cFUcii = 0x800D6EE0; + setSRT__21dPlayerModelHandler_cF7Point3d6S16Vec7Point3d = 0x800D7030; + callVF20__21dPlayerModelHandler_cFv = 0x800D70F0; + draw__21dPlayerModelHandler_cFv = 0x800D7110; + update__21dPlayerModelHandler_cFv = 0x800D6F80; + + _Z15FindActorByType6ActorsP5Actor = 0x80162E90; + FindActorByType__F6ActorsP5Actor = 0x80162E90; + _Z19RetrieveFileFromArcPvPcS0_ = 0x800DF270; + _Z8OSReportPKcz = 0x8015F870; + OSReport__FPCce = 0x8015F870; + _Z7OSFatal7GXColorS_PKc = 0x801AF710; + + GetCameraByID__Fi = 0x80164C60; + GetCurrentCameraID__Fv = 0x80164C80; + SetCurrentCameraID__Fi = 0x80164C90; + + LinkScene__Fi = 0x80164D50; + UnlinkScene__Fi = 0x80164CD0; + + SceneCalcWorld__Fi = 0x80164E10; + SceneCameraStuff__Fi = 0x80164EA0; + + CalcMaterial__Fv = 0x80164E90; + DrawOpa__Fv = 0x80164F70; + DrawXlu__Fv = 0x80164F80; + + ChangeAlphaUpdate__Fb = 0x802D3270; + + DoSpecialDrawing1__Fv = 0x8006CAE0; + DoSpecialDrawing2__Fv = 0x8006CB40; + + SetupLYTDrawing__Fv = 0x80163360; + ClearLayoutDrawList__Fv = 0x801632B0; + + DrawAllLayoutsBeforeX__Fi = 0x80163440; + DrawAllLayoutsAfterX__Fi = 0x801634D0; + DrawAllLayoutsAfterXandBeforeY__Fii = 0x80163560; + + findPaneByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007300; + findTextBoxByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007320; + findPictureByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x800073D0; + findWindowByName__Q23m2d17EmbedLayoutBase_cCFPCc = 0x80007470; + __ct__Q23m2d13EmbedLayout_cFv = 0x800C89A0; + __dt__Q23m2d13EmbedLayout_cFv = 0x800C89F0; + loadArc__Q23m2d13EmbedLayout_cFPCcb = 0x800C8D00; + loadAnimations__Q23m2d13EmbedLayout_cFPPCci = 0x800C90A0; + loadGroups__Q23m2d13EmbedLayout_cFPPCcPii = 0x800C91E0; + enableNonLoopAnim__Q23m2d13EmbedLayout_cFib = 0x800C93E0; + enableLoopAnim__Q23m2d13EmbedLayout_cFi = 0x800C9470; + disableAllAnimations__Q23m2d13EmbedLayout_cFv = 0x800C95F0; + free__Q23m2d13EmbedLayout_cFv = 0x800C9A20; + execAnimations__Q23m2d13EmbedLayout_cFv = 0x800C9650; + scheduleForDrawing__Q23m2d6Base_cFv = 0x80163990; + + RenderEffects__Fii = 0x80093F10; + + RemoveAllFromScnRoot__Fv = 0x80164FB0; + Reset3DState__Fv = 0x80165000; + + GetRenderModeObj__Q34nw4r3g3d8G3DStateFv = 0x8024D710; + + __ct__Q34nw4r3g3d6CameraFPQ34nw4r3g3d10CameraData = 0x80253910; + SetOrtho__Q34nw4r3g3d6CameraFffffff = 0x80253DB0; + SetPerspective__Q34nw4r3g3d6CameraFffff = 0x80253D70; + SetViewportJitter__Q34nw4r3g3d6CameraFUi = 0x80253F60; + SetPosture__Q34nw4r3g3d6CameraFRCQ44nw4r3g3d6Camera11PostureInfo = 0x80253B00; + SetPosition__Q34nw4r3g3d6CameraFRC7Point3d = 0x80253A90; + SetCameraMtxDirectly__Q34nw4r3g3d6CameraFRA3_A4_Cf = 0x80253D20; + GetCameraMtx__Q34nw4r3g3d6CameraCFPA3_A4_f = 0x802541F0; + + CheckRevision__Q34nw4r3g3d7ResFileCFv = 0x8023A9A0; + Init__Q34nw4r3g3d7ResFileFv = 0x8023A6D0; + Bind__Q34nw4r3g3d7ResFileFQ34nw4r3g3d7ResFile = 0x8023A490; + GetResMdl__Q34nw4r3g3d7ResFileCFPCc = 0x80239F70; + GetResTex__Q34nw4r3g3d7ResFileCFPCc = 0x8023A060; + g3dMemAllocator__Q24nw4r3g3d = 0x8042A6A8; + __ScnMdl__Construct__Q24nw4r3g3dFPvPUiPvUii = 0x8025CB60; + __ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0x8025A4C0; + InsertIntoScene__Q24nw4r3g3dFPv = 0x80164F90; + + GetResMat__Q34nw4r3g3d6ResMdlCFPCc = 0x8023B8A0; + + DisableIndirectTexturing__3m3dFv = 0x80165090; + InitTexObjWithResTex__3m3dFP9_GXTexObjPv14_GXTexWrapMode14_GXTexWrapMode12_GXTexFilter12_GXTexFilter = 0x802C7F60; + + /* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */ + setup__Q23m3d6proc_cFPvPUi = 0x80165110; + __ct__Q23m3d6proc_cFv = 0x8016A150; + __dt__Q23m3d6proc_cFv = 0x8016A170; + free__Q23m3d6proc_cFv = 0x8016A1D0; + scheduleForDrawing__Q23m3d6proc_cFv = 0x8016A220; + getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0x8016A2D0; + returnUnknown__Q23m3d6proc_cFv = 0x8000F720; + /* End preliminary section */ + + __ct__Q23m3d5mdl_cFv = 0x80169E10; + __dt__Q23m3d5mdl_cFv = 0x80169E60; + setup__Q23m3d5mdl_cFQ34nw4r3g3d6ResMdlPvUiiPUi = 0x80169ED0; + oneSetupType__Q23m3d5mdl_cFv = 0x80064C10; + sub_80064BF0__Q23m3d5mdl_cFv = 0x80064BF0; + setDrawMatrix__Q23m3d5mdl_cFPA4_Cf = 0x8016A2B0; + + SetupTextures_Player__FPQ23m3d5mdl_ci = 0x800B3E50; + SetupTextures_Map__FPQ23m3d5mdl_ci = 0x800B3F50; + SetupTextures_Boss__FPQ23m3d5mdl_ci = 0x800B4050; + SetupTextures_Enemy__FPQ23m3d5mdl_ci = 0x800B4170; + SetupTextures_MapObj__FPQ23m3d5mdl_ci = 0x800B42B0; + SetupTextures_Item__FPQ23m3d5mdl_ci = 0x800B43D0; + + __ct__16mHeapAllocator_cFv = 0x80069020; + __dt__16mHeapAllocator_cFv = 0x80069060; + link__16mHeapAllocator_cFiPvPCci = 0x800690C0; + unlink__16mHeapAllocator_cFv = 0x800690E0; + + __ct__10mTexture_cFUsUs9_GXTexFmt = 0x802C0D70; + load__10mTexture_cF11_GXTexMapID = 0x802C0E50; + flushDC__10mTexture_cFv = 0x802C0F10; + makeLinearGradient__10mTexture_cFicUsUs8_GXColor8_GXColorb = 0x802C1120; + allocateBuffer__10mTexture_cFPv = 0x802C14D0; + plotPixel__10mTexture_cFUsUs8_GXColor = 0x802C1570; + + SetFontSize__Q34nw4r2ut10CharWriterFff = 0x8022D430; + + __ct__Q34nw4r2ut10TextWriterFv = 0x802308C0; + __dt__Q34nw4r2ut10TextWriterFv = 0x80230920; + CalcStringWidth__Q34nw4r2ut10TextWriterCFPCwi = 0x80231210; + + GameHeaps = 0x80377F48; + + BGDatClass = 0x8042A0D0; + GetTilesetName__FPvii = 0x800813F0; + + IsWideScreen__Fv = 0x800B5500; + + Player_Active = 0x80355150; + Player_ID = 0x80355160; + Player_Powerup = 0x80355170; + Player_Flags = 0x80355180; + Player_Lives = 0x80355190; + Player_Coins = 0x803551A0; + + AllocateMemoryBlock = 0x80162A00; + EnsureAllArcsAreLoaded = 0x800DF5D0; + FindRotationController = 0x8002AC00; + GetObjectName = 0x801018C0; + GetObjectParent = 0x801626D0; + OSReport = 0x8015F870; + + StagePtr = 0x8042A4A8; + + _Z20CreateParentedObjectsPvic = 0x80162C40; + _Z47CheckIfMenuShouldBeCancelledForSpecifiedWiimotei = 0x800B53F0; + _Z21StartTitleScreenStagebi = 0x801018E0; + _Z17CreateChildObjectsPviii = 0x8006CBA0; + + CreateParentedObject__FsPvic = 0x80162C40; + CheckIfMenuShouldBeCancelledForSpecifiedWiimote__Fi = 0x800B53F0; + StartTitleScreenStage__Fbi = 0x801018E0; + CreateChildObject__FsPviii = 0x8006CBA0; + + ObjCreate1 = 0x80162C40; + ObjCreate2 = 0x80162C60; + RestoreObjectState = 0x800B0FD0; + QueueArcLoad = 0x800DF930; + RetrieveFileFromArc = 0x800DF270; + RetrieveFileFromArcAlt = 0x800DF4B0; + + SpawnSprite = 0x80064610; + StoreObjectState = 0x800B1100; + TriggerEventFlag = 0x800E4B20; + + _ZN8SaveFile14CheckIfWritingEv = 0x800E0540; + _Z8SaveGamePvb = 0x8092F5F0; + + CheckIfWriting__8SaveFileFv = 0x800E0540; + SaveGame__FPvb = 0x8092F5F0; + + _Z9DVD_Startv = 0x8006A6F0; + _Z12DVD_LoadFilePvPcS0_S_ = 0x800DF930; + _Z12DVD_FreeFilePvPc = 0x800DF220; + _Z16DVD_StillLoadingPv = 0x800DF5D0; + _Z7DVD_Endv = 0x8006A760; + + DVD_Start__Fv = 0x8006A6F0; + DVD_LoadFile__FPvPcPcPv = 0x800DF930; + DVD_FreeFile__FPvPc = 0x800DF220; + DVD_StillLoading__FPv = 0x800DF5D0; + DVD_End__Fv = 0x8006A760; + DVD_GetFile__FPvPCcPCc = 0x800DF270; + DVD_GetFile__FPvPCcPCcPUi = 0x800DF2D0; + + __ct__12dDvdLoader_cFv = 0x8008F140; + __dt__12dDvdLoader_cFv = 0x8008F170; + load__12dDvdLoader_cFPCcUcPv = 0x8008F1B0; + unload__12dDvdLoader_cFv = 0x8008F310; + + SZSDecompClass = 0x80377DE4; + LZDecompClass = 0x80377DF0; + LHDecompClass = 0x80377DFC; + LRCDecompClass = 0x80377E08; + RLDecompClass = 0x80377E14; + StoreCompressionClassList = 0x8016B1D0; + DecompBufferPointer = 0x80429758; + + TryAndFindCompressedFile = 0x8016BBE0; + + _Z22BgTexMng__LoadAnimTilePvisPcS0_c = 0x80087B60; /* same for ntsc */ + BgTexMng__LoadAnimTile__FPvisPcPcc = 0x80087B60; /* same for ntsc */ + + _Z12ActivateWipei = 0x800B0DB0; + ActivateWipe__Fi = 0x800B0DB0; + + CurrentDrawFunc = 0x8042A238; + + currentHeap = 0x8042B0F0; + + _Z20GameSetup__LoadScenePv = 0x80919560; + _Z9FreeScenei = 0x801649F0; + _Z17GameSetupDrawFuncv = 0x80917990; + _Z16WorldMapDrawFuncv = 0x80926770; + + GameSetup__LoadScene__FPv = 0x80919560; + FreeScene__Fi = 0x801649F0; + GameSetupDrawFunc__Fv = 0x80917990; + WorldMapDrawFunc__Fv = 0x80926770; + + memcpy = 0x80004364; + memset = 0x800046B4; + strncat = 0x802E1D58; + strncpy = 0x802E1CE8; + strcmp = 0x802E1DA4; + sprintf = 0x802E1ACC; + strrchr = 0x802E1F30; + + wcslen = 0x802E470C; + + IOS_Open = 0x80224DB0; + IOS_Close = 0x80224FA0; + IOS_Seek = 0x80225550; + IOS_Read = 0x80225150; + IOS_Write = 0x80225360; + + ArchiveHeap = 0x8042A72C; + DVDClass = 0x8042A318; + GameMgr = 0x8042A25C; + SaveFileInstance = 0x8042A320; + SaveHandlerInstance = 0x8042A298; + RemoconMng = 0x8042A230; + ActiveWiimoteID = 0x8042A744; + ActiveWiimote = 0x8042A748; + + MakeScene = 0x80007610; + GetRes = 0x800DF270; + GetSceneLightInfo = 0x80164CB0; + GetAnmScn = 0x8023A420; + BindAnmScn = 0x80242810; + AssignAnmScnToLightInfo = 0x802C8B30; + LoadBlight = 0x809198F0; + LoadBlmap = 0x809198E0; + + _Z23QueryPlayerAvailabilityi = 0x800B4760; + _Z12DoStartLevelPvP10StartLevel = 0x800BB7D0; + _Z20SetSomeConditionShitiij = 0x801027E0; + _Z8WpadShiti = 0x8016F780; + _Z32CheckIfContinueShouldBeActivatedv = 0x800B5340; + _Z24SearchForIndexOfPlayerIDi = 0x80060110; + + QueryPlayerAvailability__Fi = 0x800B4760; + DoStartLevel__FPvP14StartLevelInfo = 0x800BB7D0; + SetSomeConditionShit__FiiUi = 0x801027E0; + WpadShit__Fi = 0x8016F780; + CheckIfContinueShouldBeActivated__Fv = 0x800B5340; + SearchForIndexOfPlayerID__Fi = 0x80060110; + + _Z18AllocFromGameHeap1j = 0x80162A00; + _Z17FreeFromGameHeap1Pv = 0x80162A60; + + AllocFromGameHeap1__FUi = 0x80162A00; + FreeFromGameHeap1__FPv = 0x80162A60; + + AllocFromGameHeap1 = 0x80162A00; + + _Z19lyt__Layout__LayoutPv = 0x802ACC80; + _Z15lyt__Layout__dtPvi = 0x802ACCC0; + _Z18lyt__Layout__BuildPvPKvS_ = 0x802ACDF0; + + _Z47nsmbw__ArcResourceAccessor__ArcResourceAccessorPv = 0x802B6760; + _Z30nsmbw__ArcResourceAccessor__dtPvi = 0x80006930; + _Z31nsmbw__ArcResourceAccessor__SetPvS_PKc = 0x802B67C0; + _Z39nsmbw__ArcResourceAccessor__GetResourcePvmPKcPm = 0x80006A50; + + _Z23lyt__DrawInfo__DrawInfoPv = 0x802B4E70; + _Z17lyt__DrawInfo__dtPvi = 0x802B4EF0; + + _Z15PSMTXTransApplyPA4_fS0_fff = 0x801C0D50; + + _Z13NSMBWLoadFileP15NSMBWFileHandlePciPv = 0x8008F1B0; + _Z13NSMBWFreeFileP15NSMBWFileHandle = 0x8008F310; + + _Z16NSMBWBrlan__LoadPvPKcS_S_b = 0x80163FA0; + _Z16NSMBWBrlan__FreePv = 0x801640F0; + + _Z24DVDConvertPathToEntrynumPKc = 0x801CA7C0; + _Z11DVDFastOpeniP9DVDHandle = 0x801CAAD0; + _Z11DVDReadPrioP9DVDHandlePviii = 0x801CAC60; + _Z8DVDCloseP9DVDHandle = 0x801CAB40; + + DVDConvertPathToEntrynum__FPCc = 0x801CA7C0; + DVDFastOpen__FiP9DVDHandle = 0x801CAAD0; + DVDReadPrio__FP9DVDHandlePviii = 0x801CAC60; + DVDClose__FP9DVDHandle = 0x801CAB40; + + DVDConvertPathToEntrynum = 0x801CA7C0; + + _ZN8SaveFile8GetBlockEi = 0x800E0470; + _ZN8SaveFile10GetQSBlockEi = 0x800E04A0; + + GetBlock__8SaveFileFi = 0x800E0470; + GetQSBlock__8SaveFileFi = 0x800E04A0; + + _ZN9SaveBlock17GetLevelConditionEii = 0x800CE490; + + GetLevelCondition__9SaveBlockFii = 0x800CE490; + + _Z20CheckIfWeCantDoStuffv = 0x8076DB90; + _Z15QueryGlobal5758j = 0x800B3B50; + + + + + CheckIfWeCantDoStuff__Fv = 0x8076DB90; + QueryGlobal5758__FUi = 0x800B3B50; + + _Z16EGG__Heap__allocmiPv = 0x802B8E00; + _Z15EGG__Heap__freePvS_ = 0x802B90B0; + + EGG__Heap__alloc__FUliPv = 0x802B8E00; + EGG__Heap__free__FPvPv = 0x802B90B0; + + _Z5__nwam = 0x802B9390; + _Z19construct_new_arrayPvS_S_ii = 0x802DCAD0; + _Z11DeleteArrayPvS_ = 0x802DCE00; + + _Z8MTXOrthoPA4_fffffff = 0x801C1490; + _Z15GXSetProjectionPA4_fh = 0x801C9980; + + _Z8IOS_OpenPKcj = 0x80224DB0; + _Z9IOS_WriteiPKvi = 0x80225360; + _Z9IOS_Closei = 0x80224FA0; + + _Z6strlenPKc = 0x802DC98C; + strlen__FPCc = 0x802DC98C; + strlen = 0x802DC98C; + + atan = 0x802E7F04; + atan2 = 0x802E8900; + cos = 0x802E82AC; + sin = 0x802E87B4; + + LayoutHelper_Link = 0x801637A0; + + __nwa__FUl = 0x802B9390; + + _Z19EmbeddedLayout_ctorP6Layout = 0x800C89A0; + _Z19EmbeddedLayout_dtorP6Layoutb = 0x800C89F0; + _Z19EmbeddedLayout_FreeP6Layout = 0x800C9A20; + _Z25EmbeddedLayout_LoadArcOldP6LayoutPKcb = 0x800C8D00; + _Z25EmbeddedLayout_LoadBrlansP6LayoutPPKci = 0x800C90A0; + _Z25EmbeddedLayout_LoadGroupsP6LayoutPPKcPii = 0x800C91E0; + _Z38EmbeddedLayout_ResetAnimToInitialStateP6Layoutib = 0x800C94C0; + _Z22EmbeddedLayout_ProcessP6Layout = 0x800C9650; + _Z28EmbeddedLayout_AddToDrawListP6Layout = 0x80163990; + _Z32EmbeddedLayout_EnableNonLoopAnimP6Layoutib = 0x800C93E0; + _Z29EmbeddedLayout_EnableLoopAnimP6Layouti = 0x800C9470; + _Z30EmbeddedLayout_DisableAllAnimsP6Layout = 0x800C95F0; + _Z35EmbeddedLayout_CheckIfAnimationIsOnP6Layouti = 0x800C9700; + _Z29EmbeddedLayout_FindPaneByNameP6LayoutPKc = 0x80007300; + _Z32EmbeddedLayout_FindTextBoxByNameP6LayoutPKc = 0x80007320; + + EmbeddedLayout_ctor__FP6Layout = 0x800C89A0; + EmbeddedLayout_dtor__FP6Layoutb = 0x800C89F0; + EmbeddedLayout_Free__FP6Layout = 0x800C9A20; + EmbeddedLayout_LoadArcOld__FP6LayoutPKcb = 0x800C8D00; + EmbeddedLayout_LoadBrlans__FP6LayoutPPCci = 0x800C90A0; + EmbeddedLayout_LoadGroups__FP6LayoutPPCcPii = 0x800C91E0; + EmbeddedLayout_ResetAnimToInitialState__FP6Layoutib = 0x800C94C0; + EmbeddedLayout_Process__FP6Layout = 0x800C9650; + EmbeddedLayout_AddToDrawList__FP6Layout = 0x80163990; + EmbeddedLayout_EnableNonLoopAnim__FP6Layoutib = 0x800C93E0; + EmbeddedLayout_EnableLoopAnim__FP6Layouti = 0x800C9470; + EmbeddedLayout_DisableAllAnims__FP6Layout = 0x800C95F0; + EmbeddedLayout_CheckIfAnimationIsOn__FP6Layouti = 0x800C9700; + EmbeddedLayout_FindPaneByName__FP6LayoutPCc = 0x80007300; + EmbeddedLayout_FindTextBoxByName__FP6LayoutPCc = 0x80007320; + + _Z6memsetPvij = 0x800046B4; + _Z7sprintfPcPKcz = 0x802E1ACC; + _Z8snprintfPciPKcz = 0x802E19D8; + _Z6strcatPKcS0_ = 0x802E1D2C; + + _Z6memsetPvij = 0x800046B4; + sprintf__FPcPCce = 0x802E1ACC; + snprintf__FPciPCce = 0x802E19D8; + memcmp__FPCvPCvUi = 0x802DF388; + _Z6strcatPKcS0_ = 0x802E1D2C; + + _Znaj = 0x802B9350; + + _Z23Hook_GetGXRenderModeObjv = 0x8024D710; + Hook_GetGXRenderModeObj__Fv = 0x8024D710; + + _Z3sinf = 0x802E87B4; + _Z3cosf = 0x802E82AC; + + ARCInitHandle = 0x8019F7A0; + ARCOpen = 0x8019F840; + ARCFastOpen = 0x8019FAF0; + ARCConvertPathToEntrynum = 0x8019FB40; + ARCGetStartAddrInMem = 0x8019FF90; + ARCGetStartOffset = 0x8019FFB0; + ARCGetLength = 0x8019FFC0; + ARCClose = 0x8019FFD0; + ARCChangeDir = 0x8019FFE0; + ARCOpenDir = 0x801A0040; + ARCReadDir = 0x801A00C0; + ARCCloseDir = 0x801A0180; + + DCStoreRangeNoSync = 0x801AC640; + + VIGetNextField = 0x801BE020; + + PSMTXIdentity = 0x801C0610; + PSMTXCopy = 0x801C0640; + PSMTXConcat = 0x801C0680; + PSMTXInverse = 0x801C08E0; + PSMTXRotRad = 0x801C0AB0; + PSMTXRotAxisRad = 0x801C0C90; + PSMTXTrans = 0x801C0D10; + PSMTXTransApply = 0x801C0D50; + PSMTXScale = 0x801C0DA0; + PSMTXScaleApply = 0x801C0DD0; + PSMTXMultVec = 0x801C12A0; + + PSVECScale = 0x801C1590; + PSVECNormalize = 0x801C15B0; + + C_MTXLookAt = 0x801C0EE0; + C_MTXFrustum = 0x801C1300; + C_MTXPerspective = 0x801C13A0; + C_MTXOrtho = 0x801C1490; + + GXSetVtxDesc = 0x801C3900; + GXClearVtxDesc = 0x801C41B0; + GXSetVtxAttrFmt = 0x801C41F0; + GXSetArray = 0x801C48C0; + GXInvalidateVtxCache = 0x801C4900; + GXSetTexCoordGen2 = 0x801C4910; + GXSetNumTexGens = 0x801C4B60; + GXBegin = 0x801C56B0; + GXSetCullMode = 0x801C59A0; + GXInitLightAttn = 0x801C6570; + GXInitLightSpot = 0x801C65B0; + GXInitLightDistAttn = 0x801C6750; + GXInitLightPos = 0x801C6820; + GXInitLightDir = 0x801C6850; + GXInitSpecularDir = 0x801C68A0; + GXInitLightColor = 0x801C69B0; + GXLoadLightObjImm = 0x801C69C0; + GXSetChanAmbColor = 0x801C6A40; + GXSetChanMatColor = 0x801C6B20; + GXSetNumChans = 0x801C6C00; + GXSetChanCtrl = 0x801C6C30; + GXInitTexObj = 0x801C6ED0; + GXInitTexObjCI = 0x801C70E0; + GXInitTexObjLOD = 0x801C7130; + GXInitTexObjTlut = 0x801C7260; + GXInitTexObjWrapMode = 0x801C7240; + GXLoadTexObj = 0x801C7600; + GXInvalidateTexAll = 0x801C7800; + GXSetTevDirect = 0x801C8270; + GXSetTevOp = 0x801C8390; + GXSetTevColorIn = 0x801C8430; + GXSetTevAlphaIn = 0x801C8470; + GXSetTevColorOp = 0x801C84B0; + GXSetTevAlphaOp = 0x801C8510; + GXSetTevColor = 0x801C8570; + GXSetTevColorS10 = 0x801C85D0; + GXSetTevKColor = 0x801C8640; + GXSetTevKColorSel = 0x801C86A0; + GXSetTevKAlphaSel = 0x801C86F0; + GXSetTevSwapMode = 0x801C8740; + GXSetTevSwapModeTable = 0x801C8780; + GXSetAlphaCompare = 0x801C8800; + GXSetTevOrder = 0x801C88D0; + GXSetNumTevStages = 0x801C8A30; + GXSetFog = 0x801C8A60; + GXSetFogRangeAdj = 0x801C8DF0; + GXSetBlendMode = 0x801C8F00; + GXSetZMode = 0x801C8FB0; + GXSetZCompLoc = 0x801C8FF0; + GXSetDither = 0x801C90D0; + GXCallDisplayList = 0x801C9720; + GXSetProjection = 0x801C9980; + GXLoadPosMtxImm = 0x801C9A80; + GXLoadNrmMtxImm = 0x801C9B00; + GXSetCurrentMtx = 0x801C9BA0; + GXSetViewportJitter = 0x801C9D10; + GXSetViewport = 0x801C9D50; + GXDrawDone = 0x801C4FE0; + + GXWGFifo = 0xCC008000; + + TPLBind = 0x80228310; + TPLGet = 0x80228430; + + /* Gakenoko stuff */ + mHeapAllocatorSubclass_Link = 0x800690C0; + mHeapAllocatorSubclass_UnLink = 0x800690E0; + + GetResMdl = 0x80239F70; + GetResAnmChr = 0x8023A1F0; + GetResAnmTexPat = 0x8023A340; + + m3d__mdl_c__DoStuff = 0x80169ED0; + + __ashldi3 = 0x802DD4DC; + + _Z15fBase_c__DeletePv = 0x80162650; + fBase_c__Delete__FPv = 0x80162650; + + _Z13FindActorByIDj = 0x80162E40; + FindActorByID__FUi = 0x80162E40; + + EventTable = 0x8042A358; + dBgActorManager = 0x8042A0B8; + + ContinueBgActorSpawn = 0x8007EA9C; + + SomeModelAnimationClass_Setup = 0x80165210; + + EGGTSystem_Pointer = 0x8042A36C; + + dSys_c__RootHeapMEM1 = 0x8042A370; + dSys_c__RootHeapMEM2 = 0x8042A374; + + BG_GM_ptr = 0x8042A0B0; + instance__7dBgGm_c = 0x8042A0B0; + + BgActorDefs = 0x8042A0BC; + + _Z16GetPointerToTileP9BG_GM_haxtttPsb = 0x80077520; + GetPointerToTile__FP9BG_GM_haxUsUsUsPsb = 0x80077520; + + GameHeap1 = 0x80377F4C; + GameHeap2 = 0x80377F50; + WiimotePtr1 = 0x80377F88; + + continueFromFlagObjCheck = 0x807EBC64; + returnFromFlagObjCheck = 0x807EBC7C; + + Global5758 = 0x8042A228; + + EggControllerClassPtrMaybe = 0x8042A230; + + MEMGetTotalFreeSizeForExpHeap = 0x801D4920; + + sub_80064BD0 = 0x80064BD0; + sub_80166970 = 0x80166970; + sub_80166D10 = 0x80166D10; + + daEnGakeNoko_c__StateID_FoolMove = 0x80B14BC0; + + EnItem_BindAnimation_Continued = 0x80A291E4; + dAcPy_c__ChangePowerupWithAnimation = 0x80145C00; + PlayerProjectileShooting = 0x8013BCD0; + + PlayPlayerSound = 0x80057E70; + CreateActor = 0x80064610; + Actor_SearchByName = 0x80162E90; + + daEnItem_c__GetWhetherPlayerCanGetPowerupOrNot = 0x80A2BE60; + + returnFromGPSFASixth = 0x80141FF8; + + continuePlumberSetPowerupTexture = 0x800CA71C; + doneSettingThePowerupTexture = 0x800D483C; + doneSettingThePowerupTexture2 = 0x80141574; + + continuePlumberSetPowerupTextureDebug = 0x800CA6B4; + + ExitFromTileGodHack = 0x807E1684; + + SomeTable_802F5440 = 0x802F5440; + SomeTable_802F5580 = 0x802F5580; + SomeTable_802F56C0 = 0x802F56C0; + + BlahTable = 0x803255A8; + + TileTable = 0x802EFCB8; + + CurrentLevel = 0x80315E9D; + CurrentWorld = 0x80315E9C; + CurrentStartedArea = 0x80315E96; /*WRONG*/ + CurrentStartedEntrance = 0x80315E97; /*WRONG*/ + + GetRandomSeed = 0x800B2EC0; + RandomSeed = 0x8042A224; + + StrangeReplayValue1 = 0x80427C2E; + StrangeReplayValue2 = 0x8042A049; + StrangeReplayValue3 = 0x8042A04A; + + OSGetTime = 0x801B60C0; + OSTicksToCalendarTime = 0x801B61C0; + snprintf = 0x802E19D8; + continueFromReplayHookStart = 0x809246E4; + continueFromReplayEndHook = 0x8010223C; + returnFromRecorder = 0x800B60C0; + GetSomeGlobalClass = 0x80109450; + SomeUnknownClass5408 = 0x8042A578; + SomeWipeClass = 0x8042A720; + QueryGlobal5758 = 0x800B3B50; + + + .text : { + FILL (0) + + __text_start = . ; + *(.init) + *(.text) + __ctor_loc = . ; + *(.ctors) + __ctor_end = . ; + *(.dtors) + *(.rodata) + /**(.sdata)*/ + *(.data) + /**(.sbss)*/ + *(.bss) + *(.fini) + *(.rodata.*) + __text_end = . ; + } +} diff --git a/src/growup.s b/src/growup.s index 724ee4c..b8d8922 100755 --- a/src/growup.s +++ b/src/growup.s @@ -1113,6 +1113,140 @@ LakituBomb: +.global GlobalZOrderDeath +GlobalZOrderDeath: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalZorder + + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f8, 0(r11) + stfs f8, 0xB4(r28) + stfs f8, 0xC(r1) + + mtlr r0 + addi r1, r1, 0x60 + blr + +NormalZorder: + mtlr r0 + addi r1, r1, 0x60 + blr + + +.global PokeyZOrderDeath +PokeyZOrderDeath: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalPokeyZorder + + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f0, 0(r11) + stfs f0, 0xB4(r31) + + lwz r0, 0x5D0(r31) + blr + +NormalPokeyZorder: + lwz r0, 0x5D0(r31) + blr + + +.global PokeyZOrderDeathFreeze +PokeyZOrderDeathFreeze: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalPokeyZorderFreeze + + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f0, 0(r11) + stfs f0, 0xB4(r3) + + lwz r0, 0x604(r3) + blr + +NormalPokeyZorderFreeze: + lwz r0, 0x604(r3) + blr + + +.global PokeyZOrderDamage +PokeyZOrderDamage: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalPokeyZorderDamage + + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f0, 0(r11) + stfs f0, 0xB4(r31) + + mr r3, r31 + blr + +NormalPokeyZorderDamage: + mr r3, r31 + blr + + +.global GabonRockZOrderDeath +GabonRockZOrderDeath: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalGabonRockZorder + + stfs f0, 0xE8(r3) + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f0, 0(r11) + stfs f0, 0xB4(r3) + blr + +NormalGabonRockZorder: + stfs f0, 0xE8(r3) + blr + + +.global GabonRockZOrderDeathDrop +GabonRockZOrderDeathDrop: + + lis r10, ZOrderOn@h + ori r10, r10, ZOrderOn@l + lbz r10, 0(r10) + cmpwi r10, 0 + beq NormalGabonRockZorderDrop + + mr r31, r3 + lis r11, InFront@h + ori r11, r11, InFront@l + lfs f0, 0(r11) + stfs f0, 0xB4(r31) + blr + +NormalGabonRockZorderDrop: + mr r31, r3 + blr + + + .data .global GlobalSpriteSize @@ -1133,6 +1267,12 @@ SizerOn: .align 4 +.global ZOrderOn +ZOrderOn: + .byte 0 + +.align 4 + LookupTable: .float 1, 1, 1, 1, 0.25, 0.5, 0.75, 1.25, 1.5, 2, 2.5, 3, 4, 5, 8, 10 @@ -1142,6 +1282,9 @@ RiderLookupTable: PiranhaPosF: .float 4.0 +InFront: + .float 5500.0 + ConvertFloat: .word 0x43300000,0x0,0x43300000,0x80000000 diff --git a/src/levelspecial.cpp b/src/levelspecial.cpp index 5fd900d..7ad69ff 100644 --- a/src/levelspecial.cpp +++ b/src/levelspecial.cpp @@ -23,7 +23,7 @@ struct EventTable_t { u64 events;
// ...
};
-
+ extern EventTable_t *EventTable;
extern u16 TimeStopFlag; @@ -41,6 +41,7 @@ extern float GlobalSpriteSize; extern float GlobalSpriteSpeed; extern float GlobalRiderSize; extern char SizerOn; +extern char ZOrderOn; float GlobalSizeFloatModifications [] = {1, 0.25, 0.5, 0.75, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7, 8, 10 }; @@ -48,7 +49,7 @@ float GlobalRiderFloatModifications [] = {1, 0.6, 0.7, 0.9, 1, 1, 1, 1.1, 1.25, -extern "C" void GetSpecificPlayerActor(int number); +extern "C" dAc_Py_c *GetSpecificPlayerActor(int number); void LevelSpecial_Update(LevelSpecial *self);
bool ResetAfterLevel(); @@ -73,6 +74,7 @@ bool ResetAfterLevel(void) { SizerOn = 0; AlwaysDrawFlag = 0x9421FFF0; AlwaysDrawBranch = 0x7C0802A6; + ZOrderOn = 0; return true;
}
@@ -146,10 +148,74 @@ void LevelSpecial_Update(LevelSpecial *self) { break; case 4: // Mario Size + dAc_Py_c *Mario; if (self->effect == 0) //Super Size + { MarioSize = 4.0; + + for(int n=0; n<4; n++) { + OSReport("Changing Physics for Player %d\n", n); + Mario = GetSpecificPlayerActor(n); + OSReport("Player Actor at %08x\n", Mario); +// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter * 4.0; +// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge * 4.0; +// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter * 4.0; +// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge * 4.0; +// + Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter * 4.0; + Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge * 4.0; + Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter * 4.0; + Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge * 4.0; +// +// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter * 4.0; +// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge * 4.0; +// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter * 4.0; +// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge * 4.0; +// +// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter * 4.0; +// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge * 4.0; +// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter * 4.0; +// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge * 4.0; +// +// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter * 4.0; +// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge * 4.0; +// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter * 4.0; +// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge * 4.0; + } + } + else //Half-Pint + { MarioSize = 0.25; + + for(int n=0; n<4; n++) { + Mario = GetSpecificPlayerActor(n); + Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter * 0.25; + Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge * 0.25; + Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter * 0.25; + Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge * 0.25; + + Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter * 0.25; + Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge * 0.25; + Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter * 0.25; + Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge * 0.25; + + Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter * 0.25; + Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge * 0.25; + Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter * 0.25; + Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge * 0.25; + + Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter * 0.25; + Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge * 0.25; + Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter * 0.25; + Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge * 0.25; + + Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter * 0.25; + Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge * 0.25; + Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter * 0.25; + Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge * 0.25; + } + } break; @@ -178,7 +244,10 @@ void LevelSpecial_Update(LevelSpecial *self) { } break; - + case 7: // Z Order Hack + ZOrderOn = 1; + break; + default: break; } @@ -207,7 +276,74 @@ void LevelSpecial_Update(LevelSpecial *self) { break; case 4: // Mario Size - MarioSize = 1.0; + dAc_Py_c *Mario; +// if (self->effect == 0) //Super Size +// { +// MarioSize = 4.0; +// +// for(int n=0; n<4; n++) { +// OSReport("Changing Physics for Player %d\n", n); +// Mario = GetSpecificPlayerActor(n); +// OSReport("Player Actor at %08x\n", Mario); +// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter / 4.0; +// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge / 4.0; +// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter / 4.0; +// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge / 4.0; +// +// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter / 4.0; +// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge / 4.0; +// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter / 4.0; +// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge / 4.0; +// +// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter / 4.0; +// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge / 4.0; +// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter / 4.0; +// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge / 4.0; +// +// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter / 4.0; +// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge / 4.0; +// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter / 4.0; +// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge / 4.0; +// +// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter / 4.0; +// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge / 4.0; +// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter / 4.0; +// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge / 4.0; +// } +// } +// +// else //Half-Pint +// { +// MarioSize = 0.25; +// +// for(int n=0; n<4; n++) { +// Mario = GetSpecificPlayerActor(n); +// Mario->aPhysics.info.xDistToCenter = Mario->aPhysics.info.xDistToCenter / 0.25; +// Mario->aPhysics.info.xDistToEdge = Mario->aPhysics.info.xDistToEdge / 0.25; +// Mario->aPhysics.info.yDistToCenter = Mario->aPhysics.info.yDistToCenter / 0.25; +// Mario->aPhysics.info.yDistToEdge = Mario->aPhysics.info.yDistToEdge / 0.25; +// +// Mario->bPhysics.info.xDistToCenter = Mario->bPhysics.info.xDistToCenter / 0.25; +// Mario->bPhysics.info.xDistToEdge = Mario->bPhysics.info.xDistToEdge / 0.25; +// Mario->bPhysics.info.yDistToCenter = Mario->bPhysics.info.yDistToCenter / 0.25; +// Mario->bPhysics.info.yDistToEdge = Mario->bPhysics.info.yDistToEdge / 0.25; +// +// Mario->cPhysics.info.xDistToCenter = Mario->cPhysics.info.xDistToCenter / 0.25; +// Mario->cPhysics.info.xDistToEdge = Mario->cPhysics.info.xDistToEdge / 0.25; +// Mario->cPhysics.info.yDistToCenter = Mario->cPhysics.info.yDistToCenter / 0.25; +// Mario->cPhysics.info.yDistToEdge = Mario->cPhysics.info.yDistToEdge / 0.25; +// +// Mario->dPhysics.info.xDistToCenter = Mario->dPhysics.info.xDistToCenter / 0.25; +// Mario->dPhysics.info.xDistToEdge = Mario->dPhysics.info.xDistToEdge / 0.25; +// Mario->dPhysics.info.yDistToCenter = Mario->dPhysics.info.yDistToCenter / 0.25; +// Mario->dPhysics.info.yDistToEdge = Mario->dPhysics.info.yDistToEdge / 0.25; +// +// Mario->ePhysics.info.xDistToCenter = Mario->ePhysics.info.xDistToCenter / 0.25; +// Mario->ePhysics.info.xDistToEdge = Mario->ePhysics.info.xDistToEdge / 0.25; +// Mario->ePhysics.info.yDistToCenter = Mario->ePhysics.info.yDistToCenter / 0.25; +// Mario->ePhysics.info.yDistToEdge = Mario->ePhysics.info.yDistToEdge / 0.25; +// } +// } break; case 5: // Global Enemy Size @@ -228,6 +364,10 @@ void LevelSpecial_Update(LevelSpecial *self) { AlwaysDrawBranch = 0x7C0802A6; break; + case 7: // Z Order Hack + ZOrderOn = 0; + break; + default: break; } diff --git a/src/spritespawner.cpp b/src/spritespawner.cpp index 7468bbb..911ae8a 100755 --- a/src/spritespawner.cpp +++ b/src/spritespawner.cpp @@ -15,7 +15,8 @@ struct SpriteSpawner { u64 eventFlag; // 0x3D0
u16 type; // 0x3D4
u32 inheritSet; // 0x3D6
- u8 lastEvState; // 0x3DA
+ u8 lastEvState; // 0x3DA + dStageActor_c *createdActor;
};
struct EventTable_t {
@@ -31,7 +32,7 @@ struct VEC { extern EventTable_t *EventTable;
-extern "C" void CreateActor(u16 classID, int settings, VEC pos, char rot, char layer); +extern "C" dStageActor_c *CreateActor(u16 classID, int settings, VEC pos, char rot, char layer); void SpriteSpawner_Update(SpriteSpawner *self);
@@ -60,7 +61,6 @@ bool SpriteSpawner_Create(SpriteSpawner *self) { }
bool SpriteSpawner_Execute(SpriteSpawner *self) {
- OSReport("Events: %08x%08x", EventTable->events >> 32, EventTable->events & 0xFFFFFFFF);
SpriteSpawner_Update(self);
return true;
}
@@ -72,15 +72,25 @@ void SpriteSpawner_Update(SpriteSpawner *self) { { // Put an action for when the event turns on here - VEC pos; - pos.x = self->x; - pos.y = self->y; - pos.z = self->z; - - OSReport("Spawning Sprite: %d at %f,%f,%f\n", self->type, pos.x, pos.y, pos.z);
- - CreateActor(self->type, self->inheritSet, pos, 0, 0); - - EventTable->events = EventTable->events & ~self->eventFlag; + if (self->createdActor == 0) + { + VEC pos; + pos.x = self->x; + pos.y = self->y; + pos.z = self->z; + + OSReport("Spawning Sprite: %d at %f,%f,%f\n", self->type, pos.x, pos.y, pos.z);
+ + self->createdActor = CreateActor(self->type, self->inheritSet, pos, 0, 0); + } +// EventTable->events = EventTable->events & ~self->eventFlag; + } + else + { + self->x = self->createdActor->pos.x; + self->y = self->createdActor->pos.y; + self->z = self->createdActor->pos.z; + self->createdActor->Delete(); + self->createdActor = 0; }
} |