mirror of https://github.com/PrimeDecomp/prime.git
parent
ccc9cadf4f
commit
7c6839fee7
|
@ -23,8 +23,8 @@ sNumEnabledPasses__13CTevCombiners:
|
||||||
.section .sbss, "wa"
|
.section .sbss, "wa"
|
||||||
.balign 8
|
.balign 8
|
||||||
|
|
||||||
.global sUniquePass__13CTevCombiners
|
.global sNextUniquePass__13CTevCombiners
|
||||||
sUniquePass__13CTevCombiners:
|
sNextUniquePass__13CTevCombiners:
|
||||||
.skip 0x4
|
.skip 0x4
|
||||||
.global skAlphaOne__13CTevCombiners
|
.global skAlphaOne__13CTevCombiners
|
||||||
skAlphaOne__13CTevCombiners:
|
skAlphaOne__13CTevCombiners:
|
||||||
|
@ -303,13 +303,11 @@ __sinit_CTevCombiners_cpp:
|
||||||
/* 8030924C 003061AC 38 21 00 70 */ addi r1, r1, 0x70
|
/* 8030924C 003061AC 38 21 00 70 */ addi r1, r1, 0x70
|
||||||
/* 80309250 003061B0 4E 80 00 20 */ blr
|
/* 80309250 003061B0 4E 80 00 20 */ blr
|
||||||
|
|
||||||
.if 0
|
|
||||||
# TODO: Figure out why this doesn't inline and get rid of the fake TU
|
|
||||||
.global __ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp
|
.global __ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp
|
||||||
__ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp:
|
__ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp:
|
||||||
/* 80309254 003061B4 81 0D A7 98 */ lwz r8, sUniquePass__13CTevCombiners@sda21(r13)
|
/* 80309254 003061B4 81 0D A7 98 */ lwz r8, sNextUniquePass__13CTevCombiners@sda21(r13)
|
||||||
/* 80309258 003061B8 38 08 00 01 */ addi r0, r8, 1
|
/* 80309258 003061B8 38 08 00 01 */ addi r0, r8, 1
|
||||||
/* 8030925C 003061BC 90 0D A7 98 */ stw r0, sUniquePass__13CTevCombiners@sda21(r13)
|
/* 8030925C 003061BC 90 0D A7 98 */ stw r0, sNextUniquePass__13CTevCombiners@sda21(r13)
|
||||||
/* 80309260 003061C0 91 03 00 00 */ stw r8, 0(r3)
|
/* 80309260 003061C0 91 03 00 00 */ stw r8, 0(r3)
|
||||||
/* 80309264 003061C4 80 04 00 00 */ lwz r0, 0(r4)
|
/* 80309264 003061C4 80 04 00 00 */ lwz r0, 0(r4)
|
||||||
/* 80309268 003061C8 90 03 00 04 */ stw r0, 4(r3)
|
/* 80309268 003061C8 90 03 00 04 */ stw r0, 4(r3)
|
||||||
|
@ -348,4 +346,3 @@ __ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiner
|
||||||
/* 803092EC 0030624C 80 07 00 10 */ lwz r0, 0x10(r7)
|
/* 803092EC 0030624C 80 07 00 10 */ lwz r0, 0x10(r7)
|
||||||
/* 803092F0 00306250 90 03 00 48 */ stw r0, 0x48(r3)
|
/* 803092F0 00306250 90 03 00 48 */ stw r0, 0x48(r3)
|
||||||
/* 803092F4 00306254 4E 80 00 20 */ blr
|
/* 803092F4 00306254 4E 80 00 20 */ blr
|
||||||
.endif
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
.include "macros.inc"
|
|
||||||
|
|
||||||
.section .text, "ax"
|
|
||||||
|
|
||||||
# TODO: Figure out why this doesn't inline and get rid of this fake TU
|
|
||||||
.global __ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp
|
|
||||||
__ct__Q213CTevCombiners8CTevPassFRCQ213CTevCombiners9ColorPassRCQ213CTevCombiners9AlphaPassRCQ213CTevCombiners6CTevOpRCQ213CTevCombiners6CTevOp:
|
|
||||||
/* 80309254 003061B4 81 0D A7 98 */ lwz r8, sUniquePass__13CTevCombiners@sda21(r13)
|
|
||||||
/* 80309258 003061B8 38 08 00 01 */ addi r0, r8, 1
|
|
||||||
/* 8030925C 003061BC 90 0D A7 98 */ stw r0, sUniquePass__13CTevCombiners@sda21(r13)
|
|
||||||
/* 80309260 003061C0 91 03 00 00 */ stw r8, 0(r3)
|
|
||||||
/* 80309264 003061C4 80 04 00 00 */ lwz r0, 0(r4)
|
|
||||||
/* 80309268 003061C8 90 03 00 04 */ stw r0, 4(r3)
|
|
||||||
/* 8030926C 003061CC 80 04 00 04 */ lwz r0, 4(r4)
|
|
||||||
/* 80309270 003061D0 90 03 00 08 */ stw r0, 8(r3)
|
|
||||||
/* 80309274 003061D4 80 04 00 08 */ lwz r0, 8(r4)
|
|
||||||
/* 80309278 003061D8 90 03 00 0C */ stw r0, 0xc(r3)
|
|
||||||
/* 8030927C 003061DC 80 04 00 0C */ lwz r0, 0xc(r4)
|
|
||||||
/* 80309280 003061E0 90 03 00 10 */ stw r0, 0x10(r3)
|
|
||||||
/* 80309284 003061E4 80 05 00 00 */ lwz r0, 0(r5)
|
|
||||||
/* 80309288 003061E8 90 03 00 14 */ stw r0, 0x14(r3)
|
|
||||||
/* 8030928C 003061EC 80 05 00 04 */ lwz r0, 4(r5)
|
|
||||||
/* 80309290 003061F0 90 03 00 18 */ stw r0, 0x18(r3)
|
|
||||||
/* 80309294 003061F4 80 05 00 08 */ lwz r0, 8(r5)
|
|
||||||
/* 80309298 003061F8 90 03 00 1C */ stw r0, 0x1c(r3)
|
|
||||||
/* 8030929C 003061FC 80 05 00 0C */ lwz r0, 0xc(r5)
|
|
||||||
/* 803092A0 00306200 90 03 00 20 */ stw r0, 0x20(r3)
|
|
||||||
/* 803092A4 00306204 88 06 00 00 */ lbz r0, 0(r6)
|
|
||||||
/* 803092A8 00306208 98 03 00 24 */ stb r0, 0x24(r3)
|
|
||||||
/* 803092AC 0030620C 80 06 00 04 */ lwz r0, 4(r6)
|
|
||||||
/* 803092B0 00306210 90 03 00 28 */ stw r0, 0x28(r3)
|
|
||||||
/* 803092B4 00306214 80 06 00 08 */ lwz r0, 8(r6)
|
|
||||||
/* 803092B8 00306218 90 03 00 2C */ stw r0, 0x2c(r3)
|
|
||||||
/* 803092BC 0030621C 80 06 00 0C */ lwz r0, 0xc(r6)
|
|
||||||
/* 803092C0 00306220 90 03 00 30 */ stw r0, 0x30(r3)
|
|
||||||
/* 803092C4 00306224 80 06 00 10 */ lwz r0, 0x10(r6)
|
|
||||||
/* 803092C8 00306228 90 03 00 34 */ stw r0, 0x34(r3)
|
|
||||||
/* 803092CC 0030622C 88 07 00 00 */ lbz r0, 0(r7)
|
|
||||||
/* 803092D0 00306230 98 03 00 38 */ stb r0, 0x38(r3)
|
|
||||||
/* 803092D4 00306234 80 07 00 04 */ lwz r0, 4(r7)
|
|
||||||
/* 803092D8 00306238 90 03 00 3C */ stw r0, 0x3c(r3)
|
|
||||||
/* 803092DC 0030623C 80 07 00 08 */ lwz r0, 8(r7)
|
|
||||||
/* 803092E0 00306240 90 03 00 40 */ stw r0, 0x40(r3)
|
|
||||||
/* 803092E4 00306244 80 07 00 0C */ lwz r0, 0xc(r7)
|
|
||||||
/* 803092E8 00306248 90 03 00 44 */ stw r0, 0x44(r3)
|
|
||||||
/* 803092EC 0030624C 80 07 00 10 */ lwz r0, 0x10(r7)
|
|
||||||
/* 803092F0 00306250 90 03 00 48 */ stw r0, 0x48(r3)
|
|
||||||
/* 803092F4 00306254 4E 80 00 20 */ blr
|
|
|
@ -558,7 +558,6 @@ LIBS = [
|
||||||
"Kyoto/Graphics/CCubeModel",
|
"Kyoto/Graphics/CCubeModel",
|
||||||
["Kyoto/Graphics/CGX", True],
|
["Kyoto/Graphics/CGX", True],
|
||||||
["Kyoto/Graphics/CTevCombiners", True],
|
["Kyoto/Graphics/CTevCombiners", True],
|
||||||
["Kyoto/Graphics/CTevPass", True],
|
|
||||||
"Kyoto/Graphics/DolphinCGraphics",
|
"Kyoto/Graphics/DolphinCGraphics",
|
||||||
"Kyoto/Graphics/DolphinCPalette",
|
"Kyoto/Graphics/DolphinCPalette",
|
||||||
"Kyoto/Graphics/DolphinCTexture",
|
"Kyoto/Graphics/DolphinCTexture",
|
||||||
|
|
|
@ -300,7 +300,7 @@ public:
|
||||||
static void sub_80309564(uint* stretch, uint* xOffset, uint* yOffset);
|
static void sub_80309564(uint* stretch, uint* xOffset, uint* yOffset);
|
||||||
static void sub_803094b0(uint stretch, uint xOffset, uint yOffset);
|
static void sub_803094b0(uint stretch, uint xOffset, uint yOffset);
|
||||||
|
|
||||||
static CTevCombiners::CTevPass& kEnvPassthru;
|
static const CTevCombiners::CTevPass& kEnvPassthru;
|
||||||
static CTevCombiners::CTevPass kEnvModulateConstColor;
|
static CTevCombiners::CTevPass kEnvModulateConstColor;
|
||||||
static CTevCombiners::CTevPass kEnvConstColor;
|
static CTevCombiners::CTevPass kEnvConstColor;
|
||||||
static CTevCombiners::CTevPass kEnvModulate;
|
static CTevCombiners::CTevPass kEnvModulate;
|
||||||
|
|
|
@ -25,19 +25,25 @@ public:
|
||||||
kCS_Konst,
|
kCS_Konst,
|
||||||
kCS_Zero,
|
kCS_Zero,
|
||||||
};
|
};
|
||||||
|
|
||||||
class ColorVar {
|
class ColorVar {
|
||||||
public:
|
public:
|
||||||
ColorVar(EColorSrc src);
|
ColorVar(EColorSrc src);
|
||||||
|
ColorVar(const ColorVar& other) : x0_src(other.GetSource()) {}
|
||||||
|
|
||||||
EColorSrc GetSource() const { return x0_src; }
|
EColorSrc GetSource() const { return x0_src; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
EColorSrc x0_src;
|
EColorSrc x0_src;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ColorPass {
|
class ColorPass {
|
||||||
public:
|
public:
|
||||||
ColorPass(const ColorVar& a, const ColorVar& b, const ColorVar& c, const ColorVar& d)
|
ColorPass(const ColorVar& a, const ColorVar& b, const ColorVar& c, const ColorVar& d)
|
||||||
: x0_a(a), x4_b(b), x8_c(c), xc_d(d) {}
|
: x0_a(a), x4_b(b), x8_c(c), xc_d(d) {}
|
||||||
|
ColorPass(const ColorPass& other)
|
||||||
|
: x0_a(other.GetA()), x4_b(other.GetB()), x8_c(other.GetC()), xc_d(other.GetD()) {}
|
||||||
|
|
||||||
ColorVar GetA() const { return x0_a; }
|
ColorVar GetA() const { return x0_a; }
|
||||||
ColorVar GetB() const { return x4_b; }
|
ColorVar GetB() const { return x4_b; }
|
||||||
ColorVar GetC() const { return x8_c; }
|
ColorVar GetC() const { return x8_c; }
|
||||||
|
@ -60,18 +66,24 @@ public:
|
||||||
kAS_Konst,
|
kAS_Konst,
|
||||||
kAS_Zero,
|
kAS_Zero,
|
||||||
};
|
};
|
||||||
|
|
||||||
class AlphaVar {
|
class AlphaVar {
|
||||||
public:
|
public:
|
||||||
AlphaVar(EAlphaSrc src);
|
AlphaVar(EAlphaSrc src);
|
||||||
|
AlphaVar(const AlphaVar& other) : x0_src(other.GetSource()) {}
|
||||||
|
|
||||||
EAlphaSrc GetSource() const { return x0_src; }
|
EAlphaSrc GetSource() const { return x0_src; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
EAlphaSrc x0_src;
|
EAlphaSrc x0_src;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AlphaPass {
|
class AlphaPass {
|
||||||
public:
|
public:
|
||||||
AlphaPass(const AlphaVar& a, const AlphaVar& b, const AlphaVar& c, const AlphaVar& d)
|
AlphaPass(const AlphaVar& a, const AlphaVar& b, const AlphaVar& c, const AlphaVar& d)
|
||||||
: x0_a(a), x4_b(b), x8_c(c), xc_d(d) {}
|
: x0_a(a), x4_b(b), x8_c(c), xc_d(d) {}
|
||||||
|
AlphaPass(const AlphaPass& other)
|
||||||
|
: x0_a(other.GetA()), x4_b(other.GetB()), x8_c(other.GetC()), xc_d(other.GetD()) {}
|
||||||
|
|
||||||
AlphaVar GetA() const { return x0_a; }
|
AlphaVar GetA() const { return x0_a; }
|
||||||
AlphaVar GetB() const { return x4_b; }
|
AlphaVar GetB() const { return x4_b; }
|
||||||
|
@ -89,28 +101,38 @@ public:
|
||||||
kTO_Add,
|
kTO_Add,
|
||||||
kTO_Subtract,
|
kTO_Subtract,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ETevBias {
|
enum ETevBias {
|
||||||
kTB_Zero,
|
kTB_Zero,
|
||||||
kTB_AddHalf,
|
kTB_AddHalf,
|
||||||
kTB_SubHalf,
|
kTB_SubHalf,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ETevScale {
|
enum ETevScale {
|
||||||
kTS_Scale1,
|
kTS_Scale1,
|
||||||
kTS_Scale2,
|
kTS_Scale2,
|
||||||
kTS_Scale4,
|
kTS_Scale4,
|
||||||
kTS_Divide2,
|
kTS_Divide2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ETevOutput {
|
enum ETevOutput {
|
||||||
kTO_Previous,
|
kTO_Previous,
|
||||||
kTO_Register0,
|
kTO_Register0,
|
||||||
kTO_Register1,
|
kTO_Register1,
|
||||||
kTO_Register2,
|
kTO_Register2,
|
||||||
};
|
};
|
||||||
|
|
||||||
class CTevOp {
|
class CTevOp {
|
||||||
public:
|
public:
|
||||||
CTevOp(ETevOp op = kTO_Add, ETevBias bias = kTB_Zero, ETevScale scale = kTS_Scale1,
|
CTevOp(ETevOp op = kTO_Add, ETevBias bias = kTB_Zero, ETevScale scale = kTS_Scale1,
|
||||||
bool clamp = true, ETevOutput output = kTO_Previous)
|
bool clamp = true, ETevOutput output = kTO_Previous)
|
||||||
: x0_clamp(clamp), x4_op(op), x8_bias(bias), xc_scale(scale), x10_output(output) {}
|
: x0_clamp(clamp), x4_op(op), x8_bias(bias), xc_scale(scale), x10_output(output) {}
|
||||||
|
CTevOp(const CTevOp& other)
|
||||||
|
: x0_clamp(other.GetClamp())
|
||||||
|
, x4_op(other.GetOp())
|
||||||
|
, x8_bias(other.GetBias())
|
||||||
|
, xc_scale(other.GetScale())
|
||||||
|
, x10_output(other.GetOutput()) {}
|
||||||
|
|
||||||
bool GetClamp() const { return x0_clamp; }
|
bool GetClamp() const { return x0_clamp; }
|
||||||
ETevOp GetOp() const { return x4_op; }
|
ETevOp GetOp() const { return x4_op; }
|
||||||
|
@ -129,13 +151,12 @@ public:
|
||||||
class CTevPass {
|
class CTevPass {
|
||||||
public:
|
public:
|
||||||
CTevPass(const ColorPass& colorPass, const AlphaPass& alphaPass,
|
CTevPass(const ColorPass& colorPass, const AlphaPass& alphaPass,
|
||||||
const CTevOp& colorOp = CTevOp(), const CTevOp& alphaOp = CTevOp());/*
|
const CTevOp& colorOp = CTevOp(), const CTevOp& alphaOp = CTevOp())
|
||||||
: x0_id(sUniquePass++)
|
: x0_id(sNextUniquePass++)
|
||||||
, x4_colorPass(colorPass)
|
, x4_colorPass(colorPass)
|
||||||
, x14_alphaPass(alphaPass)
|
, x14_alphaPass(alphaPass)
|
||||||
, x24_colorOp(colorOp)
|
, x24_colorOp(colorOp)
|
||||||
, x38_alphaOp(alphaOp) {}
|
, x38_alphaOp(alphaOp) {}
|
||||||
*/
|
|
||||||
|
|
||||||
void Execute(int) const;
|
void Execute(int) const;
|
||||||
|
|
||||||
|
@ -154,7 +175,7 @@ public:
|
||||||
static bool SetPassCombiners(int stage, const CTevPass& pass);
|
static bool SetPassCombiners(int stage, const CTevPass& pass);
|
||||||
static void ResetStates();
|
static void ResetStates();
|
||||||
|
|
||||||
static int sUniquePass;
|
static int sNextUniquePass;
|
||||||
static const CTevPass kEnvPassthru;
|
static const CTevPass kEnvPassthru;
|
||||||
static const AlphaVar skAlphaOne;
|
static const AlphaVar skAlphaOne;
|
||||||
static const ColorVar skColorOne;
|
static const ColorVar skColorOne;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#define TEV_MAX_PASSES 2
|
#define TEV_MAX_PASSES 2
|
||||||
|
|
||||||
int CTevCombiners::sUniquePass = 0;
|
int CTevCombiners::sNextUniquePass = 0;
|
||||||
const CTevCombiners::AlphaVar CTevCombiners::skAlphaOne(CTevCombiners::kAS_Konst);
|
const CTevCombiners::AlphaVar CTevCombiners::skAlphaOne(CTevCombiners::kAS_Konst);
|
||||||
const CTevCombiners::ColorVar CTevCombiners::skColorOne(CTevCombiners::kCS_One);
|
const CTevCombiners::ColorVar CTevCombiners::skColorOne(CTevCombiners::kCS_One);
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#include "Kyoto/Graphics/CTevCombiners.hpp"
|
|
||||||
|
|
||||||
// TODO: Figure out why this doesn't inline and get rid of this fake TU
|
|
||||||
CTevCombiners::CTevPass::CTevPass(const ColorPass& colorPass, const AlphaPass& alphaPass, const CTevOp& colorOp,
|
|
||||||
const CTevOp& alphaOp)
|
|
||||||
: x0_id(sUniquePass++)
|
|
||||||
, x4_colorPass(colorPass)
|
|
||||||
, x14_alphaPass(alphaPass)
|
|
||||||
, x24_colorOp(colorOp)
|
|
||||||
, x38_alphaOp(alphaOp) {}
|
|
|
@ -244,7 +244,7 @@ ELightType CGraphics::mLightTypes[8] = {
|
||||||
kLT_Directional, kLT_Directional, kLT_Directional, kLT_Directional,
|
kLT_Directional, kLT_Directional, kLT_Directional, kLT_Directional,
|
||||||
};
|
};
|
||||||
|
|
||||||
CTevCombiners::CTevPass& CGraphics::kEnvPassthru = CTevCombiners::kEnvPassthru;
|
const CTevCombiners::CTevPass& CGraphics::kEnvPassthru = CTevCombiners::kEnvPassthru;
|
||||||
bool CGraphics::mIsBeginSceneClearFb = true;
|
bool CGraphics::mIsBeginSceneClearFb = true;
|
||||||
ERglEnum CGraphics::mDepthFunc = kE_LEqual;
|
ERglEnum CGraphics::mDepthFunc = kE_LEqual;
|
||||||
ERglPrimitive CGraphics::mCurrentPrimitive = kP_Points;
|
ERglPrimitive CGraphics::mCurrentPrimitive = kP_Points;
|
||||||
|
|
Loading…
Reference in New Issue