Use per level ambient col, fix vertex dpq order

This commit is contained in:
ABelliqueux 2021-06-24 20:39:31 +02:00
parent c709b177b4
commit 19fc815fc0
12 changed files with 1295 additions and 188 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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

270
levels/ak/level0.c Normal file
View File

@ -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,
};

73
levels/ak/level0.h Normal file
View File

@ -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;

View File

@ -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,

View File

@ -6,6 +6,8 @@ extern LEVEL level0;
extern CVECTOR level0_BGc;;
extern VECTOR level0_BKc;;
extern CAMPOS level0_camPos_Camera;
extern CAMPATH level0_camPath;

View File

@ -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,

View File

@ -4,6 +4,8 @@
extern CVECTOR level1_BGc; // Far color
extern VECTOR level1_BKc;
extern LEVEL level1;
extern CAMPOS level1_camPos_camPath;

View File

@ -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 );

View File

@ -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;
}

View File

@ -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;