diff --git a/custom_types.h b/custom_types.h index 32b99c0..6423a68 100644 --- a/custom_types.h +++ b/custom_types.h @@ -16,66 +16,66 @@ struct NODE; struct QUAD; typedef struct BODY { - VECTOR gForce; - VECTOR position; - SVECTOR velocity; - int mass; - int invMass; - VECTOR min; - VECTOR max; - int restitution; - } BODY; + VECTOR gForce; + VECTOR position; + SVECTOR velocity; + int mass; + int invMass; + VECTOR min; + VECTOR max; + int restitution; + } BODY; typedef struct VANIM { - int nframes; // number of frames e.g 20 - int nvert; // number of vertices e.g 21 - int cursor; // anim cursor - int lerpCursor; // anim cursor - int dir; // playback direction (1 or -1) - int interpolate; // use lerp to interpolate keyframes - SVECTOR data[]; // vertex pos as SVECTORs e.g 20 * 21 SVECTORS - } VANIM; + int nframes; // number of frames e.g 20 + int nvert; // number of vertices e.g 21 + int cursor; // anim cursor + int lerpCursor; // anim cursor + int dir; // playback direction (1 or -1) + int interpolate; // use lerp to interpolate keyframes + SVECTOR data[]; // vertex pos as SVECTORs e.g 20 * 21 SVECTORS + } VANIM; typedef struct PRIM { - VECTOR order; - int code; // Same as POL3/POL4 codes : Code (F3 = 1, FT3 = 2, G3 = 3, + VECTOR order; + int code; // Same as POL3/POL4 codes : Code (F3 = 1, FT3 = 2, G3 = 3, // GT3 = 4) Code (F4 = 5, FT4 = 6, G4 = 7, GT4 = 8) - } PRIM; + } PRIM; typedef struct MESH { - TMESH * tmesh; - PRIM * index; - TIM_IMAGE * tim; - unsigned long * tim_data; - MATRIX mat; - VECTOR pos; - SVECTOR rot; - short isRigidBody; - short isStaticBody; - short isRound; - short isPrism; - short isAnim; - short isActor; - short isLevel; - short isBG; - short isSprite; - long p; - long OTz; - BODY * body; - VANIM * anim; - struct NODE * node; - VECTOR pos2D; - } MESH; + TMESH * tmesh; + PRIM * index; + TIM_IMAGE * tim; + unsigned long * tim_data; + MATRIX mat; + VECTOR pos; + SVECTOR rot; + short isRigidBody; + short isStaticBody; + short isRound; + short isPrism; + short isAnim; + short isActor; + short isLevel; + short isBG; + short isSprite; + long p; + long OTz; + BODY * body; + VANIM * anim; + struct NODE * node; + VECTOR pos2D; + } MESH; typedef struct QUAD { - VECTOR v0, v1; - VECTOR v2, v3; - } QUAD; + VECTOR v0, v1; + VECTOR v2, v3; + } QUAD; typedef struct CAMPOS { - VECTOR pos; - SVECTOR rot; - } CAMPOS; + VECTOR pos; + SVECTOR rot; + } CAMPOS; // Blender cam ~= PSX cam with these settings : @@ -85,48 +85,49 @@ typedef struct CAMPOS { // Lower values mean wider angle typedef struct CAMANGLE { - CAMPOS * campos; - TIM_IMAGE * BGtim; - unsigned long * tim_data; - QUAD bw, fw; - int index; - MESH * objects[]; - } CAMANGLE; + CAMPOS * campos; + TIM_IMAGE * BGtim; + unsigned long * tim_data; + QUAD bw, fw; + int index; + MESH * objects[]; + } CAMANGLE; typedef struct CAMPATH { - short len, cursor, pos; - VECTOR points[]; - } CAMPATH; + short len, cursor, pos; + VECTOR points[]; + } CAMPATH; typedef struct SIBLINGS { - int index; - struct NODE * list[]; - } SIBLINGS ; + int index; + struct NODE * list[]; + } SIBLINGS ; typedef struct CHILDREN { - int index; - MESH * list[]; - } CHILDREN ; + int index; + MESH * list[]; + } CHILDREN ; typedef struct NODE { - MESH * plane; - SIBLINGS * siblings; - CHILDREN * objects; - CHILDREN * rigidbodies; - } NODE; + MESH * plane; + SIBLINGS * siblings; + CHILDREN * objects; + CHILDREN * rigidbodies; + } NODE; typedef struct LEVEL { - CVECTOR * BGc; - MATRIX * cmat; - MATRIX * lgtmat; - MESH ** meshes; - int * meshes_length; - MESH * actorPtr; - MESH * levelPtr; - MESH * propPtr; - CAMANGLE * camPtr; - CAMPATH * camPath; - CAMANGLE ** camAngles; - NODE * curNode; - MESH * meshPlan; // This one is temporary - } LEVEL; + CVECTOR * BGc; + VECTOR * BKc; + MATRIX * cmat; + MATRIX * lgtmat; + MESH ** meshes; + int * meshes_length; + MESH * actorPtr; + MESH * levelPtr; + MESH * propPtr; + CAMANGLE * camPtr; + CAMPATH * camPath; + CAMANGLE ** camAngles; + NODE * curNode; + MESH * meshPlan; // This one is temporary + } LEVEL; diff --git a/include/psx.h b/include/psx.h index 820d909..4a58c05 100644 --- a/include/psx.h +++ b/include/psx.h @@ -10,6 +10,7 @@ #include "../custom_types.h" // PSX setup +void setLightEnv(DRAWENV draw[2], CVECTOR * BGc, VECTOR * BKc, MATRIX * cmat); void init(DISPENV disp[2], DRAWENV draw[2], short db, MATRIX * cmat, CVECTOR * BG, VECTOR * BK ); void ScrRst(void); void display(DISPENV * disp, DRAWENV * draw, u_long * otdisc, char * primbuff, char ** nextprim, char * db); diff --git a/isotest.sh b/isotest.sh index 9d1bf60..c130db4 100755 --- a/isotest.sh +++ b/isotest.sh @@ -1,3 +1,3 @@ #!/bin/bash -make && mkpsxiso -y config/OverlayExample.xml && prime-run pcsx-redux -run -iso OverlayExample.cue +make && ~/bin/mkpsxiso -y config/OverlayExample.xml && pcsx-redux -run -iso OverlayExample.cue diff --git a/levels/ak/level0.c b/levels/ak/level0.c new file mode 100644 index 0000000..60ddd71 --- /dev/null +++ b/levels/ak/level0.c @@ -0,0 +1,270 @@ +#include "level0.h" + +CVECTOR level0_BGc = { 150, 218, 216, 0 }; +VECTOR level0_BKc = { 150, 218, 216, 0 }; + +CAMPOS level0_camPos_Camera = { + { -486,347,423 }, + { 301,531,0 } +}; + +CAMPATH level0_camPath = { + 0, + 0, + 0 +}; + +MATRIX level0_lgtmat = { + 0, 0, 0, + 0, 0, 0, + 0, 0, 0 + }; + +MATRIX level0_cmat = { + 0,0,0, + 0,0,0, + 0,0,0 + }; + +SVECTOR level0_modelCube_mesh[] = { + { 65,65,65 }, + { 65,65,-65 }, + { -65,65,-65 }, + { -65,65,65 }, + { 65,-65,65 }, + { 65,-65,-65 }, + { -65,-65,-65 }, + { -65,-65,65 } +}; + +SVECTOR level0_modelCube_normal[] = { + -2365,-2365,-2365, 0, + -2365,-2365,2365, 0, + 2365,-2365,2365, 0, + 2365,-2365,-2365, 0, + -2365,2365,-2365, 0, + -2365,2365,2365, 0, + 2365,2365,2365, 0, + 2365,2365,-2365, 0 +}; + +CVECTOR level0_modelCube_color[] = { + 255,0,172, 0, + 16,0,255, 0, + 33,255,0, 0, + 255,208,0, 0, + 229,30,196, 0, + 255,190,28, 0, + 255,223,81, 0, + 16,255,1, 0, + 255,245,91, 0, + 255,30,226, 0, + 16,255,1, 0, + 29,17,255, 0, + 16,0,255, 0, + 253,0,10, 0, + 255,0,8, 0, + 33,255,0, 0, + 33,255,0, 0, + 255,142,3, 0, + 255,132,3, 0, + 255,208,0, 0, + 37,255,0, 0, + 45,244,22, 0, + 255,43,33, 0, + 255,193,77, 0 +}; + +PRIM level0_modelCube_index[] = { + 0,1,2,3,8, + 4,7,6,5,8, + 0,4,5,1,8, + 1,5,6,2,8, + 2,6,7,3,8, + 4,0,3,7,8 +}; + +BODY level0_modelCube_body = { + {0, 0, 0, 0}, + 0,-130,23, 0, + 0,0,0, 0, + 1, + ONE/1, + -65,-65,-65, 0, + 65,65,65, 0, + 0, + }; + +TMESH level0_modelCube = { + level0_modelCube_mesh, + level0_modelCube_normal, + 0, + level0_modelCube_color, + 6 +}; + +MESH level0_meshCube = { + &level0_modelCube, + level0_modelCube_index, + 0, + 0, + {0}, + {0,-130,23, 0}, + {0,0,0}, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + &level0_modelCube_body, + 0, + 0, + 0 +}; + +SVECTOR level0_modelPlane_mesh[] = { + { -260,0,-260 }, + { 260,0,-260 }, + { -260,0,260 }, + { 260,0,260 } +}; + +SVECTOR level0_modelPlane_normal[] = { + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0 +}; + +CVECTOR level0_modelPlane_color[] = { + 255,37,10, 0, + 255,237,10, 0, + 255,37,10, 0, + 2,37,110, 0, +}; + +PRIM level0_modelPlane_index[] = { + 0,1,3,2,8 +}; + +BODY level0_modelPlane_body = { + {0, 0, 0, 0}, + 0,0,0, 0, + 0,0,0, 0, + 1, + ONE/1, + -260,0,-260, 0, + 260,0,260, 0, + 0, + }; + +TMESH level0_modelPlane = { + level0_modelPlane_mesh, + level0_modelPlane_normal, + 0, + level0_modelPlane_color, + 1 +}; + +MESH level0_meshPlane = { + &level0_modelPlane, + level0_modelPlane_index, + 0, + 0, + {0}, + {0,0,0, 0}, + {0,0,0}, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + &level0_modelPlane_body, + 0, + 0, + 0 +}; + +MESH * level0_meshes[2] = { + &level0_meshCube, + &level0_meshPlane +}; + +int level0_meshes_length = 2; + +CAMANGLE level0_camAngle_Camera = { + &level0_camPos_Camera, + 0, + 0, + { 0 }, + { 0 }, + 0, + 0 +}; + +CAMANGLE * level0_camAngles[0] = { +}; + +SIBLINGS level0_nodePlane_siblings = { + 0, + { + 0 + } +}; + +CHILDREN level0_nodePlane_objects = { + 0, + { + 0 + } +}; + +CHILDREN level0_nodePlane_rigidbodies = { + 1, + { + &level0_meshCube + } +}; + +NODE level0_nodePlane = { + &level0_meshPlane, + &level0_nodePlane_siblings, + &level0_nodePlane_objects, + &level0_nodePlane_rigidbodies +}; + +MESH * level0_actorPtr = &level0_meshCube; +MESH * level0_levelPtr = &level0_meshPlane; +MESH * level0_propPtr = &level0_meshCube; + +CAMANGLE * level0_camPtr = &level0_camAngle_Camera; + +NODE * level0_curNode = &level0_nodePlane; + +LEVEL level0 = { + &level0_BGc, + &level0_BKc, + &level0_cmat, + &level0_lgtmat, + (MESH **)&level0_meshes, + &level0_meshes_length, + &level0_meshCube, + &level0_meshPlane, + &level0_meshCube, + &level0_camAngle_Camera, + &level0_camPath, + (CAMANGLE **)&level0_camAngles, + &level0_nodePlane, +}; diff --git a/levels/ak/level0.h b/levels/ak/level0.h new file mode 100644 index 0000000..45459d2 --- /dev/null +++ b/levels/ak/level0.h @@ -0,0 +1,73 @@ +#pragma once + +#include "../custom_types.h" + +extern LEVEL level0; + +extern CVECTOR level0_BGc; + +extern VECTOR level0_BKc; + +extern CAMPOS level0_camPos_Camera; + +extern CAMPATH level0_camPath; + +extern MATRIX level0_lgtmat; + +extern MATRIX level0_cmat; + +extern SVECTOR modelCube_mesh[]; + +extern SVECTOR level0_modelCube_normal[]; + +extern CVECTOR level0_modelCube_color[]; + +extern PRIM level0_modelCube_index[]; + +extern BODY level0_modelCube_body; + +extern TMESH level0_modelCube; + +extern MESH level0_meshCube; + +extern SVECTOR modelPlane_mesh[]; + +extern SVECTOR level0_modelPlane_normal[]; + +extern CVECTOR level0_modelPlane_color[]; + +extern PRIM level0_modelPlane_index[]; + +extern BODY level0_modelPlane_body; + +extern TMESH level0_modelPlane; + +extern MESH level0_meshPlane; + +extern MESH * level0_meshes[2]; + +extern int level0_meshes_length; + +extern CAMANGLE level0_camAngle_Camera; + +extern CAMANGLE * level0_camAngles[0]; + +extern SIBLINGS level0_nodePlane_siblings; + +extern CHILDREN level0_nodePlane_objects; + +extern CHILDREN level0_nodePlane_rigidbodies; + +extern NODE level0_nodePlane; + +extern MESH * level0_actorPtr; + +extern MESH * level0_levelPtr; + +extern MESH * level0_propPtr; + +extern CAMANGLE * level0_camPtr; + +extern NODE * level0_curNode; + +extern NODE level0_nodePlane; diff --git a/levels/level0.c b/levels/level0.c index 09174ed..dad9aa7 100644 --- a/levels/level0.c +++ b/levels/level0.c @@ -1,9 +1,11 @@ #include "level0.h" -CVECTOR level0_BGc = { 0, 218, 216, 0 }; +CVECTOR level0_BGc = { 149, 218, 216, 0 }; + +VECTOR level0_BKc = { 0, 255, 255, 0 }; CAMPOS level0_camPos_Camera = { - { -486,347,423 }, + { -770,459,623 }, { 301,531,0 } }; @@ -14,7 +16,7 @@ CAMPATH level0_camPath = { }; MATRIX level0_lgtmat = { - -2319, 3254, -894, + -1919, 3254, 1581, 0,0,0, 0,0,0, @@ -27,52 +29,52 @@ MATRIX level0_cmat = { }; SVECTOR level0_modelCube_mesh[] = { - { 65,65,65 }, - { 65,65,-65 }, - { -65,65,-65 }, - { -65,65,65 }, - { 65,-65,65 }, - { 65,-65,-65 }, - { -65,-65,-65 }, - { -65,-65,65 } + { -32,32,32 }, + { 32,32,32 }, + { 32,32,-33 }, + { -33,32,-32 }, + { -32,-32,33 }, + { 33,-32,32 }, + { 32,-32,-33 }, + { -33,-32,-32 } }; SVECTOR level0_modelCube_normal[] = { + 2365,-2365,-2365, 0, -2365,-2365,-2365, 0, -2365,-2365,2365, 0, 2365,-2365,2365, 0, - 2365,-2365,-2365, 0, + 2365,2365,-2365, 0, -2365,2365,-2365, 0, -2365,2365,2365, 0, - 2365,2365,2365, 0, - 2365,2365,-2365, 0 + 2365,2365,2365, 0 }; CVECTOR level0_modelCube_color[] = { - 255,0,172, 0, - 16,0,255, 0, - 33,255,0, 0, - 255,208,0, 0, - 229,30,196, 0, - 255,190,28, 0, - 255,223,81, 0, - 16,255,1, 0, - 255,245,91, 0, - 255,30,226, 0, - 16,255,1, 0, - 29,17,255, 0, - 16,0,255, 0, - 253,0,10, 0, - 255,0,8, 0, - 33,255,0, 0, - 33,255,0, 0, - 255,142,3, 0, - 255,132,3, 0, - 255,208,0, 0, - 37,255,0, 0, - 45,244,22, 0, - 255,43,33, 0, - 255,193,77, 0 + 255,236,0, 0, + 255,237,0, 0, + 255,237,0, 0, + 255,235,0, 0, + 255,8,0, 0, + 255,2,0, 0, + 255,6,2, 0, + 254,3,0, 0, + 229,0,255, 0, + 229,0,255, 0, + 232,21,232, 0, + 229,0,255, 0, + 0,12,255, 0, + 5,16,250, 0, + 2,13,253, 0, + 0,12,255, 0, + 0,255,26, 0, + 4,251,25, 0, + 0,255,26, 0, + 0,255,26, 0, + 0,248,255, 0, + 0,248,255, 0, + 0,248,255, 0, + 0,248,255, 0 }; PRIM level0_modelCube_index[] = { @@ -86,12 +88,12 @@ PRIM level0_modelCube_index[] = { BODY level0_modelCube_body = { {0, 0, 0, 0}, - 0,-130,23, 0, - 0,0,0, 0, + 0,-236,23, 0, + 0,-1024,0, 0, 1, ONE/1, - -65,-65,-65, 0, - 65,65,65, 0, + -33,-32,-33, 0, + 33,32,33, 0, 0, }; @@ -109,16 +111,17 @@ MESH level0_meshCube = { 0, 0, {0}, - {0,-130,23, 0}, - {0,0,0}, - 1, - 0, - 0, - 0, - 1, - 0, - 0, - 0, + {0,-236,23, 0}, + {0,-1024,0}, + 1, // isRigidBody + 0, // isStaticBody + 0, // isRound + 0, // isPrism + 0, // isAnim + 1, // isActor + 0, // isLevel + 0, // isBG + 0,// isSprite 0, 0, &level0_modelCube_body, @@ -128,13 +131,247 @@ MESH level0_meshCube = { }; SVECTOR level0_modelPlane_mesh[] = { - { -260,0,-260 }, - { 260,0,-260 }, - { -260,0,260 }, - { 260,0,260 } + { -520,0,-520 }, + { 520,0,-520 }, + { -520,0,520 }, + { 520,0,520 }, + { -520,0,312 }, + { -520,0,104 }, + { -520,0,-104 }, + { -520,0,-312 }, + { -312,0,-520 }, + { -104,0,-520 }, + { 104,0,-520 }, + { 312,0,-520 }, + { 520,0,-312 }, + { 520,0,-104 }, + { 520,0,104 }, + { 520,0,312 }, + { 312,0,520 }, + { 104,0,520 }, + { -104,0,520 }, + { -312,0,520 }, + { -312,0,-312 }, + { -312,0,-104 }, + { -312,0,104 }, + { -312,0,312 }, + { -104,0,-312 }, + { -104,0,-104 }, + { -104,0,104 }, + { -104,0,312 }, + { 104,0,-312 }, + { 104,0,-104 }, + { 104,0,104 }, + { 104,0,312 }, + { 312,0,-312 }, + { 312,0,-104 }, + { 312,0,104 }, + { 312,0,312 }, + { -520,0,-416 }, + { 416,0,-520 }, + { 520,0,416 }, + { -416,0,520 }, + { -520,0,416 }, + { -520,0,208 }, + { -520,0,0 }, + { -520,0,-208 }, + { -416,0,-520 }, + { -208,0,-520 }, + { 0,0,-520 }, + { 208,0,-520 }, + { 520,0,-416 }, + { 520,0,-208 }, + { 520,0,0 }, + { 520,0,208 }, + { 416,0,520 }, + { 208,0,520 }, + { 0,0,520 }, + { -208,0,520 }, + { -312,0,416 }, + { -312,0,-416 }, + { -312,0,-208 }, + { -312,0,0 }, + { -312,0,208 }, + { -104,0,416 }, + { -104,0,-416 }, + { -104,0,-208 }, + { -104,0,0 }, + { -104,0,208 }, + { 104,0,416 }, + { 104,0,-416 }, + { 104,0,-208 }, + { 104,0,0 }, + { 104,0,208 }, + { 312,0,416 }, + { 312,0,-416 }, + { 312,0,-208 }, + { 312,0,0 }, + { 312,0,208 }, + { -416,0,-312 }, + { -416,0,-104 }, + { -416,0,104 }, + { -416,0,312 }, + { -208,0,-312 }, + { -208,0,-104 }, + { -208,0,104 }, + { -208,0,312 }, + { 0,0,-312 }, + { 0,0,-104 }, + { 0,0,104 }, + { 0,0,312 }, + { 208,0,-312 }, + { 208,0,-104 }, + { 208,0,104 }, + { 208,0,312 }, + { 416,0,-312 }, + { 416,0,-104 }, + { 416,0,104 }, + { 416,0,312 }, + { 416,0,208 }, + { 416,0,0 }, + { 416,0,-208 }, + { 416,0,-416 }, + { 208,0,208 }, + { 208,0,0 }, + { 208,0,-208 }, + { 208,0,-416 }, + { 0,0,208 }, + { 0,0,0 }, + { 0,0,-208 }, + { 0,0,-416 }, + { -208,0,208 }, + { -208,0,0 }, + { -208,0,-208 }, + { -208,0,-416 }, + { -416,0,208 }, + { -416,0,0 }, + { -416,0,-208 }, + { -416,0,-416 }, + { 208,0,416 }, + { 0,0,416 }, + { -208,0,416 }, + { -416,0,416 }, + { 416,0,416 } }; SVECTOR level0_modelPlane_normal[] = { + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, + 0,4096,0, 0, 0,4096,0, 0, 0,4096,0, 0, 0,4096,0, 0, @@ -142,14 +379,509 @@ SVECTOR level0_modelPlane_normal[] = { }; CVECTOR level0_modelPlane_color[] = { - 255,37,10, 0, - 255,37,10, 0, - 255,37,10, 0, - 255,37,10, 0, + 0,8,255, 0, + 0,8,255, 0, + 243,255,0, 0, + 240,252,3, 0, + 0,8,255, 0, + 0,8,255, 0, + 243,255,0, 0, + 240,252,3, 0, + 0,14,255, 0, + 0,9,255, 0, + 225,236,19, 0, + 243,255,0, 0, + 0,8,255, 0, + 0,8,255, 0, + 226,238,18, 0, + 225,237,19, 0, + 0,10,255, 0, + 0,8,255, 0, + 223,235,20, 0, + 243,255,0, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 251,1,14, 0, + 250,0,14, 0, + 76,6,181, 0, + 78,6,181, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,13,255, 0, + 0,8,255, 0, + 251,1,13, 0, + 251,1,13, 0, + 75,5,182, 0, + 77,5,180, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,12,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,16,255, 0, + 254,0,11, 0, + 254,0,11, 0, + 0,8,255, 0, + 4,9,251, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,12,255, 0, + 0,8,255, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,9,255, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,9,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,9,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,8,255, 0, + 0,12,255, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,27,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,9,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 254,0,11, 0, + 255,0,10, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,10, 0, + 254,0,11, 0, + 0,8,255, 0, + 0,8,255, 0, + 255,0,10, 0, + 255,0,10, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,10,255, 0, + 0,8,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 75,5,182, 0, + 4,9,251, 0, + 255,0,227, 0, + 255,0,227, 0, + 4,9,251, 0, + 0,8,255, 0, + 255,0,227, 0, + 255,0,227, 0, + 251,1,13, 0, + 254,0,11, 0, + 4,9,251, 0, + 75,5,182, 0, + 0,13,255, 0, + 0,16,255, 0, + 254,0,11, 0, + 251,1,13, 0, + 0,16,255, 0, + 0,8,255, 0, + 254,0,11, 0, + 254,0,11, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,16,255, 0, + 0,13,255, 0, + 0,31,255, 0, + 0,31,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,31,255, 0, + 0,10,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,12,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 76,6,181, 0, + 77,5,180, 0, + 255,0,227, 0, + 255,0,227, 0, + 77,5,180, 0, + 75,5,182, 0, + 255,0,227, 0, + 255,0,227, 0, + 250,0,14, 0, + 251,1,13, 0, + 77,5,180, 0, + 76,6,181, 0, + 0,8,255, 0, + 0,8,255, 0, + 251,1,13, 0, + 250,0,14, 0, + 0,8,255, 0, + 0,13,255, 0, + 251,1,13, 0, + 251,1,13, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,12,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,12,255, 0, + 0,31,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,255,6, 0, + 0,255,6, 0, + 255,0,227, 0, + 255,0,227, 0, + 0,8,255, 0, + 0,8,255, 0, + 74,5,184, 0, + 78,6,181, 0, + 255,0,227, 0, + 255,0,227, 0, + 78,6,181, 0, + 76,6,181, 0, + 255,0,227, 0, + 255,0,227, 0, + 238,1,26, 0, + 251,1,14, 0, + 78,6,181, 0, + 74,5,184, 0, + 0,8,255, 0, + 0,8,255, 0, + 251,1,14, 0, + 238,1,26, 0, + 0,8,255, 0, + 0,8,255, 0, + 250,0,14, 0, + 251,1,14, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,25,255, 0, + 0,17,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,17,255, 0, + 0,9,255, 0, + 0,255,248, 0, + 0,255,248, 0, + 0,8,255, 0, + 0,10,255, 0, + 243,255,0, 0, + 226,238,18, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,10,255, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,10,255, 0, + 0,9,255, 0, + 0,8,255, 0, + 225,237,19, 0, + 225,236,19, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,14,255, 0, + 243,255,0, 0, + 243,255,0, 0, + 0,8,255, 0, + 0,12,255, 0, + 0,14,255, 0, + 0,8,255, 0, + 0,12,255, 0, + 0,8,255, 0, + 0,9,255, 0, + 0,14,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 240,252,3, 0, + 243,255,0, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 240,252,3, 0, + 223,235,20, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0, + 0,8,255, 0 }; PRIM level0_modelPlane_index[] = { - 0,1,3,2,8 + 120,38,3,52,8, + 119,56,19,39,8, + 118,61,18,55,8, + 117,66,17,54,8, + 116,71,16,53,8, + 115,57,20,76,8, + 114,58,21,77,8, + 113,59,22,78,8, + 112,60,23,79,8, + 111,62,24,80,8, + 110,63,25,81,8, + 109,64,26,82,8, + 108,65,27,83,8, + 107,67,28,84,8, + 106,68,29,85,8, + 105,69,30,86,8, + 104,70,31,87,8, + 103,72,32,88,8, + 102,73,33,89,8, + 101,74,34,90,8, + 100,75,35,91,8, + 99,48,12,92,8, + 98,49,13,93,8, + 97,50,14,94,8, + 96,51,15,95,8, + 75,96,95,35,8, + 34,94,96,75,8, + 94,14,51,96,8, + 74,97,94,34,8, + 33,93,97,74,8, + 93,13,50,97,8, + 73,98,93,33,8, + 32,92,98,73,8, + 92,12,49,98,8, + 72,99,92,32,8, + 11,37,99,72,8, + 37,1,48,99,8, + 70,100,91,31,8, + 30,90,100,70,8, + 90,34,75,100,8, + 69,101,90,30,8, + 29,89,101,69,8, + 89,33,74,101,8, + 68,102,89,29,8, + 28,88,102,68,8, + 88,32,73,102,8, + 67,103,88,28,8, + 10,47,103,67,8, + 47,11,72,103,8, + 65,104,87,27,8, + 26,86,104,65,8, + 86,30,70,104,8, + 64,105,86,26,8, + 25,85,105,64,8, + 85,29,69,105,8, + 63,106,85,25,8, + 24,84,106,63,8, + 84,28,68,106,8, + 62,107,84,24,8, + 9,46,107,62,8, + 46,10,67,107,8, + 60,108,83,23,8, + 22,82,108,60,8, + 82,26,65,108,8, + 59,109,82,22,8, + 21,81,109,59,8, + 81,25,64,109,8, + 58,110,81,21,8, + 20,80,110,58,8, + 80,24,63,110,8, + 57,111,80,20,8, + 8,45,111,57,8, + 45,9,62,111,8, + 41,112,79,4,8, + 5,78,112,41,8, + 78,22,60,112,8, + 42,113,78,5,8, + 6,77,113,42,8, + 77,21,59,113,8, + 43,114,77,6,8, + 7,76,114,43,8, + 76,20,58,114,8, + 36,115,76,7,8, + 0,44,115,36,8, + 44,8,57,115,8, + 66,116,53,17,8, + 31,91,116,66,8, + 91,35,71,116,8, + 61,117,54,18,8, + 27,87,117,61,8, + 87,31,66,117,8, + 56,118,55,19,8, + 23,83,118,56,8, + 83,27,61,118,8, + 40,119,39,2,8, + 4,79,119,40,8, + 79,23,56,119,8, + 71,120,52,16,8, + 35,95,120,71,8, + 95,15,38,120,8 }; BODY level0_modelPlane_body = { @@ -158,8 +890,8 @@ BODY level0_modelPlane_body = { 0,0,0, 0, 1, ONE/1, - -260,0,-260, 0, - 260,0,260, 0, + -520,0,-520, 0, + 520,0,520, 0, 0, }; @@ -168,7 +900,7 @@ TMESH level0_modelPlane = { level0_modelPlane_normal, 0, level0_modelPlane_color, - 1 + 100 }; MESH level0_meshPlane = { @@ -179,14 +911,15 @@ MESH level0_meshPlane = { {0}, {0,0,0, 0}, {0,0,0}, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, + 0, // isRigidBody + 0, // isStaticBody + 0, // isRound + 0, // isPrism + 0, // isAnim + 0, // isActor + 1, // isLevel + 0, // isBG + 0,// isSprite 0, 0, &level0_modelPlane_body, @@ -253,6 +986,7 @@ NODE * level0_curNode = &level0_nodePlane; LEVEL level0 = { &level0_BGc, + &level0_BKc, &level0_cmat, &level0_lgtmat, (MESH **)&level0_meshes, diff --git a/levels/level0.h b/levels/level0.h index 1e8f592..3354dae 100644 --- a/levels/level0.h +++ b/levels/level0.h @@ -6,6 +6,8 @@ extern LEVEL level0; extern CVECTOR level0_BGc;; +extern VECTOR level0_BKc;; + extern CAMPOS level0_camPos_Camera; extern CAMPATH level0_camPath; diff --git a/levels/level1.c b/levels/level1.c index b81d1b8..f4a191d 100644 --- a/levels/level1.c +++ b/levels/level1.c @@ -2,6 +2,8 @@ CVECTOR level1_BGc = {150, 50, 75, 0}; // Far color +VECTOR level1_BKc = {128, 128, 128, 0}; + CAMPOS level1_camPos_camPath = { { -205,156,-17 }, { 371,707,0 } @@ -10007,7 +10009,7 @@ MESH level1_meshSphere_001 = { {0,0,0}, 1, 0, - 0, + 1, 0, 0, 0, @@ -10994,6 +10996,7 @@ NODE * level1_curNode = &level1_nodegnd_002; LEVEL level1 = { &level1_BGc, + &level1_BKc, &level1_cmat, &level1_lgtmat, (MESH**)&level1_meshes, diff --git a/levels/level1.h b/levels/level1.h index c26aaf3..17d6560 100644 --- a/levels/level1.h +++ b/levels/level1.h @@ -4,6 +4,8 @@ extern CVECTOR level1_BGc; // Far color +extern VECTOR level1_BKc; + extern LEVEL level1; extern CAMPOS level1_camPos_camPath; diff --git a/src/graphics.c b/src/graphics.c index 4c2827d..6134d2a 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -139,19 +139,19 @@ void drawPoly(MESH * mesh, long * Flag, int atime, int * camMode, char ** nextpr if ( mesh->isSprite ) { SetShadeTex( poly, 1 ); } - // Defaults depth color to neutral grey - CVECTOR outCol = { 128,128,128,0 }; - CVECTOR outCol1 = { 128,128,128,0 }; - CVECTOR outCol2 = { 128,128,128,0 }; - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vx ], &mesh->tmesh->c[ mesh->index[t].order.vx ], mesh->p, &outCol); - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vz ], &mesh->tmesh->c[ mesh->index[t].order.vz ], mesh->p, &outCol1); - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vy ], &mesh->tmesh->c[ mesh->index[t].order.vy ], mesh->p, &outCol2); + // Init to 0 + CVECTOR outCol = { 0,0,0,0 }; + CVECTOR outCol1 = { 0,0,0,0 }; + CVECTOR outCol2 = { 0,0,0,0 }; + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vx ], &mesh->tmesh->c[ i+0 ], mesh->p, &outCol); + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vz ], &mesh->tmesh->c[ i+2 ], mesh->p, &outCol1); + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vy ], &mesh->tmesh->c[ i+1 ], mesh->p, &outCol2); // If transparent effect is in use, inhibit shadows if (mesh->isPrism){ // Use un-interpolated (i.e: no light, no fog) colors setRGB0(poly, mesh->tmesh->c[i].r, mesh->tmesh->c[i].g, mesh->tmesh->c[i].b); - setRGB1(poly, mesh->tmesh->c[i+1].r, mesh->tmesh->c[i+1].g, mesh->tmesh->c[i+1].b); - setRGB2(poly, mesh->tmesh->c[i+2].r, mesh->tmesh->c[i+2].g, mesh->tmesh->c[i+2].b); + setRGB1(poly, mesh->tmesh->c[i+2].r, mesh->tmesh->c[i+2].g, mesh->tmesh->c[i+2].b); + setRGB2(poly, mesh->tmesh->c[i+1].r, mesh->tmesh->c[i+1].g, mesh->tmesh->c[i+1].b); } else { setRGB0(poly, outCol.r, outCol.g , outCol.b); setRGB1(poly, outCol1.r, outCol1.g, outCol1.b); @@ -325,24 +325,28 @@ void drawPoly(MESH * mesh, long * Flag, int atime, int * camMode, char ** nextpr mesh->tim->crect->y ); } - CVECTOR outCol = {128,128,128,0}; - CVECTOR outCol1 = {128,128,128,0}; - CVECTOR outCol2 = {128,128,128,0}; - CVECTOR outCol3 = {128,128,128,0}; - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.pad ] , &mesh->tmesh->c[ mesh->index[t].order.pad ], mesh->p, &outCol); - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vz ], &mesh->tmesh->c[ mesh->index[t].order.vz ], mesh->p, &outCol1); - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vx ], &mesh->tmesh->c[ mesh->index[t].order.vx ], mesh->p, &outCol2); - NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vy ], &mesh->tmesh->c[ mesh->index[t].order.vy ], mesh->p, &outCol3); + CVECTOR outCol = {0,0,0,0}; + CVECTOR outCol1 = {0,0,0,0}; + CVECTOR outCol2 = {0,0,0,0}; + CVECTOR outCol3 = {0,0,0,0}; + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.pad ] , &mesh->tmesh->c[ i+3 ], mesh->p, &outCol); + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vz ] , &mesh->tmesh->c[ i+2 ], mesh->p, &outCol1); + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vx ] , &mesh->tmesh->c[ i+0 ], mesh->p, &outCol2); + NormalColorDpq(&mesh->tmesh->n[ mesh->index[t].order.vy ] , &mesh->tmesh->c[ i+1 ], mesh->p, &outCol3); if (mesh->isPrism){ - setRGB0(poly4, mesh->tmesh->c[i].r, mesh->tmesh->c[i].g, mesh->tmesh->c[i].b); - setRGB1(poly4, mesh->tmesh->c[i+1].r, mesh->tmesh->c[i+1].g, mesh->tmesh->c[i+1].b); - setRGB2(poly4, mesh->tmesh->c[i+2].r, mesh->tmesh->c[i+2].g, mesh->tmesh->c[i+2].b); - setRGB3(poly4, mesh->tmesh->c[i+3].r, mesh->tmesh->c[i+3].g, mesh->tmesh->c[i+3].b); + setRGB0(poly4, mesh->tmesh->c[i+3].r, mesh->tmesh->c[i+3].g, mesh->tmesh->c[i+3].b); + setRGB1(poly4, mesh->tmesh->c[i+2].r, mesh->tmesh->c[i+2].g, mesh->tmesh->c[i+2].b); + setRGB2(poly4, mesh->tmesh->c[i+0].r, mesh->tmesh->c[i+0].g, mesh->tmesh->c[i+0].b); + setRGB3(poly4, mesh->tmesh->c[i+1].r, mesh->tmesh->c[i+1].g, mesh->tmesh->c[i+1].b); } else { setRGB0(poly4, outCol.r, outCol.g , outCol.b); setRGB1(poly4, outCol1.r, outCol1.g, outCol1.b); setRGB2(poly4, outCol2.r, outCol2.g, outCol2.b); setRGB3(poly4, outCol3.r, outCol3.g, outCol3.b); + //~ setRGB0(poly4, mesh->tmesh->c[i+3].r, mesh->tmesh->c[i+3].g, mesh->tmesh->c[i+3].b); + //~ setRGB1(poly4, mesh->tmesh->c[i+2].r, mesh->tmesh->c[i+2].g, mesh->tmesh->c[i+2].b); + //~ setRGB2(poly4, mesh->tmesh->c[i+0].r, mesh->tmesh->c[i+0].g, mesh->tmesh->c[i+0].b); + //~ setRGB3(poly4, mesh->tmesh->c[i+1].r, mesh->tmesh->c[i+1].g, mesh->tmesh->c[i+1].b); } if ( (mesh->OTz > 0) /*&& (*mesh->OTz < OTLEN)*/ && (mesh->p < 4096) ) { AddPrim( &ot[ mesh->OTz-3 ], poly4 ); diff --git a/src/main.c b/src/main.c index 39b68db..03397ce 100644 --- a/src/main.c +++ b/src/main.c @@ -38,7 +38,7 @@ u_long overlaySize = 0; //FIXME : Refresh BGc, lightmatrix on ovly upload... -volatile u_char level = 1; +volatile u_char level = 0; // level 1 : 8003F05C -2147225508 // level 0 : 800AF744 -2146764988 // 80010000 -2147418112 -> -2147483648 @@ -57,7 +57,7 @@ char primbuff[2][PRIMBUFFLEN] = {0}; // Primitive list // That's our int primcnt=0; // Primitive counter char * nextpri = primbuff[0]; // Primitive counter char db = 0; // Current buffer counter -CVECTOR BGc = {50, 50, 75, 0}; // Far color +CVECTOR BGc = {128, 128, 128, 0}; // Default Far color - This can be set in each level. VECTOR BKc = {128, 128, 128, 0}; // Back color MATRIX rotlgt; SVECTOR lgtang = {0, 0, 0}; @@ -94,6 +94,7 @@ MESH meshPlan = {0}; VECTOR modelPlan_pos = {0}; LEVEL curLvl = { &BGc, + &BKc, &cmat, &lgtmat, (MESH **)&meshes, @@ -146,7 +147,7 @@ int main() { //~ div3.pih = SCREENXRES; //~ div3.piv = SCREENYRES; //~ div3.ndiv = 1; - init(disp, draw, db, curLvl.cmat, curLvl.BGc, &BKc); + init(disp, draw, db, curLvl.cmat, curLvl.BGc, curLvl.BKc); InitPAD(controllers[0].pad, 34, controllers[1].pad, 34); StartPAD(); generateTable(); @@ -210,6 +211,7 @@ int main() { LoadLevelCD( overlayFile, &load_all_overlays_here ); #endif SwitchLevel( &curLvl, loadLvl); + setLightEnv(draw, curLvl.BGc, curLvl.BKc, curLvl.cmat); //~ levelHasChanged = 0; levelWas = level; } diff --git a/src/psx.c b/src/psx.c index 6a285cf..66f03e7 100644 --- a/src/psx.c +++ b/src/psx.c @@ -1,5 +1,17 @@ #include "../include/psx.h" +void setLightEnv(DRAWENV draw[2], CVECTOR * BGc, VECTOR * BKc, MATRIX * cmat){ + // Set Draw area color + setRGB0(&draw[0], BGc->r, BGc->g, BGc->b); + setRGB0(&draw[1], BGc->r, BGc->g, BGc->b); + // Set Farcolor from here + //~ SetFarColor( BGc->r, BGc->g, BGc->b ); + // Set Ambient color + SetBackColor( BKc->vx, BKc->vy, BKc->vz ); + // Set Light matrix + SetColorMatrix(cmat); +}; + void init(DISPENV disp[2], DRAWENV draw[2], short db, MATRIX * cmat, CVECTOR * BGc, VECTOR * BKc) { ResetCallback(); // Init pad @@ -24,8 +36,8 @@ void init(DISPENV disp[2], DRAWENV draw[2], short db, MATRIX * cmat, CVECTOR * B disp[1].screen.y += 8; } // Set Draw area color - setRGB0(&draw[0], BGc->r, BGc->g, BGc->b); - setRGB0(&draw[1], BGc->r, BGc->g, BGc->b); + setLightEnv(draw, BGc, BKc, cmat); + // Set Draw area clear flag draw[0].isbg = 1; draw[1].isbg = 1; @@ -41,10 +53,12 @@ void init(DISPENV disp[2], DRAWENV draw[2], short db, MATRIX * cmat, CVECTOR * B FNT_SCR_BG, FNT_SCR_MAX_CHAR ); - // Lighting setup - SetColorMatrix( cmat ); - SetBackColor( BKc->vx, BKc->vy, BKc->vz ); - SetFarColor( BGc->r, BGc->g, BGc->b ); + // TODO : Move these to level files + SetFarColor( 128, 128, 128 ); + //~ // Set Ambient color + //~ SetBackColor( BKc->vx, BKc->vy, BKc->vz ); + //~ // Set Light matrix + //~ SetColorMatrix(cmat); SetFogNearFar( FOG_NEAR, FOG_FAR, SCREENXRES ); }; void ScrRst(void){ @@ -71,6 +85,7 @@ void display(DISPENV * disp, DRAWENV * draw, u_long * otdisc, char * primbuff, c }; void LvlPtrSet(LEVEL * curLevel, LEVEL * level){ curLevel->BGc = level->BGc; + curLevel->BKc = level->BKc; curLevel->cmat = level->cmat; curLevel->lgtmat = level->lgtmat; curLevel->meshes = level->meshes;