Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 43.24 KB | None | 0 0
  1.  
  2. #pragma once
  3.  
  4. #include "ghs.h"
  5. #include "actors.h"
  6. #include "effects.h"
  7. #include "nw4f.h"
  8. #include "enums.h"
  9.  
  10. class Actor;
  11. class Collider;
  12. class StageActor;
  13. class PhysicsActor;
  14. class StateActor;
  15. class Enemy;
  16. class PlayableBase;
  17. class Player;
  18. class Yoshi;
  19. class Physics;
  20. class Profile;
  21.  
  22. /*************
  23.  * STATES
  24.  ******/
  25. #define IMPORT_STATE(CLASS, NAME) static State<Class> StateID_##NAME
  26.  
  27. #define DECLARE_STATE(CLASS, NAME) \
  28.     static State<CLASS> StateID_##NAME; \
  29.     void beginState_##NAME(); \
  30.     void executeState_##NAME(); \
  31.     void endState_##NAME();
  32.    
  33. #define CREATE_STATE(CLASS, NAME) \
  34.     State<CLASS> CLASS::StateID_##NAME \
  35.         (&CLASS::beginState_##NAME, \
  36.         &CLASS::executeState_##NAME, \
  37.         &CLASS::endState_##NAME);
  38.  
  39. #define NINTENDO_STATE(Yoshi, DefaultState) extern static State<Yoshi> StateID_DefaultState;
  40.  
  41. /***********
  42.  * CLASSES
  43.  *******/
  44.  
  45. class LevelInfo : public sead::IDisposer {
  46.     public:
  47.         static LevelInfo *instance;
  48.         u8 world;
  49.         u8 level;
  50.         u8 area;
  51.         u8 entrance;
  52.         u32 zone;
  53.         u32 entranceType;
  54.         u8 destWorld;
  55.         u8 destLevel;
  56.         u8 destArea;
  57.         u8 destEntrance;
  58.         u32 _20;
  59. };
  60.  
  61. struct Location {
  62.     u16 x;
  63.     u16 y;
  64.     u16 w;
  65.     u16 h;
  66.     u8 id;
  67. };
  68.  
  69. class LevelArea {
  70.     /* incomplete */
  71.     public:
  72.         Location *getLocationById(Rect *dst, u8 id);
  73. };
  74.  
  75. class Level {
  76.     public:
  77.         static Level *instance;
  78.         LevelArea *getArea(u8 areaNum);
  79. };
  80.  
  81. struct ActorInfo {
  82.     s32 xoffs;
  83.     s32 yoffs;
  84.     u32 _8;
  85.     u32 _C;
  86.     u32 _10;
  87.     u32 _14;
  88.     u16 _18;
  89.     u16 _1A;
  90.     u32 _1C;
  91.     u16 flags;
  92.     u16 _22;
  93. };
  94.  
  95. struct ActorBuildInfo {
  96.     u32 settings;
  97.     u32 settings2;
  98.     u32 parentId;
  99.     Profile *profile;
  100.     Vec3 position;
  101.     u32 rotation;
  102.     u8 layer;
  103.     u8 Nybble3_4;
  104.     u8 Nybble1_2;
  105.     u8 _23;
  106.     u8 movementId;
  107.     u8 linkId;
  108.     u8 spriteDataField14;
  109.     u8 _27;
  110.     u32 spriteRelated;
  111. };
  112.  
  113. class Profile {
  114.     public:
  115.         Profile(Actor *(ActorBuildInfo *), Actors actorId, const char * name, const ActorInfo * info, u32);
  116.  
  117.         Actor *buildMethod;
  118.         u32 profileId;
  119.         ActorInfo *actorInfo;
  120.         u8 resourceRelated;
  121.         u8 _D;
  122.         u8 _E;
  123.         u8 _F;
  124.         u32 _10;
  125.    
  126.         static Profile *Get(Actors);
  127. };
  128.    
  129. class LevelCamera : public sead::IDisposer {   
  130.     public:    
  131.         static LevelCamera *instance;      
  132.            
  133.         float _10;     
  134.         float _14;     
  135.         Rect zoneBox;      
  136.         Rect someRects[4];     
  137.         float cameraWidth;     
  138.         float cameraHeight;    
  139.         float cameraLeft;      
  140.         float cameraCenterX;       
  141.         float cameraRight;     
  142.         float cameraTop;       
  143.         float cameraCenterY;       
  144.         float cameraBottom;    
  145.         //.... zoom area, scroll limit, etc.       
  146. };
  147. class LevelTimer : public sead::IDisposer {
  148.     public:
  149.         static LevelTimer *instance;
  150.         u32 timeLimit;
  151.         u32 startTimeLimit;
  152.         bool hurryUp;
  153.         bool _1D;
  154.         bool _1E;
  155.         bool _1F;
  156.    
  157.         ~LevelTimer();
  158.    
  159.         void addSeconds(u32 amount);
  160. };
  161.  
  162. struct trigStuff {
  163.     u8 stuff[0x30];
  164. };
  165.  
  166. class ResFile {
  167.     /* Incomplete */
  168.     public:
  169.     virtual void vf0C();
  170.     virtual void vf14();
  171.     virtual void vf1C();
  172.     virtual void vf24();
  173.     virtual void vf2C();
  174.     virtual void vf34();
  175.     virtual void vf3C();
  176.     virtual void vf44();
  177.     virtual void vf4C();
  178.     virtual void vf54();
  179.     virtual void vf5C();
  180.     virtual void vf64();
  181.     virtual void vf6C();
  182.     virtual void vf74();
  183.     virtual void vf7C(trigStuff *);
  184.     virtual void vf84();
  185.     virtual void vf8C(Vec3 *);
  186.     /* ........ */
  187. };
  188.  
  189. class ResArchive {
  190.     /* Incomplete */
  191.     public:
  192.     ResFile * getResFile(sead::String filename, u32, u32, u32, u32, u32, u32, u32);
  193. };
  194.  
  195. class ModelAnimBlarg {
  196.     public:
  197.     float _0;
  198.     float _4;
  199.     float _8;
  200.     float _C;
  201.     float frame;
  202.     float _14;
  203.     u32 flags;
  204.    
  205.     void loadAnim(ResArchive * archive, sead::String * filename);
  206.     void playAnim(ResArchive * archive, sead::String * filename);
  207.     void setRepeat(bool);
  208. };
  209.  
  210. struct ModelAnimThing {
  211.     u32 _0;
  212.     ModelAnimBlarg **instances;
  213. };
  214.  
  215. class Model {
  216.     public:
  217.     ResFile *resFile;
  218.     u32 _4;
  219.     ModelAnimThing anim;
  220.     ModelAnimThing _10;
  221.     ModelAnimThing _18;
  222.     ModelAnimThing _20;
  223.     ModelAnimThing _28;
  224.    
  225.     Model(ResFile * model, u32, u32, u32, u32, u32);
  226.     void setup(ResArchive * archive, u32, u32);
  227.     void update();
  228. };
  229.  
  230. struct Model2Thing {
  231.     float _0;
  232.     float _4;
  233.     float _8;
  234.     float _C;
  235.     u8 _10;
  236.     u8 _11;
  237.     u8 _12;
  238.     u8 _13;
  239. };
  240.  
  241. class Model2 : public Model {
  242.     public:
  243.     Model2Thing _30;
  244.     u32 _44;
  245.    
  246.     Model2(ResFile * model, u32, u32, u32, u32, u32);
  247.     void setup(ResArchive * archive, u32, u32);
  248.     void update();
  249. };
  250.  
  251. class CharacterModel {
  252.     public:
  253.         u32 _0;
  254.         u32 _4;
  255.         u32 _8;
  256.         u32 _C;
  257.         u32 *resArchive1;
  258.         u32 *resArchive2;
  259.         u32 *otherPtr;
  260.         u32 _1C;
  261.         u32 _20;
  262.         u32 _24;
  263.         u32 _28;
  264.         u32 _2C;
  265.         u32 _30;
  266.         u32 _34;
  267.         u32 _38;
  268.         u32 _3C;
  269.         u32 _40;
  270.         u32 _44;
  271.         u32 _48;
  272.         u32 _4C;
  273.         u32 _50;
  274.         u32 _54;
  275.         u32 _58;
  276.         u32 _5C;
  277.         u32 _60;
  278.         u32 _64;
  279.         u32 _68;
  280.         u32 _6C;
  281.         u32 _70;
  282.         u32 _74;
  283.         u32 _78;
  284.         u32 _7C;
  285.         u32 _80;
  286.         u32 _84;
  287.         u32 _88;
  288.         u32 _8C;
  289.         u32 _90;
  290.         u32 _94;
  291.         u32 _98;
  292.         u32 _9C;
  293.         u32 _A0;
  294.         u32 _A4;
  295.         u32 _A8;
  296.         u32 _AC;
  297.         u32 _B0;
  298.         float _B4;
  299.         float _B8;
  300.         float _BC;
  301.         float _C0;
  302.         u32 _C4;
  303.         u32 _C8;
  304.         u32 _CC;
  305.         u32 _D0;
  306.         u32 _D4;
  307.         u32 _D8;
  308.         u32 _DC;
  309.         u32 _E0;
  310.         u32 _E4;
  311.         u32 _E8;
  312.         u32 _EC;
  313. };
  314.  
  315. class YoshiModel : public CharacterModel {
  316.     public:
  317.         void loadAnimAndTexture(sead::String *texture, sead::String *anim);
  318.         float _28DD234();
  319.         u32 _28DDEAC(float floatarg);
  320.         bool doSomeCheckRelatedToTongue();
  321. };
  322.  
  323. class YoshiInteraction {
  324.     public:
  325.         u32 _0;
  326.         u32 _4;
  327.         u32 _8;
  328.         u32 spitType;
  329.         float _10;
  330.         float _14;
  331.         float _18;
  332.         u32 _1C;
  333.         u32 _20;
  334.  
  335. };
  336.  
  337. class AdditionalActorHeap : public sead::IDisposer {
  338.     public:
  339.     sead::Heap *heap;
  340.     ~AdditionalActorHeap();
  341. };
  342.  
  343. class PlatformModel {
  344.     public:
  345.         ResArchive *archive;
  346.         Model *models[3];
  347.         Model *models2[30];
  348.         Vec3 position;
  349.         Vec3 _94;
  350.         Vec3 _A0;
  351.         Vec3 _AC;
  352.         Vec3 _B8;
  353.         Vec3i rotation;
  354.         float fwidth;
  355.         float fwidth2;
  356.         float _D8;
  357.         u32 width;
  358.         PlatformType type;
  359.         float scale;
  360.         u8 _E8;
  361.         u8 _E9;
  362.         u8 _EA;
  363.         u8 _EB;
  364.                
  365.         void init();
  366.         void update(Vec3 *pos, float width);
  367.         void draw();
  368.            
  369.         inline PlatformModel() {       
  370.             scale = 1.0;       
  371.         }      
  372. };
  373.  
  374. class ResLoader {
  375.     public:
  376.         static ResLoader *instance;
  377.         u8 _0[0x4428];
  378.    
  379.         ResArchive *getResArchive(sead::String filename);
  380. };
  381.  
  382. class Drawer {
  383.     public:
  384.         static Drawer *instance;
  385.         void drawModel(Model * model);
  386.         void drawTile(u32 tileNumber, Vec3 *pos, u32 *zrot, Vec3 *scale);
  387. };
  388.  
  389. typedef void (*collisionCallback)(Collider *one, Collider *two);
  390.  
  391. class EventMgr : sead::IDisposer {
  392.     public:
  393.         static EventMgr *instance;
  394.         u64 events;
  395.         u8 _18[0x940-0x18];
  396. };
  397.  
  398. class TileMgr : public sead::IDisposer {
  399.     public:
  400.         static TileMgr *instance;
  401.  
  402.         void *d_bgchk_data;    
  403.         float liquidTop;       
  404.         float liquidTop2;      
  405.         float waveFloats[1280];    
  406.         float waveFloats2[1280];       
  407.         u8 waveType;       
  408.         u8 hasWaves;       
  409.         u8 _281E;      
  410.         u8 _281F;      
  411.         u32 liquidType;
  412.  
  413.         static u16 *getTilePointer(u16 x, u16 y, u8 layer, u32 *dstBlockIdx);
  414. };
  415.  
  416. class CollThing {
  417.     public:
  418.         u8 _0[0x18];
  419.         u32 _18;
  420.         u32 _1C;
  421.    
  422.         CollThing();
  423. };
  424.  
  425. class OtherColliderBase : public sead::IDisposer {
  426.     public:
  427.     u8 _10[0xC * 8];
  428.     Rect rect;
  429.     Vec2 _80;
  430.     u32 _88;
  431.     u32 _8C;
  432.     u32 _90;
  433.     u32 _94;
  434.     u32 _98;
  435.     u32 _9C;
  436.     u32 _A0;
  437.     u32 _A4;
  438.     u32 _A8;
  439.     Vec2 _AC[6];
  440.     u8 _DC;
  441.     u8 _DD;
  442.     u8 _DE;
  443.     u8 _DF;
  444.     u32 _E0;
  445.     float _E4[4];
  446.     u32 zrot;
  447.     u32 _F8;
  448.     u8 _FC[0xC * 4];
  449.     u32 _12C;
  450.     u32 _130;
  451.     u32 _134;
  452.     u32 _138;
  453.     u32 _13C;
  454.     u32 _140;
  455.     u32 _144;
  456.     u32 _148;
  457.     u32 _14C;
  458.     u32 _150;
  459.     u32 _154;
  460.    
  461.     OtherColliderBase();
  462.    
  463.     virtual ~OtherColliderBase();
  464.     virtual bool checkDerivedRuntimeTypeInfo(void *);
  465.     virtual void vf1C(); //deleted
  466.     virtual bool vf24(u32 *, u32);
  467.     virtual void vf2C(); //deleted
  468.     virtual void vf34() = 0;
  469.     virtual void updateMovement() = 0;
  470.     virtual bool vf44(void *, u16 *, Vec2 *, Vec2 *, u32) = 0;
  471.     virtual bool vf4C(void *, Vec2 *, Vec2 *, u32, void *) = 0;
  472.     virtual bool vf54(u8 *, Vec2 *) = 0;
  473.     virtual void vf5C() = 0; //pure, deleted by subclasses
  474.     virtual void vf64();
  475.     virtual void vf6C() = 0;
  476.     virtual void vf74(u32 *) = 0; //u32[2]
  477.     virtual bool vf7C(Vec2 *) = 0;
  478. };
  479.  
  480. class CustomCollider : public OtherColliderBase {
  481.     public:
  482.     u8 _158[0x18];
  483.    
  484.     CustomCollider(u32, Vec2 *, CollThing *, CollThing *);
  485.    
  486.     ~CustomCollider();
  487.     bool checkDerivedRuntimeTypeInfo(void *);
  488.     //bool vf24(u32 *, u32);
  489.     void vf34();
  490.     void updateMovement();
  491.     bool vf44(void *, u16 *, Vec2 *, Vec2 *, u32);
  492.     bool vf4C(void *, Vec2 *, Vec2 *, u32, void *);
  493.     bool vf54(u8 *, Vec2 *);
  494.     void vf5C(); //deleted
  495.     void vf64();
  496.     void vf6C();
  497.     void vf74(u32 *);
  498.     bool vf7C(Vec2 *);
  499. };
  500.  
  501. struct SolidCollisionInfo {
  502.     float _0[4];
  503.     float _10[4];
  504.     u32 rot;
  505. };
  506.  
  507. class SolidCollider : public CustomCollider {
  508.     public:
  509.     Vec2 _170[4];
  510.     CollThing _190[4];
  511.     CollThing _210[4];
  512.    
  513.     inline SolidCollider() : CustomCollider(4, _170, _190, _210) {}
  514.    
  515.     void init(StageActor *, SolidCollisionInfo *);
  516.    
  517.     ~SolidCollider();
  518.     bool checkDerivedRuntimeTypeInfo(void *);
  519.     //bool vf24(u32 *, u32);
  520.     bool vf54(u8 *, Vec2 *);
  521. };
  522.  
  523. struct SolidOnTopCollisionInfo {
  524.     float _0[4];
  525.     float *stuff;
  526.     u32 rot;
  527. };
  528.  
  529. class SolidOnTopCollider : public OtherColliderBase {
  530.     public:
  531.         u32 _158[2];
  532.         u32 _160[2];
  533.         u32 _168[2];
  534.         u32 _16C;
  535.         float _170;
  536.        
  537.         SolidOnTopCollider();
  538.    
  539.         void init(StageActor *, SolidOnTopCollisionInfo *, u32, u32);
  540.    
  541.         ~SolidOnTopCollider();
  542.         bool checkDerivedRuntimeTypeInfo(void *);
  543.         //bool vf24(u32 *, u32);
  544.         void vf34();
  545.         void updateMovement();
  546.         bool vf44(void *, u16 *, Vec2 *, Vec2 *, u32);
  547.         bool vf4C(void *, Vec2 *, Vec2 *, u32, void *);
  548.         bool vf54(u8 *, Vec2 *);
  549.         void vf5C(); //deleted
  550.         void vf64();
  551.         void vf6C();
  552.         void vf74(u32 *);
  553.         bool vf7C(Vec2 *);
  554. };
  555.  
  556. class OtherCollisionMgr {
  557.     public:
  558.         static OtherCollisionMgr *instance;
  559.         void add(OtherColliderBase *);
  560. };
  561.  
  562. struct CollisionInfo {
  563.     float x;
  564.     float y;
  565.     float w;
  566.     float h;
  567.     u32 someKindOfFlag;
  568.     u32 _14;
  569.     u32 _18;
  570.     u32 _1C;
  571.     u32 _20;
  572.     u32 flags;
  573.     collisionCallback callback;
  574. };
  575.  
  576. class Collider : public sead::IDisposer {
  577.     public:
  578.         u8 _10[0x40 - 0x10];
  579.         StageActor *owner;
  580.         u32 somethingOwnerRelated;
  581.         u32 _48;
  582.         u32 _4C;
  583.         u32 _50;
  584.         Vec2 _54;
  585.         u32 _5C;
  586.         u32 _60;
  587.         u32 _64;
  588.         u32 _68;
  589.         u8 stageActorField57;
  590.         u8 layer;
  591.         u8 flags;
  592.         u8 _6F;
  593.         u32 _70;
  594.         CollisionInfo collisionInfo;
  595.         u8 _A0[0x128 - 0xA0];
  596.        
  597.         void setup(StageActor *, const CollisionInfo *, u32);
  598.        
  599.         ~Collider();
  600. };
  601.  
  602. class CollisionMgr : public sead::IDisposer {
  603.     public:
  604.         static CollisionMgr *instance;
  605.         sead::PtrArrayImpl colliderList1;
  606.         sead::PtrArrayImpl list2;
  607.         sead::PtrArrayImpl list3;
  608.         sead::PtrArrayImpl list4;
  609.        
  610.         void addCollider(Collider *);
  611. };
  612.  
  613. class WeirdBase {
  614.     public:
  615.     u8 _0;
  616.     u8 _1;
  617.     u8 _2;
  618.     u8 _3;
  619.     u32 _4;
  620.     u32 _8;
  621.     u32 _C;
  622.     sead::PtrArrayImpl someList;
  623.     u32 someList_C;
  624.     u8 someListBuffer[0xA * 4];
  625.     u32 _48;
  626. };
  627.  
  628. struct UsedByPhysics {
  629.     u32 _0;
  630.     Physics *physics;
  631.     u32 _8;
  632. };
  633.  
  634. struct UsedByPhysics2 {
  635.     u32 _0;
  636.     u32 _4;
  637. };
  638.  
  639. struct UsedByPhysics3 {
  640.     float max1;
  641.     float max2;
  642.     float min1;
  643.     float min2;
  644. };
  645.  
  646. struct UsedByPhysics4 {
  647.     u8 _0[0x30];
  648. };
  649.  
  650. class UsedByPhysics5b {
  651.     public:
  652.     u8 _0;
  653.     u8 _1;
  654.     u8 _2;
  655.     u8 _3;
  656.     u32 _4;
  657.     u32 _8;
  658.     Vec2 _C;
  659.     Vec2 _14;
  660.     u32 _1C;
  661.     u32 _20;
  662.     u32 _24;
  663.     u32 _28;
  664.     u32 _2C;
  665.     float _30;
  666.     u32 _34;
  667. };
  668.  
  669. class UsedByPhysics5a {
  670.     public:
  671.     UsedByPhysics5b _0[6];
  672. };
  673.  
  674. struct UsedByPhysics5 {
  675.     UsedByPhysics5a _0[4];
  676. };
  677.  
  678. class Physics : public WeirdBase {
  679.     public:
  680.     void *_4C;
  681.     Physics *self;
  682.     sead::PtrArrayImpl someList2;
  683.     u8 someList2Buffer[0x200 * 4];
  684.     UsedByPhysics _860[4];
  685.     u32 _890;
  686.     u32 _894;
  687.     u32 _898;
  688.     u32 _89C;
  689.     u32 _8A0;
  690.     u32 _8A4;
  691.     u32 _8A8;
  692.     CollisionFlags collisionFlags[2];
  693.     UsedByPhysics3 _8B4[5];
  694.     Vec2 _904;
  695.     float _90C;
  696.     u32 _910;
  697.     u8 _914;
  698.     u8 _915;
  699.     u8 _916;
  700.     u8 _917;
  701.     u8 _918[0x10];
  702.     UsedByPhysics4 _928[3];
  703.     u8 _9B8[0x18];
  704.     u16 _9D0;
  705.     u16 _9D2;
  706.     UsedByPhysics2 _9D4[4];
  707.     u8 _9F4[0x10];
  708.     u8 _A04[0x10];
  709.     u32 _A14;
  710.     UsedByPhysics5 _A18[2];
  711.     u8 _1498[0x20];
  712.     u8 _14B8[0x20];
  713.     u32 _14D8;
  714.    
  715.     Physics();
  716.    
  717.     void init(StageActor *, Vec3 *, Vec3 *, Vec3 *);
  718.    
  719.     virtual void vf0C(); //deleted
  720.     virtual void vf14(); //deleted
  721.     virtual ~Physics();
  722.     virtual void processCollisions();
  723.     virtual void vf2C();
  724.     virtual void vf34();
  725.     virtual u32 vf3C(); //pure
  726.     virtual u32 vf44(void *, u32); //pure
  727.     virtual u32 vf4C(); //pure
  728.     virtual void vf54();
  729.     virtual void vf5C();
  730.     virtual void vf64();
  731.     virtual void vf6C(u32);
  732. };
  733.  
  734. class ActorPhysics : public Physics {
  735.     public:
  736.     ActorPhysics();
  737.    
  738.     u32 vf3C();
  739.     u32 vf44(void *, u32);
  740.     u32 vf4C();
  741. };
  742.  
  743. class PlayerPhysics : public Physics {
  744.     public:
  745.     PlayerPhysics();
  746.    
  747.     u32 _14E0;
  748.     u32 _14E4;
  749.     u32 _14E8;
  750.     u8 _14EC;
  751.     u8 _14ED;
  752.     u16 _14EE;
  753.     u8 _14F0;
  754.     u8 _14F1;
  755.     u8 _14F2;
  756.     u8 _14F3;
  757.     u32 _14F4;
  758.     u32 _14F8;
  759.     float _14FC;
  760.     float _1500;
  761.     float _1504;
  762.     float _1508;
  763.     float _150C;
  764.     float _1510;
  765.     float _1514;
  766.     float _1518;
  767.     float _151C;
  768.     float _1520;
  769.     u32 _1524;
  770.     UsedByPhysics5b _1528;
  771.     UsedByPhysics5b _1560;
  772.     u32 _1598;
  773.     u32 _159C;
  774.    
  775.     ~PlayerPhysics();
  776.     void processCollisions();
  777.     void vf2C();
  778.     void vf34();
  779.     u32 vf3C();
  780.     u32 vf44(void *, u32);
  781.     u32 vf4C();
  782. };
  783.  
  784. extern u32 CurrentStateID;
  785.        
  786. class StateBase {
  787.     public:
  788.     u32 id;
  789.    
  790.     virtual ~StateBase();
  791.     virtual u32 getStateId();
  792. };
  793.  
  794. template <class TOwner>
  795. class State : public StateBase {
  796.     public:
  797.     typedef void (TOwner::*funcptr)();
  798.     State(funcptr begin, funcptr execute, funcptr end) {
  799.         id = ++CurrentStateID;
  800.         beginState = begin;
  801.         executeState = execute;
  802.         endState = end;
  803.     };
  804.  
  805.     funcptr beginState;
  806.     funcptr executeState;
  807.     funcptr endState;
  808. };
  809.  
  810. template <class TOwner>
  811. class StateMgrVirt {
  812.     virtual void vf0C(); //deleted;
  813.     virtual void *beginState(State<TOwner> *);
  814.     virtual void endState();
  815.     virtual void *changeState(State<TOwner> *);
  816.     virtual void clearState(void *);
  817.     virtual void beginRelated(void *);
  818. };
  819.  
  820. template <class TOwner> class StateMgr;
  821.  
  822. class StateClass {
  823.     public:
  824.     void *stateMgr;
  825.     u32 beginSomething;
  826.     u32 executeSomething;
  827.     u32 defaultSomething;
  828.    
  829.     void executeState();
  830. };
  831.  
  832. template <class TOwner>
  833. class StateMgrBase : public StateMgrVirt<TOwner> {
  834.     public:
  835.     void * executeRelated;
  836.     TOwner *owner;
  837.     u32 _C;
  838.     StateClass stateClass;
  839.     u32 _20;
  840. };
  841.  
  842. template <class TOwner>
  843. class StateMgr : public StateMgrBase<TOwner> {
  844.     public:
  845.         void *_24;
  846. };
  847.  
  848. class ActorList {
  849.     public:
  850.         u32 maxCount;
  851.         Actor **first;
  852.         u32 usedCount;
  853.         Actor **last;
  854.         u32 actorId;
  855.         u32 _14;
  856.    
  857.         Actor *findActorById(u32 * id);
  858. };
  859.  
  860. class ActorMgr : public sead::IDisposer {
  861.     public:
  862.         static ActorMgr *instance;
  863.  
  864.         void *playerUnitHeap;
  865.         void *actorUnitHeap;
  866.         u8 _18[0x5988-0x18];
  867.         sead::ListImpl createList;
  868.         sead::ListImpl deleteList;
  869.         sead::ListImpl activeActors;
  870.         sead::ListImpl drawnActors;
  871.         u8 _59C8[0x6A20-0x59C8];
  872.         ActorList actorList;
  873.         u8 _6A38[0x6A44-0x6A38];
  874.    
  875.         Actor *createActor(ActorBuildInfo *, u32);
  876.         Actor **findActorByType(Actors actorId, Actor **);
  877. };
  878.  
  879. class MovementHandler {
  880.     public:
  881.         Vec3 position;
  882.         Vec3 _C;
  883.         Vec3 _18;
  884.         Vec3 _24;
  885.         u8 _30[8];
  886.         u32 _38;
  887.         u8 _3C[20];
  888.         u32 zRotation;
  889.         u8 _54[12];
  890.         u8 _60[8];
  891.         u8 _68[8];
  892.         u32 _70;
  893.         u32 _74;
  894.         u32 _78;
  895.         u32 _7C;
  896.         u32 _80;
  897.         u8 _84[0x1C];
  898.         u32 _A0;
  899.         u32 _A4;
  900.         u32 _A8;
  901.         u8 _AC[24];
  902.         u8 _C4[12];
  903.         u32 _D0;
  904.         StateMgrBase<MovementHandler> state;
  905.    
  906.         MovementHandler();
  907.    
  908.         u32 getMaskForMovementType(MovementType type);
  909.         void linkToMovementController(Vec3 *actorPos, u32 typeMask, u8 movementId);
  910.         void execute();
  911. };
  912.  
  913. class Actor {
  914.     public:
  915.         void * heap;
  916.         u32 id;
  917.         Profile *profile;
  918.         bool wasNotDefered;
  919.         bool isSprite;
  920.         bool created;
  921.         bool deleted;
  922.         u32 settings;       // Nybble 5 - 12
  923.         u32 settings2;      // Nybble 13 - 20
  924.         u8 movementId;      // Nybble 21 - 22
  925.         u8 linkId;          // Nybble 23 - 24
  926.         u8 initStateFlag;   // Spritedata + 0x14
  927.         sead::ListImpl childList;
  928.         sead::ListNode childNode;
  929.         Actor *parent;
  930.         sead::ListNode actorListNode;
  931.         sead::ListNode drawListNode;
  932.         u32 _48;
  933.    
  934.         Actor(ActorBuildInfo *);
  935.        
  936.         void removeChild(Actor *);
  937.    
  938.         virtual bool checkDerivedRuntimeTypeInfo(void *);
  939.         virtual void vf14(); //deleted
  940.         virtual ~Actor();
  941.    
  942.         virtual int beforeCreate();
  943.         virtual int onCreate();
  944.         virtual void afterCreate(int);
  945.    
  946.         virtual int beforeExecute();
  947.         virtual int onExecute();
  948.         virtual void afterExecute(int);
  949.         virtual void finalExecute();
  950.    
  951.         virtual int beforeDraw();
  952.         virtual int onDraw();
  953.         virtual void afterDraw(int);
  954.    
  955.         virtual int beforeDelete();
  956.         virtual int onDelete();
  957.         virtual void afterDelete(int);
  958. };
  959.  
  960. class StageActor : public Actor {
  961.     public:
  962.         Direction direction;
  963.         u8 playerId;
  964.         u8 _55;
  965.         u8 layer;
  966.         u8 _57;
  967.         float XSpeed;
  968.         float TargetXspeed_maybe;
  969.         float Fallspeed;
  970.         float gravity;
  971.         float XAccel;
  972.         Vec3 position;
  973.         Vec3 speed;
  974.         Vec3 maxSpeed;
  975.         Vec3 scale;
  976.         Vec3i rotation;
  977.         u32 _A8;
  978.         u32 _AC;
  979.         u32 _B0;
  980.         Vec2 posDelta;
  981.         Collider collider;
  982.         Rect rect;
  983.         float _1F4;
  984.         float _1F8;
  985.         u32 _1FC;
  986.         u32 _200;
  987.         u32 _204;
  988.         u32 _208;
  989.         u8 zone;
  990.         PlayerType playerType;
  991.         u8 isActive;
  992.         u8 isVisible;
  993.         u8 _210;
  994.         u8 _211;
  995.         u8 _212;
  996.         u8 eventID_3_4;
  997.         u8 eventID_1_2;
  998.         u8 _215;
  999.         u8 actorInfoFlags;
  1000.         u8 _217;
  1001.         u32 _218;
  1002.         u32 _21C;
  1003.         u32 _220;
  1004.         u32 _224;
  1005.         u32 _228;
  1006.         u32 _22C;
  1007.         u32 profile0x10;
  1008.         Vec3 sizeRelated;
  1009.         Vec3 position2;
  1010.         Vec3 position3;
  1011.         Vec3 position4;
  1012.         YoshiInteraction *yoshiInteraction;
  1013.         u32 _268;
  1014.         u32 _26C;
  1015.         u32 _270;
  1016.         u32 _274;
  1017.         u8 *_278;
  1018.    
  1019.         StageActor(ActorBuildInfo *);
  1020.            
  1021.         Direction getDirectionToPlayer(Vec3 *);
  1022.        
  1023.         bool checkDerivedRuntimeTypeInfo(void *);
  1024.         ~StageActor();
  1025.         void afterCreate(int);
  1026.         int beforeExecute();
  1027.         void afterExecute(int);
  1028.         int beforeDraw();
  1029.    
  1030.         virtual void setPlayerId(u8);
  1031.         virtual void removeColliders();
  1032.         virtual void addColliders();
  1033.         virtual Physics * getPhysics();
  1034.         virtual void vfAC();
  1035.         virtual u32 vfB4();
  1036.         virtual void vfBC();
  1037.         virtual void vfC4();
  1038.         virtual void vfCC();
  1039.         virtual void vfD4();
  1040.         virtual void splashWater(Vec3);
  1041.         virtual void splashLava(Vec3);
  1042.         virtual void splashLava2(Vec3);
  1043.         virtual void splashPoison(Vec3);
  1044.         virtual bool isOffScreen();
  1045.         virtual void vf104();
  1046. };
  1047.  
  1048. class PhysicsActor : public StageActor {
  1049.     public:
  1050.     u32 _27C;
  1051.     ActorPhysics physics;
  1052.     u32 _1760;
  1053.     u32 _1764;
  1054.     Vec3 * positionPtr;
  1055.     u8 _176C;
  1056.     u8 _176D;
  1057.     u8 _176E;
  1058.     u8 _176F;
  1059.     u32 mightBeTileRelated;
  1060.     u32 _1774;
  1061.     u32 _1778;
  1062.     u32 _177C;
  1063.     u32 _1780;
  1064.     u32 _1784;
  1065.     float maxYSpeed;
  1066.     float minYSpeed;
  1067.     float pgravity;
  1068.     u8 _1794;
  1069.     u8 _1795;
  1070.     bool hasYSpeedLimitation;
  1071.     u8 _1797;
  1072.     u8 _1798;
  1073.     u8 _1799;
  1074.     u8 _179A;
  1075.     u8 _179B;
  1076.     u32 _179C;
  1077.    
  1078.     PhysicsActor(ActorBuildInfo *);
  1079.    
  1080.     void applyGravity();
  1081.    
  1082.     bool checkDerivedRuntimeTypeInfo(void *);
  1083.     ~PhysicsActor();
  1084.     void afterCreate(int);
  1085.     int beforeExecute();
  1086.     void afterExecute(int);
  1087.     int onDelete();
  1088.    
  1089.     void setPlayerId(u8);
  1090.     Physics *getPhysics();
  1091.     void vfAC();
  1092.     u32 vfB4();
  1093.     void vfBC();
  1094.     void vfC4();
  1095.     void vfCC();
  1096.     void vf104();
  1097.    
  1098.     virtual void vf10C(u8);
  1099.     virtual void vf114(); //deleted
  1100.     virtual void vf11C();
  1101.     virtual void vf124();
  1102.     virtual u32 vf12C();
  1103.     virtual void vf134(); //deleted
  1104.     virtual u32 vf13C();
  1105.     virtual void vf144();
  1106.     virtual void vf14C();
  1107.     virtual u32 vf154();
  1108.     virtual void move(Vec2 *);
  1109.     virtual void setYSpeed(float);
  1110.     virtual u32 vf16C();
  1111.     virtual u32 vf174();
  1112.     virtual void getRect(Rect *);
  1113.  
  1114. };
  1115.  
  1116. class StateActor : public PhysicsActor {
  1117.     public:
  1118.     StateMgr<StateActor> stateMgr;
  1119.    
  1120.     StateActor(ActorBuildInfo *);
  1121.    
  1122.     bool checkDerivedRuntimeTypeInfo(void *);
  1123.     ~StateActor();
  1124.    
  1125.     void setPlayerId(u8);
  1126.     Physics *getPhysics();
  1127.     void vfAC();
  1128.     u32 vfB4();
  1129.     void vfBC();
  1130.     void vfC4();
  1131.     void vfCC();
  1132.     void vf104();
  1133.    
  1134.     void vf10C(u8);
  1135.     void vf11C();
  1136.     void vf124();
  1137.     u32 vf12C();
  1138.     u32 vf154();
  1139.     void move(Vec2 *);
  1140.     void setYSpeed(float);
  1141.     u32 vf16C();
  1142.     u32 vf174();
  1143.     void getRect(Rect *);
  1144.  
  1145.     virtual void doStateChange(StateBase *);
  1146. };
  1147.  
  1148. struct IceInfo {
  1149.     u32 _0;
  1150.     float X;
  1151.     float Y;
  1152.     float Z;
  1153.     float _10;
  1154.     float _14;
  1155.     float _18;
  1156.     u32 _1C;
  1157. };
  1158.  
  1159. class IceActorMgr {
  1160.     public:
  1161.     u32 _0;
  1162.     u32 _4[0xC];
  1163.     u8 _34;
  1164.     u8 _35;
  1165.     u8 _36;
  1166.     u8 _37;
  1167.     u32 _38;
  1168.     Enemy *owner;
  1169.     u16 _40;
  1170.     u16 _42;
  1171.     u8 _44;
  1172.     u8 _45;
  1173.     u8 _46;
  1174.     u8 _47;
  1175.     u8 _48;
  1176.     u8 _49;
  1177.     u8 _4A;
  1178.     u8 _4B;
  1179.     u8 _4C;
  1180.     u8 _4D;
  1181.     u8 _4E;
  1182.     u8 _4F;
  1183.    
  1184.     bool freezeActor(IceInfo *, u32);
  1185. };
  1186.  
  1187. class EnemyClass2Base {
  1188.     public:
  1189.     Enemy *owner;
  1190.     u32 _4;
  1191.     u32 _8;
  1192.     u32 _C;
  1193.     u32 _10;
  1194.     u32 _14;
  1195.     void *_18;
  1196.    
  1197.     virtual void vf0C(u32); //calls vf35C on parent
  1198.     virtual void vf14(u32); //calls vf364 on parent
  1199.     virtual void vf1C(u32); //calls vf36C on parent
  1200.     virtual void vf24(u32);    //calls vf374 on parent
  1201. };
  1202.  
  1203. class EnemyClass2 : public EnemyClass2Base {
  1204.     public:
  1205.     void vf0C(u32);
  1206.     void vf14(u32);
  1207.     void vf1C(u32);
  1208.     void vf24(u32);
  1209. };
  1210.  
  1211. class Enemy : public StateActor {
  1212.     public:
  1213.     u32 _17C8;
  1214.     u32 _17CC;
  1215.     float _17D0;
  1216.     float _17D4;
  1217.     u32 _17D8;
  1218.     u32 _17DC;
  1219.     u8 _17E0;
  1220.     u8 _17E1;
  1221.     u8 _17E2;
  1222.     u8 _17E3;
  1223.     u16 _17E4[4];
  1224.     u32 _17EC;
  1225.     IceActorMgr iceMgr;
  1226.     EnemyClass2 _1840;
  1227.     Enemy *self;
  1228.     void *_1864;
  1229.     u8 _1868;
  1230.     u8 _1869;
  1231.     u8 _186A;
  1232.     u8 _186B;
  1233.     u16 _186C;
  1234.     u16 _186E;
  1235.     u32 _1870;
  1236.     u8 _1874;
  1237.     u8 _1875;
  1238.     u8 _1876;
  1239.     u8 _1877;
  1240.     u32 _1878;
  1241.     u8 _187C;
  1242.     u8 _187D;
  1243.     u8 _187E;
  1244.     u8 _187F;
  1245.    
  1246.     static void collisionCallback(Collider *, Collider *);
  1247.    
  1248.     void killWithPlayer(Player *, Vec2 *, State<Enemy> *);
  1249.     void spinJumpKill(Player *);
  1250.     void killWithYoshi(Yoshi *);
  1251.     HitType processHit(u32, Collider *);
  1252.     void updatePosition();
  1253.    
  1254.     Enemy(ActorBuildInfo *);
  1255.    
  1256.     bool checkDerivedRuntimeTypeInfo(void *);
  1257.     ~Enemy();
  1258.     int beforeExecute();
  1259.    
  1260.     void setPlayerId(u8);
  1261.     Physics *getPhysics();
  1262.     void vfAC();
  1263.     u32 vfB4();
  1264.     void vfBC();
  1265.     void vfC4();
  1266.     void vfCC();
  1267.     void vf104();
  1268.    
  1269.     void vf10C(u8);
  1270.     void vf11C();
  1271.     void vf124();
  1272.     u32 vf12C();
  1273.     void vf14C();
  1274.     u32 vf154();
  1275.     void move(Vec2 *);
  1276.     void setYSpeed(float);
  1277.     u32 vf16C();
  1278.     u32 vf174();
  1279.     void getRect(Rect *);
  1280.    
  1281.     void doStateChange(StateBase *);
  1282.    
  1283.     virtual u32 vf18C();
  1284.     virtual void playerCollision8A4(u32, Collider *);
  1285.     virtual bool vf19C(u8); //Uses _1878
  1286.     virtual bool freezeActor();
  1287.     virtual void vf1AC(); //nullsub
  1288.     virtual void vf1B4(); //nullsub
  1289.     virtual void vf1BC();
  1290.     virtual void vf1C4(); //nullsub
  1291.     virtual u32 vf1CC();
  1292.     virtual bool vf1D4(u32, void *); //calls hitEnemyKameDown
  1293.     virtual bool playerRelated(void *, void *);
  1294.     virtual bool vf1E4(u32, u32, void *);
  1295.     virtual void vf1EC(); //nullsub
  1296.     virtual bool vf1F4(void *, void *);
  1297.     virtual bool vf1FC(void *, void *);
  1298.     virtual bool vf204(void *, void *);
  1299.     virtual void vf20C(); //nullsub
  1300.     virtual void playerCollision(u32, Collider *);
  1301.     virtual void yoshiCollision(u32, Collider *);
  1302.     virtual void vf224(); //nullsub
  1303.     virtual void vf22C(); //calls vf2CC
  1304.     virtual bool hitJump(Collider *, Collider *);
  1305.     virtual bool collidesSomething(Collider *, Collider *); //calls playDownSoundHpdp and vf344
  1306.     virtual bool hitEnemyDown(Collider *, Collider *);
  1307.     virtual bool hitGroundPound(Collider *, Collider *);
  1308.     virtual bool hitYoshi(Collider *, Collider *);
  1309.     virtual bool hitEnemyKame2(Collider *, Collider *);
  1310.     virtual bool hitEnemyKame3(Collider *, Collider *);
  1311.     virtual bool callsHitJump(Collider *, Collider *);
  1312.     virtual bool hitEnemyKameDown(Collider *, Collider *);
  1313.     virtual bool vf27C(); //calls playDownSound;
  1314.     virtual bool vf284();
  1315.     virtual bool hitNormal(Collider *, Collider *); //calls playDownSound
  1316.     virtual bool hitEnemyKame4(Collider *, Collider *);
  1317.     virtual u32 vf29C();
  1318.     virtual u32 goldYoshiHit(Collider *self, Collider *other);
  1319.     virtual void calls_vf2CC_2();
  1320.     virtual bool vf2B4(u8 *);
  1321.     virtual void hitEx();
  1322.     virtual void vf2C4();
  1323.     virtual bool hitEnemyKame5(Collider *, Collider *); //calls vf8DC
  1324.     virtual bool isGrounded();
  1325.     virtual void playDownSound();
  1326.     virtual void playDownSoundHpdp();
  1327.     virtual void vf2EC(u32);
  1328.     virtual void vf2F4();
  1329.     virtual void vf2FC(u32); //calls vf2EC
  1330.     virtual void calls_vf2F4();
  1331.     virtual void vf30C(u32);
  1332.     virtual void playFumuSound();
  1333.     virtual void playerHit(PlayableBase *);
  1334.     virtual void playDownSpinSound();
  1335.     virtual void playMameStepSound();
  1336.     virtual void vf334(); //nullsub
  1337.     virtual void playYoshiFumuSound();
  1338.     virtual void spawnHipDropHitEffect();
  1339.     virtual void increaseYSpeed();
  1340.     virtual bool positionRelated();
  1341.     virtual void vf35C(void *);
  1342.     virtual void vf364(void *);
  1343.     virtual void vf36C(void *);
  1344.     virtual void vf374(); //nullsub
  1345.     virtual void beginState_JumpKill();
  1346.     virtual void executeState_JumpKill();
  1347.     virtual void endState_JumpKill(); //nullsub
  1348.     virtual void beginState_FireballKill(); //calls physicsRelated
  1349.     virtual void executeState_FireballKill();
  1350.     virtual void endState_FireballKill(); //nullsub
  1351.     virtual void beginState_YoshiStamp();
  1352.     virtual void executeState_YoshiStamp();
  1353.     virtual void endState_YoshiStamp(); //nullsub
  1354.     virtual void beginState_EnemyState11();
  1355.     virtual void executeState_EnemyState11();
  1356.     virtual void endState_EnemyState11(); //nullsub
  1357.     virtual void beginState_EnemyState12();
  1358.     virtual void executeState_EnemyState12();
  1359.     virtual void endState_EnemyState12(); //nullsub
  1360.     virtual void beginState_EnemyState13();
  1361.     virtual void executeState_EnemyState13(); //nullsub
  1362.     virtual void endState_EnemyState13(); //nullsub
  1363.     virtual void beginState_ChallengeRelated(); //calls vf94 and deletes itself
  1364.     virtual void executeState_ChallengeRelated(); //nullsub
  1365.     virtual void endState_ChallengeRelated(); //nullsub
  1366.     virtual void beginState_EnemyState2();
  1367.     virtual void executeState_EnemyState2();
  1368.     virtual void endState_EnemyState2(); //nullsub
  1369.     virtual void beginState_EnemyState3(); //nullsub
  1370.     virtual void executeState_EnemyState3(); //nullsub
  1371.     virtual void endState_EnemyState3(); //nullsub
  1372.     virtual void beginState_EnemyState4(); //nullsub
  1373.     virtual void executeState_EnemyState4(); //nullsub
  1374.     virtual void endState_EnemyState4(); //nullsub
  1375.     virtual void beginState_EnemyState5();
  1376.     virtual void executeState_EnemyState5(); //switches to EnemyState6
  1377.     virtual void endState_EnemyState5(); //nullsub
  1378.     virtual void beginState_EnemyState6(); //nullsub
  1379.     virtual void executeState_EnemyState6(); //nullsub
  1380.     virtual void endState_EnemyState6(); //nullsub
  1381.     virtual void beginState_EnemyState7(); //nullsub
  1382.     virtual void executeState_EnemyState7(); //nullsub
  1383.     virtual void endState_EnemyState7(); //nullsub
  1384.     virtual void beginState_EnemyState8(); //nullsub
  1385.     virtual void executeState_EnemyState8(); //nullsub
  1386.     virtual void endState_EnemyState8(); //nullsub
  1387.     virtual void beginState_PenguinIceHit();
  1388.     virtual void executeState_PenguinIceHit();
  1389.     virtual void endState_PenguinIceHit();
  1390.    
  1391.     static State<Enemy> StateID_JumpKill;
  1392.     static State<Enemy> StateID_FireballKill;
  1393.     static State<Enemy> StateID_YoshiStamp;
  1394.     static State<Enemy> StateID_EnemyState11;
  1395.     static State<Enemy> StateID_EnemyState12;
  1396.     static State<Enemy> StateID_EnemyState13;
  1397.     static State<Enemy> StateID_ChallengeRelated;
  1398.    
  1399.     static State<Enemy> StateID_EnemyState2;
  1400.     static State<Enemy> StateID_EnemyState3;
  1401.     static State<Enemy> StateID_EnemyState4;
  1402.     static State<Enemy> StateID_EnemyState5;
  1403.     static State<Enemy> StateID_EnemyState6;
  1404.     static State<Enemy> StateID_EnemyState7;
  1405.     static State<Enemy> StateID_EnemyState8;
  1406.     static State<Enemy> StateID_PenguinIceHit;
  1407. };
  1408.  
  1409. class SomeKindOfSoundRelatedClass {
  1410.     /* incomplete */
  1411.     public:
  1412.     u8 _[0x11C];
  1413. };
  1414.  
  1415. class Boss : public Enemy {
  1416.     public:
  1417.     u32 _1880;
  1418.     u32 _1884;
  1419.     u32 _1888;
  1420.     u8 _188C;
  1421.     u8 _188D;
  1422.     u8 _188E;
  1423.     u8 _188F;
  1424.     u8 _1890[0x10];
  1425.     SomeKindOfSoundRelatedClass _18A0;
  1426.     u16 _19BC;
  1427.     u16 _19BE;
  1428.     u8 _19C0[0x2C]; //class sub_200C94C
  1429.     Vec3 _19EC;
  1430.     float _19F8;
  1431.     u32 _19FC;
  1432.     u32 _1A00;
  1433.     u32 _1A04;
  1434.     void * _1A08;
  1435.     Collider _1A0C;
  1436.     void * _1B34; //some kind of vtable
  1437.     Vec3 _1B38;
  1438.     Vec3 _1B44;
  1439.     Vec3 _1B50;
  1440.     Vec3 _1B5C;
  1441.     float _1B68;
  1442.     float _1B6C;
  1443.     u32 _1B70;
  1444.     u32 _1B74;
  1445.    
  1446.     Boss(ActorBuildInfo *);
  1447.    
  1448.     bool checkDerivedRuntimeTypeInfo(void *);
  1449.     ~Boss();
  1450.     int onCreate();
  1451.     int beforeExecute();
  1452.     void afterExecute(int);
  1453.     int onDelete();
  1454.    
  1455.     void setPlayerId(u8);
  1456.     void removeColliders();
  1457.     void addColliders();
  1458.     Physics *getPhysics();
  1459.     void vfAC();
  1460.     u32 vfB4();
  1461.     void vfBC();
  1462.     void vfC4();
  1463.     void vfCC();
  1464.    
  1465.     void vf10C(u8);
  1466.     void vf11C();
  1467.     void vf124();
  1468.     u32 vf12C();
  1469.     u32 vf154();
  1470.     void move(Vec2 *);
  1471.     void setYSpeed(float);
  1472.     u32 vf16C();
  1473.     u32 vf174();
  1474.     void getRect(Rect *);
  1475.    
  1476.     u32 vf18C();
  1477.     bool freezeActor();
  1478.     void vf1BC();
  1479.     void vf1C4(); //Calls vf7E4
  1480.     void playerCollision(u32, Collider *);
  1481.     void yoshiCollision(u32, Collider *);
  1482.     void vf22C();
  1483.     bool hitJump(Collider *, Collider *);
  1484.     bool collidesSomething(Collider *, Collider *);
  1485.     bool hitEnemyDown(Collider *, Collider *);
  1486.     bool hitGroundPound(Collider *, Collider *);
  1487.     bool hitEnemyKame2(Collider *, Collider *);
  1488.     bool hitEnemyKameDown(Collider *, Collider *);
  1489.     bool vf27C(); //plays "SE_OBJ_FIREBALL_DISAPP"
  1490.     bool vf284();
  1491.     void hitEx();
  1492.     void vf2C4();
  1493.     bool isGrounded();
  1494.     void vf2F4();
  1495.     void beginState_JumpKill();
  1496.     void executeState_JumpKill();
  1497.     void endState_JumpKill();
  1498.    
  1499.     virtual void beginState_BossState1(); //calls JumpKill methods
  1500.     virtual void executeState_BossState1();
  1501.     virtual void endState_BossState1();
  1502.     virtual void beginState_BossState2(); //calls JumpKill methods
  1503.     virtual void executeState_BossState2();
  1504.     virtual void endState_BossState2();
  1505.     virtual void beginState_BossState3(); //calls JumpKill methods
  1506.     virtual void executeState_BossState3();
  1507.     virtual void endState_BossState3();
  1508.     virtual void beginState_BossState4(); //calls JumpKill methods
  1509.     virtual void executeState_BossState4();
  1510.     virtual void endState_BossState4();
  1511.     virtual void beginState_BossState5(); //calls JumpKill methods
  1512.     virtual void executeState_BossState5();
  1513.     virtual void endState_BossState5();
  1514.     virtual void vf55C(); //enables flag 188D
  1515.     virtual void vf564(); //disables flag 188D
  1516.     virtual void vf56C(); //nullsub
  1517.     virtual void vf574();
  1518.     virtual void vf57C(); //nullsub
  1519.     virtual void vf584(); //deleted
  1520.     virtual u8 vf58C();
  1521.     virtual void vf594();
  1522.     virtual void vf59C(); //deleted
  1523.     virtual void vf5A4(); //deleted
  1524.     virtual void vf5AC(); //deleted
  1525.     virtual u32 vf5B4();
  1526.     virtual void vf5BC(u32); //subtracts arg1 from field_1880
  1527.     virtual u32 vf5C4() = 0;
  1528.     virtual u32 vf5CC() = 0;
  1529.     virtual u32 vf5D4() = 0;
  1530.     virtual u32 vf5DC() = 0;
  1531.     virtual u32 vf5E4() = 0;
  1532.     virtual u32 vf5EC() = 0;
  1533.     virtual u32 vf5F4() = 0;
  1534.     virtual u32 vf5FC() = 0;
  1535.     virtual void vf604(); //nullsub
  1536.     virtual void vf60C(); //nullsub
  1537.     virtual void vf614(); //nullsub
  1538.     virtual u32 vf61C(); //returns 0x18
  1539.     virtual void vf624(); //deleted
  1540.     virtual u32 vf62C(); //returns 0x18
  1541.     virtual void vf634(StageActor *);
  1542.     virtual void vf63C(StageActor *);
  1543.     virtual void vf644(); //Searches actor "Register for Fever -" and calls vfD4 on it
  1544.     virtual void vf64C(u32); //Calls lots of virtual functions
  1545.     virtual void vf654(); //nullsub
  1546.     virtual void changeState_JumpKill();
  1547.     virtual void vf664(); //nullsub
  1548.     virtual void changeState_State1();
  1549.     virtual void vf674(); //calls vf654
  1550.     virtual void vf67C(); //calls changeState_JumpKill
  1551.     virtual void vf684(); //deleted
  1552.     virtual void vf68C(); //deleted
  1553.     virtual void vf694(); //deleted
  1554.     virtual void vf69C(); //deleted
  1555.     virtual void vf6A4(); //nullsub
  1556.     virtual void changeState_State5();
  1557.     virtual void vf6B4(); //nullsub
  1558.     virtual void changeState_State3();
  1559.     virtual void vf6C4(); //deleted
  1560.     virtual void vf6CC(); //deleted
  1561.     virtual u32 vf6D4();
  1562.     virtual void vf6DC(); //nullsub
  1563.     virtual void vf6E4(); //calls vf574
  1564.     virtual u32 vf6EC();
  1565.     virtual u32 vf6F4();
  1566.     virtual u32 vf6FC();
  1567.     virtual u32 vf704();
  1568.     virtual void vf70C(); //deleted
  1569.     virtual void vf714(); //deleted
  1570.     virtual void vf71C(); //deleted
  1571.     virtual u32 vf724(); //nullsub
  1572.     virtual u32 vf72C(); //nullsub
  1573.     virtual u32 vf734(); //nullsub
  1574.     virtual void vf73C(); //deleted
  1575.     virtual u32 vf744(); //nullsub
  1576.     virtual void stomp();
  1577.     virtual void lastStomp();
  1578.     virtual void vf75C(); //deleted
  1579.     virtual void damageStar();
  1580.     virtual void vf76C(); //deleted
  1581.     virtual void damageLast();
  1582.     virtual void damageFire();
  1583.     virtual void damageFireLast();
  1584.     virtual void damageFire2();
  1585.     virtual void damageFireLast2();
  1586.     virtual void damageStarDef();
  1587.     virtual void damageLast2();
  1588.     virtual void vf7AC(); //nullsub
  1589.     virtual void vf7B4(); //deleted
  1590.     virtual void vf7BC(); //deleted
  1591.     virtual void vf7C4(); //does some position stuff
  1592.     virtual u32 vf7CC();
  1593.     virtual void initBossCollider();
  1594.     virtual void initModels();
  1595.     virtual void vf7E4();
  1596.     virtual void vf7EC();
  1597.     virtual void vf7F4();
  1598.     virtual int onBossCreate();
  1599.    
  1600.     static State<Boss> StateID_JumpKill;
  1601.    
  1602.     static State<Boss> StateID_BossState1;
  1603.     static State<Boss> StateID_BossState2;
  1604.     static State<Boss> StateID_BossState3;
  1605.     static State<Boss> StateID_BossState4;
  1606.     static State<Boss> StateID_BossState5;
  1607. };
  1608.  
  1609. class SoundActor : public nw::snd::SoundActor {
  1610.     public:
  1611.     u32 _64;
  1612.     u32 _68;
  1613.     u32 _6C;
  1614.     u32 _70;
  1615. };
  1616.  
  1617. class UsedBySoundRelatedClass : public sead::IDisposer {
  1618.     public:
  1619.     u32 _10;
  1620.     float _14;
  1621. };
  1622.  
  1623. class SoundRelatedClass : public SoundActor {
  1624.     public:
  1625.     float _74;
  1626.     u32 _78;
  1627.     float _7C;
  1628.     float _80;
  1629.     UsedBySoundRelatedClass _84[6];
  1630.     u32 _114[2];
  1631. };
  1632.  
  1633. class UnknownClass : sead::IDisposer {
  1634.     u32 _10;
  1635.     Vec2 _14;
  1636.     u32 _1C;
  1637.     u32 _20;
  1638.     u32 _24;
  1639.     u32 _28;
  1640. };
  1641.  
  1642. class UnknownClass2 : sead::IDisposer {
  1643.     u8 blarg[0x68 - 0x10];
  1644. };
  1645.  
  1646. template <u32 count>
  1647. class PlayableBaseList {
  1648.     public:
  1649.     u32 * pointerToField10;
  1650.     u32 countOfField10;
  1651.     u32 _8;
  1652.     u32 _C;
  1653.     u32 _10[count];
  1654. };
  1655.  
  1656. class UsedByPlayableBase {
  1657.     public:
  1658.     u32 _0;
  1659.     u32 _4;
  1660.     u32 _8;
  1661.     u32 _C;
  1662.     PlayableBaseList<10> _10;
  1663.     PlayableBaseList<10> _48;
  1664.     u32 _80;
  1665.     u32 _84;
  1666.     u8 _88;
  1667.     u8 _89;
  1668.     u8 _8A;
  1669.     u8 _8B;
  1670.     u32 _8C;
  1671.     u32 _90;
  1672. };
  1673.  
  1674. class UsedByPlayableBase2 {
  1675.     u8 _0[8];
  1676.     Vec3 _8;
  1677.     u8 _14;
  1678.     u8 _15;
  1679.     u8 _16;
  1680.     u8 _17;
  1681. };
  1682.  
  1683. class UsedByPlayableBase3 {
  1684.     u8 _0[0x30];
  1685.     u32 _30;
  1686.     u32 _34;
  1687.     u32 _38;
  1688.     u32 _3C;
  1689. };
  1690.  
  1691. class PlayableBase : public StageActor {
  1692.     public:
  1693.         u32 _27C;
  1694.         u32 modelRelated;
  1695.         Vec3 _284;
  1696.         u32 _290;
  1697.         u32 _294;
  1698.         Vec3 playerPos;
  1699.         u32 _2A4;
  1700.         UsedByPlayableBase _2A8;
  1701.         SoundRelatedClass _33C;
  1702.         u32 _458;
  1703.         u32 _45C;
  1704.         u8 _460;
  1705.         u8 _461;
  1706.         u8 _462;
  1707.         u8 _463;
  1708.         UnknownClass _464;
  1709.         u8 _490[0x24];
  1710.         float _4B4;
  1711.         u32 _4B8;
  1712.         Vec3 _4BC;
  1713.         Vec3 _4C8;
  1714.         u32 _4D4;
  1715.         u32 _4D8;
  1716.         u32 _4DC;
  1717.         u32 _4E0;
  1718.         float _4E4;
  1719.         u8 _4E8;
  1720.         u8 _4E9;
  1721.         u8 _4EA;
  1722.         u8 _4EB;
  1723.         Vec3 _4EC;
  1724.         u8 _4F8;
  1725.         u8 _4F9;
  1726.         u8 _4FA;
  1727.         u8 _4FB;
  1728.         u32 nybble10;
  1729.         Powerup powerup;
  1730.         u32 _504;
  1731.         PlayerPhysics physics;
  1732.         u8 _1AA8[0xC];
  1733.         u8 _1AB4[0xC];
  1734.         u8 _1AC0[0xC];
  1735.         u8 _1ACC[0xC];
  1736.         u8 _1AD8[0xC];
  1737.         u8 _1AE4[0x28];
  1738.         float _1B0C;
  1739.         float _1B10;
  1740.         u32 _1B14;
  1741.         u32 _1B18;
  1742.         u32 _1B1C;
  1743.         u32 _1B20;
  1744.         u32 _1B24;
  1745.         Vec3 _1B28;
  1746.         u32 terrainType;
  1747.         u32 _1B38;
  1748.         float _1B3C;
  1749.         float _1B40;
  1750.         u32 _1B44;
  1751.         u32 _1B48;
  1752.         Vec3 _1B4C;
  1753.         u32 _1B58;
  1754.         float _1B5C;
  1755.         Vec2 _1B60;
  1756.         Vec2 _1B68;
  1757.         float _1B70;
  1758.         float _1B74;
  1759.         u8 _1B78;
  1760.         u8 _1B79;
  1761.         u8 _1B7A;
  1762.         u8 _1B7B;
  1763.         u32 _1B7C;
  1764.         PlayableBaseList<2> _1B80;
  1765.         u32 _1B98;
  1766.         u32 _1B9C;
  1767.         u32 _1BA0;
  1768.         float _1BA4;
  1769.         float _1BA8;
  1770.         float _1BAC;
  1771.         float _1BB0;
  1772.         u32 _1BB4;
  1773.         Collider _1BB8;
  1774.         Collider _1CE0;
  1775.         Collider _1E08;
  1776.         Collider _1F30;
  1777.         void *_2058; //vtable of some kind
  1778.         u32 _205C;
  1779.         u32 _2060;
  1780.         u32 _2064;
  1781.         u32 _2068;
  1782.         u32 _206C;
  1783.         u32 _2070;
  1784.         float _2074;
  1785.         float _2078;
  1786.         float _207C;
  1787.         float _2080;
  1788.         u8 _2084;
  1789.         u8 _2085;
  1790.         u8 _2086;
  1791.         u8 _2087;
  1792.         u32 _2088;
  1793.         u32 _208C;
  1794.         u32 _2090;
  1795.         u32 _2094;
  1796.         float _2098;
  1797.         u32 _209C;
  1798.         u32 _20A0;
  1799.         u8 _20A4[8];
  1800.         u8 _20AC[8];
  1801.         StateMgrBase<PlayableBase> state1;
  1802.         u32 _20D8;
  1803.         u32 _20DC;
  1804.         u32 _20E0;
  1805.         u32 _20E4;
  1806.         u32 _20E8;
  1807.         u32 _20EC;
  1808.         u32 _20F0;
  1809.         u32 _20F4;
  1810.         u32 _20F8;
  1811.         u32 _20FC;
  1812.         u8 _2100[8];
  1813.         u8 _2108[8];
  1814.         Vec3 playerPos2;
  1815.         u8 _211C;
  1816.         u8 _211D;
  1817.         u8 _211E;
  1818.         u8 _211F;
  1819.         float _2120;
  1820.         float _2124;
  1821.         u32 _2128;
  1822.         u32 _212C;
  1823.         float _2130;
  1824.         u32 _2134;
  1825.         u32 _2138;
  1826.         u8 _213C[0xC];
  1827.         u32 _2148;
  1828.         u32 _214C;
  1829.         u32 _2150;
  1830.         u8 _2154[0xC];
  1831.         u8 _2160[0xC];
  1832.         u8 _216C[8];
  1833.         u32 _2174;
  1834.         float _2178;
  1835.         float _217C;
  1836.         u32 _2180;
  1837.         u32 _2184;
  1838.         u32 _2188;
  1839.         u8 _218C;
  1840.         u8 _218D;
  1841.         u8 _218E;
  1842.         u8 _218F;
  1843.         float _2190;
  1844.         u32 _2194;
  1845.         u8 _2198;
  1846.         u8 _2199;
  1847.         u8 _219A;
  1848.         u8 _219B;
  1849.         StateMgrBase<PlayableBase> state2;
  1850.         u32 _21C0;
  1851.         u32 _21C4;
  1852.         u32 _21C8;
  1853.         u32 _21CC;
  1854.         u32 _21D0;
  1855.         u32 yoshiActorId;
  1856.         u32 _21D8;
  1857.         u32 _21DC;
  1858.         u32 _21E0;
  1859.         u32 _21E4;
  1860.         u32 _21E8;
  1861.         u32 _21EC;
  1862.         Vec2 _21F0;
  1863.         float _21F8;
  1864.         u8 _21FC[0xC];
  1865.         u8 _2208[0xC];
  1866.         u32 _2214;
  1867.         float _2218;
  1868.         u32 _221C;
  1869.         u32 _2220;
  1870.         u32 _2224;
  1871.         u32 _2228;
  1872.         UnknownClass2 _222C;
  1873.         UnknownClass2 _2294;
  1874.         UnknownClass2 _22FC;
  1875.         UnknownClass2 _2364;
  1876.         UnknownClass2 _23CC;
  1877.         u8 _2434[0x30];
  1878.         u8 _2464[0x10];
  1879.         u8 _2474[0xC];
  1880.         UsedByPlayableBase2 _2480;
  1881.         UnknownClass2 _2498;
  1882.         UnknownClass2 _2500;
  1883.         u8 _2568[0x30];
  1884.         u8 _2598[0x10];
  1885.         u8 _25A8[0x30];
  1886.         u8 _25D8[0x10];
  1887.         u32 _25E8;
  1888.         u8 _25EC;
  1889.         u8 _25ED;
  1890.         u8 _25EE;
  1891.         u8 _25EF;
  1892.         u32 _25F0;
  1893.         UnknownClass2 _25F4;
  1894.         u32 _265C;
  1895.         u32 _2660;
  1896.         UsedByPlayableBase3 _2664[3];
  1897.         StateMgrBase<PlayableBase> state3;
  1898.         u32 _2748;
  1899.         u8 _274C;
  1900.         u8 _274D;
  1901.         u8 _274E;
  1902.         u8 _274F;
  1903.  
  1904.         bool usedByGoalPole();
  1905.  
  1906.         PlayableBase(ActorBuildInfo *);
  1907.  
  1908.         bool checkDerivedRuntimeTypeInfo(void *);
  1909.         ~PlayableBase();
  1910.         int onCreate();
  1911.         int beforeExecute();
  1912.         int onExecute();
  1913.         void afterExecute(int);
  1914.         int beforeDraw();
  1915.    
  1916.         void setPlayerId(u8);
  1917.         Physics * getPhysics();
  1918.         void vfAC();
  1919.         u32 vfB4();
  1920.         void vfBC();
  1921.         void vfC4();
  1922.         void vfCC();
  1923.         void vf104();
  1924.         // TODO: more virtual methods
  1925.  
  1926.         void playSound(char *name, bool unk);
  1927.         void handleGroundPound();
  1928.         void playLandSound();
  1929.        
  1930.         void _28C12C8();
  1931.         void _28C17A0();
  1932.         void _28C1878();
  1933.         void _291F218();
  1934.        
  1935. };
  1936.  
  1937. class Player : public PlayableBase {
  1938.     // Incomplete
  1939.     public:
  1940.         u8 unkblob[0x34D8-0x2750];
  1941. };
  1942.  
  1943. class Yoshi : public PlayableBase {
  1944.     // Incomplete
  1945.     public:
  1946.         u32 actorIdInMouth;
  1947.         u32 _2754;
  1948.         YoshiModel *yoshiModel;
  1949.        
  1950.         // A bunch of unknowns     
  1951.         u32 _275C;
  1952.         u32 _2760;
  1953.         u32 _2764;
  1954.         u32 _2768;
  1955.         u32 _276C;
  1956.         u32 _2770;
  1957.         u32 _2774;
  1958.         u32 _2778;
  1959.         u32 _277C;
  1960.         u32 _2780;
  1961.         u32 _2784;
  1962.         u32 _2788;
  1963.         u32 _278C;
  1964.         s32 _2790;
  1965.         Direction _2794;
  1966.         u32 tongueState;
  1967.         u32 _279C;
  1968.         float _27A0;
  1969.         float _27A4;
  1970.         u32 _27A8;
  1971.         u32 _27AC;
  1972.         u32 _27B0;
  1973.         u32 _27B4;
  1974.         u8 _27B8;
  1975.         u8 _27B9;
  1976.         u8 _27BA;
  1977.         u8 _27BB;
  1978.         u32 _27BC;
  1979.         u8 _27C0;
  1980.         u8 _27C1;
  1981.         u8 _27C2;
  1982.         u8 _27C3;
  1983.         u32 _27C4;
  1984.         float _27C8;
  1985.         u8 _27CC;
  1986.         u8 _27CD;
  1987.         u8 _27CE;
  1988.         u8 _27CF;
  1989.         u32 _27D0;
  1990.         u32 _27D4;
  1991.         u8 _27D8;
  1992.         u8 _27D9;
  1993.         u8 _27DA;
  1994.         u8 _27DB;
  1995.         u32 _27DC;
  1996.         u8 _27E0;
  1997.         u8 _27E1;
  1998.         u8 _27E2;
  1999.         u8 _27E3;
  2000.         u32 _27E4;
  2001.         u32 _27E8;
  2002.         u32 _27EC;
  2003.         u32 _27F0;
  2004.         u32 _27F4;
  2005.         u32 _27F8;
  2006.         u32 _27FC;
  2007.         u32 _2800;
  2008.         u32 _2804;
  2009.         u32 _2808;
  2010.         u32 _280C;
  2011.         u32 _2810;
  2012.         u32 _2814;
  2013.         u32 _2818;
  2014.         u32 _281C;
  2015.         u32 _2820;
  2016.         u32 _2824;
  2017.         u32 _2828;
  2018.         u32 _282C;
  2019.         u32 _2830;
  2020.         u32 _2834;
  2021.         u32 _2838;
  2022.         u32 _283C;
  2023.         u32 _2840;
  2024.         u32 _2844;
  2025.         u32 _2848;
  2026.         u32 _284C;
  2027.         u32 _2850;
  2028.         u32 _2854;
  2029.         u32 _2858;
  2030.         u32 _285C;
  2031.         u32 _2860;
  2032.         u32 _2864;
  2033.         u32 _2868;
  2034.         u32 _286C;
  2035.         u32 _2870;
  2036.         u32 _2874;
  2037.         u32 _2878;
  2038.         u32 _287C;
  2039.         u32 _2880;
  2040.         u32 _2884;
  2041.         u32 _2888;
  2042.         u32 _288C;
  2043.         u32 _2890;
  2044.         u32 _2894;
  2045.         u32 _2898;
  2046.         u32 _289C;
  2047.         u32 _28A0;
  2048.         u32 _28A4;
  2049.         u32 _28A8;
  2050.         u32 _28AC;
  2051.         u32 _28B0;
  2052.         u32 _28B4;
  2053.         u32 _28B8;
  2054.         u32 _28BC;
  2055.         u32 _28C0;
  2056.         u32 _28C4;
  2057.         u32 _28C8;
  2058.         u32 _28CC;
  2059.         u32 _28D0;
  2060.         u32 _28D4;
  2061.         u32 _28D8;
  2062.         u32 _28DC;
  2063.         u32 _28E0;
  2064.         u32 _28E4;
  2065.         u32 _28E8;
  2066.         u32 _28EC;
  2067.         u32 _28F0;
  2068.         u32 _28F4;
  2069.         u32 _28F8;
  2070.         u32 _28FC;
  2071.         u32 _2900;
  2072.         u32 _2904;
  2073.         u32 _2908;
  2074.         u32 _290C;
  2075.         u32 _2910;
  2076.         u32 _2914;
  2077.         u32 _2918;
  2078.         u32 _291C;
  2079.         /*** ADDED FIELDS START ***/
  2080.         u8 stompCount;
  2081.         bool hasYellowShell;
  2082.         /*** ADDED FIELDS END ***/
  2083.  
  2084.         void scheduleSpawnBall(bool ice); // Iceball if true, Fireball if false
  2085.         u32 getActorIdInMouth();
  2086.         void changeState(State<Yoshi> *state);
  2087.         StageActor *getMouthContents();
  2088.  
  2089.         // Tongue functions
  2090.         void extendTongue();
  2091.         void handleUnknown();
  2092.         void handleTongueExtend();
  2093.         void handleScreableBeingEaten();
  2094.         void handleEdibleBeingEaten();
  2095.         void handleBerryBeingEaten();
  2096.         void handleTongueContract();
  2097.  
  2098.         void hideActorInMouth();
  2099.  
  2100.         void vf5EC();
  2101.         void vf604();
  2102.         void vf64C();
  2103.         void vf694();
  2104.  
  2105.         static State<Yoshi> StateID_DefaultState;
  2106. };
  2107.  
  2108. class YoshiEgg : public StateActor {
  2109.     // Incomplete
  2110.     public:
  2111.         u8 _17C8[0x30];
  2112.         u32 colour;
  2113. };
  2114.  
  2115. class TerrainEffects {
  2116.     // Incomplete
  2117.     public:
  2118.     void *renderer;
  2119.     u32 _4;        
  2120.     Vec3 position; 
  2121.     u8 _14[12];            
  2122.     Vec3 _20;      
  2123.     u8 _2C[48];    
  2124.     u8 _5C[48];    
  2125.     u32 width;     
  2126.     u32 _90;       
  2127.     u32 _94;       
  2128.     u32 _98;       
  2129.     u32 _9C;       
  2130.     u32 _A0;       
  2131.     u32 _A4;       
  2132.     u32 _A8;       
  2133.     u32 _AC;       
  2134.     u32 _B0;       
  2135.     u32 _B4;       
  2136.     u32 _B8;       
  2137.     u32 _BC;       
  2138.     u32 _C0;       
  2139.     u32 waveSpeed;         
  2140.     u32 waveAnimSpeed;         
  2141.     u32 _CC;               
  2142.     u32 _D0;               
  2143.     u32 waveWidth;     
  2144.     u32 waveType;          
  2145.     u32 waveHeight;        
  2146.     u32 waveEffectHeight;  
  2147.     TerrainType type;      
  2148.     u8 noLocation;         
  2149.     u8 _E6;            
  2150.     u8 _E7;            
  2151.     u8 data[0xF8F4 + 0x658 - 0xE8];
  2152.  
  2153.     void init(Vec3 *pos, float width, bool noLoc, bool layer0, TerrainType type, sead::Heap *heap);
  2154.     void setWaveValues(u32 h, u32 eftHeight, u32 spd, u32 anmSpeed, u32 w, u32 eft);       
  2155.     void checkMarioWaveHit();
  2156.     void updateWaveCollisions();
  2157. };
  2158.  
  2159. class EnvTerrain : public StateActor {
  2160.     public:
  2161.         u32 _17C8;
  2162.         u32 _17CC;
  2163.         Vec3 _17D0;
  2164.         Vec3 _17DC;
  2165.         SolidCollider collision;
  2166.         u8 _1A78[4 * 8];
  2167.         u32 _1A98;
  2168.         Vec2 _1A9C;
  2169.         u32 _1AA4;
  2170.         u32 _1AA8;
  2171.         float _1AAC;
  2172.         float _1AB0;
  2173.         float riseTop;
  2174.         float _1AB8;
  2175.         float _1ABC;
  2176.         float _1AC0;
  2177.         float risingSpeed;
  2178.         float _1AC8;
  2179.         float currentHeight;
  2180.         u32 _1AD0;
  2181.         u32 _1AD4;
  2182.         u16 _1AD8;
  2183.         u16 loweringDelay;
  2184.         bool onlyRenderWaves;
  2185.         u8 _1ADD;
  2186.         u8 _1ADE;
  2187.         u8 _1ADF;
  2188.         u32 _1AE0;
  2189.         TerrainEffects terrain;
  2190.    
  2191.         sead::IDisposer disposer;
  2192.         sead::Heap *additionalHeap;
  2193.         u32 _11A44;
  2194.         u64 eventMask;
  2195.         u32 _11A50;
  2196.         u32 _11A54;
  2197.         u64 eventMask2;
  2198.         u32 _11A60;
  2199.         float risingHeight;
  2200.         float _11A68;
  2201.         u32 _11A6C;
  2202.         u32 _11A70;
  2203.         u32 _11A74;
  2204.    
  2205.         EnvTerrain(ActorBuildInfo *);
  2206.    
  2207.         void setTop(float top);
  2208.    
  2209.         /*** Added hacks ***/
  2210.         DECLARE_STATE(EnvTerrain, FollowRaft)
  2211.         /*** *** *** *** ***/
  2212. };
  2213.  
  2214. class PlayerMgr : public sead::IDisposer {
  2215.     public:
  2216.         static PlayerMgr *instance;
  2217.        
  2218.         u8 _10[0x20 - 0x10];
  2219.         Player *players[4];
  2220.         /* incomplete */
  2221. };
  2222.  
  2223. class EnemyCounter {
  2224.     /* incomplete */
  2225.     public:
  2226.         static EnemyCounter *instance;
  2227.  
  2228.         void killEnemiesGoal();
  2229. };
  2230.  
  2231. class BasicSoundActor {
  2232.     /* incomplete */
  2233.     public:
  2234.         static BasicSoundActor *instance;
  2235.  
  2236.         void playSound(const char *, Vec2 *, u32);
  2237. };
  2238.  
  2239. class SoundSystem {
  2240.     /* incomplete */
  2241.     public:
  2242.         static SoundSystem *instance;
  2243.  
  2244.         void playSound(const char *, u32);
  2245. };
  2246.  
  2247. extern u8 fileCounts[];
  2248. extern const sead::String *fileLists[];
  2249. extern u32 directionToRotationList[];
  2250. extern Actors spriteToActorList[];
  2251.  
  2252. void trigRelated(trigStuff *, Vec3i *, Vec3 *);
  2253. void mapPosToScreen(Vec2 *, Vec2 *);
  2254. void spawnEffect(Effects effect, Vec3 *pos, Vec3 *rot, Vec3 *scale);
  2255.  
  2256. // Unkown functions
  2257. u32 unknown0(u32 yoshi_actorIdInMouth);
  2258. u32 unknown1(u32 yoshi_actorIdInMouth);
  2259.  
  2260. void handleKoopaBeingEaten(Yoshi *yoshi);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement