mirror of https://github.com/zeldaret/tp.git
a few more JPAResource functions
This commit is contained in:
parent
32d021a889
commit
f7eed3278f
|
|
@ -1,29 +0,0 @@
|
|||
lbl_80274010:
|
||||
/* 80274010 38 00 00 00 */ li r0, 0
|
||||
/* 80274014 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 80274018 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 8027401C 90 03 00 00 */ stw r0, 0(r3)
|
||||
/* 80274020 90 03 00 18 */ stw r0, 0x18(r3)
|
||||
/* 80274024 90 03 00 14 */ stw r0, 0x14(r3)
|
||||
/* 80274028 90 03 00 10 */ stw r0, 0x10(r3)
|
||||
/* 8027402C 90 03 00 0C */ stw r0, 0xc(r3)
|
||||
/* 80274030 90 03 00 1C */ stw r0, 0x1c(r3)
|
||||
/* 80274034 90 03 00 20 */ stw r0, 0x20(r3)
|
||||
/* 80274038 90 03 00 24 */ stw r0, 0x24(r3)
|
||||
/* 8027403C 90 03 00 28 */ stw r0, 0x28(r3)
|
||||
/* 80274040 90 03 00 2C */ stw r0, 0x2c(r3)
|
||||
/* 80274044 90 03 00 30 */ stw r0, 0x30(r3)
|
||||
/* 80274048 90 03 00 34 */ stw r0, 0x34(r3)
|
||||
/* 8027404C 90 03 00 38 */ stw r0, 0x38(r3)
|
||||
/* 80274050 98 03 00 47 */ stb r0, 0x47(r3)
|
||||
/* 80274054 98 03 00 46 */ stb r0, 0x46(r3)
|
||||
/* 80274058 98 03 00 45 */ stb r0, 0x45(r3)
|
||||
/* 8027405C 98 03 00 44 */ stb r0, 0x44(r3)
|
||||
/* 80274060 98 03 00 43 */ stb r0, 0x43(r3)
|
||||
/* 80274064 98 03 00 42 */ stb r0, 0x42(r3)
|
||||
/* 80274068 98 03 00 41 */ stb r0, 0x41(r3)
|
||||
/* 8027406C 98 03 00 40 */ stb r0, 0x40(r3)
|
||||
/* 80274070 98 03 00 3F */ stb r0, 0x3f(r3)
|
||||
/* 80274074 98 03 00 3E */ stb r0, 0x3e(r3)
|
||||
/* 80274078 B0 03 00 3C */ sth r0, 0x3c(r3)
|
||||
/* 8027407C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
lbl_80275A94:
|
||||
/* 80275A94 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80275A98 7C 08 02 A6 */ mflr r0
|
||||
/* 80275A9C 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 80275AA0 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80275AA4 48 0E C7 35 */ bl _savegpr_28
|
||||
/* 80275AA8 7C 7C 1B 78 */ mr r28, r3
|
||||
/* 80275AAC 7C 9D 23 78 */ mr r29, r4
|
||||
/* 80275AB0 7C BE 2B 78 */ mr r30, r5
|
||||
/* 80275AB4 93 C4 00 00 */ stw r30, 0(r4)
|
||||
/* 80275AB8 93 84 00 04 */ stw r28, 4(r4)
|
||||
/* 80275ABC 38 00 00 00 */ li r0, 0
|
||||
/* 80275AC0 98 04 02 16 */ stb r0, 0x216(r4)
|
||||
/* 80275AC4 48 00 0F 49 */ bl calcWorkData_d__11JPAResourceFP18JPAEmitterWorkData
|
||||
/* 80275AC8 80 7C 00 1C */ lwz r3, 0x1c(r28)
|
||||
/* 80275ACC 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80275AD0 48 00 4D 19 */ bl setGX__12JPABaseShapeCFP18JPAEmitterWorkData
|
||||
/* 80275AD4 3B E0 00 01 */ li r31, 1
|
||||
/* 80275AD8 48 00 00 78 */ b lbl_80275B50
|
||||
lbl_80275ADC:
|
||||
/* 80275ADC 88 7D 02 16 */ lbz r3, 0x216(r29)
|
||||
/* 80275AE0 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 80275AE4 98 1D 02 16 */ stb r0, 0x216(r29)
|
||||
/* 80275AE8 80 7C 00 1C */ lwz r3, 0x1c(r28)
|
||||
/* 80275AEC 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 80275AF0 80 03 00 08 */ lwz r0, 8(r3)
|
||||
/* 80275AF4 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9
|
||||
/* 80275AF8 41 82 00 1C */ beq lbl_80275B14
|
||||
/* 80275AFC 80 1C 00 24 */ lwz r0, 0x24(r28)
|
||||
/* 80275B00 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 80275B04 41 82 00 10 */ beq lbl_80275B14
|
||||
/* 80275B08 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80275B0C 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80275B10 48 00 03 A1 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData
|
||||
lbl_80275B14:
|
||||
/* 80275B14 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80275B18 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80275B1C 48 00 00 59 */ bl drawP__11JPAResourceFP18JPAEmitterWorkData
|
||||
/* 80275B20 80 7C 00 1C */ lwz r3, 0x1c(r28)
|
||||
/* 80275B24 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 80275B28 80 03 00 08 */ lwz r0, 8(r3)
|
||||
/* 80275B2C 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9
|
||||
/* 80275B30 40 82 00 1C */ bne lbl_80275B4C
|
||||
/* 80275B34 80 1C 00 24 */ lwz r0, 0x24(r28)
|
||||
/* 80275B38 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 80275B3C 41 82 00 10 */ beq lbl_80275B4C
|
||||
/* 80275B40 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80275B44 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80275B48 48 00 03 69 */ bl drawC__11JPAResourceFP18JPAEmitterWorkData
|
||||
lbl_80275B4C:
|
||||
/* 80275B4C 3B FF 00 01 */ addi r31, r31, 1
|
||||
lbl_80275B50:
|
||||
/* 80275B50 88 1E 01 10 */ lbz r0, 0x110(r30)
|
||||
/* 80275B54 7C 1F 00 00 */ cmpw r31, r0
|
||||
/* 80275B58 40 81 FF 84 */ ble lbl_80275ADC
|
||||
/* 80275B5C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80275B60 48 0E C6 C5 */ bl _restgpr_28
|
||||
/* 80275B64 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80275B68 7C 08 03 A6 */ mtlr r0
|
||||
/* 80275B6C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 80275B70 4E 80 00 20 */ blr
|
||||
|
|
@ -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:
|
||||
const JPABaseShapeData* mpData;
|
||||
const void* mpTexCrdMtxAnmTbl;
|
||||
const u8* mpTexIdxAnimTbl;
|
||||
GXColor* mpPrmClrAnmTbl;
|
||||
GXColor* mpEnvClrAnmTbl;
|
||||
};
|
||||
|
||||
#endif /* JPABASESHAPE_H */
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@ public:
|
|||
bool checkStatus(u32 status) { return !!(mStatus & status); }
|
||||
u8 getResourceManagerID() const { return mResMgrID; }
|
||||
u8 getGroupID() const { return mGroupID; }
|
||||
u8 getDrawTimes() const { return mDrawTimes; }
|
||||
|
||||
public:
|
||||
/* 0x00 */ Vec mLocalScl;
|
||||
|
|
|
|||
|
|
@ -20,105 +20,6 @@ struct JKRHeap {
|
|||
/* 802CE474 */ void alloc(u32, int, 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:
|
||||
const JPABaseShapeData* mpData;
|
||||
const void* mpTexCrdMtxAnmTbl;
|
||||
const u8* mpTexIdxAnimTbl;
|
||||
GXColor* mpPrmClrAnmTbl;
|
||||
GXColor* mpEnvClrAnmTbl;
|
||||
};
|
||||
|
||||
struct JMath {
|
||||
static u8 sincosTable_[65536];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
#include "JSystem/JParticle/JPAMath.h"
|
||||
#include "JSystem/JParticle/JPABaseShape.h"
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
|
@ -148,14 +149,34 @@ extern "C" void _restgpr_28();
|
|||
//
|
||||
|
||||
/* 80274010-80274080 26E950 0070+00 0/0 1/1 0/0 .text __ct__11JPAResourceFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JPAResource::JPAResource() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JParticle/JPAResource/__ct__11JPAResourceFv.s"
|
||||
JPAResource::JPAResource() {
|
||||
mpDrawEmitterChildFuncList = NULL;
|
||||
mpDrawEmitterFuncList = NULL;
|
||||
mpCalcEmitterFuncList = NULL;
|
||||
mpDrawParticleChildFuncList = NULL;
|
||||
mpCalcParticleChildFuncList = NULL;
|
||||
mpDrawParticleFuncList = NULL;
|
||||
mpCalcParticleFuncList = NULL;
|
||||
mpBaseShape = NULL;
|
||||
mpExtraShape = NULL;
|
||||
mpChildShape = NULL;
|
||||
mpExTexShape = NULL;
|
||||
mpDynamicsBlock = NULL;
|
||||
mpFieldBlocks = NULL;
|
||||
mpKeyBlocks = NULL;
|
||||
mpTDB1 = NULL;
|
||||
mpDrawParticleChildFuncListNum = 0;
|
||||
mpCalcParticleChildFuncListNum = 0;
|
||||
mpDrawParticleFuncListNum = 0;
|
||||
mpCalcParticleFuncListNum = 0;
|
||||
mpDrawEmitterChildFuncListNum = 0;
|
||||
mpDrawEmitterFuncListNum = 0;
|
||||
mpCalcEmitterFuncListNum = 0;
|
||||
mTDB1Num = 0;
|
||||
mKeyBlockNum = 0;
|
||||
mFieldBlockNum = 0;
|
||||
mUsrIdx = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C40C0-803C4220 0211E0 0144+1C 2/2 0/0 0/0 .data jpa_pos */
|
||||
|
|
@ -574,14 +595,21 @@ asm void JPAResource::calc(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1)
|
|||
|
||||
/* 80275A94-80275B74 2703D4 00E0+00 0/0 1/1 0/0 .text
|
||||
* draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JPAResource::draw(JPAEmitterWorkData* param_0, JPABaseEmitter* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JParticle/JPAResource/draw__11JPAResourceFP18JPAEmitterWorkDataP14JPABaseEmitter.s"
|
||||
void JPAResource::draw(JPAEmitterWorkData* work, JPABaseEmitter* emtr) {
|
||||
work->mpEmtr = emtr;
|
||||
work->mpRes = this;
|
||||
work->mDrawCount = 0;
|
||||
calcWorkData_d(work);
|
||||
mpBaseShape->setGX(work);
|
||||
for (s32 i = 1; i <= emtr->getDrawTimes(); i++) {
|
||||
work->mDrawCount++;
|
||||
if (mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
|
||||
drawC(work);
|
||||
drawP(work);
|
||||
if (!mpBaseShape->isDrawPrntAhead() && mpChildShape != NULL)
|
||||
drawC(work);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80455290-80455294 003890 0004+00 2/2 0/0 0/0 .sdata2 @3189 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue