summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2021-12-31 06:35:39 -0800
committerGitHub <noreply@github.com>2021-12-31 06:35:39 -0800
commitb8573fe911dd1c55f599cbf8e9035d2bb5c3c767 (patch)
tree593b330c4d699015759e62fb7b42c0fb10fe1e96 /include
parentacd2622e293e4d104a368abb6279a213c91a2106 (diff)
parent343f65d665a5f59d410feba7a1fe9a582ac4090c (diff)
Merge pull request #170 from magcius/jpa3
JPAExtraShape
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/J3DGraphBase/J3DShape.h11
-rw-r--r--include/JSystem/JGeometry.h16
-rw-r--r--include/JSystem/JMath/JMATrigonometric.h11
-rw-r--r--include/JSystem/JParticle/JPABaseShape.h103
-rw-r--r--include/JSystem/JParticle/JPAChildShape.h38
-rw-r--r--include/JSystem/JParticle/JPADynamicsBlock.h18
-rw-r--r--include/JSystem/JParticle/JPAExtraShape.h67
-rw-r--r--include/JSystem/JParticle/JPAParticle.h52
-rw-r--r--include/JSystem/JParticle/JPAResource.h2
-rw-r--r--include/d/d_procname.h798
-rw-r--r--include/dolphin/gx/GX.h6
-rw-r--r--include/dolphin/os/OS.h20
-rw-r--r--include/f_pc/f_pc_leaf.h2
-rw-r--r--include/f_pc/f_pc_profile.h2
14 files changed, 1132 insertions, 14 deletions
diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h
index 1fd8e7c56c..b0576077c0 100644
--- a/include/JSystem/J3DGraphBase/J3DShape.h
+++ b/include/JSystem/J3DGraphBase/J3DShape.h
@@ -24,10 +24,11 @@ class J3DVertexData;
class J3DDrawMtxData;
enum J3DShpFlag {
+ J3DShpFlag_Visible = 0x0001,
J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008,
- J3DShpFlag_Hidden = 0x0010,
- J3DShpFlag_EnableLod = 0x0100,
+ J3DShpFlag_Hidden = 0x0010,
+ J3DShpFlag_EnableLod = 0x0100,
};
class J3DShape {
@@ -56,8 +57,8 @@ public:
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
void* getVcdVatCmd() const { return mVcdVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; }
- void show() { offFlag(1); }
- void hide() { onFlag(1); }
+ void show() { offFlag(J3DShpFlag_Visible); }
+ void hide() { onFlag(J3DShpFlag_Visible); }
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
void setScaleFlagArray(u8* pScaleFlagArray) { mScaleFlagArray = pScaleFlagArray; }
void setDrawMtx(Mtx** pDrawMtx) { mDrawMtx = pDrawMtx; }
@@ -66,7 +67,7 @@ public:
u32 getBumpMtxOffset() const { return mBumpMtxOffset; }
inline J3DMaterial* getMaterial() const { return mMaterial; }
- inline u32 getPipeline() const { return (mFlags >> 2) & 7; }
+ inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; }
inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; }
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h
index fc2d86cd9b..a4c0ca50ed 100644
--- a/include/JSystem/JGeometry.h
+++ b/include/JSystem/JGeometry.h
@@ -33,6 +33,22 @@ struct TVec3<f32> {
y = other.y;
z = other.z;
}
+
+ void set(f32 x_, f32 y_, f32 z_) {
+ x = x_;
+ y = y_;
+ z = z_;
+ }
+
+ void zero() {
+ x = y = z = 0.0f;
+ }
+
+ void mul(const TVec3<f32>& a, const TVec3<f32>& b) {
+ x = a.x * b.x;
+ y = a.y * b.y;
+ z = a.z * b.z;
+ }
};
template <typename T>
diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h
index 79d3798ed2..a01b717ca8 100644
--- a/include/JSystem/JMath/JMATrigonometric.h
+++ b/include/JSystem/JMath/JMATrigonometric.h
@@ -17,6 +17,9 @@ struct pair {
struct TSinCosTable {
std::pair<f32, f32> table[0x2000];
+
+ f32 sinShort(s16 v) const { return table[static_cast<u16>(v) >> 3].a1; }
+ f32 cosShort(s16 v) const { return table[static_cast<u16>(v) >> 3].b1; }
};
struct TAtanTable {
@@ -35,4 +38,12 @@ extern TAtanTable atanTable_;
extern TAsinAcosTable asinAcosTable_;
}; // namespace JMath
+inline f32 JMASSin(s16 s) {
+ return JMath::sincosTable_.sinShort(s);
+}
+
+inline f32 JMASCos(s16 s) {
+ return JMath::sincosTable_.cosShort(s);
+}
+
#endif /* JMATRIGONOMETRIC_H */
diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h
index 0e7192f083..a081b0c916 100644
--- a/include/JSystem/JParticle/JPABaseShape.h
+++ b/include/JSystem/JParticle/JPABaseShape.h
@@ -2,5 +2,108 @@
#define JPABASESHAPE_H
#include "dolphin/types.h"
+#include "dolphin/gx/GX.h"
+
+class JPAEmitterWorkData;
+class JKRHeap;
+
+struct JPABaseShapeData {
+ // Common header.
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u32 mFlags;
+ /* 0x0C */ s16 mClrPrmAnmOffset;
+ /* 0x0E */ s16 mClrEnvAnmOffset;
+ /* 0x10 */ f32 mBaseSizeX;
+ /* 0x14 */ f32 mBaseSizeY;
+ /* 0x18 */ u16 mBlendModeCfg;
+ /* 0x1A */ u8 mAlphaCompareCfg;
+ /* 0x1B */ u8 mAlphaRef0;
+ /* 0x1C */ u8 mAlphaRef1;
+ /* 0x1D */ u8 mZModeCfg;
+ /* 0x1E */ u8 mTexFlg;
+ /* 0x1F */ u8 mTexAnmNum;
+ /* 0x20 */ u8 mTexIdx;
+ /* 0x21 */ u8 mClrFlg;
+ /* 0x22 */ u8 mClrPrmKeyNum;
+ /* 0x23 */ u8 mClrEnvKeyNum;
+ /* 0x24 */ s16 mClrAnmFrmMax;
+ /* 0x26 */ GXColor mClrPrm;
+ /* 0x2A */ GXColor mClrEnv;
+ /* 0x2E */ u8 mAnmRndm;
+ /* 0x2F */ u8 mClrAnmRndmMask;
+ /* 0x30 */ u8 mTexAnmRndmMask;
+};
+
+struct JPABaseShape {
+public:
+ /* 8027A6DC */ JPABaseShape(u8 const*, JKRHeap*);
+ /* 8027A7E8 */ void setGX(JPAEmitterWorkData*) const;
+
+ static GXBlendMode st_bm[3];
+ static GXBlendFactor st_bf[10];
+ static GXLogicOp st_lo[16];
+ static GXCompare st_c[8];
+ static GXAlphaOp st_ao[4];
+ static GXTevColorArg st_ca[6][4];
+ static GXTevAlphaArg st_aa[2][4];
+
+ GXBlendMode getBlendMode() const { return st_bm[mpData->mBlendModeCfg & 0x03]; }
+ GXBlendFactor getBlendSrc() const { return st_bf[(mpData->mBlendModeCfg >> 2) & 0x0F]; }
+ GXBlendFactor getBlendDst() const { return st_bf[(mpData->mBlendModeCfg >> 6) & 0x0F]; }
+ GXLogicOp getLogicOp() const { return st_lo[(mpData->mBlendModeCfg >> 10) & 0x0F]; }
+ GXBool getZCompLoc() const { return (GXBool)((mpData->mZModeCfg >> 5) & 0x01); }
+
+ GXBool getZEnable() const { return (GXBool)(mpData->mZModeCfg & 0x01); }
+ GXCompare getZCmp() const { return st_c[(mpData->mZModeCfg >> 1) & 0x07]; }
+ GXBool getZUpd() const { return (GXBool)((mpData->mZModeCfg >> 4) & 0x01); }
+
+ GXCompare getAlphaCmp0() const { return st_c[mpData->mAlphaCompareCfg & 0x07]; }
+ u8 getAlphaRef0() const { return mpData->mAlphaRef0; }
+ GXAlphaOp getAlphaOp() const { return st_ao[(mpData->mAlphaCompareCfg >> 3) & 0x03]; }
+ GXCompare getAlphaCmp1() const { return st_c[(mpData->mAlphaCompareCfg >> 5) & 0x07]; }
+ u8 getAlphaRef1() const { return mpData->mAlphaRef1; }
+
+ const GXTevColorArg* getTevColorArg() const { return st_ca[(mpData->mFlags >> 0x0F) & 0x07]; }
+ const GXTevAlphaArg* getTevAlphaArg() const { return st_aa[(mpData->mFlags >> 0x12) & 0x01]; }
+
+ u32 getType() const { return (mpData->mFlags >> 0) & 0x0F; }
+ u32 getDirType() const { return (mpData->mFlags >> 4) & 0x07; }
+ u32 getRotType() const { return (mpData->mFlags >> 7) & 0x07; }
+ u32 getBasePlaneType() const { return (mpData->mFlags >> 10) & 0x07; }
+ u32 getTilingS() const { return (mpData->mFlags >> 25) & 0x01; }
+ u32 getTilingT() const { return (mpData->mFlags >> 26) & 0x01; }
+ bool isGlblClrAnm() const { return !!(mpData->mFlags & 0x00001000); }
+ bool isGlblTexAnm() const { return !!(mpData->mFlags & 0x00004000); }
+ bool isPrjTex() const { return !!(mpData->mFlags & 0x00100000); }
+ bool isDrawFwdAhead() const { return !!(mpData->mFlags & 0x00200000); }
+ bool isDrawPrntAhead() const { return !!(mpData->mFlags & 0x00400000); }
+ bool isClipOn() const { return !!(mpData->mFlags & 0x00800000); }
+ bool isTexCrdAnm() const { return !!(mpData->mFlags & 0x01000000); }
+ bool isNoDrawParent() const { return !!(mpData->mFlags & 0x08000000); }
+ bool isNoDrawChild() const { return !!(mpData->mFlags & 0x10000000); }
+
+ bool isPrmAnm() const { return !!(mpData->mClrFlg & 0x02); }
+ bool isEnvAnm() const { return !!(mpData->mClrFlg & 0x08); }
+ u8 getClrAnmType() const { return (mpData->mClrFlg >> 4) & 0x07; }
+ s16 getClrAnmMaxFrm() const { return mpData->mClrAnmFrmMax; }
+ void getPrmClr(s16 idx, GXColor* dst) { *dst = mpPrmClrAnmTbl[idx]; }
+ void getEnvClr(s16 idx, GXColor* dst) { *dst = mpEnvClrAnmTbl[idx]; }
+
+ bool isTexAnm() const { return !!(mpData->mTexFlg & 0x01); }
+ u8 getTexAnmType() const { return (mpData->mTexFlg >> 2) & 0x07; }
+ u32 getTexIdx() const { return mpData->mTexIdx; }
+
+ f32 getBaseSizeX() const { return mpData->mBaseSizeX; }
+ f32 getBaseSizeY() const { return mpData->mBaseSizeY; }
+
+public:
+ /* 0x00 */ const JPABaseShapeData* mpData;
+ /* 0x04 */ const void* mpTexCrdMtxAnmTbl;
+ /* 0x08 */ const u8* mpTexIdxAnimTbl;
+ /* 0x0C */ GXColor* mpPrmClrAnmTbl;
+ /* 0x10 */ GXColor* mpEnvClrAnmTbl;
+};
#endif /* JPABASESHAPE_H */
diff --git a/include/JSystem/JParticle/JPAChildShape.h b/include/JSystem/JParticle/JPAChildShape.h
index f5ef5fa60e..5f6edf0d30 100644
--- a/include/JSystem/JParticle/JPAChildShape.h
+++ b/include/JSystem/JParticle/JPAChildShape.h
@@ -2,5 +2,43 @@
#define JPACHILDSHAPE_H
#include "dolphin/types.h"
+#include "dolphin/gx/GX.h"
+
+struct JPAChildShapeData {
+ // Common header.
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u32 mFlags;
+ /* 0x0C */ f32 mPosRndm;
+ /* 0x10 */ f32 mBaseVel;
+ /* 0x14 */ f32 mBaseVelRndm;
+ /* 0x18 */ f32 mVelInfRate;
+ /* 0x1C */ f32 mGravity;
+ /* 0x20 */ f32 mScaleX;
+ /* 0x24 */ f32 mScaleY;
+ /* 0x28 */ f32 mInheritScale;
+ /* 0x2C */ f32 mInheritAlpha;
+ /* 0x30 */ f32 mInheritRGB;
+ /* 0x34 */ GXColor mPrmClr;
+ /* 0x38 */ GXColor mEnvClr;
+ /* 0x3C */ f32 mTiming;
+ /* 0x40 */ s16 mLife;
+ /* 0x42 */ s16 mRate;
+ /* 0x44 */ u8 mStep;
+ /* 0x45 */ u8 mTexIdx;
+ /* 0x46 */ s16 mRotSpeed;
+};
+
+class JPAChildShape {
+public:
+ /* 8027B038 */ JPAChildShape(u8 const*);
+
+ void getPrmClr(GXColor* dst) { *dst = mpData->mPrmClr; }
+ void getEnvClr(GXColor* dst) { *dst = mpData->mEnvClr; }
+
+public:
+ /* 0x00 */ const JPAChildShapeData* mpData;
+};
#endif /* JPACHILDSHAPE_H */
diff --git a/include/JSystem/JParticle/JPADynamicsBlock.h b/include/JSystem/JParticle/JPADynamicsBlock.h
index aa424f49a9..8b3e441c19 100644
--- a/include/JSystem/JParticle/JPADynamicsBlock.h
+++ b/include/JSystem/JParticle/JPADynamicsBlock.h
@@ -35,13 +35,21 @@ struct JPADynamicsBlockData {
/* 0x70 */ s16 mStartFrame;
/* 0x72 */ s16 mLifeTime;
/* 0x74 */ s16 mVolumeSize;
- /* 0x76 */ s16 mDivNumber;
+ /* 0x76 */ u16 mDivNumber;
/* 0x78 */ u8 mRateStep;
/* 0x7C */ u32 field_0x7c;
};
typedef void (*JPADynamicsCalcVolumeFunc)(JPAEmitterWorkData*);
+enum {
+ JPADynFlag_FixedDensity = 0x01,
+ JPADynFlag_FixedInterval = 0x02,
+ JPADynFlag_InheritScale = 0x04,
+ JPADynFlag_FollowEmtr = 0x08,
+ JPADynFlag_FollowEmtrChld = 0x10,
+};
+
class JPADynamicsBlock {
public:
/* 8027BB18 */ JPADynamicsBlock(u8 const*);
@@ -52,10 +60,14 @@ public:
s16 getStartFrame() const { return mpData->mStartFrame; }
u32 getResUserWork() const { return mpData->mResUserWork; }
+ u32 getFlag() const { return mpData->mFlags; }
+ u32 getVolumeType() const { return (mpData->mFlags >> 8) & 0x07; }
+ u16 getDivNumber() const { return mpData->mDivNumber; }
+ f32 getRateRndm() const { return mpData->mRateRndm; }
public:
- JPADynamicsBlockData* mpData;
- JPADynamicsCalcVolumeFunc mpCalcVolumeFunc;
+ /* 0x00 */ const JPADynamicsBlockData* mpData;
+ /* 0x04 */ JPADynamicsCalcVolumeFunc mpCalcVolumeFunc;
};
#endif /* JPADYNAMICSBLOCK_H */
diff --git a/include/JSystem/JParticle/JPAExtraShape.h b/include/JSystem/JParticle/JPAExtraShape.h
index abdcdd0b4d..0df0e57436 100644
--- a/include/JSystem/JParticle/JPAExtraShape.h
+++ b/include/JSystem/JParticle/JPAExtraShape.h
@@ -3,4 +3,71 @@
#include "dolphin/types.h"
+struct JPAExtraShapeData {
+ // Common header.
+ /* 0x00 */ u8 mMagic[4];
+ /* 0x04 */ u32 mSize;
+
+ /* 0x08 */ u32 mFlags;
+ /* 0x0C */ f32 mScaleInTiming;
+ /* 0x10 */ f32 mScaleOutTiming;
+ /* 0x14 */ f32 mScaleInValueX;
+ /* 0x18 */ f32 mScaleOutValueX;
+ /* 0x1C */ f32 mScaleInValueY;
+ /* 0x20 */ f32 mScaleOutValueY;
+ /* 0x24 */ f32 mScaleOutRandom;
+ /* 0x28 */ s16 mScaleAnmCycleX;
+ /* 0x2A */ s16 mScaleAnmCycleY;
+ /* 0x2C */ f32 mAlphaInTiming;
+ /* 0x30 */ f32 mAlphaOutTiming;
+ /* 0x34 */ f32 mAlphaInValue;
+ /* 0x38 */ f32 mAlphaBaseValue;
+ /* 0x3C */ f32 mAlphaOutValue;
+ /* 0x40 */ f32 mAlphaWaveFrequency;
+ /* 0x44 */ f32 mAlphaWaveRandom;
+ /* 0x48 */ f32 mAlphaWaveAmplitude;
+ /* 0x4C */ f32 mRotateAngle;
+ /* 0x50 */ f32 mRotateAngleRandom;
+ /* 0x54 */ f32 mRotateSpeed;
+ /* 0x58 */ f32 mRotateSpeedRandom;
+ /* 0x5C */ f32 mRotateDirection;
+};
+
+class JPAExtraShape {
+public:
+ /* 8027AD88 */ JPAExtraShape(u8 const*);
+ /* 8027ADBC */ void init();
+
+ f32 getScaleInTiming() const { return mpData->mScaleInTiming; }
+ f32 getScaleOutTiming() const { return mpData->mScaleOutTiming; }
+ f32 getScaleInValueX() const { return mpData->mScaleInValueX; }
+ f32 getScaleInValueY() const { return mpData->mScaleInValueY; }
+ f32 getScaleOutValueX() const { return mpData->mScaleOutValueX; }
+ f32 getScaleOutValueY() const { return mpData->mScaleOutValueY; }
+ s16 getScaleAnmCycleX() const { return mpData->mScaleAnmCycleX; }
+ s16 getScaleAnmCycleY() const { return mpData->mScaleAnmCycleY; }
+ f32 getAlphaInTiming() const { return mpData->mAlphaInTiming; }
+ f32 getAlphaOutTiming() const { return mpData->mAlphaOutTiming; }
+ f32 getAlphaInValue() const { return mpData->mAlphaInValue; }
+ f32 getAlphaOutValue() const { return mpData->mAlphaOutValue; }
+ f32 getAlphaBaseValue() const { return mpData->mAlphaBaseValue; }
+ f32 getAlphaFreq() const { return mpData->mAlphaWaveFrequency; }
+ f32 getAlphaAmp() const { return mpData->mAlphaWaveAmplitude; }
+ f32 getScaleIncRateX() const { return mScaleIncRateX; }
+ f32 getScaleDecRateX() const { return mScaleDecRateX; }
+ f32 getScaleIncRateY() const { return mScaleIncRateY; }
+ f32 getScaleDecRateY() const { return mScaleDecRateY; }
+ f32 getAlphaIncRate() const { return mAlphaIncRate; }
+ f32 getAlphaDecRate() const { return mAlphaDecRate; }
+
+private:
+ /* 0x00 */ const JPAExtraShapeData* mpData;
+ /* 0x04 */ f32 mAlphaIncRate;
+ /* 0x08 */ f32 mAlphaDecRate;
+ /* 0x0C */ f32 mScaleIncRateX;
+ /* 0x10 */ f32 mScaleIncRateY;
+ /* 0x14 */ f32 mScaleDecRateX;
+ /* 0x18 */ f32 mScaleDecRateY;
+};
+
#endif /* JPAEXTRASHAPE_H */
diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h
index 046353808f..ae0a07b8b2 100644
--- a/include/JSystem/JParticle/JPAParticle.h
+++ b/include/JSystem/JParticle/JPAParticle.h
@@ -7,6 +7,9 @@
#include "JSystem/JGeometry.h"
#include "JSystem/JSupport/JSUList.h"
+#include "JSystem/JParticle/JPADynamicsBlock.h"
+#include "JSystem/JParticle/JPAResource.h"
+
class JKRHeap;
class JPABaseEmitter;
class JPABaseParticle;
@@ -31,6 +34,30 @@ public:
JPARandom() { mSeed = 0; }
void set_seed(u32 seed) { mSeed = seed; }
+ u32 get_rndm_u() {
+ return mSeed = mSeed * 0x19660du + 0x3c6ef35fu;
+ }
+
+ f32 get_rndm_f() {
+ union { u32 u; f32 f; } a;
+ a.u = ((get_rndm_u() >> 9) | 0x3f800000);
+ return a.f - 1.0f;
+ }
+
+ f32 get_rndm_zp() {
+ f32 f = get_rndm_f();
+ return (f + f) - 1.0f;
+ }
+
+ f32 get_rndm_zh() {
+ f32 f = get_rndm_f();
+ return f - 1.0f;
+ }
+
+ s16 get_rndm_ss() {
+ return ((s16)get_rndm_u()) >> 16;
+ }
+
public:
u32 mSeed;
};
@@ -175,6 +202,13 @@ public:
/* 8027E6A4 */ ~JPAEmitterCallBack();
};
+enum {
+ JPAEmtrStts_StopEmit = 0x01,
+ JPAEmtrStts_StopCalc = 0x02,
+ JPAEmtrStts_FirstEmit = 0x10,
+ JPAEmtrStts_RateStepEmit = 0x20,
+};
+
class JPABaseEmitter {
public:
/* 8027E5EC */ ~JPABaseEmitter();
@@ -191,9 +225,17 @@ public:
/* 8027EF50 */ bool loadTexture(u8, GXTexMapID);
void setStatus(u32 status) { mStatus |= status; }
+ void clearStatus(u32 status) { mStatus &= ~status; }
bool checkStatus(u32 status) { return !!(mStatus & status); }
+ bool checkFlag(u32 flag) { return !!(mpRes->getDyn()->getFlag() & flag); }
u8 getResourceManagerID() const { return mResMgrID; }
u8 getGroupID() const { return mGroupID; }
+ u8 getDrawTimes() const { return mDrawTimes; }
+
+ f32 get_r_f() { return mRndm.get_rndm_f(); }
+ f32 get_r_zp() { return mRndm.get_rndm_zp(); }
+ f32 get_r_zh() { return mRndm.get_rndm_zh(); }
+ s16 get_r_ss() { return mRndm.get_rndm_ss(); }
public:
/* 0x00 */ Vec mLocalScl;
@@ -234,7 +276,7 @@ public:
/* 0xFC */ f32 mScaleOut;
/* 0x100 */ u32 mTick;
/* 0x104 */ s16 mWaitTime;
- /* 0x106 */ u16 mRateStepTimer;
+ /* 0x106 */ s16 mRateStepTimer;
/* 0x108 */ GXColor mPrmClr;
/* 0x10C */ GXColor mEnvClr;
/* 0x110 */ u8 mDrawTimes;
@@ -245,11 +287,15 @@ public:
class JPAParticleCallBack {
public:
- ~JPAParticleCallBack();
+ virtual ~JPAParticleCallBack();
virtual void execute(JPABaseEmitter*, JPABaseParticle*);
virtual void draw(JPABaseEmitter*, JPABaseParticle*);
};
+enum {
+ JPAPtclStts_Invisible = 0x08,
+};
+
class JPABaseParticle {
public:
/* 8027EFEC */ void init_p(JPAEmitterWorkData*);
@@ -277,7 +323,7 @@ public:
/* 0x74 */ f32 mDrag;
/* 0x78 */ u32 field_0x78;
/* 0x7C */ u32 mStatus;
- /* 0x80 */ u16 mAge;
+ /* 0x80 */ s16 mAge;
/* 0x82 */ u16 mLifeTime;
/* 0x84 */ f32 mTime;
/* 0x88 */ u16 mRotateAngle;
diff --git a/include/JSystem/JParticle/JPAResource.h b/include/JSystem/JParticle/JPAResource.h
index f207f15d88..5b3e891bc3 100644
--- a/include/JSystem/JParticle/JPAResource.h
+++ b/include/JSystem/JParticle/JPAResource.h
@@ -20,7 +20,7 @@ class JPAResource {
public:
/* 80274010 */ JPAResource();
/* 80274080 */ void init(JKRHeap*);
- /* 802755E8 */ void calc(JPAEmitterWorkData*, JPABaseEmitter*);
+ /* 802755E8 */ bool calc(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275A94 */ void draw(JPAEmitterWorkData*, JPABaseEmitter*);
/* 80275B74 */ void drawP(JPAEmitterWorkData*);
/* 80275EB0 */ void drawC(JPAEmitterWorkData*);
diff --git a/include/d/d_procname.h b/include/d/d_procname.h
new file mode 100644
index 0000000000..f47e472e7f
--- /dev/null
+++ b/include/d/d_procname.h
@@ -0,0 +1,798 @@
+
+#pragma once
+
+enum
+{
+ PROC_OVERLAP0 = 0x0000,
+ PROC_OVERLAP1 = 0x0001,
+ PROC_OVERLAP3 = 0x0002,
+ PROC_OVERLAP6 = 0x0003,
+ PROC_OVERLAP7 = 0x0004,
+ PROC_OVERLAP8 = 0x0005,
+ PROC_OVERLAP9 = 0x0006,
+ PROC_OVERLAP10 = 0x0007,
+ PROC_OVERLAP11 = 0x0008,
+ PROC_LOGO_SCENE = 0x0009,
+ PROC_MENU_SCENE = 0x000A,
+ PROC_PLAY_SCENE = 0x000B,
+ PROC_OPENING_SCENE = 0x000C,
+ PROC_NAME_SCENE = 0x000D,
+ PROC_NAMEEX_SCENE = 0x000E,
+ PROC_WARNING_SCENE = 0x000F,
+ PROC_WARNING2_SCENE = 0x0010,
+ PROC_OVERLAP2 = 0x0011,
+ PROC_ROOM_SCENE = 0x0012,
+ PROC_KANKYO = 0x0013,
+ PROC_ALLDIE = 0x0014,
+ PROC_ENVSE = 0x0015,
+ PROC_Obj_Swpush = 0x0016,
+ PROC_Obj_Swpush2 = 0x0017,
+ PROC_Obj_Swpush5 = 0x0018,
+ PROC_Tag_Gstart = 0x0019,
+ PROC_NO_CHG_ROOM = 0x001A,
+ PROC_Obj_Lv6ElevtA = 0x001B,
+ PROC_OBJ_SO = 0x001C,
+ PROC_Obj_Movebox = 0x001D,
+ PROC_Obj_SwTurn = 0x001E,
+ PROC_Obj_Lv6SwTurn = 0x001F,
+ PROC_OBJ_SEKIZOA = 0x0020,
+ PROC_OBJ_GRA = 0x0021,
+ PROC_TAG_GRA = 0x0022,
+ PROC_TAG_YAMI = 0x0023,
+ PROC_Obj_Ladder = 0x0024,
+ PROC_OBJ_BEF = 0x0025,
+ PROC_OBJ_FMOBJ = 0x0026,
+ PROC_OBJ_LBOX = 0x0027,
+ PROC_OBJ_WEB0 = 0x0028,
+ PROC_OBJ_WEB1 = 0x0029,
+ PROC_OBJ_CB = 0x002A,
+ PROC_OBJ_MAKI = 0x002B,
+ PROC_OBJ_BRG = 0x002C,
+ PROC_OBJ_GB = 0x002D,
+ PROC_OBJ_GM = 0x002E,
+ PROC_OBJ_TOBY = 0x002F,
+ PROC_OBJ_TP = 0x0030,
+ PROC_TREESH = 0x0031,
+ PROC_Obj_ZDoor = 0x0032,
+ PROC_Obj_Pillar = 0x0033,
+ PROC_Obj_Cdoor = 0x0034,
+ PROC_GRDWATER = 0x0035,
+ PROC_Obj_RotBridge = 0x0036,
+ PROC_Obj_MagLift = 0x0037,
+ PROC_Obj_MagLiftRot = 0x0038,
+ PROC_Obj_Lv1Cdl00 = 0x0039,
+ PROC_Obj_Lv1Cdl01 = 0x003A,
+ PROC_Obj_TvCdlst = 0x003B,
+ PROC_Obj_HsTarget = 0x003C,
+ PROC_Obj_HeavySw = 0x003D,
+ PROC_Obj_GoGate = 0x003E,
+ PROC_Obj_TaFence = 0x003F,
+ PROC_Obj_Saidan = 0x0040,
+ PROC_Obj_SpinLift = 0x0041,
+ PROC_Obj_BmWindow = 0x0042,
+ PROC_Obj_RfHole = 0x0043,
+ PROC_Obj_WaterPillar = 0x0044,
+ PROC_Obj_SyRock = 0x0045,
+ PROC_Obj_BsGate = 0x0046,
+ PROC_Obj_AmiShutter = 0x0047,
+ PROC_Obj_WtGate = 0x0048,
+ PROC_Obj_Lv2Candle = 0x0049,
+ PROC_Obj_TogeTrap = 0x004A,
+ PROC_Obj_RotTrap = 0x004B,
+ PROC_Obj_SwallShutter = 0x004C,
+ PROC_Obj_IceWall = 0x004D,
+ PROC_Obj_Lv5SwIce = 0x004E,
+ PROC_Obj_Lv5FBoard = 0x004F,
+ PROC_Obj_Turara = 0x0050,
+ PROC_Obj_TwGate = 0x0051,
+ PROC_Obj_Digholl = 0x0052,
+ PROC_Obj_Digpl = 0x0053,
+ PROC_Obj_TestCube = 0x0054,
+ PROC_Obj_Kshutter = 0x0055,
+ PROC_NPC_COACH = 0x0056,
+ PROC_NPC_THEB = 0x0057,
+ PROC_COACH_FIRE = 0x0058,
+ PROC_COACH2D = 0x0059,
+ PROC_BALLOON2D = 0x005A,
+ PROC_SKIP2D = 0x005B,
+ PROC_Obj_MvStair = 0x005C,
+ PROC_Obj_Cowdoor = 0x005D,
+ PROC_Obj_Swpropeller = 0x005E,
+ PROC_Obj_BoomShutter = 0x005F,
+ PROC_NPC_KS = 0x0060,
+ PROC_Obj_Hfuta = 0x0061,
+ PROC_Obj_BkDoor = 0x0062,
+ PROC_Obj_Cboard = 0x0063,
+ PROC_Obj_MGate = 0x0064,
+ PROC_Obj_Ikada = 0x0065,
+ PROC_Obj_Ice_l = 0x0066,
+ PROC_Obj_Ice_s = 0x0067,
+ PROC_Obj_E_CREATE = 0x0068,
+ PROC_Obj_Bhbridge = 0x0069,
+ PROC_Obj_Kaisou = 0x006A,
+ PROC_Obj_HHASHI = 0x006B,
+ PROC_Obj_BHASHI = 0x006C,
+ PROC_OCTHASHI = 0x006D,
+ PROC_Obj_THASHI = 0x006E,
+ PROC_Obj_CRVGATE = 0x006F,
+ PROC_Obj_CRVFENCE = 0x0070,
+ PROC_Obj_CRVHAHEN = 0x0071,
+ PROC_Obj_CRVSTEEL = 0x0072,
+ PROC_Obj_CRVLH_UP = 0x0073,
+ PROC_Obj_CRVLH_DW = 0x0074,
+ PROC_Obj_RIVERROCK = 0x0075,
+ PROC_Obj_DUST = 0x0076,
+ PROC_Obj_ITA = 0x0077,
+ PROC_Obj_Window = 0x0078,
+ PROC_Obj_MetalBox = 0x0079,
+ PROC_Obj_BBox = 0x007A,
+ PROC_OBJ_MSIMA = 0x007B,
+ PROC_OBJ_MYOGAN = 0x007C,
+ PROC_B_ZANTS = 0x007D,
+ PROC_Obj_ChainBlock = 0x007E,
+ PROC_Obj_ChainWall = 0x007F,
+ PROC_Obj_KkrGate = 0x0080,
+ PROC_Obj_RiderGate = 0x0081,
+ PROC_Obj_Onsen = 0x0082,
+ PROC_Obj_Chest = 0x0083,
+ PROC_Obj_Bemos = 0x0084,
+ PROC_Obj_RopeBridge = 0x0085,
+ PROC_Obj_WellCover = 0x0086,
+ PROC_Obj_GraveStone = 0x0087,
+ PROC_Obj_ZraRock = 0x0088,
+ PROC_Obj_GraRock = 0x0089,
+ PROC_Obj_GrzRock = 0x008A,
+ PROC_GRA_WALL = 0x008B,
+ PROC_OBJ_ONSEN_FIRE = 0x008C,
+ PROC_Obj_Lv6bemos = 0x008D,
+ PROC_Obj_Lv6bemos2 = 0x008E,
+ PROC_Obj_BarDesk = 0x008F,
+ PROC_Obj_DigSnow = 0x0090,
+ PROC_Obj_Ytaihou = 0x0091,
+ PROC_Obj_Elevator = 0x0092,
+ PROC_Obj_Lv6TogeRoll = 0x0093,
+ PROC_Obj_Lv6TogeTrap = 0x0094,
+ PROC_Obj_Lv6Tenbin = 0x0095,
+ PROC_Obj_Lv6SwGate = 0x0096,
+ PROC_Obj_Lv6Lblock = 0x0097,
+ PROC_Obj_Lv6ChgGate = 0x0098,
+ PROC_Obj_Lv6FuriTrap = 0x0099,
+ PROC_Obj_Lv6SzGate = 0x009A,
+ PROC_Obj_Lv4EdShutter = 0x009B,
+ PROC_Obj_Lv4Gate = 0x009C,
+ PROC_Obj_Lv4PoGate = 0x009D,
+ PROC_Obj_Lv4SlideWall = 0x009E,
+ PROC_Obj_Lv4HsTarget = 0x009F,
+ PROC_Obj_Lv7PropY = 0x00A0,
+ PROC_Obj_Lv7BsGate = 0x00A1,
+ PROC_Obj_Lv8OptiLift = 0x00A2,
+ PROC_Obj_Lv8KekkaiTrap = 0x00A3,
+ PROC_Obj_Lv8Lift = 0x00A4,
+ PROC_Obj_Lv8UdFloor = 0x00A5,
+ PROC_Obj_Lv9SwShutter = 0x00A6,
+ PROC_Obj_TobyHouse = 0x00A7,
+ PROC_Obj_poCandle = 0x00A8,
+ PROC_Obj_Lv4DigSand = 0x00A9,
+ PROC_Obj_FallObj = 0x00AA,
+ PROC_Obj_SmgDoor = 0x00AB,
+ PROC_Obj_SwLight = 0x00AC,
+ PROC_Obj_Avalanche = 0x00AD,
+ PROC_Obj_MirrorScrew = 0x00AE,
+ PROC_Obj_MirrorSand = 0x00AF,
+ PROC_Obj_MirrorTable = 0x00B0,
+ PROC_Obj_MirrorChain = 0x00B1,
+ PROC_Obj_Mirror6Pole = 0x00B2,
+ PROC_Obj_SwSpinner = 0x00B3,
+ PROC_Obj_TDoor = 0x00B4,
+ PROC_Obj_Lv7Bridge = 0x00B5,
+ PROC_Obj_zrTurara = 0x00B6,
+ PROC_Obj_TakaraDai = 0x00B7,
+ PROC_Obj_Table = 0x00B8,
+ PROC_Obj_CatDoor = 0x00B9,
+ PROC_Obj_Gake = 0x00BA,
+ PROC_CSTAF = 0x00BB,
+ PROC_Obj_Lv4RailWall = 0x00BC,
+ PROC_Obj_Lv4Sand = 0x00BD,
+ PROC_Obj_PushDoor = 0x00BE,
+ PROC_PushDoor = 0x00BF,
+ PROC_Obj_GanonWall2 = 0x00C0,
+ PROC_Obj_Lv4Bridge = 0x00C1,
+ PROC_Obj_Lv4Floor = 0x00C2,
+ PROC_Tag_Spinner = 0x00C3,
+ PROC_Obj_SwHang = 0x00C4,
+ PROC_Obj_RotStair = 0x00C5,
+ PROC_Obj_MagneArm = 0x00C6,
+ PROC_Obj_KWheel00 = 0x00C7,
+ PROC_Obj_KWheel01 = 0x00C8,
+ PROC_Obj_Ychndlr = 0x00C9,
+ PROC_Obj_PRElvtr = 0x00CA,
+ PROC_Obj_MHasu = 0x00CB,
+ PROC_Obj_YIblltray = 0x00CC,
+ PROC_Obj_Lv6EGate = 0x00CD,
+ PROC_Obj_PDtile = 0x00CE,
+ PROC_Obj_PDwall = 0x00CF,
+ PROC_Obj_Lv4PRwall = 0x00D0,
+ PROC_Obj_KLift00 = 0x00D1,
+ PROC_B_OH = 0x00D2,
+ PROC_Obj_Lv4Chan = 0x00D3,
+ PROC_Obj_Lv3R10Saka = 0x00D4,
+ PROC_Obj_Lv3Water = 0x00D5,
+ PROC_Obj_Lv3Water2 = 0x00D6,
+ PROC_OBJ_LV3WATERB = 0x00D7,
+ PROC_Obj_HBombkoya = 0x00D8,
+ PROC_Obj_SZbridge = 0x00D9,
+ PROC_Obj_KakarikoBrg = 0x00DA,
+ PROC_Obj_OrdinBrg = 0x00DB,
+ PROC_Obj_BurnBox = 0x00DC,
+ PROC_Obj_KJgjs = 0x00DD,
+ PROC_OBJ_IHASI = 0x00DE,
+ PROC_Obj_IceBlock = 0x00DF,
+ PROC_Obj_VolcanicBall = 0x00E0,
+ PROC_Obj_VolcanicBomb = 0x00E1,
+ PROC_Obj_VolcGnd = 0x00E2,
+ PROC_Obj_KKanban = 0x00E3,
+ PROC_E_PH = 0x00E4,
+ PROC_NPC_ZRA = 0x00E5,
+ PROC_Obj_Chandelier = 0x00E6,
+ PROC_Obj_Stopper2 = 0x00E7,
+ PROC_DOOR20 = 0x00E8,
+ PROC_Tag_Hinit = 0x00E9,
+ PROC_Tag_Hjump = 0x00EA,
+ PROC_Tag_AJnot = 0x00EB,
+ PROC_Tag_Hstop = 0x00EC,
+ PROC_CANOE = 0x00ED,
+ PROC_HORSE = 0x00EE,
+ PROC_E_WB = 0x00EF,
+ PROC_OBJ_ITO = 0x00F0,
+ PROC_OBJ_SW = 0x00F1,
+ PROC_SPINNER = 0x00F2,
+ PROC_B_OB = 0x00F3,
+ PROC_KAGO = 0x00F4,
+ PROC_E_YC = 0x00F5,
+ PROC_B_DS = 0x00F6,
+ PROC_B_DR = 0x00F7,
+ PROC_B_ZANTZ = 0x00F8,
+ PROC_B_ZANT = 0x00F9,
+ PROC_B_ZANTM = 0x00FA,
+ PROC_TBOX = 0x00FB,
+ PROC_TBOX2 = 0x00FC,
+ PROC_ALINK = 0x00FD,
+ PROC_BOOMERANG = 0x00FE,
+ PROC_MIDNA = 0x00FF,
+ PROC_NPC_TK = 0x0100,
+ PROC_NPC_WORM = 0x0101,
+ PROC_PPolamp = 0x0102,
+ PROC_BkyRock = 0x0103,
+ PROC_HITOBJ = 0x0104,
+ PROC_EP = 0x0105,
+ PROC_COW = 0x0106,
+ PROC_PERU = 0x0107,
+ PROC_NI = 0x0108,
+ PROC_NPC_TKJ2 = 0x0109,
+ PROC_SQ = 0x010A,
+ PROC_NPC_SQ = 0x010B,
+ PROC_DO = 0x010C,
+ PROC_NPC_NE = 0x010D,
+ PROC_NPC_TR = 0x010E,
+ PROC_NPC_LF = 0x010F,
+ PROC_OBJ_FOOD = 0x0110,
+ PROC_OBJ_KI = 0x0111,
+ PROC_OBJ_KITA = 0x0112,
+ PROC_OBJ_KEY = 0x0113,
+ PROC_OBJ_KEYHOLE = 0x0114,
+ PROC_Obj_Lv5Key = 0x0115,
+ PROC_OBJ_LP = 0x0116,
+ PROC_OBJ_TATIGI = 0x0117,
+ PROC_OBJ_ROCK = 0x0118,
+ PROC_OBJ_WFLAG = 0x0119,
+ PROC_OBJ_KAGE = 0x011A,
+ PROC_OBJ_KANBAN2 = 0x011B,
+ PROC_OBJ_BALLOON = 0x011C,
+ PROC_OBJ_SUISYA = 0x011D,
+ PROC_OBJ_OILTUBO = 0x011E,
+ PROC_OBJ_ROTEN = 0x011F,
+ PROC_OBJ_SSDRINK = 0x0120,
+ PROC_OBJ_SSITEM = 0x0121,
+ PROC_TAG_SSDRINK = 0x0122,
+ PROC_TAG_BTLITM = 0x0123,
+ PROC_TAG_LV5SOUP = 0x0124,
+ PROC_TAG_MNLIGHT = 0x0125,
+ PROC_TAG_SHOPCAM = 0x0126,
+ PROC_TAG_SHOPITM = 0x0127,
+ PROC_OBJ_NDOOR = 0x0128,
+ PROC_OBJ_UDOOR = 0x0129,
+ PROC_OBJ_USAKU = 0x012A,
+ PROC_Obj_SM_DOOR = 0x012B,
+ PROC_OBJ_BED = 0x012C,
+ PROC_OBJ_BOUMATO = 0x012D,
+ PROC_OBJ_ITAMATO = 0x012E,
+ PROC_OBJ_NOUGU = 0x012F,
+ PROC_OBJ_STICK = 0x0130,
+ PROC_OBJ_MIE = 0x0131,
+ PROC_OBJ_SEKIDOOR = 0x0132,
+ PROC_OBJ_SEKIZO = 0x0133,
+ PROC_OBJ_SMTILE = 0x0134,
+ PROC_NPC_FISH = 0x0135,
+ PROC_MG_FISH = 0x0136,
+ PROC_FSHOP = 0x0137,
+ PROC_NPC_DU = 0x0138,
+ PROC_DISAPPEAR = 0x0139,
+ PROC_Obj_Mato = 0x013A,
+ PROC_Obj_Flag = 0x013B,
+ PROC_Obj_Flag2 = 0x013C,
+ PROC_Obj_Flag3 = 0x013D,
+ PROC_Obj_GOMIKABE = 0x013E,
+ PROC_Obj_Yousei = 0x013F,
+ PROC_Obj_Kabuto = 0x0140,
+ PROC_Obj_Cho = 0x0141,
+ PROC_Obj_Kuw = 0x0142,
+ PROC_Obj_Nan = 0x0143,
+ PROC_Obj_Dan = 0x0144,
+ PROC_Obj_Kam = 0x0145,
+ PROC_Obj_Ten = 0x0146,
+ PROC_Obj_Ari = 0x0147,
+ PROC_Obj_Kag = 0x0148,
+ PROC_Obj_Batta = 0x0149,
+ PROC_Obj_Tombo = 0x014A,
+ PROC_Obj_Kat = 0x014B,
+ PROC_Obj_H_Saku = 0x014C,
+ PROC_Obj_Yobikusa = 0x014D,
+ PROC_Obj_KazeNeko = 0x014E,
+ PROC_Obj_KznkArm = 0x014F,
+ PROC_Obj_NamePlate = 0x0150,
+ PROC_Obj_OnCloth = 0x0151,
+ PROC_Obj_LndRope = 0x0152,
+ PROC_Obj_ItaRope = 0x0153,
+ PROC_Obj_Sakuita = 0x0154,
+ PROC_Obj_Laundry = 0x0155,
+ PROC_WarpBug = 0x0156,
+ PROC_Izumi_Gate = 0x0157,
+ PROC_Obj_Fchain = 0x0158,
+ PROC_Obj_Wchain = 0x0159,
+ PROC_Tag_Attp = 0x015A,
+ PROC_Obj_Tornado = 0x015B,
+ PROC_Obj_Tornado2 = 0x015C,
+ PROC_Obj_FirePillar = 0x015D,
+ PROC_Obj_FirePillar2 = 0x015E,
+ PROC_Obj_InoBone = 0x015F,
+ PROC_Obj_Stopper = 0x0160,
+ PROC_Obj_MHole = 0x0161,
+ PROC_Tag_Magne = 0x0162,
+ PROC_Obj_BossWarp = 0x0163,
+ PROC_Obj_WoodPendulum = 0x0164,
+ PROC_Obj_WdStick = 0x0165,
+ PROC_Obj_StairBlock = 0x0166,
+ PROC_Obj_Geyser = 0x0167,
+ PROC_Tag_KtOnFire = 0x0168,
+ PROC_Obj_FireWood = 0x0169,
+ PROC_Obj_FireWood2 = 0x016A,
+ PROC_Obj_GpTaru = 0x016B,
+ PROC_Obj_OnsenTaru = 0x016C,
+ PROC_Obj_KiPot = 0x016D,
+ PROC_TBOX_SW = 0x016E,
+ PROC_Obj_SwChain = 0x016F,
+ PROC_Obj_WoodenSword = 0x0170,
+ PROC_Obj_StoneMark = 0x0171,
+ PROC_Obj_Lv3Candle = 0x0172,
+ PROC_Tag_Lv4Candle = 0x0173,
+ PROC_Tag_Lv4CandleDm = 0x0174,
+ PROC_Obj_DamCps = 0x0175,
+ PROC_Obj_Smoke = 0x0176,
+ PROC_Obj_WaterFall = 0x0177,
+ PROC_Obj_ZoraCloth = 0x0178,
+ PROC_Obj_poFire = 0x0179,
+ PROC_Tag_poFire = 0x017A,
+ PROC_Obj_glowSphere = 0x017B,
+ PROC_Tag_LightBall = 0x017C,
+ PROC_SwLBall = 0x017D,
+ PROC_SwBall = 0x017E,
+ PROC_Obj_WaterEff = 0x017F,
+ PROC_Tag_RiverBack = 0x0180,
+ PROC_Tag_KagoFall = 0x0181,
+ PROC_Tag_Lv2PrChk = 0x0182,
+ PROC_Obj_Lv4Gear = 0x0183,
+ PROC_Obj_MasterSword = 0x0184,
+ PROC_Obj_WoodStatue = 0x0185,
+ PROC_Obj_Fan = 0x0186,
+ PROC_Obj_IceLeaf = 0x0187,
+ PROC_Obj_zrTuraraRc = 0x0188,
+ PROC_Tag_RetRoom = 0x0189,
+ PROC_Obj_WindStone = 0x018A,
+ PROC_Tag_WaraHowl = 0x018B,
+ PROC_Obj_SCannon = 0x018C,
+ PROC_Obj_SmWStone = 0x018D,
+ PROC_Obj_SCannonCrs = 0x018E,
+ PROC_Tag_SnowEff = 0x018F,
+ PROC_Tag_CstaSw = 0x0190,
+ PROC_Tag_Lv6CstaSw = 0x0191,
+ PROC_Obj_awaPlar = 0x0192,
+ PROC_Obj_poTbox = 0x0193,
+ PROC_Obj_TimeFire = 0x0194,
+ PROC_Obj_TMoon = 0x0195,
+ PROC_Obj_GanonWall = 0x0196,
+ PROC_Obj_Prop = 0x0197,
+ PROC_CSTATUE = 0x0198,
+ PROC_Obj_SwBallA = 0x0199,
+ PROC_Obj_SwBallB = 0x019A,
+ PROC_Obj_SnowSoup = 0x019B,
+ PROC_Obj_Nagaisu = 0x019C,
+ PROC_Obj_RCircle = 0x019D,
+ PROC_Obj_Picture = 0x019E,
+ PROC_Tag_SetBall = 0x019F,
+ PROC_Tag_SmkEmt = 0x01A0,
+ PROC_SwTime = 0x01A1,
+ PROC_Obj_HFtr = 0x01A2,
+ PROC_Obj_HBarrel = 0x01A3,
+ PROC_Obj_Crystal = 0x01A4,
+ PROC_Obj_SCannonTen = 0x01A5,
+ PROC_Obj_SwBallC = 0x01A6,
+ PROC_SCENE_EXIT2 = 0x01A7,
+ PROC_Obj_Hata = 0x01A8,
+ PROC_Obj_ToaruMaki = 0x01A9,
+ PROC_Tag_AttackItem = 0x01AA,
+ PROC_Tag_RmbitSw = 0x01AB,
+ PROC_Obj_Sword = 0x01AC,
+ PROC_Tag_Spring = 0x01AD,
+ PROC_Tag_Statue = 0x01AE,
+ PROC_E_AI = 0x01AF,
+ PROC_E_GS = 0x01B0,
+ PROC_E_GOB = 0x01B1,
+ PROC_E_DD = 0x01B2,
+ PROC_E_DN = 0x01B3,
+ PROC_E_S1 = 0x01B4,
+ PROC_E_MF = 0x01B5,
+ PROC_E_SG = 0x01B6,
+ PROC_E_BS = 0x01B7,
+ PROC_E_SF = 0x01B8,
+ PROC_E_SH = 0x01B9,
+ PROC_E_DF = 0x01BA,
+ PROC_E_GM = 0x01BB,
+ PROC_E_MD = 0x01BC,
+ PROC_E_SM = 0x01BD,
+ PROC_E_SM2 = 0x01BE,
+ PROC_E_ST = 0x01BF,
+ PROC_E_ST_LINE = 0x01C0,
+ PROC_E_SB = 0x01C1,
+ PROC_E_TH = 0x01C2,
+ PROC_E_CR = 0x01C3,
+ PROC_E_CR_EGG = 0x01C4,
+ PROC_E_DB = 0x01C5,
+ PROC_E_DB_LEAF = 0x01C6,
+ PROC_E_GA = 0x01C7,
+ PROC_E_GB = 0x01C8,
+ PROC_E_HB = 0x01C9,
+ PROC_E_HB_LEAF = 0x01CA,
+ PROC_E_HZELDA = 0x01CB,
+ PROC_E_YD = 0x01CC,
+ PROC_E_YH = 0x01CD,
+ PROC_E_YD_LEAF = 0x01CE,
+ PROC_E_HM = 0x01CF,
+ PROC_E_TK = 0x01D0,
+ PROC_E_TK2 = 0x01D1,
+ PROC_E_TK_BALL = 0x01D2,
+ PROC_E_RB = 0x01D3,
+ PROC_E_RD = 0x01D4,
+ PROC_E_RDB = 0x01D5,
+ PROC_E_RDY = 0x01D6,
+ PROC_E_FM = 0x01D7,
+ PROC_E_FS = 0x01D8,
+ PROC_E_PM = 0x01D9,
+ PROC_E_PO = 0x01DA,
+ PROC_E_MB = 0x01DB,
+ PROC_E_MK = 0x01DC,
+ PROC_E_MM = 0x01DD,
+ PROC_E_FZ = 0x01DE,
+ PROC_E_ZS = 0x01DF,
+ PROC_E_KK = 0x01E0,
+ PROC_E_HP = 0x01E1,
+ PROC_E_ZH = 0x01E2,
+ PROC_E_ZM = 0x01E3,
+ PROC_E_PZ = 0x01E4,
+ PROC_E_FB = 0x01E5,
+ PROC_E_FK = 0x01E6,
+ PROC_E_MS = 0x01E7,
+ PROC_E_NEST = 0x01E8,
+ PROC_E_NZ = 0x01E9,
+ PROC_E_BA = 0x01EA,
+ PROC_E_BU = 0x01EB,
+ PROC_E_BUG = 0x01EC,
+ PROC_E_BEE = 0x01ED,
+ PROC_E_IS = 0x01EE,
+ PROC_E_KG = 0x01EF,
+ PROC_E_KR = 0x01F0,
+ PROC_E_SW = 0x01F1,
+ PROC_E_GE = 0x01F2,
+ PROC_Tag_WatchGe = 0x01F3,
+ PROC_E_YM = 0x01F4,
+ PROC_E_YM_TAG = 0x01F5,
+ PROC_E_YMB = 0x01F6,
+ PROC_Tag_FWall = 0x01F7,
+ PROC_Tag_WaterFall = 0x01F8,
+ PROC_E_YK = 0x01F9,
+ PROC_E_YR = 0x01FA,
+ PROC_E_YG = 0x01FB,
+ PROC_E_HZ = 0x01FC,
+ PROC_E_WS = 0x01FD,
+ PROC_E_OC = 0x01FE,
+ PROC_E_OT = 0x01FF,
+ PROC_E_DT = 0x0200,
+ PROC_E_BG = 0x0201,
+ PROC_E_OctBg = 0x0202,
+ PROC_DR = 0x0203,
+ PROC_L7lowDr = 0x0204,
+ PROC_L7ODR = 0x0205,
+ PROC_E_TT = 0x0206,
+ PROC_E_DK = 0x0207,
+ PROC_E_VT = 0x0208,
+ PROC_E_WW = 0x0209,
+ PROC_E_GI = 0x020A,
+ PROC_B_BH = 0x020B,
+ PROC_B_BQ = 0x020C,
+ PROC_B_GM = 0x020D,
+ PROC_B_GND = 0x020E,
+ PROC_B_GO = 0x020F,
+ PROC_B_OH2 = 0x0210,
+ PROC_B_YO = 0x0211,
+ PROC_B_YOI = 0x0212,
+ PROC_B_TN = 0x0213,
+ PROC_B_GG = 0x0214,
+ PROC_B_DRE = 0x0215,
+ PROC_B_MGN = 0x0216,
+ PROC_E_WAP = 0x0217,
+ PROC_ITEM = 0x0218,
+ PROC_Obj_SmallKey = 0x0219,
+ PROC_Obj_Kantera = 0x021A,
+ PROC_Obj_LifeContainer = 0x021B,
+ PROC_Obj_Shield = 0x021C,
+ PROC_Demo_Item = 0x021D,
+ PROC_ShopItem = 0x021E,
+ PROC_Obj_Drop = 0x021F,
+ PROC_OBJ_RW = 0x0220,
+ PROC_NBOMB = 0x0221,
+ PROC_TAG_CSW = 0x0222,
+ PROC_TAG_QS = 0x0223,
+ PROC_HOZELDA = 0x0224,
+ PROC_SWC00 = 0x0225,
+ PROC_KNOB20 = 0x0226,
+ PROC_DBDOOR = 0x0227,
+ PROC_BOSS_DOOR = 0x0228,
+ PROC_L1BOSS_DOOR = 0x0229,
+ PROC_L1MBOSS_DOOR = 0x022A,
+ PROC_L5BOSS_DOOR = 0x022B,
+ PROC_DSHUTTER = 0x022C,
+ PROC_SPIRAL_DOOR = 0x022D,
+ PROC_Tag_ChgRestart = 0x022E,
+ PROC_Tag_Restart = 0x022F,
+ PROC_ANDSW = 0x0230,
+ PROC_ANDSW2 = 0x0231,
+ PROC_MYNA = 0x0232,
+ PROC_NPC_GND = 0x0233,
+ PROC_NPC_GRA = 0x0234,
+ PROC_NPC_GRC = 0x0235,
+ PROC_NPC_GRD = 0x0236,
+ PROC_NPC_GRM = 0x0237,
+ PROC_NPC_GRMC = 0x0238,
+ PROC_NPC_GRO = 0x0239,
+ PROC_NPC_GRR = 0x023A,
+ PROC_NPC_GRS = 0x023B,
+ PROC_NPC_GRZ = 0x023C,
+ PROC_NPC_YAMID = 0x023D,
+ PROC_NPC_YAMIT = 0x023E,
+ PROC_NPC_YAMIS = 0x023F,
+ PROC_NPC_BLUENS = 0x0240,
+ PROC_NPC_KAKASHI = 0x0241,
+ PROC_NPC_KDK = 0x0242,
+ PROC_NPC_ARU = 0x0243,
+ PROC_NPC_BANS = 0x0244,
+ PROC_NPC_BESU = 0x0245,
+ PROC_NPC_BOU = 0x0246,
+ PROC_NPC_BOU_S = 0x0247,
+ PROC_NPC_CLERKA = 0x0248,
+ PROC_NPC_CLERKB = 0x0249,
+ PROC_NPC_CLERKT = 0x024A,
+ PROC_NPC_WRESTLER = 0x024B,
+ PROC_Tag_Arena = 0x024C,
+ PROC_Tag_Instruction = 0x024D,
+ PROC_NPC_DOC = 0x024E,
+ PROC_NPC_GWOLF = 0x024F,
+ PROC_NPC_LEN = 0x0250,
+ PROC_NPC_LUD = 0x0251,
+ PROC_NPC_FAIRY_SEIREI = 0x0252,
+ PROC_NPC_FAIRY = 0x0253,
+ PROC_NPC_HANJO = 0x0254,
+ PROC_NPC_HENNA = 0x0255,
+ PROC_NPC_HENNA0 = 0x0256,
+ PROC_NPC_HOZ = 0x0257,
+ PROC_NPC_JAGAR = 0x0258,
+ PROC_NPC_KKRI = 0x0259,
+ PROC_NPC_KN = 0x025A,
+ PROC_KN_BULLET = 0x025B,
+ PROC_NPC_KNJ = 0x025C,
+ PROC_NPC_KOLIN = 0x025D,
+ PROC_NPC_KOLINB = 0x025E,
+ PROC_NPC_KYURY = 0x025F,
+ PROC_NPC_MARO = 0x0260,
+ PROC_NPC_MIDP = 0x0261,
+ PROC_NPC_MOI = 0x0262,
+ PROC_NPC_RACA = 0x0263,
+ PROC_NPC_SARU = 0x0264,
+ PROC_NPC_SEIB = 0x0265,
+ PROC_NPC_SEIC = 0x0266,
+ PROC_NPC_SEID = 0x0267,
+ PROC_NPC_SEIRA = 0x0268,
+ PROC_NPC_SERA2 = 0x0269,
+ PROC_NPC_SEIREI = 0x026A,
+ PROC_NPC_SHAMAN = 0x026B,
+ PROC_NPC_SMARO = 0x026C,
+ PROC_NPC_SOLA = 0x026D,
+ PROC_NPC_TARO = 0x026E,
+ PROC_NPC_PACHI_BESU = 0x026F,
+ PROC_NPC_PACHI_TARO = 0x0270,
+ PROC_NPC_PACHI_MARO = 0x0271,
+ PROC_TAG_PATI = 0x0272,
+ PROC_NPC_THE = 0x0273,
+ PROC_NPC_TKJ = 0x0274,
+ PROC_NPC_TKS = 0x0275,
+ PROC_NPC_TKC = 0x0276,
+ PROC_OBJ_TKS = 0x0277,
+ PROC_NPC_TOBY = 0x0278,
+ PROC_NPC_URI = 0x0279,
+ PROC_NPC_YELIA = 0x027A,
+ PROC_NPC_YKM = 0x027B,
+ PROC_NPC_YKW = 0x027C,
+ PROC_NPC_ZANB = 0x027D,
+ PROC_NPC_ZANT = 0x027E,
+ PROC_NPC_ZELDA = 0x027F,
+ PROC_NPC_ZELR = 0x0280,
+ PROC_NPC_ZELRO = 0x0281,
+ PROC_OBJ_ZRAFREEZE = 0x0282,
+ PROC_NPC_ZRC = 0x0283,
+ PROC_NPC_ZRZ = 0x0284,
+ PROC_ZRA_MARK = 0x0285,
+ PROC_MYNA2 = 0x0286,
+ PROC_TAG_MYNA2 = 0x0287,
+ PROC_NPC_CD3 = 0x0288,
+ PROC_Tag_Schedule = 0x0289,
+ PROC_Tag_Escape = 0x028A,
+ PROC_NPC_CHAT = 0x028B,
+ PROC_NPC_SOLDIERa = 0x028C,
+ PROC_NPC_SOLDIERb = 0x028D,
+ PROC_PASSER_MNG = 0x028E,
+ PROC_NPC_PASSER = 0x028F,
+ PROC_NPC_PASSER2 = 0x0290,
+ PROC_NPC_POST = 0x0291,
+ PROC_NPC_POUYA = 0x0292,
+ PROC_FORMATION_MNG = 0x0293,
+ PROC_NPC_FGUARD = 0x0294,
+ PROC_GUARD_MNG = 0x0295,
+ PROC_TAG_GUARD = 0x0296,
+ PROC_NPC_GUARD = 0x0297,
+ PROC_NPC_ASH = 0x0298,
+ PROC_NPC_ASHB = 0x0299,
+ PROC_NPC_SHAD = 0x029A,
+ PROC_NPC_RAFREL = 0x029B,
+ PROC_NPC_MOIR = 0x029C,
+ PROC_NPC_IMPAL = 0x029D,
+ PROC_NPC_SHOE = 0x029E,
+ PROC_NPC_DOORBOY = 0x029F,
+ PROC_NPC_PRAYER = 0x02A0,
+ PROC_NPC_KASIHANA = 0x02A1,
+ PROC_NPC_KASIKYU = 0x02A2,
+ PROC_NPC_KASIMICH = 0x02A3,
+ PROC_NPC_DRSOL = 0x02A4,
+ PROC_NPC_CHIN = 0x02A5,
+ PROC_NPC_INS = 0x02A6,
+ PROC_NPC_SHOP0 = 0x02A7,
+ PROC_NPC_MK = 0x02A8,
+ PROC_NPC_P2 = 0x02A9,
+ PROC_KYTAG00 = 0x02AA,
+ PROC_KYTAG01 = 0x02AB,
+ PROC_KYTAG02 = 0x02AC,
+ PROC_KYTAG03 = 0x02AD,
+ PROC_KYTAG04 = 0x02AE,
+ PROC_KYTAG05 = 0x02AF,
+ PROC_KYTAG06 = 0x02B0,
+ PROC_KYTAG07 = 0x02B1,
+ PROC_KYTAG08 = 0x02B2,
+ PROC_KYTAG09 = 0x02B3,
+ PROC_KYTAG10 = 0x02B4,
+ PROC_KYTAG11 = 0x02B5,
+ PROC_KYTAG12 = 0x02B6,
+ PROC_KYTAG13 = 0x02B7,
+ PROC_KYTAG14 = 0x02B8,
+ PROC_KYTAG15 = 0x02B9,
+ PROC_KYTAG16 = 0x02BA,
+ PROC_KYTAG17 = 0x02BB,
+ PROC_Ykgr = 0x02BC,
+ PROC_TALK = 0x02BD,
+ PROC_Obj_Crope = 0x02BE,
+ PROC_Obj_Bombf = 0x02BF,
+ PROC_Obj_BkLeaf = 0x02C0,
+ PROC_Tag_Mhint = 0x02C1,
+ PROC_Tag_Mmsg = 0x02C2,
+ PROC_Tag_Mwait = 0x02C3,
+ PROC_Tag_Mstop = 0x02C4,
+ PROC_Tag_Stream = 0x02C5,
+ PROC_Tag_Sppath = 0x02C6,
+ PROC_Tag_Wljump = 0x02C7,
+ PROC_Tag_TWGate = 0x02C8,
+ PROC_Tag_Lv6Gate = 0x02C9,
+ PROC_Tag_Lv7Gate = 0x02CA,
+ PROC_Tag_Lv8Gate = 0x02CB,
+ PROC_Tag_TheBHint = 0x02CC,
+ PROC_Tag_Assist = 0x02CD,
+ PROC_DEMO00 = 0x02CE,
+ PROC_TAG_CAMERA = 0x02CF,
+ PROC_TAG_CHKPOINT = 0x02D0,
+ PROC_TAG_EVENT = 0x02D1,
+ PROC_TAG_EVT = 0x02D2,
+ PROC_TAG_TELOP = 0x02D3,
+ PROC_TAG_HOWL = 0x02D4,
+ PROC_TAG_MSG = 0x02D5,
+ PROC_TAG_LANTERN = 0x02D6,
+ PROC_Tag_Mist = 0x02D7,
+ PROC_DMIDNA = 0x02D8,
+ PROC_KY_THUNDER = 0x02D9,
+ PROC_VRBOX = 0x02DA,
+ PROC_VRBOX2 = 0x02DB,
+ PROC_BG = 0x02DC,
+ PROC_SET_BG_OBJ = 0x02DD,
+ PROC_BG_OBJ = 0x02DE,
+ PROC_MIRROR = 0x02DF,
+ PROC_MOVIE_PLAYER = 0x02E0,
+ PROC_TITLE = 0x02E1,
+ PROC_FR = 0x02E2,
+ PROC_ECONT = 0x02E3,
+ PROC_MG_ROD = 0x02E4,
+ PROC_E_ARROW = 0x02E5,
+ PROC_BULLET = 0x02E6,
+ PROC_SWHIT0 = 0x02E7,
+ PROC_E_TH_BALL = 0x02E8,
+ PROC_TAG_EVTAREA = 0x02E9,
+ PROC_TAG_EVTMSG = 0x02EA,
+ PROC_TAG_KMSG = 0x02EB,
+ PROC_TAG_PUSH = 0x02EC,
+ PROC_E_MK_BO = 0x02ED,
+ PROC_E_MM_MT = 0x02EE,
+ PROC_OBJ_KBOX = 0x02EF,
+ PROC_OBJ_FW = 0x02F0,
+ PROC_B_GOS = 0x02F1,
+ PROC_OBJ_YSTONE = 0x02F2,
+ PROC_MANT = 0x02F3,
+ PROC_CROD = 0x02F4,
+ PROC_OBJ_PLEAF = 0x02F5,
+ PROC_OBJ_KBACKET = 0x02F6,
+ PROC_OBJ_YBAG = 0x02F7,
+ PROC_OBJ_PUMPKIN = 0x02F8,
+ PROC_OBJ_AUTOMATA = 0x02F9,
+ PROC_OBJ_GADGET = 0x02FA,
+ PROC_OBJ_KAGO = 0x02FB,
+ PROC_Obj_Carry = 0x02FC,
+ PROC_Obj_Stone = 0x02FD,
+ PROC_OBJ_HB = 0x02FE,
+ PROC_NPC_INKO = 0x02FF,
+ PROC_BD = 0x0300,
+ PROC_Obj_Eff = 0x0301,
+ PROC_WPILLAR = 0x0302,
+ PROC_WMARK = 0x0303,
+ PROC_E_BI = 0x0304,
+ PROC_E_BI_LEAF = 0x0305,
+ PROC_START_AND_GOAL = 0x0306,
+ PROC_NPC_DF = 0x0307,
+ PROC_ARROW = 0x0308,
+ PROC_PATH_LINE = 0x0309,
+ PROC_TAG_ALLMATO = 0x030A,
+ PROC_Obj_Timer = 0x030B,
+ PROC_SCENE_EXIT = 0x030C,
+ PROC_CAMERA = 0x030D,
+ PROC_CAMERA2 = 0x030E,
+ PROC_SUSPEND = 0x030F,
+ PROC_GRASS = 0x0310,
+ PROC_KYEFF = 0x0311,
+ PROC_KYEFF2 = 0x0312,
+ PROC_MSG_OBJECT = 0x0313,
+ PROC_MENUWINDOW = 0x0314,
+ PROC_TIMER = 0x0315,
+ PROC_METER2 = 0x0316,
+ PROC_GAMEOVER = 0x0317,
+};
diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h
index e98033adfa..9f24e2e710 100644
--- a/include/dolphin/gx/GX.h
+++ b/include/dolphin/gx/GX.h
@@ -922,7 +922,13 @@ inline void GXColor1u32(u32 c) {
GFX_FIFO(u32) = c;
}
+inline void GXTexCoord2f32(f32 s, f32 t) {
+ GFX_FIFO(f32) = s;
+ GFX_FIFO(f32) = t;
+}
+
inline void GXEnd() {}
+
};
#endif
diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h
index e34324bd38..3bda004d8a 100644
--- a/include/dolphin/os/OS.h
+++ b/include/dolphin/os/OS.h
@@ -304,4 +304,22 @@ inline void* OSPhysicalToCached(u32 offset) {
return (void*)(offset + 0x80000000);
}
-#endif \ No newline at end of file
+static inline u8 __OSf32tou8(register f32 src) {
+ f32 tmp;
+ register f32 *p = &tmp;
+ register u8 ret;
+
+ asm
+ {
+ psq_st src, 0(p), 1, 2
+ lbz ret, 0(p)
+ }
+
+ return ret;
+}
+
+static inline void OSf32tou8(register f32* src, volatile register u8* dst) {
+ *dst = __OSf32tou8(*src);
+}
+
+#endif
diff --git a/include/f_pc/f_pc_leaf.h b/include/f_pc/f_pc_leaf.h
index 5bbb9baa0f..485a6131e2 100644
--- a/include/f_pc/f_pc_leaf.h
+++ b/include/f_pc/f_pc_leaf.h
@@ -23,7 +23,7 @@ typedef struct leafdraw_class {
typedef struct leaf_process_profile_definition {
/* 0x00 */ process_profile_definition mBase;
/* 0x1C */ leafdraw_method_class* mLfDrwMth;
- /* 0x20 */ s16 unk20;
+ /* 0x20 */ s16 mPriority;
/* 0x22 */ u8 unk22[2];
/* 0x24 */ s32 unk24;
} leaf_process_profile_definition;
diff --git a/include/f_pc/f_pc_profile.h b/include/f_pc/f_pc_profile.h
index beed93f24a..a393e00728 100644
--- a/include/f_pc/f_pc_profile.h
+++ b/include/f_pc/f_pc_profile.h
@@ -19,6 +19,8 @@ typedef struct process_profile_definition {
s32 mParameters;
} process_profile_definition;
+#define LAYER_DEFAULT (-2)
+
process_profile_definition* fpcPf_Get(s16 profileID);
extern process_profile_definition** g_fpcPf_ProfileList_p;