ItemObjMgr 60%

This commit is contained in:
SwareJonge 2024-06-08 23:13:26 +02:00
parent ec6b03dfd8
commit f8774a9d25
30 changed files with 3299 additions and 214 deletions

View File

@ -1637,6 +1637,32 @@ src/Sato/stMath.cpp:
.sbss: [0x80416ac8, 0x80416ad0]
.sdata2: [0x8041bb60, 0x8041bbb8]
#src/Sato/ItemObjMgr.cpp:
#.text: [0x8023cc44, 0x80243f84]
#.ctors: [0x80316408, 0x8031640c]
#.rodata: [0x8037fcd0, 0x803800e0]
#.data: [0x8039fa58, 0x8039fc38]
#.bss: [0x803ed680, 0x803ed6e8]
#.sdata: [0x80414990, 0x804149b8]
#.sbss: [0x80416b50, 0x80416b88]
#.sdata2: [0x8041be08, 0x8041be58]
#.sbss2: [0x8041e208, 0x8041e210]
src/Sato/stEfctWeed.cpp:
.text: [0x80254ba8, 0x80254ec4]
.ctors: [0x80316418, 0x8031641c]
.data: [0x803a08d0, 0x803a0900]
.bss: [0x803ed778, 0x803ed7a8]
.sdata: [0x80414bb0, 0x80414bc0]
.sbss: [0x80416bc8, 0x80416bd0]
.sdata2: [0x8041bf90, 0x8041bf98]
src/Sato/RivalKart.cpp:
.text: [0x80270f9c, 0x802714b0]
.ctors: [0x80316458, 0x8031645c]
.data: [0x803a1ca0, 0x803a1cb8]
.bss: [0x803edc40, 0x803edc70]
src/Shiraiwa/WipeSlide.cpp:
.text: [0x802b7d5c, 0x802b8760]
.ctors: [0x80316544, 0x80316548]
@ -1710,21 +1736,6 @@ src/Shiraiwa/WipeCurtain.cpp:
.sdata2: [0x8041d5a0, 0x8041d5c0]
.sbss2: [0x8041e250, 0x8041e254]
src/Sato/stEfctWeed.cpp:
.text: [0x80254ba8, 0x80254ec4]
.ctors: [0x80316418, 0x8031641c]
.data: [0x803a08d0, 0x803a0900]
.bss: [0x803ed778, 0x803ed7a8]
.sdata: [0x80414bb0, 0x80414bc0]
.sbss: [0x80416bc8, 0x80416bd0]
.sdata2: [0x8041bf90, 0x8041bf98]
src/Sato/RivalKart.cpp:
.text: [0x80270f9c, 0x802714b0]
.ctors: [0x80316458, 0x8031645c]
.data: [0x803a1ca0, 0x803a1cb8]
.bss: [0x803edc40, 0x803edc70]
src/Yamamoto/kartCamera.cpp:
.text: [0x802e0248, 0x802e17b8]
.ctors: [0x803165d8, 0x803165dc]

View File

@ -113,7 +113,7 @@ struct J3DModelData
mat->mTevBlock->setTevColor(0, J3DGXColorS10(r, g, b, a));
}
void simpleCalcMaterial( Mtx m) {simpleCalcMaterial(0, m); }
void simpleCalcMaterial(Mtx m) { simpleCalcMaterial(0, m); }
J3DVertexData *getVertexData() { return &mVertexData; }
J3DJoint *getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); }

View File

@ -34,7 +34,7 @@ struct J3DSys
void setDrawModeOpaTexEdge() { mDrawMode = 3; }
void setDrawModeXlu() { mDrawMode = 4; }
void setViewMtx(const Mtx mtx) { PSMTXCopy(mtx, mViewMtx); }
const Mtx &getViewMtx() { return mViewMtx; }
Mtx &getViewMtx() { return mViewMtx; }
Mtx mViewMtx; // _000
J3DMtxCalc *mMtxCalc; // _030

View File

@ -12,13 +12,18 @@ namespace JGeometry {
{
public:
SMatrix34C() {}
void set(const MtxPtr);
void set(const SMatrix34C<T> &rSrc);
void set(T rxx, T ryx, T rzx, T tx, T rxy, T ryy, T rzy, T ty, T rxz, T ryz, T rzz, T tz);
void scale(T);
inline void setInline(const SMatrix34C<T> &rSrc)
inline void set(const Mtx pSrc)
{
JMath::gekko_ps_copy12(this, pSrc);
}
// I guess these could be removed
/*inline void setInline(const SMatrix34C<T> &rSrc)
{
register const SMatrix34C<T> *pSrc = &rSrc;
register SMatrix34C<T> *pDest = this;
@ -106,7 +111,7 @@ namespace JGeometry {
// clang-format on
}
;
}
}*/
T &ref(u32 i, u32 j) { return mMtx[i][j]; }

View File

@ -12,6 +12,33 @@
namespace JMath
{
inline void gekko_ps_copy12(register void *pDest, register const void *pSrc)
{
register f32 rxxyx;
register f32 rzxtx;
register f32 rxyyy;
register f32 rzyty;
register f32 rxzyz;
register f32 rzztz;
__asm {
// clang-format off
psq_l rxxyx, 0(pSrc), 0, 0
psq_l rzxtx, 8(pSrc), 0, 0
psq_l rxyyy, 0x10(pSrc), 0, 0
psq_l rzyty, 0x18(pSrc), 0, 0
psq_l rxzyz, 0x20(pSrc), 0, 0
psq_l rzztz, 0x28(pSrc), 0, 0
psq_st rxxyx, 0(pDest), 0, 0
psq_st rzxtx, 8(pDest), 0, 0
psq_st rxyyy, 0x10(pDest), 0, 0
psq_st rzyty, 0x18(pDest), 0, 0
psq_st rxzyz, 0x20(pDest), 0, 0
psq_st rzztz, 0x28(pDest), 0, 0
// clang-format on
}
}
template <typename T>
struct TAngleConstant_
{

View File

@ -5,9 +5,11 @@
class JSUPtrLink;
class JSUPtrList {
class JSUPtrList
{
public:
JSUPtrList() {
JSUPtrList()
{
initiate();
}
@ -26,12 +28,13 @@ public:
JSUPtrLink *getLastLink() const { return mTail; }
u32 getNumLinks() const { return mLinkCount; }
JSUPtrLink *mHead; // _0
JSUPtrLink *mTail; // _4
u32 mLinkCount; // _8
JSUPtrLink *mHead; // _0
JSUPtrLink *mTail; // _4
u32 mLinkCount; // _8
};
class JSUPtrLink {
class JSUPtrLink
{
public:
JSUPtrLink(void *);
~JSUPtrLink();
@ -41,23 +44,24 @@ public:
JSUPtrLink *getNext() const { return mNext; }
JSUPtrLink *getPrev() const { return mPrev; }
void *mData; // _0
JSUPtrList *mPtrList; // _4
JSUPtrLink *mPrev; // _8
JSUPtrLink *mNext; // _C
void *mData; // _0
JSUPtrList *mPtrList; // _4
JSUPtrLink *mPrev; // _8
JSUPtrLink *mNext; // _C
};
template <class T>
class JSULink; // friend class? i'm C++ noob
template<class T>
class JSUList : public JSUPtrList {
template <class T>
class JSUList : public JSUPtrList
{
public:
JSUList(bool thing) : JSUPtrList(thing) {
JSUList(bool thing) : JSUPtrList(thing)
{
}
JSUList() : JSUPtrList() {
JSUList() : JSUPtrList()
{
}
bool append(JSULink<T> *link) { return JSUPtrList::append((JSUPtrLink *)link); }
@ -97,10 +101,11 @@ public:
T *getObject() const { return mLink->getObject(); }
bool operator==(JSULink<T> const *other) const { return mLink == other; }
bool operator!=(JSULink<T> const *other) const { return mLink != other; }
bool operator==(JSUListIterator<T> const &other) const { return mLink == other.mLink; }
bool operator!=(JSUListIterator<T> const &other) const { return mLink != other.mLink; }
bool isAvailable() { return mLink != nullptr; }
bool operator==(const JSULink<T> *other) const { return mLink == other; }
bool operator!=(const JSULink<T> *other) const { return mLink != other; }
bool operator==(const JSUListIterator<T> &other) const { return mLink == other.mLink; }
bool operator!=(const JSUListIterator<T> &other) const { return mLink != other.mLink; }
JSUListIterator<T> operator++(int)
{
@ -129,7 +134,7 @@ public:
}
// Investigate where and if this actually exists
//T &operator*() { return *getObject(); }
// T &operator*() { return *getObject(); }
T *operator->() const { return mLink->getObject(); }
@ -141,18 +146,14 @@ template <class T>
class JSULink : public JSUPtrLink
{
public:
JSULink(T *pData) : JSUPtrLink(pData)
{
}
JSULink(T *pData) : JSUPtrLink(pData) {}
T *getObject() const { return (T *)mData; }
JSUList<T> *getList() const { return (JSUList<T> *)JSUPtrLink::getList(); } // fabricated, offcial name: getSupervisor
JSUList<T> *getSupervisor() const { return (JSUList<T> *)mPtrList; }
JSULink<T> *getNext() const { return (JSULink<T> *)mNext; }
JSULink<T> *getPrev() const { return (JSULink<T> *)JSUPtrLink::getPrev(); }
JSULink<T> *getPrev() const { return (JSULink<T> *)mPrev; }
~JSULink() {
}
~JSULink() {}
};
template <typename T>

View File

@ -62,6 +62,7 @@ public:
static bool isMtxCombinationOn() { return sMtxCombinationOn; };
static f32 getInvalidLODBias() { return sExModelInvalidLODBias; }
J3DModelData *getModelData() const { return mModelData[0]; }
J3DModel *getModel() const { return mModel[0]; }
void setSimpleTevReg(u32 id) { mSimpleTevReg |= (1 << id); }
void simpleDraw(u32 viewNo) { simpleDraw(viewNo, nullptr, 1); }

View File

@ -85,39 +85,37 @@ public:
}
//private:
bool mIsTinyProcess;
bool mIsLanMode;
bool mIsTrueEnding;
u32 mRandomSeed;
ERaceMode mRaceMode;
ERaceGpCup mGpCup;
ERaceLevel mRaceLevel;
int mItemSlotType; // perhaps this is an enum too
s16 mVsLapNum;
s16 mLapNumLAN;
s16 mKartNum;
s16 mPlayerNum;
s16 mConsoleNum;
s16 mStatusNum;
u16 mLOD;
s16 mGpStageNo;
int mDemoType;
bool mIsMirror;
// padding bytes
KartInfo mKartInfo[8];
s16 mStartPosIndex[8];
s16 mPointTable[8];
s16 mRivalKarts[2];
s16 mTargetKarts[4];
bool mIsDemoKart[4];
s16 mAwardKartNo;
// padding bytes
int mDemoNextPhase;
s16 mRank[8]; // stores what rank you finished at previous race, basically the same as startPosIndex
RaceTime mFinishTime[8];
RaceTime mLapTimes[8][10];
int mWaitDemoResult;
u16 mHidingConsoles;
bool mIsTinyProcess; // 000
bool mIsLanMode; // 001
bool mIsTrueEnding; // 002
u32 mRandomSeed; // 004
ERaceMode mRaceMode; // 008
ERaceGpCup mGpCup; // 00C
ERaceLevel mRaceLevel; // 010
int mItemSlotType; // 014 perhaps this is an enum too
s16 mVsLapNum; // 018
s16 mLapNumLAN; // 01A
s16 mKartNum; // 01C
s16 mPlayerNum; // 01E
s16 mConsoleNum; // 020
s16 mStatusNum; // 022
u16 mLOD; // 024
s16 mGpStageNo; // 026
int mDemoType; // 028
bool mIsMirror; // 02C
KartInfo mKartInfo[8]; // 030
s16 mStartPosIndex[8]; // 0F0
s16 mPointTable[8]; // 100
s16 mRivalKarts[2]; // 110
s16 mTargetKarts[4]; // 114
bool mIsDemoKart[4]; // 11C
s16 mAwardKartNo; // 120
int mDemoNextPhase; // 124
s16 mRank[8]; // 128, stores what rank you finished at previous race, basically the same as startPosIndex
RaceTime mFinishTime[8]; // 138
RaceTime mLapTimes[8][10]; // 158
int mWaitDemoResult; // 298
u16 mHidingConsoles; // 29c
};
extern RaceInfo gRaceInfo;

View File

@ -135,7 +135,9 @@ public:
int getKartNumber() const { return mRaceInfo->getKartNumber(); }
int getAwardKartNo() const { return mRaceInfo->getAwardKartNo(); }
int getConsoleNumber() const { return mRaceInfo->getConsoleNumber(); }
int getItemSlotType() const { return mRaceInfo->getItemSlotType(); }
int getStatusNumber() const { return mRaceInfo->getStatusNumber(); }
ERaceLevel getRaceLevel() const { return mRaceInfo->getRaceLevel(); }
// why did this not use a getter?
ERaceMode getRaceMode() const { return mRaceInfo->mRaceMode; }
@ -166,6 +168,7 @@ public:
bool isCrsDemoMode() { return getRacePhase() == PHASE_CRS_DEMO; }
// RaceMgr get/sets
u32 getRaceFrame() const { return mFrame; }
int getTotalLapNumber() const { return mTotalLapNumber; }
Course *getCourse() const { return mCourse; }
const RaceTime &getBestLapTime() { return mBestLapTime; }

View File

@ -76,8 +76,10 @@ private:
static JUtility::TColor cUserBarColorTable[4]; // 0x803780c0
static SysDebug *sManager;
u8 _0[0xb8];
JKRHeap *mDebugHeap;
u8 _0[0xb4];
JKRHeap *mDebugHeap; // b4
JKRHeap *mBackupHeap; // b8, a backup of the previous current heap
JKRHeap *mSelectedHeap; // bc, the heap the user is currently looking at
};
// Make macro for every function? or is that too ridiculous

View File

@ -22,13 +22,24 @@ public:
static void createMgr(const CrsData &crsData) { gMgr = new GeographyObjManager(crsData); }
static GeographyObjManager *getGeographyObjManager() { return gMgr; }
bool isMiniGame() const { return mIsBalloonBattle || mIsBombBattle || mIsRobberyBattle || mIsEscapeBattle; }
bool isRobberBattle() const { return mIsRobberyBattle; }
bool isBalloonBattle() const { return mIsBalloonBattle; }
bool isEscapeBattle() const { return mIsEscapeBattle; }
bool isBombBattle() const { return mIsBombBattle; }
static GeographyObjManager *gMgr;
u8 _18[0x2A8 - 0x18]; //
f32 mHitDepth[8]; // 2A8
u8 _328[0x3FC - 0x2C8]; //
TJugem *mJugem[4]; // 3FC
u8 _40C[0x4A4 - 0x40C]; //
u8 _40C[0x491 - 0x40C]; //
bool mIsBalloonBattle; // 491
bool mIsBombBattle; // 492
bool mIsRobberyBattle; // 493
bool mIsEscapeBattle; // 494
u8 _495[0x4A4 - 0x495]; //
}; // size 0x4A4

109
include/Sato/ItemBanana.h Normal file
View File

@ -0,0 +1,109 @@
#ifndef ITEMBANANA_H
#define ITEMBANANA_H
#include "Sato/ItemObj.h"
// TODO: virtual functions
class ItemBanana : public ItemObj
{ // Autogenerated
public:
ItemBanana(u32); // 0x8025186c
void reset(); // 0x8025190c
const char *getBmdFileName(); // 0x802519e8
static void loadAnmData(J3DModelData *); // 0x80251a10
void createModel(JKRSolidHeap *, u32, u32); // 0x80251a88
void getBckName(int); // 0x80251bf4
void update(); // 0x80251c40
void doUniv(); // 0x80251c88
void checkAnmState(); // 0x80251d98
void initEquip(); // 0x80252110
void doEquip(); // 0x802521ac
void initRelease(); // 0x802521d4
void doRelease(); // 0x802523dc
void initSpRelease(); // 0x80252478
void doSpRelease(); // 0x80252590
void initDisappear(); // 0x80252768
void doDisappear(); // 0x802528dc
void doFall(); // 0x802529b4
void moveNormal(CrsGround &); // 0x80252a10
void getItemBoundRatio() const; // 0x80252b6c
void setAllUseBoundsScale(); // 0x80252b74
void setAllUseInitReleaseVelMag(); // 0x80252ba4
void checkKartColDisappear(int); // 0x80252bbc
void initOccur(const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x80252bec
void doSound(u32); // 0x80252c24
static J3DAnmObjTrans *mAnmTrans[3]; // 0x803a05d8
static J3DAnmTransform *mAnmCalc[3]; // 0x803a05e4
static Vec sHandOffsetPos; // 0x804118ec
// Inline/Unused
// void setInitReleaseParam();
// void getBckName(int);
// void getBtkName();
// Inline
void calcBaseRotQt(); // 0x80252470
virtual ~ItemBanana(); // 0x80252cf0
u32 getModelDataAppendLoadFlg(); // 0x80254938
void createColModel(J3DModelData *); // 0x80254a60
u8 _[0x2cc - 0x2b0];
}; // class ItemBanana
class ItemBananaBig : public ItemBanana
{
public:
ItemBananaBig(u32);
void reset();
const char *getBmdFileName();
static void loadAnmData(J3DModelData *);
void createModel(JKRSolidHeap *, u32, u32);
void doUniv();
void initEquip();
void callHitItemSound(ItemObj *);
void calcColReaction(ItemObj *);
void initDisappear();
// static J3DAnmObjTrans *mAnmTrans[3];
// static J3DAnmTransform *mAnmCalc[3];
virtual ~ItemBananaBig() {} // 0x80254940
};
class ItemFakeItemBox : public ItemBanana
{
public:
ItemFakeItemBox(u32);
void reset();
const char *getBmdFileName();
static void loadAnmData(J3DModelData *);
void createModel(JKRSolidHeap *, u32, u32);
void doUniv();
void initEquip();
void callHitItemSound(ItemObj *);
void moveNormal(CrsGround &);
void calcColReaction(ItemObj *);
void initDisappear();
void doDisappear();
void calcBaseRotQt();
void checkKartColDisappear(int);
void createEfct(const JGeometry::TVec3f &);
f32 getForceEfctOffsetScale() const;
void initFall();
static J3DAnmTextureSRTKey *mAnmTex;
static J3DAnmTexPattern *sTexPattern;
virtual ~ItemFakeItemBox() {} // 0x802547f8
void createColModel(J3DModelData *) {} // 0x80254918
u8 _2b0[0x330 - 0x2cc];
};
// Inline Functions referenced in TU:
// virtual AnmController::~AnmController() // AnmController.h; // 0x802518c4
// void AnmControlTrans::changeAnm(u8, bool) // AnmControlTrans.h; // 0x8025202c
// void TAnmControlBase<J3DAnmObjMatTexSRT>::frameProc() // TAnmControlBase.h; // 0x8025409c
#endif // ITEMBANANA_H

103
include/Sato/ItemBomb.h Normal file
View File

@ -0,0 +1,103 @@
#ifndef ITEMBOMB_H
#define ITEMBOMB_H
#include "Sato/ItemSuccession.h"
// TODO: virtual and static functions
class ItemBombBase // probably inherits ItemObj, and other classes inherit this
{
// Inline/Unused
ItemBombBase();
void executeReset();
void startBombEfct(const JGeometry::TPos3f &, u8);
void execute_doDisappear(int);
void executeKartColDisappear();
};
class ItemBomb : public ItemObj
{ // Autogenerated
public:
enum BombBck
{
};
ItemBomb(u32); // 0x8025b7b4
void reset(); // 0x8025b9f0
const char *getBmdFileName(); // 0x8025bbc0
void createModel(JKRSolidHeap *, u32, u32); // 0x8025bbcc
static void loadAnmData(J3DModelData *); // 0x8025bc90
void getBckName(int); // 0x8025bd64
void update(); // 0x8025bdb0
void setAnimation(BombBck, int); // 0x8025bf68
void deleteEffect(); // 0x8025bf7c
void IsHitKart(int, const JGeometry::TVec3f &, f32); // 0x8025bfc0
void doUniv(); // 0x8025c034
void doScale(); // 0x8025c2d8
void setSparkTranslation(); // 0x8025c3a8
void calcColReaction(ItemObj *); // 0x8025c464
void initEquip(); // 0x8025c46c
void setMiniGameBombColor(); // 0x8025c4f4
void doEquip(); // 0x8025c618
void initRelease(); // 0x8025c668
void doRelease(); // 0x8025c804
void initSpRelease(); // 0x8025cb44
void doSpRelease(); // 0x8025cd24
void initDisappear(); // 0x8025cd50
void doDisappear(); // 0x8025cf38
void initFall(); // 0x8025d07c
void initDivested(); // 0x8025d190
void doFall(); // 0x8025d2b8
void initOccur(const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x8025d32c
void initForceDisappear(); // 0x8025d39c
void moveNormal(CrsGround &); // 0x8025d3dc
void moveCannon(CrsGround &); // 0x8025d620
void checkKartColDisappear(int); // 0x8025d670
void setCurrentViewNo(u32); // 0x8025d690
void createEffect(); // 0x8025d6f0
void findAnyKart(); // 0x8025d760
void getMaxBombReactFrame(); // 0x8025d7b8
static J3DAnmObjTrans *mAnmTrans[3]; // 0x803a0dfc
static J3DAnmTransform *mAnmCalc[3]; // 0x803a0e08
static J3DAnmColor *sColorAnm; // 0x803a0e14
static Vec sHandOffsetPos; // 0x80411984
static J3DAnmColor *sNowColorAnm; // 0x80416c18
static int sLocatorJointNo; // 0x80416c1c
// Inline/Unused
void doAnimation();
void checkChangeAnimation();
void initBlast();
void checkBlast();
void calcScale(f32, f32);
void setInitReleaseParam(u8);
void doCommonInitRelease(f32, f32, f32);
// Inline
virtual ~ItemBomb() {} // 0x8025d960
void createColModel(J3DModelData *) {} // 0x8025daac
private:
u8 _[0x318 - 0x2b0];
}; // class ItemBomb
// TODO
class ItemBombSuc : public ItemObjSuc
{
public:
ItemBombSuc(u32);
void reset();
virtual ~ItemBombSuc() {} // 0x8025d858
u8 _[0x300 - 0x2b0];
};
// Inline Functions referenced in TU:
// virtual J3DAnmObjMatColor::~J3DAnmObjMatColor() // J3DAnmObjMatColor.h; // 0x8025b900
// virtual J3DAnmObjMaterialBase<J3DAnmColor>::~J3DAnmObjMaterialBase() // J3DAnmObjMaterialBase.h; // 0x8025b980
// void J3DAnmObjMaterialBase<J3DAnmColor>::anmFrameProc() // J3DAnmObjMaterialBase.h; // 0x8025bf58
#endif // ITEMBOMB_H

View File

@ -0,0 +1,64 @@
#ifndef ITEMFLYTURTLE_H
#define ITEMFLYTURTLE_H
#include "Sato/ItemObj.h"
// TODO: virtual and static functions
class ItemFlyTurtle : public ItemObj
{ // Autogenerated
public:
ItemFlyTurtle(u32); // 0x80279054
void reset(); // 0x80279108
const char *getBmdFileName(); // 0x80279264
static void loadAnmData(J3DModelData *); // 0x8027928c
void createModel(JKRSolidHeap *, u32, u32); // 0x80279328
void createColModel(J3DModelData *); // 0x80279490
void update(); // 0x802794b8
void setCurrentViewNo(u32); // 0x80279500
void doUniv(); // 0x80279564
void initEquip(); // 0x802795e4
void doEquip(); // 0x80279638
void initRelease(); // 0x80279660
void setInitReleaseParam(); // 0x80279944
void doRelease(); // 0x802799a8
void initForceDisappear(); // 0x80279a8c
void deleteEffect(); // 0x80279acc
void moveWait(); // 0x80279b10
void moveFlying(); // 0x80279bec
void moveSearchBack(); // 0x80279d38
void moveSearch(); // 0x80279f4c
void moveAttack(); // 0x8027a1a4
void moveCommon(); // 0x8027a330
void moveRescue(CrsGround &); // 0x8027a44c
void find1StKartNo(); // 0x8027a4d0
void chkSearchTargetKartRadius(); // 0x8027a808
void chkIsBackTargetKartOffsetPos(); // 0x8027a8ec
void moveNormal(CrsGround &); // 0x8027aa10
void moveColWall(CrsGround &); // 0x8027ac4c
void moveCannon(CrsGround &); // 0x8027adfc
void initDisappear(); // 0x8027ae28
void doDisappear(); // 0x8027af08
void initFall(); // 0x8027afdc
void calcNowHeight(); // 0x8027affc
static Vec sHandOffsetPos; // 0x8041383c
static J3DAnmObjTrans *mAnmTrans[3]; // 0x80414f64
static J3DAnmTransform *mAnmCalc[3]; // 0x80414f6c
// Inline/Unused
// void getBckName(int);
// Inline
virtual ~ItemFlyTurtle() {} // 0x8027b820
int getLockOnKartNo() const; // 0x8027b930
void initSpRelease(); // 0x8027b938
void doSpRelease(); // 0x8027b964
u8 _[0x354 - 0x2b0];
}; // class ItemFlyTurtle
// Inline Functions referenced in TU:
// void CLPointControllerFlyTurtle::CLPointControllerFlyTurtle();
// void CLPointControllerFlyTurtle::findNextPointNo(CLPoint *);
// void CLPointControllerFlyTurtle::recursiveTargetCalcBack(CLPoint *, int, int *, unsigned char *, bool *);
#endif // ITEMFLYTURTLE_H

33
include/Sato/ItemHeart.h Normal file
View File

@ -0,0 +1,33 @@
#ifndef ITEMHEART_H
#define ITEMHEART_H
#include "Sato/ItemObj.h"
class ItemHeart : public ItemObj
{
public:
ItemHeart(u32); // 0x8028717c
void reset(); // 0x802871cc
const char *getBmdFileName(); // 0x80287288
void createModel(JKRSolidHeap *, u32, u32); // 0x80287294
void doUniv(); // 0x80287298
void setHitItem(const ItemObj &); // 0x80287344
void initMoveEffect(ItemObj *); // 0x802874f0
void initEquip(); // 0x802875bc
void doEquip(); // 0x80287640
void initRelease(); // 0x8028770c
void initSpRelease(); // 0x802877c4
void doRelease(); // 0x802877e8
void initDisappear(); // 0x80287818
void doDisappear(); // 0x802878b0
void initFall(); // 0x802878b4
// Inline
virtual ~ItemHeart() {} // 0x802878d4
bool hasHeartsRemaining() const { return !mNoHeartsRemaining; }
u8 _2b4[0x2f4 - 0x2b0];
bool mNoHeartsRemaining;
}; // 2f8
#endif // ITEMHEART_H

57
include/Sato/ItemKinoko.h Normal file
View File

@ -0,0 +1,57 @@
#ifndef ITEMKINOKO_H
#define ITEMKINOKO_H
#include "Sato/ItemSuccession.h"
class ItemKinokoSuc : public ItemObjSuc
{
public:
ItemKinokoSuc(u32);
void reset();
virtual ~ItemKinokoSuc() {} // 0x80255744
u8 _2b0[0x300 - 0x2b0];
};
class ItemKinoko : public ItemObj
{ // Autogenerated
public:
ItemKinoko(u32); // 0x80254ec4
void reset(); // 0x80254f74
const char *getBmdFileName(); // 0x80254fd8
void createModel(JKRSolidHeap *, u32, u32); // 0x80255000
void doUniv(); // 0x80255004
void initEquip(); // 0x802550b0
void doEquip(); // 0x802551ac
void initRelease(); // 0x802551d8
void doRelease(); // 0x802551fc
void initDisappear(); // 0x80255200
void doDisappear(); // 0x80255218
void initFall(); // 0x8025521c
void executeEquipHandFunc(); // 0x80255258
// Inline
virtual ~ItemKinoko() {} // 0x8025538c
u8 _[0x2b4 - 0x2b0];
}; // class ItemKinoko
class ItemGoldenKinoko : public ItemKinoko
{
public:
ItemGoldenKinoko(u32);
void reset();
const char *getBmdFileName();
static void loadAnmData(J3DModelData *);
void createModel(JKRSolidHeap *, u32, u32);
void doUniv();
void initRelease();
void doRelease();
void initDisappear();
void update();
virtual ~ItemGoldenKinoko() {} // 0x8025584c
void executeEquipHandFunc() {} // 0x80255954
};
#endif // ITEMKINOKO_H

View File

@ -1,31 +1,301 @@
#ifndef ITEMOBJ_H
#define ITEMOBJ_H
#include <JSystem/JGeometry.h>
#include "Kaneshige/Course/CrsGround.h"
#include "Osako/shadowModel.h"
#include "types.h"
class ItemObj {
// TODO: inlines getters, setters
class ObjColBase;
class ItemObj
{
public:
enum ItemState
{
State0,
StateEquip, // 1
State2,
State3,
State4,
StateDivested, // 5
int getOwnerNum() const {
return mOwnerNum;
}
};
int getKartReaction() const {
return mKartReaction;
}
enum ItemColFlag
{
int getDirectHitKartNo() const {
return mDirectHitKartNo;
}
};
private:
u8 _0[0x120];
int mOwnerNum;
u8 _0x124[0x140 - 0x124];
int mKartReaction; // probably an enum
u8 _0x144[0x28c - 0x144];
int mDirectHitKartNo;
enum cMultiType
{
cMultiType_0,
cMultiType_1,
};
};
struct ItemHandOffsetData
{
f32 _0;
f32 _4;
f32 _8;
u16 _c[0x4];
};
ItemObj(u32); // 0x8024a2b0
// Vtable 0x0
virtual ~ItemObj() {} // 08
virtual void calc(); // 0C
virtual void reset(); // 10
virtual void update(); // 14
virtual void viewCalc(u32); // 18
virtual void setCurrentViewNo(u32); // 1C
virtual void drawSimpleModel(u32, f32 (*)[4], J3DUClipper *, f32 (*)[4]); // 20
virtual void calcColReaction(ItemObj *); // 24
virtual const char *getBmdFileName(); // 28
virtual u32 getModelDataAppendLoadFlg() { return 0; } // 2C
virtual void callHitItemSound(ItemObj *); // 30
virtual int getLockOnKartNo() const { return -1; } // 34
virtual void IsJuggleItem() const; // 38
virtual f32 getForceEfctOffsetScale() const { return 1.0f; } // 3C
virtual void createModel(JKRSolidHeap *, u32, u32); // 40
virtual void createColModel(J3DModelData *); // 44
virtual void setCollideAddVel(const JGeometry::TVec3f &, const f32 &); // 48
virtual void getItemBoundRatio() const; // 4C
virtual void doUniv(); // 50
virtual void initEquip() {} // 54
virtual void initRelease() {} // 58
virtual void initSpRelease() {} // 5C
virtual void initDisappear() {} // 60
virtual void initFall(); // 64
virtual void initDivested() { initmoveDivested(); } // 68
virtual void initOccur(const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 6C
virtual void initForceDisappear(); // 70
virtual void initEnd() {} // 74
virtual void doEquip() { doHandOneEquip(false, 0.0f); } // 78
virtual void doRelease() {} // 7C
virtual void doSpRelease() {} // 80
virtual void doDisappear() {} // 84
virtual void doFall(); // 88
virtual void doDivested() { moveDivested(); } // 8C
virtual void doForceDisappear(); // 90
virtual void initCommonMoveFallMtx(); // 94
virtual void moveColWall(CrsGround &); // 98
virtual void moveNormal(CrsGround &) {} // 9C
virtual void moveRescue(CrsGround &); // A0
virtual void moveCannon(CrsGround &); // A4
virtual void deleteEffect(); // A8
virtual void executeEquipHandFunc() { doHandOneEquip(false, 0.0f); } // AC
virtual void checkKartColDisappear(int); // B0
virtual void selectSucChild(); // B4
virtual void doSucReleaseFunc(ItemObj *); // B8
virtual void doSucSpReleaseFunc(ItemObj *); // BC
virtual void IsHitKart(int, const JGeometry::TVec3f &, f32); // C0
virtual void IsHitObject(ObjColBase *, const JGeometry::TVec3f &, ObjColBase *); // C4
virtual void executeGeoObjHitCallBack(GeographyObj *); // C8
void loadmodel(J3DModelData *); // 0x8024a4a4
void initHeartDisappear(); // 0x8024a7c8
static const char *getShadowBmdFileName(u8); // 0x8024a868
void loadshadowmodel(J3DModelData *); // 0x8024a8a4
void doStateUniv(); // 0x8024a930
void doDeleteList(); // 0x8024a958
void setStateEquip(bool, bool); // 0x8024a9a4
void setStateHeartWaiting(u8); // 0x8024ab6c
void setStateRelease(bool); // 0x8024ac04
void setStateSpRelease(bool); // 0x8024ace4
void setStateFall(bool); // 0x8024ada4
void setStateOccur(const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x8024aed0
void setStateDivested(bool); // 0x8024af94
void setStateDisappear(bool); // 0x8024b33c
void setStateForceDisappear(); // 0x8024b428
void tstAnyObjectHitting(); // 0x8024b4ec
void doSucStateFunc(ItemState); // 0x8024b52c
void disappearAllChild(bool); // 0x8024bd50
int getSuccessionItemNum(); // 0x8024bebc
void setChildStateRelease(); // 0x8024bed8
void setChildStateSpRelease(); // 0x8024befc
void setChildStateFall(); // 0x8024bf20
void setChildStateForceDisappear(); // 0x8024bf44
void calcDarkRatio(); // 0x8024c194
void checkPriorityNormal(); // 0x8024c2bc
void checkPrioritySpecial(); // 0x8024c348
void createSoundMgr(); // 0x8024c458
void createBoundSphere(J3DModelData *); // 0x8024c4b0
void createBoundSphere(f32, f32); // 0x8024c52c
void createBoundCylinder(J3DModelData *); // 0x8024c59c
void getVelStickXThrow(JGeometry::TVec3f *, f32, f32); // 0x8024c624
void createShadowModel(JKRSolidHeap *, u32, u32); // 0x8024c708
void setModelMatrixAndScale(Quaternion); // 0x8024c7c0
void setModelMatrixAndScale(f32 (*)[4]); // 0x8024c868
void setScaleCol(f32); // 0x8024c914
void resetObject(); // 0x8024c934
void resetNoColParam(); // 0x8024cbe0
void clearAllFlg(); // 0x8024cbf8
void chkSetFlgByKind(); // 0x8024cc2c
void getModelLfDir(JGeometry::TVec3f *); // 0x8024cc9c
void getModelUpDir(JGeometry::TVec3f *); // 0x8024ccb8
void getModelFrDir(JGeometry::TVec3f *); // 0x8024ccd4
void rotationRad(f32 &, f32); // 0x8024ccf0
void QuatRotX(f32, Quaternion *); // 0x8024cd40
void QuatRotY(f32, Quaternion *); // 0x8024cd84
void IsSpecialItem(int); // 0x8024cdc8
void getCompVecLength(JGeometry::TVec3f &, f32 &); // 0x8024cdf8
void setFrameNoColKart(u8, bool); // 0x8024ced0
void doFrameNoColKart(); // 0x8024cfa0
void calcColPos(); // 0x8024d12c
void checkStartColItemFrame(u32); // 0x8024d34c
void doHandOneEquip(bool, f32); // 0x8024d368
void doPosLerp(JGeometry::TVec3f *, const JGeometry::TVec3f &, f32); // 0x8024d5c4
void doRotationLerp(JGeometry::TPos3f *, f32 (*)[4], f32); // 0x8024d6a4
void doEquipScaleUp(f32); // 0x8024d72c
void executeEquipScaleUp(u32, f32); // 0x8024d7ec
void doForceDisappearScaleDown(); // 0x8024d870
void calcEquipAnmScaleUp(JGeometry::TVec3f &, u32); // 0x8024d8d0
void calcForceDisappearScaleDown(JGeometry::TVec3f &, u32); // 0x8024d948
void doReflectGeoObj(GeographyObj *, f32); // 0x8024d9b4
void doMovePos(); // 0x8024dd7c
void doGeoObjectCol(GeographyObj *); // 0x8024ddb4
void initmoveDivested(); // 0x8024df9c
void moveDivested(); // 0x8024e040
void initmoveFall(); // 0x8024e228
void initCommonMoveFall(const JGeometry::TVec3f &); // 0x8024e3c4
void moveFall(); // 0x8024e558
void doHeartWaiting(); // 0x8024e880
void doFallScaling(); // 0x8024e8dc
void colItemReflect(ItemObj *, ItemObj *, ItemColFlag, ItemColFlag); // 0x8024e93c
void doColMoveReflect(JGeometry::TVec3f, f32); // 0x8024eba8
void doColMoveReflectAndStopDisappear(JGeometry::TVec3f, f32); // 0x8024ecdc
void doColMoveJumpDown(JGeometry::TVec3f, f32); // 0x8024ef28
void doColMoveReflectJumpDownAndDisappear(JGeometry::TVec3f, f32); // 0x8024ef64
void doColMoveCommonJumpAndReflect(JGeometry::TVec3f, f32, bool); // 0x8024f0d4
void getHandAnmMtx(); // 0x8024f3f8
void getJuggleHandAnmMtx(); // 0x8024f4fc
void IsAlwaysColItemToKart(); // 0x8024f600
void initMoveColGround(); // 0x8024f628
void doMoveColGround(Quaternion *, bool); // 0x8024f654
void moveCommonAttr(CrsGround &, bool); // 0x8024fa7c
void simpleDraw(u32, f32 (*)[4], u32); // 0x8025019c
void setMultiType(cMultiType); // 0x802501f8
static cMultiType getCharaMultiType(int, u8); // 0x80250224
void doMoveGndParallel(const JGeometry::TVec3f &, f32); // 0x80250364
void initThrowVel(f32, f32, f32); // 0x802505f4
void setInitThrowDir(JGeometry::TVec3f *, f32, bool); // 0x8025098c
void setVelUpDown(f32, f32); // 0x80250a50
void setVelMax(); // 0x80250b1c
void calcVelUpDown(f32); // 0x80250b78
void calcGndNormal(JGeometry::TVec3f *, CrsGround &, f32, f32); // 0x80250c44
void calcBananaFirstQuat(const JGeometry::TVec3f &); // 0x80250d48
void calcScale(f32, f32, f32); // 0x80250e98
void calcAllUseInitVel(u8, f32); // 0x8025117c
void callHitKartSound(int); // 0x80251260
void getSpecialKind(const int &, const u8 &); // 0x802512dc
void getItemRnd(); // 0x8025146c
void setHandOffsetData(); // 0x80251490
void setHandOffsetPos(ItemHandOffsetData *); // 0x80251588
void getHandOffsetPos(); // 0x802515ac
void getThunderScale(); // 0x802515e4
void initMaxDivestedFrame(); // 0x802516bc
static f32 sDivestedGravity; // 0x80414af8
static u8 sDivestedFrame; // 0x80414afc
static u8 sTransferFrame; // 0x80414afd
static f32 sFrontEquipScaleRatio; // 0x80414b00
void setOwnerNum(int newOwnerNum) { mOwnerNum = newOwnerNum; }
int getOwnerNum() const { return mOwnerNum; }
void setOrigOwnerNum(int newOwnerNum) { mOrigOwnerNum = newOwnerNum; }
int getState() const { return mState; }
int getKartReaction() const { return mKartReaction; }
int getDirectHitKartNo() const { return mDirectHitKartNo; }
u8 getDriverNum() const { return mDriverNum; }
void setDriverNum(u8 newDriverNum) { mDriverNum = newDriverNum; }
void setOrigDriverNum(u8 newDriverNum) { mOrigDriverNum = newDriverNum; }
u32 getKind() const { return mItemKind; }
u32 getItemID() const
{
if (mItemKind == 21)
return 9;
return mItemKind;
}
void clrTransferPartner() { mTransferFlags &= ~0x200; }
void setTransferPartner() { mTransferFlags |= 0x200; }
// Inline/Unused
void combMtxOn();
void combMtxOff();
void getVelStickYThrow(JGeometry::TVec3f *, f32, f32);
void getVelStickXYThrow(JGeometry::TVec3f *, f32, f32);
void setModelMatrixAndScale();
void setAnmScaleCol(f32, JGeometry::TVec3f);
void QuatRotZ(f32, Quaternion *);
void getReflectVec(JGeometry::TVec3f, JGeometry::TVec3f, JGeometry::TVec3f *);
void doReflectItemObj(ItemObj *);
void setInitFallCommonFlg(const JGeometry::TVec3f &);
void chkIsAvailableColDisappear();
void checkIsHitBack(JGeometry::TVec3f, int);
void checkVelYMax(f32);
void moveOnNormalFall(CrsGround &);
// static f32 sDivPosLerpValue;
// Inline
bool IsSuccessionItem() { return mItemKind > 0x10; } // 0x8024b30c
bool IsSuccessionChildItem() { return mSuccessionItemLink.getList() != 0; } // 0x8024b324
void doOccur() { doFall(); } // 0x8024af68, ptmf shit
// private:
JGeometry::TVec3f mPos; // 04
JGeometry::TVec3f _10; //
JGeometry::TVec3f _1c; //
f32 _28; //
f32 _2c; //
f32 _30; //
Quaternion _34; //
Quaternion _44; //
f32 _54; //
JGeometry::TVec3f mDisScaleAnm; // 58
f32 mEquipScale; // 64
u8 _68[0x70 - 0x68]; //
JGeometry::TVec3f mVel; // 70
u32 mItemKind; // 7c
ExModel mModel; // 80
ShadowModel *mShadow; // 10c
int mBounds; // 110, unsure of type
u8 _114[0x118 - 0x114]; //
int mState; // 118
u8 _11c[0x120 - 0x11c]; //
int mOwnerNum; // 120
u8 mDriverNum; // 124
u8 _125[0x12c - 0x125]; //
u32 _12c; //
u16 mTransferFlags; // 130
u8 _132[0x140 - 0x132]; //
int mKartReaction; // 140 probably an enum
u8 _144[0x150 - 0x144]; //
JSULink<ItemObj> _150; // 150
JSULink<ItemObj> _160; // 160
JSULink<ItemObj> _170; // 170
JSULink<ItemObj> _180; // 180
JSULink<ItemObj> mMiniGameLink; // 190
u32 mSucKind; // 1a0
JSUList<ItemObj> _1a4; // 1a4
JSULink<ItemObj> mSuccessionItemLink; // 1b0
ItemObj *_1c0; // 1c0, probably ItemObjSuc
int mOrigOwnerNum; // 1c4
u8 mOrigDriverNum; // 1c8
u8 _1c9[0x1fc - 0x1c9]; //
u8 _1fc; //
u8 _1fd[0x24c - 0x1fd]; //
u8 _24c; //
u8 _24d[0x28c - 0x24d]; //
int mDirectHitKartNo; // 28c
u8 _290[0x2b0 - 0x290]; //
}; // 2b0
#endif

View File

@ -1,47 +1,16 @@
#ifndef ITEMOBJMGR_H
#define ITEMOBJMGR_H
#include "JSystem/JKernel/JKRHeap.h"
#include "Kaneshige/SysDebug.h"
#include "Sato/GeographyObjMgr.h"
#include "Sato/ItemSuccession.h"
#include "Sato/ItemHeart.h"
#include "types.h"
class ItemObjMgr
{
public:
ItemObjMgr();
virtual ~ItemObjMgr();
virtual void draw();
virtual void callbackColGeoObj();
static void createMgr() { gItemMgr = new ItemObjMgr(); }
void calc();
void createModel(JKRSolidHeap *, u32);
void reset();
void clrKartItemUseTriggerList();
int getRobberyItemNum(int, u8);
static ItemObjMgr *getItemObjMgr() { return gItemMgr; }
static ItemObjMgr *gItemMgr;
static bool sTempSlotUseItem[18];
static int sTempSpecialRatio[9];
private:
unsigned char _0x4[0x828 - 0x4];
};
inline ItemObjMgr *GetItemObjMgr()
{
return ItemObjMgr::getItemObjMgr();
}
class ItemShuffleMgr
{
public:
struct SlotTable
struct SlotTable // fabricated struct, unknown if used currently
{
u8 chance[27];
u8 total; // i don't know wheter or not this is used but 1 byte is not always enough to store this
@ -50,64 +19,369 @@ public:
class KartSlotList
{
public:
KartSlotList();
SlotTable *slotTable[2];
KartSlotList()
{
slotTable[0] = nullptr;
slotTable[1] = nullptr;
}
u8 *slotTable[2];
};
struct KartSlotData
{
u8 kartCount;
u8 useableSlots;
u8 totalSlots;
KartSlotList *mList;
u8 kartCount; // 0
u8 useableSlots; // 1
u8 totalSlots; // 2
KartSlotList *mList; // 4
};
struct KartSlotRankDataSet
{
KartSlotData *data;
u32 specialItemIndex;
u32 specialItemChance;
int kart_rank;
int total;
int _0x14;
KartSlotData *data; // 0
u32 specialItemIndex; // 4
u32 specialItemChance; // 8
int kart_rank; // C
int total; // 10
int kart_index; // 14
};
static KartSlotData mSlotList;
static KartSlotData mSlotListEnemy;
static int SLOT_MAX_COUNT;
static int SLOT_INVALID_BUTTON_COUNT;
static int SLOT_WAIT_COUNT;
static u8 sSlotNormalItemNum; // 9
static u8 sSlotSpecialItemNum; // 9
static u32 *sSlotKindIndexArray;
static int *sSlotKindIndexArray;
ItemShuffleMgr()
{
_0x4 = 0;
_0x5 = 0;
reset();
}
void reset()
{
mSlotCount = 0;
mRollFlags = 0;
}
void startShuffle()
{
mRollFlags |= 1;
_7 = false;
}
static const char *getSlotList(int slotType)
{
const char *ret = "/Item/ItemSlotList.dat";
switch (slotType)
{
case 2:
ret = "/Item/ItemSlotList1.dat";
break;
case 3:
ret = "/Item/ItemSlotList2.dat";
break;
}
return ret;
}
static u32 getRndItemKindPossibilityGetting(stRandom *, int, u8);
static void loadSlotData();
static u32 calcBufOffset(u8 *pData, int n);
static void setToList(u8 *, ItemShuffleMgr::KartSlotData *);
static void setToListLAN(ItemShuffleMgr::KartSlotData *, const u8 &, const int *);
static void setAllDynamicRate();
static void setDynamicRate(ItemShuffleMgr::KartSlotData *, bool);
int SlotItem(int, u8);
bool doShuffle();
void resetRolling();
int calcRndSpecialSlot(int, const ItemShuffleMgr::KartSlotData &, bool);
int calcRndSpecialRank(ItemShuffleMgr::KartSlotRankDataSet);
virtual ~ItemShuffleMgr(); // 08
virtual void calcRaceUseNormalItem(u32 *, KartSlotRankDataSet *, int); // 0C
virtual void calcSpecialItemNum(u32 *, KartSlotRankDataSet *, int, int, bool); // 10
virtual int calcRank(KartSlotRankDataSet); // 14
int calcSlot(KartSlotRankDataSet &slotRankData, int p2, int p3, bool p4);
virtual ~ItemShuffleMgr();
virtual void calcRaceUseNormalItem(u32 *, KartSlotRankDataSet *, int);
virtual void calcSpecialItemNum(u32 *, KartSlotRankDataSet *, int, int, bool);
virtual int calcRank(KartSlotRankDataSet);
// Inline/Unused
void calcRndSpecialRatio(u32 *, ItemShuffleMgr::KartSlotRankDataSet *, bool);
void setKartNumber(int no) { mKartNumber = no; }
bool isNotRolling() const { return !(mRollFlags & 1) && !(mRollFlags & 2); }
private:
u16 _0x4; // might be the amount of button presses to speed up the shuffle
u8 _0x5; //
u8 _0x6;
u8 _0x7;
int idx;
u16 mSlotCount; // 4
u8 mRollFlags; // 6
bool _7; //
int mKartNumber; // 8
};
class ItemRndSpecialShuffleMgr : public ItemShuffleMgr
{
public:
virtual ~ItemRndSpecialShuffleMgr();
ItemRndSpecialShuffleMgr() {}
virtual ~ItemRndSpecialShuffleMgr() {}
virtual void calcRaceUseNormalItem(u32 *, KartSlotRankDataSet *, int);
virtual void calcSpecialItemNum(u32 *, KartSlotRankDataSet *, int, int, bool);
virtual int calcRank(KartSlotRankDataSet);
};
class ItemObjMgr : public SysDbUsrPage
{
public:
ItemObjMgr();
virtual ~ItemObjMgr();
virtual void draw();
virtual void callbackColGeoObj() {}
enum eDrawSimplModelItemType
{
};
struct SLAN_DebugKartPadData
{
void reset()
{
mButtons.clear();
mMainStick.clear();
}
JUTGamePad::CButton mButtons; // _00
JUTGamePad::CStick mMainStick; // _30
};
struct SLAN_DebugKartPadDataArray
{
SLAN_DebugKartPadDataArray() {}
SLAN_DebugKartPadData padData[16];
};
struct SLAN_DebugItemData
{
void init(ItemObj *obj) // fabricated
{
_0 = obj->getKind();
_4 = (obj->mPos);
_10 = (obj->mVel);
m.set(obj->mModel.getBaseTRMtx());
_4c = obj->getState();
_50 = obj->_24c;
}
void reset() // fabricated
{
_0 = 22;
_4.zero();
_10.zero();
PSMTXIdentity(m);
_4c = 0;
_50 = 0;
}
u32 _0; //
JGeometry::TVec3f _4; //
JGeometry::TVec3f _10; //
JGeometry::TSMtxf m; // 1c
u32 _4c; //
u8 _50; //
};
struct SLAN_DebugItemDataArray
{
SLAN_DebugItemDataArray() {}
SLAN_DebugItemData itemData[0x40];
};
struct StockItem
{
void clear()
{
mKind = 16;
_4 = false;
mColorID = 0;
}
int mKind; // 0
bool _4; // 4
u8 mColorID; // 5
};
struct KartHitList
{
ItemObj *mObjects[17]; // 0
}; // Size: 0x44
void initItemMaxNums(); // 0x8023d24c
void createShuffleMgr(); // 0x8023d29c
void reset(); // 0x8023d518
void resetLists(); // 0x8023d55c
void clrKartHittingList(); // 0x8023d734
void clrKartItemEquipTriggerList(); // 0x8023d7b0
void clrKartItemUseTriggerList(); // 0x8023d808
void clrKartStockingEquipItemList(); // 0x8023d860
void createAllObj(); // 0x8023d908
ItemObj *equipItemSuccession(u32, int, u8); // 0x8023dfa0
bool robRivalOfItem(int, int, u8); // 0x8023e140
bool transferPartnerOfItem(int, bool); // 0x8023e28c
bool stockItemToKart(int, int, u8, bool, u8); // 0x8023e39c
bool equipItemToKart(int, int, u8, bool, u8); // 0x8023e3d0
ItemObj *occurItem(u32, const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x8023e5c4
void delete_stockItemToKart(int, u8); // 0x8023e658
void removeItem(ItemObj *); // 0x8023e680
void removeItem(JSUListIterator<ItemObj> &); // 0x8023e938
void deleteItemByMoveList(ItemObj *); // 0x8023ea14
void deleteItemByKartEquipItemList(ItemObj *); // 0x8023ea70
void deleteItemByKartEquipItemListSuc(ItemObj *); // 0x8023eabc
void deleteItemKeepMax(ItemObj *); // 0x8023eadc
void deleteMaxOverItem(const JSUList<ItemObj> &); // 0x8023ebd8
ItemObj *getDeleteObjByPriorityList(JSUList<ItemObj> *); // 0x8023ec48
void releaseItemByKartEquipItemList(ItemObj *); // 0x8023ed54
ItemObj *getKartEquipItem(int, u8); // 0x8023ed84
ItemObj *getKartEquipItem(int); // 0x8023ed9c
int getStockItem(int, u8); // 0x8023ede4
bool tstColReactionKart(int, ItemObj *); // 0x8023ee1c
void loadOtherModelData(); // 0x8023ee48
const char *getOtherBmdFileName(u32); // 0x8023eef4
void load(); // 0x8023ef14
void createModel(JKRSolidHeap *, u32); // 0x8023f1dc
void initCharShadowModelData(); // 0x8023f39c
void createCharShadowModel(JKRSolidHeap *, u32); // 0x8023f540
void calcCharShadowModel(); // 0x8023f5f8
void calc(); // 0x8023fc00
void calcIsHitItem(JSUListIterator<ItemObj> &, JSUListIterator<ItemObj> &); // 0x8024048c
void setKartHittingList(JSUListIterator<ItemObj> &, int); // 0x802405d8
void checkItemByShuffle(); // 0x8024087c
void abortItemShuffle(int); // 0x80240c00
static ItemObj *getItemWanWanObj(ItemObj *); // 0x80240c3c
static ItemObj *getItemFireBall(ItemObj *); // 0x80240c58
static ItemObj *getItemFireBallSuc(ItemObj *); // 0x80240c74
static ItemObj *getItemYoshiEgg(ItemObj *); // 0x80240c90
void setHeartItem(int, ItemHeart *); // 0x80240cac
void deleteHeartItem(int); // 0x80240d48
bool tstHaveItemHeart(int); // 0x80240e28
void executeColHitHeart(ItemObj *, int); // 0x80240edc
ItemHeart *getHeartItem(int); // 0x80240f80
void setItemUseTrigger(int, u8); // 0x80241018
int tstItemUseTrigger(int, u8) const; // 0x80241100
void setThunderDisableUseCounter(); // 0x802411e4
static u8 getNowTandemDriverNum(int); // 0x8024123c
static bool IsSpecialCharacter(long); // 0x80241294
bool IsRollingSlot(int); // 0x802412b8
bool IsRollingSlot(int, u8); // 0x8024131c
bool IsAvailableRollingSlot(int, u32); // 0x80241360
void startItemShuffleSingle(int, bool); // 0x80241534
void startItemShuffleDouble(int); // 0x80241608
ItemObj::ItemHandOffsetData &getHandOffsetData(ItemObj *); // 0x802416d0
int getRobberyItemNum(int, u8); // 0x80241928
void removeMiniGameList(ItemObj *); // 0x80241970
void update(eDrawSimplModelItemType, int); // 0x80241998
void viewCalc(u32); // 0x80241adc
void setCurrentViewNo(u32); // 0x80241bf0
void drawSimpleModel(u32, eDrawSimplModelItemType, int, LightObj *); // 0x80241cf4
void drawColModel(u32); // 0x80241f64
static void setLANDebugInfo(); // 0x80241f68
ItemObj *equipItem2(int kind, int kart_index, u8 driver_index) { // fabricated
if (GetGeoObjMgr()->isBombBattle())
{
ItemObj *obj = equipItemSuccession(kind, kart_index, driver_index);
removeMiniGameList(obj);
return obj;
}
else if (kind > 0x10)
{
return equipItemSuccession(kind, kart_index, driver_index);
}
else
{
return equipItem(kind);
}
}
// Inline/Unused
ItemObj *equipItem(u32);
void appendItemSuccession(ItemObj *, u32, u8);
void createItemByKartStockingItemList();
void isEnableDeleteItem(ItemObj *);
void IsItemAvailable(int);
bool tstKartEquipItemTrigger(int, u8);
void getStockItem(int);
void loadModelData(ItemObj *);
void loadShadowModelData();
void changeItemHoldCharacter();
void IsAbleToCreateItem(int);
void getNowStockingKindNum(int, u32);
void cancelRollingSlot(int);
bool IsAvailableRollingSlotDriver(int, u8);
void getMaxHoldMiniBombNum();
void getNowEnableSlotDriver(u8 *, int);
void getConvertSucItemKind(u32);
void getMaxItemMoveNum();
void setMaxItemMoveNum(const u8 &);
void entryMiniGameList(ItemObj *);
void tstEnableDrawGhost(bool, const JSUListIterator<ItemObj> &);
static void createMgr() { gItemMgr = new ItemObjMgr(); }
static ItemObjMgr *getItemObjMgr() { return gItemMgr; }
static int sTopBalloonNum;
static SLAN_DebugItemDataArray *sLANDbgDataPtr;
static SLAN_DebugKartPadDataArray *sLANDbgKartPadBuffer;
static ItemObjMgr *gItemMgr;
void swapOwner(ItemObj *obj, bool fromRival, int kart_index1, int kart_index2, u8 driver_index1, u8 driver_index2)
{
this->mEquipItem[kart_index1][driver_index1] = obj; // here
obj->setOrigOwnerNum(kart_index2);
obj->setOrigDriverNum(driver_index2);
obj->setOwnerNum(kart_index1);
obj->setDriverNum(driver_index1);
if (!fromRival)
obj->mTransferFlags |= 0x200;
obj->setStateDivested(true);
delete_stockItemToKart(kart_index2, driver_index2);
this->mEquipItem[kart_index2][driver_index2] = nullptr;
}
// private:
u8 _28[0x2c - 0x28]; //
KartHitList mHitList[8]; // 2c
StockItem mStockItem[8][2]; // 24c
ItemObj *mEquipItem[8][2]; // 2cc, items that are being held
bool mIsHitting[8][2]; // 30c
bool mIsEquiped[8][2]; // 31c
bool mItemUse[8][2]; // 32c
ItemHeart *mHeartItem[8]; // 33c
ItemShuffleMgr *mShuffMgr[8][2]; // 35c
J3DModelData *mModel[16]; // 39c
J3DModelData *mOtherModel[1]; // 3dc
J3DModelData *mShadowModel[2]; // 3e0
JSUList<ItemObj> _3e8[22]; //
JSUList<ItemObj> _4f0[22]; //
JSUList<ItemObj> _5f8[22]; //
JSUList<ItemObj> _700[4]; //
JSUList<ItemObj> mMiniGameList; // 730
JSUList<ItemObj> _73c[16]; //
JSUList<ItemObj> _7fc; //
bool mObjectsCreated; // 808
int mThunderDisableTimer; // 80c
ItemObj::ItemHandOffsetData *mpHandOffsetData; // 810
J3DModelData *mpMdlData; // 814
ShadowModel *mpShadowMdl[2]; // 818, 81c
bool _820; //
u32 _824; //
};
inline ItemObjMgr *GetItemObjMgr()
{
return ItemObjMgr::getItemObjMgr();
}
inline void CreateItemObjMgr() { ItemObjMgr::createMgr(); }
#endif // ITEMOBJMGR_H

View File

@ -1,8 +0,0 @@
#ifndef ITEMSHUFFLEMGR_H
#define ITEMSHUFFLEMGR_H
#endif // !ITEMSHUFFLEMGR_H

29
include/Sato/ItemStar.h Normal file
View File

@ -0,0 +1,29 @@
#ifndef ITEMSTAR_H
#define ITEMSTAR_H
#include "Sato/ItemObj.h"
// TODO
class ItemStar : public ItemObj
{ // Autogenerated
public:
ItemStar(u32); // 0x80255aa0
void reset(); // 0x80255af0
const char *getBmdFileName(); // 0x80255b7c
void createModel(JKRSolidHeap *, u32, u32); // 0x80255ba4
void doUniv(); // 0x80255bdc
void initEquip(); // 0x80255c88
void doEquip(); // 0x80255d0c
void initRelease(); // 0x80255dd8
void doRelease(); // 0x80255dfc
void initDisappear(); // 0x80255e00
void doDisappear(); // 0x80255e18
void initFall(); // 0x80255e1c
void doFall(); // 0x80255e44
// Inline
virtual ~ItemStar() {} // 0x80255ec8
u8 _[0x2e4 - 0x2b0];
};
#endif // ITEMSTAR_H

View File

@ -0,0 +1,86 @@
#ifndef ITEMSUCCESSION_H
#define ITEMSUCCESSION_H
#include "Sato/ItemObj.h"
// TODO: virtual and static functions
class ItemMultiBase
{
public:
// Inline/Unused
void getOffsetScale();
void setDivestedStartPos(const JGeometry::TVec3f &);
virtual void ParamInit(const JGeometry::TVec3<s16> &) = 0;
virtual void DoEquipScaleUp(f32) = 0;
virtual void MoveEquip() = 0;
virtual void InitMoveDivested() = 0;
virtual void MoveDivested() = 0;
};
class ItemJuggle : public ItemMultiBase
{
public:
void DoEquipScaleUp(f32);
void ParamInit(const JGeometry::TVec3<s16> &);
void InitMoveDivested();
void MoveDivested();
void MoveEquip();
void doHandJuggleEquip(const JGeometry::TVec3f &, Mtx);
void doMoveJuggleEquip(const JGeometry::TVec3f &, Mtx, JGeometry::TVec3f, f32);
static f32 sJuggleRotStartOffset;
static f32 sJuggleRotRatio;
static f32 sJuggleRotRatioSub;
};
class ItemBuild : public ItemMultiBase
{
public:
void ParamInit(const JGeometry::TVec3<s16> &);
void DoEquipScaleUp(f32);
void MoveEquip();
void setFirstPos(JGeometry::TVec3f *, f32);
void setVel(f32);
void setPos(JGeometry::TVec3f *, f32);
void setHeight(f32);
void setRotate(Mtx);
void setFirstRotate(Mtx);
void InitMoveDivested();
void MoveDivested();
};
class ItemObjSuc : public ItemObj
{
public:
ItemObjSuc(u32 p1) : ItemObj(p1) {
setSucMultiType(cMultiType_0);
}
void reset();
void initEquip();
void doEquip();
void initJuggleEquip();
void doJuggleEquip();
void setInitBuildAppend();
void initBuildEquip();
void doBuildEquip();
void selectSucChild();
void selectJuggleSucChild();
void initDivested();
void doDivested();
void setSucMultiType(cMultiType);
void initForceDisappear();
void doForceDisappear();
static f32 sJuggleXLength;
static f32 sJuggleRndAngle;
static f32 sJuggleRndAngle2;
static f32 sJuggleRotAxisRatio;
static f32 sJuggleGravity;
static f32 sJuggleGravityUpRatio;
static f32 sJuggleAnmOverFrame;
};
#endif // ITEMSUCCESSION_H

View File

@ -0,0 +1,39 @@
#ifndef ITEMTHUNDER_H
#define ITEMTHUNDER_H
#include "Sato/GeographyObj.h"
#include "Sato/ItemObj.h"
// TODO
class ItemThunder : public ItemObj
{ // Autogenerated
public:
ItemThunder(unsigned long); // 0x80278588
void entrySuperVisor(GeoObjSupervisor *); // 0x80278744
void reset(); // 0x80278774
const char *getBmdFileName(); // 0x80278840
void createModel(JKRSolidHeap *, unsigned long, unsigned long); // 0x80278868
void doUniv(); // 0x8027889c
void initEquip(); // 0x8027896c
void doEquip(); // 0x802789c0
void initRelease(); // 0x802789e8
void doRelease(); // 0x80278a1c
void initDisappear(); // 0x80278a20
void doDisappear(); // 0x80278b0c
void initFall(); // 0x80278b5c
void doFall(); // 0x80278b84
void initForceDisappear(); // 0x80278c08
void checkKartColDisappear(int); // 0x80278c3c
void setEffectThunder(int); // 0x80278c50
void deleteEffectThunder(); // 0x80278d14
void doEffectThunder(); // 0x80278da4
static Vec sHandOffsetPos; // 0x804137d8
static GeoObjSupervisor *sSuperVisorList; // 0x80413830
// Inline
virtual ~ItemThunder(); // 0x80278628
u8 _[0x350 - 0x2b0];
}; // class ItemThunder
#endif // ITEMTHUNDER_H

211
include/Sato/ItemTurtle.h Normal file
View File

@ -0,0 +1,211 @@
#ifndef ITEMGTURTLE_H
#define ITEMGTURTLE_H
#include "Sato/ItemObj.h"
#include "Sato/ItemSuccession.h"
// TODO
class ItemGTurtle : public ItemObj
{ // Autogenerated
public:
ItemGTurtle(u32); // 0x80243f84
void reset(); // 0x8024411c
const char *getBmdFileName(); // 0x8024424c
void createModel(JKRSolidHeap *, u32, u32); // 0x80244274
void doUniv(); // 0x80244278
void calcColReaction(ItemObj *); // 0x80244370
void callHitItemSound(ItemObj *); // 0x80244378
void initEquip(); // 0x802443c4
void doEquip(); // 0x802444c0
void initRelease(); // 0x802444ec
void doUnivInitRelease(float, bool); // 0x80244518
void setInitReleaseParam(); // 0x80244680
void initBlurEmt(); // 0x8024479c
void doUnivRelease(); // 0x80244820
void calcRotQuat(Quaternion *); // 0x80244998
void calcGndUpdateQuat(); // 0x802449e0
void calcFlyingUpdateQuat(); // 0x80244a78
void chkColWallDisappear(); // 0x80244acc
void moveNormal(CrsGround &); // 0x80244bdc
void calcMoveGndNormalVec(JGeometry::TVec3f *, CrsGround &); // 0x80244f28
void doRelease(); // 0x80244f50
void initSpRelease(); // 0x80244f7c
void doSpRelease(); // 0x802451e8
void initDisappear(); // 0x80245214
void initForceDisappear(); // 0x802452c8
void doDisappear(); // 0x80245308
void initCommonMoveFallMtx(); // 0x8024538c
void doFall(); // 0x802453c0
void doDivested(); // 0x802453e0
void calcBalanceFlying(); // 0x80245400
void getMaxColWallNum(); // 0x80245454
void initFirstRotate(); // 0x802454a4
void doFirstRotate(); // 0x80245510
void doSound(u32); // 0x8024559c
void deleteEffect(); // 0x802455ec
void executeEquipHandFunc(); // 0x80245630
void executeGeoObjHitCallBack(GeographyObj *); // 0x80245660
static Vec sHandOffsetPos; // 0x804118a0
// Inline/Unused
void setGeoHitSe(GeographyObj *);
void countHitGeoReflectNum(GeographyObj *);
// Inline
void calcVel(); // 0x80244994
virtual ~ItemGTurtle() {} // 0x802458ac
u8 _[0x2ec - 0x2b0];
}; // class ItemGTurtle
class ItemRTurtle : public ItemGTurtle
{
public:
ItemRTurtle(u32);
void reset();
const char *getBmdFileName();
void doUniv();
void calcColReaction(ItemObj *);
void initRelease();
void searchTarget(float, bool);
void checkOver1stKart();
void getKartCLDir(int, JGeometry::TVec3f *);
void moveAttack();
void moveCenterLine();
void initCL();
void calcVel();
void getMiniGameSearchMaxLengthXZ();
void moveColWall(CrsGround &);
void calcMoveGndNormalVec(JGeometry::TVec3f *, CrsGround &);
void moveNoChase();
// Inline/Virtuals
virtual ~ItemRTurtle() {} // 0x80249ee4
virtual int getLockOnKartNo() const; // 0x80249fec
u8 _[0x304 - 0x2ec];
};
class ItemGTurtleBig : public ItemGTurtle
{
public:
ItemGTurtleBig(u32);
void reset();
const char *getBmdFileName();
void doUniv();
void initEquip();
void initRelease();
void initSpRelease();
void initDisappear();
void calcColReaction(ItemObj *);
void getMaxColWallNum();
void calcBalanceFlying();
void checkKartColDisappear(int);
f32 getForceEfctOffsetScale() const;
void executeGeoObjHitCallBack(GeographyObj *);
virtual ~ItemGTurtleBig() {} // 0x80249ff4
u8 _[0x2f0 - 0x2ec];
};
class ItemFireBall : public ItemGTurtle
{
public:
ItemFireBall(u32);
void reset();
const char *getBmdFileName();
void doUniv();
void deleteEffect();
void deleteHaveEffect();
void initEquip();
void doEquip();
void moveBaseEfct();
void initRelease();
void initSpRelease();
void initDisappear();
void doDisappear();
void initFall();
void doFall();
void initForceDisappear();
void doDivested();
void doUnivRelease();
void moveNormal(CrsGround &);
void calcColReaction(ItemObj *);
void calcRotQuat(Quaternion *);
void getMaxColWallNum();
void executeGeoObjHitCallBack(GeographyObj *);
// Inline
void initEffect();
void initHaveEffect();
virtual ~ItemFireBall() {} // 0x80249c9c
u8 _[0x304 - 0x2ec];
};
class ItemGTurtleSuc : public ItemObjSuc
{
public:
ItemGTurtleSuc(u32);
void reset();
void doSucReleaseFunc(ItemObj *);
void doSucSpReleaseFunc(ItemObj *);
virtual ~ItemGTurtleSuc() {} // 0x80247da4
u8 _2b0[0x300 - 0x2b0];
};
class ItemRTurtleSuc : public ItemGTurtleSuc
{
public:
ItemRTurtleSuc(u32);
void reset();
virtual ~ItemRTurtleSuc() {} // 0x80249dc4
};
class ItemFireBallSuc : public ItemObjSuc
{
public:
ItemFireBallSuc(u32);
void reset();
void doSucReleaseFunc(ItemObj *);
void doSucSpReleaseFunc(ItemObj *);
void initEquip();
void doEquip();
void doDivested();
void initDisappear();
void initFall();
void doFall();
void initForceDisappear();
void doForceDisappear();
void initEnd();
void deleteEffect();
void moveEffect(bool);
void IsEfctTypeRed() const;
virtual ~ItemFireBallSuc() {} // 0x80249b44
u8 _[0x310 - 0x2b0];
};
// Inline/Unknown Functions Referenced in TU:
// void ItemMultiBase::~ItemMultiBase();
// virtual ItemObjSuc::~ItemObjSuc() // ItemObjSuc.h; // 0x8024632c
// 0xvoid CLPointControllerRTurtle::CLPointControllerRTurtle(ItemObj *);
// 0xvoid CLPointControllerRTurtle::findNextPointNo(CLPoint *);
// 0x// virtual ItemObj::~ItemObj() // ItemObj.h; // 0x80244034
// void ItemObj::initEnd() // ItemObj.h; // 0x80245388
// void ItemObj::getLockOnKartNo() const // ItemObj.h; // 0x80249c4c
// void ItemObj::getForceEfctOffsetScale() const // ItemObj.h; // 0x80249c54
// void ItemObj::initRelease() // ItemObj.h; // 0x80249c5c
// void ItemObj::initSpRelease() // ItemObj.h; // 0x80249c60
// void ItemObj::doRelease() // ItemObj.h; // 0x80249c64
// void ItemObj::doSpRelease() // ItemObj.h; // 0x80249c68
// void ItemObj::doDisappear() // ItemObj.h; // 0x80249c6c
// void ItemObj::moveNormal(CrsGround &) // ItemObj.h; // 0x80249c70
// void ItemObj::executeEquipHandFunc() // ItemObj.h; // 0x80249c74
// void ItemObj::initDivested() // ItemObj.h; // 0x80249da4
// void ItemObj::initDisappear() // ItemObj.h; // 0x80249edc
// void ItemObj::deleteEffect() // ItemObj.h; // 0x80249ee0
#endif // ITEMGTURTLE_H

65
include/Sato/ItemWanWan.h Normal file
View File

@ -0,0 +1,65 @@
#ifndef ITEMWANWAN_H
#define ITEMWANWAN_H
#include "Sato/ItemObj.h"
// TODO: virtual and static functions(actually, probably everything)
class J3DAnmCluster;
class ItemWanWanObj : public ItemObj
{ // Autogenerated
public:
ItemWanWanObj(u32);
void reset();
const char *getBmdFileName();
static void loadAnmData(J3DModelData *);
void getBckName(int);
void createModel(JKRSolidHeap *, u32, u32);
void update();
void drawSimpleModel(u32, Mtx, J3DUClipper *, Mtx);
void viewCalc(u32);
void setCurrentViewNo(u32);
void doUniv();
void calcColReaction(ItemObj *);
void initEquip();
void doEquip();
void initRelease();
void setInitReleaseParam();
void doUnivRelease(bool);
void doRelease();
void calcGravity();
void initDisappear();
void doDisappear();
void initFall();
void doFall();
void moveNormal(CrsGround &);
void calcBalanceFlying();
void initmoveCenterLine();
void setCLPoint();
void moveCenterLine();
void moveStraight();
void getChainLength();
void getFirstNodePos(JGeometry::TVec3f *);
void checkKartColDisappear(int);
void separate();
void getChainLocatorPos(JGeometry::TVec3f *, Mtx);
f32 getForceEfctOffsetScale() const;
void executeGeoObjHitCallBack(GeographyObj *);
void doTraceEfct();
static Vec sHandOffsetPos;
static J3DAnmObjTrans *mAnmTrans[3];
static J3DAnmTransform *mAnmCalc[3];
static int sChainJointNo;
static J3DDeformData *mAnmDeform;
static J3DAnmCluster *mAnmCluster;
// Inline/Unused
void setHitSe();
void getCenterNodePos(JGeometry::TVec3f *);
void getLastNodePos(JGeometry::TVec3f *);
u8 _[0x35c - 0x2b0];
};
#endif // ITEMWANWAN_H

View File

@ -0,0 +1,42 @@
#ifndef ITEMYOSHIEGG_H
#define ITEMYOSHIEGG_H
#include "Sato/ItemObj.h"
// TODO: virtual and static functions
class ItemYoshiEgg : public ItemObj
{ // Autogenerated
public:
ItemYoshiEgg(u32); // 0x8027d9c0
void reset(); // 0x8027da54
const char *getBmdFileName(); // 0x8027dadc
static void loadAnmData(J3DModelData *); // 0x8027db04
void createModel(JKRSolidHeap *, u32, u32); // 0x8027db48
void update(); // 0x8027dba8
void doUniv(); // 0x8027dbfc
void initEquip(); // 0x8027dd9c
void initRelease(); // 0x8027df6c
void initSpRelease(); // 0x8027dfa0
void initFall(); // 0x8027dfd0
void initDisappear(); // 0x8027e004
void doDisappear(); // 0x8027e3cc
void calcRotQuat(Quaternion *); // 0x8027e3d0
void calcCreateItem(u32 *); // 0x8027e4b4
void calcRndItemKind(u32, u32 *, u32 *); // 0x8027e620
void calcColReaction(ItemObj *); // 0x8027e6cc
void moveColWall(CrsGround &); // 0x8027e728
void checkKartColDisappear(int); // 0x8027e774
static Vec sHandOffsetPos; // 0x80413888
static J3DAnmTexPattern *sTexPattern; // 0x80416d10
// Inline
virtual ~ItemYoshiEgg() {} // 0x8027e7c0
void checkOver1stKart(); // 0x8027e918
void calcGndUpdateQuat(); // 0x8027e920
void calcFlyingUpdateQuat(); // 0x8027e924
u8 _[0x334 - 0x2b0];
}; // class ItemYoshiEgg
#endif // ITEMYOSHIEGG_H

View File

@ -7,7 +7,7 @@
namespace ObjUtility
{
void getPtrMainArc(char *); // 0x8025dc08
void *getPtrMainArc(char *); // 0x8025dc08
void *getPtrCourseArc(char *); // 0x8025dc30
void getPtrMainLocaleArc(char *); // 0x8025dc58
void setRMtx(Mtx, const JGeometry::TVec3f &, const JGeometry::TVec3f &); // 0x8025dc80

View File

@ -22,7 +22,7 @@ public:
void getRandom();
void getRankParamID();
void tstEndRace();
void isRival() const;
bool isRival() const;
void getMyRank();
// Inline/Unused
// void getSpeedCtrl();

View File

@ -71,7 +71,7 @@ public:
void SetTireDispRound(KartBody *, KartSus *, f32);
void SetKartRpm(KartBody *, f32, f32);
void WhichDriver(int);
void WhichNowDriver(int);
u8 WhichNowDriver(int);
bool CheckCamera(int);
int GetCameraNum(int);
void CheckItem(int);

View File

@ -10,8 +10,8 @@ JKRAramBlock::JKRAramBlock(u32 address, u32 size, u32 freeSize, u8 groupID, bool
JKRAramBlock::~JKRAramBlock()
{
JSUList<JKRAramBlock> *list = mLink.getSupervisor();
JSULink<JKRAramBlock> *prev = mLink.getPrev();
JSUList<JKRAramBlock> *list = mLink.getList();
if (prev)
{
prev->getObject()->mFreeSize += mSize + mFreeSize;

File diff suppressed because it is too large Load Diff