diff options
| author | Treeki <treeki@gmail.com> | 2011-05-28 04:18:32 +0200 | 
|---|---|---|
| committer | Treeki <treeki@gmail.com> | 2011-05-28 04:18:32 +0200 | 
| commit | 81f44f5f775ce9831a47cfe5a23b12e5742add18 (patch) | |
| tree | a6b1b5df0c82f4d392aa8a38580b91b70d39a663 | |
| parent | 6b714856d7d1d3de0e7455f2100e031a2d6e344d (diff) | |
| download | kamek-81f44f5f775ce9831a47cfe5a23b12e5742add18.tar.gz kamek-81f44f5f775ce9831a47cfe5a23b12e5742add18.zip | |
blah
Diffstat (limited to '')
| -rw-r--r-- | include/g3dhax.h | 9 | ||||
| -rw-r--r-- | kamek_ntsc.x | 15 | ||||
| -rw-r--r-- | kamek_ntsc2.x | 15 | ||||
| -rw-r--r-- | kamek_pal.x | 15 | ||||
| -rw-r--r-- | kamek_pal2.x | 15 | ||||
| -rw-r--r-- | src/wm_map.cpp | 94 | ||||
| -rw-r--r-- | src/wm_map.h | 8 | 
7 files changed, 168 insertions, 3 deletions
| diff --git a/include/g3dhax.h b/include/g3dhax.h index 39872a2..125a93f 100644 --- a/include/g3dhax.h +++ b/include/g3dhax.h @@ -139,6 +139,9 @@ public:  namespace m3d { +	// random, just dumped it here because I dunno where else +	void DisableIndirectTexturing(); +  	// I need to do scnLeaf_c some time...  	class proc_c { @@ -150,8 +153,8 @@ namespace m3d {  		virtual int returnUnknown();  		virtual void free();  		virtual bool scheduleForDrawing(); -		virtual void draw1() = 0; -		virtual void draw2() = 0; +		virtual void drawOpa(); +		virtual void drawXlu();  		void setScnObjOption(ulong, ulong);  		bool getScnObjOption(ulong, ulong*); @@ -167,6 +170,8 @@ namespace m3d {  		void calcView(bool);  		void setDrawPriorities(int opa, int xlu); + +		void *scnObj;  	};  	class mdl_c { diff --git a/kamek_ntsc.x b/kamek_ntsc.x index c2c8861..6e9b201 100644 --- a/kamek_ntsc.x +++ b/kamek_ntsc.x @@ -223,6 +223,18 @@ SECTIONS {  	__ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0x8025A380;  	InsertIntoScene__Q24nw4r3g3dFPv = 0x80164E50; +	DisableIndirectTexturing__3m3dFv = 0x80164F50; + +	/* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */ +	setup__Q23m3d6proc_cFPvPUi = 0x80164FD0; +	__ct__Q23m3d6proc_cFv = 0x8016A010; +	__dt__Q23m3d6proc_cFv = 0x8016A030; +	free__Q23m3d6proc_cFv = 0x8016A090; +	scheduleForDrawing__Q23m3d6proc_cFv = 0x8016A0E0; +	getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0x8016A190; +	returnUnknown__Q23m3d6proc_cFv = 0x8000F720; +	/* End preliminary section */ +  	__ct__Q23m3d5mdl_cFv = 0x80169CD0;  	__dt__Q23m3d5mdl_cFv = 0x80169D20;  	setup__Q23m3d5mdl_cFPvPvUiiPUi = 0x80169D90; @@ -598,12 +610,15 @@ SECTIONS {  	GXSetTevKAlphaSel = 0x801C85B0;  	GXSetTevSwapMode = 0x801C8600;  	GXSetTevSwapModeTable = 0x801C8640; +	GXSetAlphaCompare = 0x801C86C0;  	GXSetTevOrder = 0x801C8790;  	GXSetNumTevStages = 0x801C88F0;  	GXSetFog = 0x801C8920; +	GXSetFogRangeAdj = 0x801C8CB0;  	GXSetBlendMode = 0x801C8DC0;  	GXSetZMode = 0x801C8E70;  	GXSetZCompLoc = 0x801C8EB0; +	GXSetDither = 0x801C8F90;  	GXCallDisplayList = 0x801C95E0;  	GXSetProjection = 0x801C9840;  	GXLoadPosMtxImm = 0x801C9940; diff --git a/kamek_ntsc2.x b/kamek_ntsc2.x index f6d2727..1d3822d 100644 --- a/kamek_ntsc2.x +++ b/kamek_ntsc2.x @@ -223,6 +223,18 @@ SECTIONS {  	__ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0x8025A380;  	InsertIntoScene__Q24nw4r3g3dFPv = 0x80164E50; +	DisableIndirectTexturing__3m3dFv = 0x80164F50; + +	/* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */ +	setup__Q23m3d6proc_cFPvPUi = 0x80164FD0; +	__ct__Q23m3d6proc_cFv = 0x8016A010; +	__dt__Q23m3d6proc_cFv = 0x8016A030; +	free__Q23m3d6proc_cFv = 0x8016A090; +	scheduleForDrawing__Q23m3d6proc_cFv = 0x8016A0E0; +	getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0x8016A190; +	returnUnknown__Q23m3d6proc_cFv = 0x8000F720; +	/* End preliminary section */ +  	__ct__Q23m3d5mdl_cFv = 0x80169CD0;  	__dt__Q23m3d5mdl_cFv = 0x80169D20;  	setup__Q23m3d5mdl_cFPvPvUiiPUi = 0x80169D90; @@ -598,12 +610,15 @@ SECTIONS {  	GXSetTevKAlphaSel = 0x801C85B0;  	GXSetTevSwapMode = 0x801C8600;  	GXSetTevSwapModeTable = 0x801C8640; +	GXSetAlphaCompare = 0x801C86C0;  	GXSetTevOrder = 0x801C8790;  	GXSetNumTevStages = 0x801C88F0;  	GXSetFog = 0x801C8920; +	GXSetFogRangeAdj = 0x801C8CB0;  	GXSetBlendMode = 0x801C8DC0;  	GXSetZMode = 0x801C8E70;  	GXSetZCompLoc = 0x801C8EB0; +	GXSetDither = 0x801C8F90;  	GXCallDisplayList = 0x801C95E0;  	GXSetProjection = 0x801C9840;  	GXLoadPosMtxImm = 0x801C9940; diff --git a/kamek_pal.x b/kamek_pal.x index fad6640..c70729d 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -223,6 +223,18 @@ SECTIONS {  	__ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0x8025A4C0;
  	InsertIntoScene__Q24nw4r3g3dFPv = 0x80164F90;
 +	DisableIndirectTexturing__3m3dFv = 0x80165090;
 +
 +	/* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */
 +	setup__Q23m3d6proc_cFPvPUi = 0x80165110;
 +	__ct__Q23m3d6proc_cFv = 0x8016A150;
 +	__dt__Q23m3d6proc_cFv = 0x8016A170;
 +	free__Q23m3d6proc_cFv = 0x8016A1D0;
 +	scheduleForDrawing__Q23m3d6proc_cFv = 0x8016A220;
 +	getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0x8016A2D0;
 +	returnUnknown__Q23m3d6proc_cFv = 0x8000F720;
 +	/* End preliminary section */
 +
  	__ct__Q23m3d5mdl_cFv = 0x80169E10;
  	__dt__Q23m3d5mdl_cFv = 0x80169E60;
  	setup__Q23m3d5mdl_cFPvPvUiiPUi = 0x80169ED0;
 @@ -598,12 +610,15 @@ SECTIONS {  	GXSetTevKAlphaSel = 0x801C86F0;
  	GXSetTevSwapMode = 0x801C8740;
  	GXSetTevSwapModeTable = 0x801C8780;
 +	GXSetAlphaCompare = 0x801C8800;
  	GXSetTevOrder = 0x801C88D0;
  	GXSetNumTevStages = 0x801C8A30;
  	GXSetFog = 0x801C8A60;
 +	GXSetFogRangeAdj = 0x801C8DF0;
  	GXSetBlendMode = 0x801C8F00;
  	GXSetZMode = 0x801C8FB0;
  	GXSetZCompLoc = 0x801C8FF0;
 +	GXSetDither = 0x801C90D0;
  	GXCallDisplayList = 0x801C9720;
  	GXSetProjection = 0x801C9980;
  	GXLoadPosMtxImm = 0x801C9A80;
 diff --git a/kamek_pal2.x b/kamek_pal2.x index 6c151ed..66bf7a0 100644 --- a/kamek_pal2.x +++ b/kamek_pal2.x @@ -223,6 +223,18 @@ SECTIONS {  	__ScnMdlSimple__Construct__Q24nw4r3g3dFPvPUiPvi = 0xDEADBEEF;  	InsertIntoScene__Q24nw4r3g3dFPv = 0xDEADBEEF; +	DisableIndirectTexturing__3m3dFv = 0xDEADBEEF; + +	/* This is preliminary and kinda strange, most of these just point to ScnLeaf for now */ +	setup__Q23m3d6proc_cFPvPUi = 0xDEADBEEF; +	__ct__Q23m3d6proc_cFv = 0xDEADBEEF; +	__dt__Q23m3d6proc_cFv = 0xDEADBEEF; +	free__Q23m3d6proc_cFv = 0xDEADBEEF; +	scheduleForDrawing__Q23m3d6proc_cFv = 0xDEADBEEF; +	getViewMatrix__Q23m3d6proc_cFPA3_A4_f = 0xDEADBEEF; +	returnUnknown__Q23m3d6proc_cFv = 0xDEADBEEF; +	/* End preliminary section */ +  	__ct__Q23m3d5mdl_cFv = 0xDEADBEEF;  	__dt__Q23m3d5mdl_cFv = 0xDEADBEEF;  	setup__Q23m3d5mdl_cFPvPvUiiPUi = 0xDEADBEEF; @@ -598,12 +610,15 @@ SECTIONS {  	GXSetTevKAlphaSel = 0xDEADBEEF;  	GXSetTevSwapMode = 0xDEADBEEF;  	GXSetTevSwapModeTable = 0xDEADBEEF; +	GXSetAlphaCompare = 0xDEADBEEF;  	GXSetTevOrder = 0xDEADBEEF;  	GXSetNumTevStages = 0xDEADBEEF;  	GXSetFog = 0xDEADBEEF; +	GXSetFogRangeAdj = 0xDEADBEEF;  	GXSetBlendMode = 0xDEADBEEF;  	GXSetZMode = 0xDEADBEEF;  	GXSetZCompLoc = 0xDEADBEEF; +	GXSetDither = 0xDEADBEEF;  	GXCallDisplayList = 0xDEADBEEF;  	GXSetProjection = 0xDEADBEEF;  	GXLoadPosMtxImm = 0xDEADBEEF; diff --git a/src/wm_map.cpp b/src/wm_map.cpp index 4520a00..a4b8a48 100644 --- a/src/wm_map.cpp +++ b/src/wm_map.cpp @@ -1,4 +1,89 @@  #include "worldmap.h" +#include <rvl/PPCWGPipe.h> +#include <rvl/GXEnum.h> +#include <rvl/GXCull.h> +#include <rvl/GXVert.h> +#include <rvl/GXTev.h> +#include <rvl/GXGeometry.h> +#include <rvl/GXTexture.h> +#include <rvl/GXLighting.h> +#include <rvl/GXPixel.h> +#include <rvl/GXTransform.h> + + +void dPathTest_c::drawOpa() { +	GXClearVtxDesc(); +	GXSetVtxDesc(GX_VA_POS, GX_DIRECT); +	GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); +	GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); +	GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + +	m3d::DisableIndirectTexturing(); + +	GXSetNumChans(0); + +	GXSetNumTexGens(1); +	GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_NRM, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + +	GXSetNumTevStages(0); +	GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); + +	GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); +	GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO); +	GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_C0, GX_CC_ZERO); +	GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); +	GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); +	GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_A1, GX_CA_ZERO); +	GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); +	//GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + +	GXSetZCompLoc(0); +	GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); +	GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); +	GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); + +	GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, (GXColor){0,0,0,0}); +	GXSetFogRangeAdj(0, 0, 0); + +	GXSetCullMode(GX_CULL_NONE); +	GXSetDither(GX_TRUE); + +	GXSetTevColor(GX_TEVREG0, (GXColor){128,128,128,128}); +	GXSetTevColor(GX_TEVREG1, (GXColor){128,128,128,128}); + +	nw4r::g3d::Camera cam(GetCameraByID(GetCurrentCameraID())); +	Mtx camMtx; +	cam.GetCameraMtx(&camMtx); +	//MTXInverse(camMtx, camMtx); + +	Mtx viewMatrix; +	getViewMatrix(&viewMatrix); + +	//camMtx[0][3] = 0.0f; +	//camMtx[1][3] = 0.0f; +	//camMtx[2][3] = 0.0f; + +	//MTXConcat(viewMatrix, camMtx, viewMatrix); + +	GXLoadPosMtxImm(camMtx, GX_PNMTX0); +	GXSetCurrentMtx(GX_PNMTX0); + +	GXBegin(GX_QUADS, GX_VTXFMT0, 4); +	GXPosition3f32(-400, 0, -400); +	GXTexCoord2f32(0, 0); +	GXPosition3f32(400, 0, -400); +	GXTexCoord2f32(1, 0); +	GXPosition3f32(400, 0, 400); +	GXTexCoord2f32(1, 1); +	GXPosition3f32(-400, 0, 400); +	GXTexCoord2f32(0, 1); +	GXEnd(); +} + +void dPathTest_c::drawXlu() { +} + +  dWMMap_c *dWMMap_c::instance = 0; @@ -45,6 +130,9 @@ int dWMMap_c::onCreate() {  		node->loadFrom(nodeData, &allocator);  	} +	SpammyReport("Making path test\n"); +	pathTest.setup(&allocator); +  	SpammyReport("Unlinking allocator\n");  	allocator.unlink(); @@ -56,6 +144,8 @@ int dWMMap_c::onCreate() {  int dWMMap_c::onDelete() {  	delete[] nodes; +	pathTest.free(); +  	return true;  } @@ -73,6 +163,8 @@ int dWMMap_c::onDraw() {  		nodes[i].draw();  	} +	pathTest.scheduleForDrawing(); +  	SpammyReport("dWMMap_c::onDraw() completed\n");  	return true;  } @@ -113,6 +205,6 @@ void WMSceneNode::loadFrom(WMSceneDataNode *data, mHeapAllocator_c *allocator) {  void WMSceneNode::draw() { -	model.scheduleForDrawing(); +	//model.scheduleForDrawing();  } diff --git a/src/wm_map.h b/src/wm_map.h index 2ca55a0..9fd269c 100644 --- a/src/wm_map.h +++ b/src/wm_map.h @@ -28,6 +28,12 @@ public:  	void draw();  }; +class dPathTest_c : public m3d::proc_c { +public: +	void drawOpa(); +	void drawXlu(); +}; +  class dWMMap_c : public dBase_c {  public: @@ -38,6 +44,8 @@ public:  	mHeapAllocator_c allocator; +	dPathTest_c pathTest; +  	WMSceneDataHeader *data;  	WMSceneNode *nodes; | 
