This commit is contained in:
parent
06bf236150
commit
cd381e1694
@ -60,7 +60,6 @@ void PrimDisplay()
|
|||||||
|
|
||||||
|
|
||||||
/*** Clipping ****************************************************************/
|
/*** Clipping ****************************************************************/
|
||||||
extern int FrameFlipFlag;
|
|
||||||
void PrimClip(RECT *R, u32 Depth)
|
void PrimClip(RECT *R, u32 Depth)
|
||||||
{
|
{
|
||||||
DR_AREA *CPtr=(DR_AREA*)CurrPrim;
|
DR_AREA *CPtr=(DR_AREA*)CurrPrim;
|
||||||
|
@ -20,13 +20,13 @@
|
|||||||
#define GPUCODE_MODE_SEMI_TRANS (1<<1)
|
#define GPUCODE_MODE_SEMI_TRANS (1<<1)
|
||||||
|
|
||||||
// GPU Primitive codes. Please remember that 3 and 4 point lines require the pad field setting to 0x55555555.
|
// GPU Primitive codes. Please remember that 3 and 4 point lines require the pad field setting to 0x55555555.
|
||||||
#define GPUCODE_POLY_F3 (0x20)
|
#define GPUCODE_POLY_F3 (0x20)
|
||||||
#define GPUCODE_POLY_FT3 (0x24)
|
#define GPUCODE_POLY_FT3 (0x24)
|
||||||
#define GPUCODE_POLY_G3 (0x30)
|
#define GPUCODE_POLY_G3 (0x30)
|
||||||
#define GPUCODE_POLY_GT3 (0x34)
|
#define GPUCODE_POLY_GT3 (0x34)
|
||||||
#define GPUCODE_POLY_F4 (0x28)
|
#define GPUCODE_POLY_F4 (0x28)
|
||||||
#define GPUCODE_POLY_FT4 (0x2c)
|
#define GPUCODE_POLY_FT4 (0x2c)
|
||||||
#define GPUCODE_POLY_G4 (0x38)
|
#define GPUCODE_POLY_G4 (0x38)
|
||||||
#define GPUCODE_POLY_GT4 (0x3c)
|
#define GPUCODE_POLY_GT4 (0x3c)
|
||||||
|
|
||||||
#define GPUCODE_SPRT (0x64)
|
#define GPUCODE_SPRT (0x64)
|
||||||
@ -45,14 +45,14 @@
|
|||||||
#define GPUCODE_LINE_F4 (0x4c)
|
#define GPUCODE_LINE_F4 (0x4c)
|
||||||
#define GPUCODE_LINE_G4 (0x5c)
|
#define GPUCODE_LINE_G4 (0x5c)
|
||||||
|
|
||||||
// GPU Primitive sizes excluding the tag word. This is NOT the same as sizeof(<primitive type>)
|
// GPU Primitive sizes excluding the tag word. This is NOT the same as sizeof(<primitive type>) due to lack of tag word
|
||||||
#define GPUSIZE_POLY_F3 (4)
|
#define GPUSIZE_POLY_F3 (4)
|
||||||
#define GPUSIZE_POLY_FT3 (7)
|
#define GPUSIZE_POLY_FT3 (7)
|
||||||
#define GPUSIZE_POLY_G3 (6)
|
#define GPUSIZE_POLY_G3 (6)
|
||||||
#define GPUSIZE_POLY_GT3 (9)
|
#define GPUSIZE_POLY_GT3 (9)
|
||||||
#define GPUSIZE_POLY_F4 (5)
|
#define GPUSIZE_POLY_F4 (5)
|
||||||
#define GPUSIZE_POLY_FT4 (9)
|
#define GPUSIZE_POLY_FT4 (9)
|
||||||
#define GPUSIZE_POLY_G4 (8)
|
#define GPUSIZE_POLY_G4 (8)
|
||||||
#define GPUSIZE_POLY_GT4 (12)
|
#define GPUSIZE_POLY_GT4 (12)
|
||||||
|
|
||||||
#define GPUSIZE_SPRT (4)
|
#define GPUSIZE_SPRT (4)
|
||||||
@ -73,190 +73,183 @@
|
|||||||
|
|
||||||
#define GPUSIZE_DR_TPAGE (1)
|
#define GPUSIZE_DR_TPAGE (1)
|
||||||
|
|
||||||
#define GPUSIZE_TPOLY_F3 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_F3+1)
|
#define GPUSIZE_TPOLY_F3 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_F3)
|
||||||
#define GPUSIZE_TPOLY_F4 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_F4+1)
|
#define GPUSIZE_TPOLY_F4 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_F4)
|
||||||
#define GPUSIZE_TPOLY_G3 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_G3+1)
|
#define GPUSIZE_TPOLY_G3 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_G3)
|
||||||
#define GPUSIZE_TPOLY_G4 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_G4+1)
|
#define GPUSIZE_TPOLY_G4 (GPUSIZE_DR_TPAGE+GPUSIZE_POLY_G4)
|
||||||
|
|
||||||
#define GPUSIZE_TLINE_F2 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F3+1)
|
#define GPUSIZE_TLINE_F2 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F3)
|
||||||
#define GPUSIZE_TLINE_G2 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G2+1)
|
#define GPUSIZE_TLINE_G2 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G2)
|
||||||
#define GPUSIZE_TLINE_F3 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F3+1)
|
#define GPUSIZE_TLINE_F3 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F3)
|
||||||
#define GPUSIZE_TLINE_G3 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G3+1)
|
#define GPUSIZE_TLINE_G3 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G3)
|
||||||
#define GPUSIZE_TLINE_F4 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F4+1)
|
#define GPUSIZE_TLINE_F4 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_F4)
|
||||||
#define GPUSIZE_TLINE_G4 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G4+1)
|
#define GPUSIZE_TLINE_G4 (GPUSIZE_DR_TPAGE+GPUSIZE_LINE_G4)
|
||||||
|
|
||||||
#define GPUSIZE_TSPRT (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT+1)
|
#define GPUSIZE_TSPRT (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT)
|
||||||
#define GPUSIZE_TSPRT_8 (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT_8+1)
|
#define GPUSIZE_TSPRT_8 (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT_8)
|
||||||
#define GPUSIZE_TSPRT_16 (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT_16+1)
|
#define GPUSIZE_TSPRT_16 (GPUSIZE_DR_TPAGE+GPUSIZE_SPRT_16)
|
||||||
|
|
||||||
#define GPUSIZE_TTILE (GPUSIZE_DR_TPAGE+GPUSIZE_TILE+1)
|
#define GPUSIZE_TTILE (GPUSIZE_DR_TPAGE+GPUSIZE_TILE)
|
||||||
#define GPUSIZE_TTILE_1 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_1+1)
|
#define GPUSIZE_TTILE_1 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_1)
|
||||||
#define GPUSIZE_TTILE_8 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_8+1)
|
#define GPUSIZE_TTILE_8 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_8)
|
||||||
#define GPUSIZE_TTILE_16 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_16+1)
|
#define GPUSIZE_TTILE_16 (GPUSIZE_DR_TPAGE+GPUSIZE_TILE_16)
|
||||||
|
|
||||||
|
#define GPU_COLOUR_MASK (0x00ffffff)
|
||||||
|
#define GPU_CODE_MASK (0xff000000)
|
||||||
|
#define GPU_CODE_SHIFT (24)
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
// Macros
|
// Macros
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#define setTDrawTPageSize(p,s) setlen((p), (s)), (p)->t_code[0] = _get_mode(0,1,0)
|
#define setTDrawTPageSize(p,s) setlen((p), (s)), (p)->t_code = _get_mode(0,1,0)
|
||||||
#define setTDrawTPage(p) setTDrawTPageSize((p), 1)
|
#define setTDrawTPage(p) setTDrawTPageSize((p), 1)
|
||||||
|
|
||||||
#define setTPolyF3(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_F3), setcode(&((p)->tag_poly), GPUCODE_POLY_F3), ((p)->tag_poly)=0
|
#define setTPolyF3(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_F3), ((p)->code)=GPUCODE_POLY_F3
|
||||||
#define setTPolyF4(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_F4), setcode(&((p)->tag_poly), GPUCODE_POLY_F4), ((p)->tag_poly)=0
|
#define setTPolyF4(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_F4), ((p)->code)=GPUCODE_POLY_F4
|
||||||
#define setTPolyG3(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_G3), setcode(&((p)->tag_poly), GPUCODE_POLY_G3), ((p)->tag_poly)=0
|
#define setTPolyG3(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_G3), ((p)->code)=GPUCODE_POLY_G3
|
||||||
#define setTPolyG4(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_G4), setcode(&((p)->tag_poly), GPUCODE_POLY_G4), ((p)->tag_poly)=0
|
#define setTPolyG4(p) setTDrawTPageSize((p), GPUSIZE_TPOLY_G4), ((p)->code)=GPUCODE_POLY_G4
|
||||||
|
|
||||||
#define setTLineF2(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F2), setcode(&((p)->tag_poly), GPUCODE_LINE_F2), ((p)->tag_poly)=0
|
#define setTLineF2(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F2), ((p)->code)=GPUCODE_LINE_F2
|
||||||
#define setTLineF3(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F3), setcode(&((p)->tag_poly), GPUCODE_LINE_F3), ((p)->tag_poly)=0, ((p)->pad)=0x55555555
|
#define setTLineG2(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G2), ((p)->code)=GPUCODE_LINE_G2
|
||||||
#define setTLineF4(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F4), setcode(&((p)->tag_poly), GPUCODE_LINE_F4), ((p)->tag_poly)=0, ((p)->pad)=0x55555555
|
#define setTLineF3(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F3), ((p)->code)=GPUCODE_LINE_F3, ((p)->pad)=0x55555555
|
||||||
#define setTLineG2(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G2), setcode(&((p)->tag_poly), GPUCODE_LINE_G2), ((p)->tag_poly)=0
|
#define setTLineG3(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G3), ((p)->code)=GPUCODE_LINE_G3, ((p)->pad)=0x55555555, ((p)->p2)=0
|
||||||
#define setTLineG3(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G3), setcode(&((p)->tag_poly), GPUCODE_LINE_G3), ((p)->tag_poly)=0, ((p)->pad)=0x55555555
|
#define setTLineF4(p) setTDrawTPageSize((p), GPUSIZE_TLINE_F4), ((p)->code)=GPUCODE_LINE_F4, ((p)->pad)=0x55555555
|
||||||
#define setTLineG4(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G4), setcode(&((p)->tag_poly), GPUCODE_LINE_G4), ((p)->tag_poly)=0, ((p)->pad)=0x55555555
|
#define setTLineG4(p) setTDrawTPageSize((p), GPUSIZE_TLINE_G4), ((p)->code)=GPUCODE_LINE_G4, ((p)->pad)=0x55555555, ((p)->p2)=0, ((p)->p3)=0
|
||||||
|
|
||||||
#define setTSprt(p) setTDrawTPageSize((p), GPUSIZE_TSPRT), setcode(&((p)->tag_poly), GPUCODE_SPRT), ((p)->tag_poly)=0
|
#define setTSprt(p) setTDrawTPageSize((p), GPUSIZE_TSPRT), ((p)->code)=GPUCODE_SPRT
|
||||||
#define setTSprt8(p) setTDrawTPageSize((p), GPUSIZE_TSPRT_8), setcode(&((p)->tag_poly), GPUCODE_SPRT_8), ((p)->tag_poly)=0
|
#define setTSprt8(p) setTDrawTPageSize((p), GPUSIZE_TSPRT_8), ((p)->code)=GPUCODE_SPRT_8
|
||||||
#define setTSprt16(p) setTDrawTPageSize((p), GPUSIZE_TSPRT_16), setcode(&((p)->tag_poly), GPUCODE_SPRT_16), ((p)->tag_poly)=0
|
#define setTSprt16(p) setTDrawTPageSize((p), GPUSIZE_TSPRT_16), ((p)->code)=GPUCODE_SPRT_16
|
||||||
|
|
||||||
#define setTTile(p) setTDrawTPageSize((p), GPUSIZE_TTILE), setcode(&((p)->tag_poly), GPUCODE_TILE), ((p)->tag_poly)=0
|
#define setTTile(p) setTDrawTPageSize((p), GPUSIZE_TTILE), ((p)->code)=GPUCODE_TILE
|
||||||
#define setTTile1(p) setTDrawTPageSize((p), GPUSIZE_TTILE_1), setcode(&((p)->tag_poly), GPUCODE_TILE_1), ((p)->tag_poly)=0
|
#define setTTile1(p) setTDrawTPageSize((p), GPUSIZE_TTILE_1), ((p)->code)=GPUCODE_TILE_1
|
||||||
#define setTTile8(p) setTDrawTPageSize((p), GPUSIZE_TTILE_8), setcode(&((p)->tag_poly), GPUCODE_TILE_8), ((p)->tag_poly)=0
|
#define setTTile8(p) setTDrawTPageSize((p), GPUSIZE_TTILE_8), ((p)->code)=GPUCODE_TILE_8
|
||||||
#define setTTile16(p) setTDrawTPageSize((p), GPUSIZE_TTILE_16), setcode(&((p)->tag_poly), GPUCODE_TILE_16), ((p)->tag_poly)=0
|
#define setTTile16(p) setTDrawTPageSize((p), GPUSIZE_TTILE_16), ((p)->code)=GPUCODE_TILE_16
|
||||||
|
|
||||||
#define setTSemiTrans(p, abe) setSemiTrans(&((p)->tag_poly), (abe))
|
#define setTSemiTrans(p, abe) setSemiTrans(&((p)->t_code), (abe))
|
||||||
#define setTABRMode(p,abr) (p)->t_code[0] = _get_mode(0,1,(abr<<5))
|
#define setTSetShadeTex(p, st) setShadeTex(&((p)->t_code), (st))
|
||||||
#define setTSprtTPage(p,tp) (p)->t_code[0] = _get_mode(0,1,(tp))
|
#define setTABRMode(p,abr) ((p)->t_code) = _get_mode(0,1,(abr<<5))
|
||||||
#define setTSprtTPageABR(p,t,a) (p)->t_code[0] = _get_mode(0,1,(((t)&0x19f)|((a)<<5)))
|
#define setTSprtTPage(p,tp) ((p)->t_code) = _get_mode(0,1,(tp))
|
||||||
|
#define setTSprtTPageABR(p,t,a) ((p)->t_code) = _get_mode(0,1,(((t)&0x19f)|((a)<<5)))
|
||||||
#define addPrimSize(ot,p,size) (p)->tag = ((*(ot))|((size)<<24)), *((ot)) = (((u_long)(p)<<8)>>8)
|
|
||||||
|
|
||||||
|
#define addPrimSize(ot,p,size) ((p)->tag) = ((*(ot))|((size)<<24)), *((ot)) = (((u_long)(p)<<8)>>8)
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
// Structures
|
// Structures
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
|
|
||||||
struct TPOLY_F3 // Flat Triangle with ABR control
|
typedef struct __tpoly_f3
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
};
|
} TPOLY_F3; // Flat Triangle with ABR control
|
||||||
|
|
||||||
struct TPOLY_F4 // Flat Quadrangle with ABR control
|
typedef struct __tpoly_f4
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
short x3, y3;
|
short x3, y3;
|
||||||
};
|
} TPOLY_F4; // Flat Quadrangle with ABR control
|
||||||
|
|
||||||
struct TPOLY_G3 // Gouraud Triangle with ABR control
|
typedef struct __tpoly_g3
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char r1, g1, b1, pad1;
|
u_char r1, g1, b1, pad1;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
u_char r2, g2, b2, pad2;
|
u_char r2, g2, b2, pad2;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
};
|
} TPOLY_G3; // Gouraud Triangle with ABR control
|
||||||
|
|
||||||
struct TPOLY_G4 // Gouraud Quadrangle with ABR control
|
typedef struct __tpoly_g4
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char r1, g1, b1, pad1;
|
u_char r1, g1, b1, pad1;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
u_char r2, g2, b2, pad2;
|
u_char r2, g2, b2, pad2;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
u_char r3, g3, b3, pad3;
|
u_char r3, g3, b3, pad3;
|
||||||
short x3, y3;
|
short x3, y3;
|
||||||
};
|
} TPOLY_G4; // Gouraud Quadrangle with ABR control
|
||||||
|
|
||||||
//
|
//
|
||||||
// Line Primitive Definitions
|
// Line Primitive Definitions
|
||||||
//
|
//
|
||||||
|
|
||||||
struct TLINE_F2 // Unconnected Flat Line with ABR control
|
typedef struct __tline_f2
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
};
|
} TLINE_F2; // Unconnected Flat Line with ABR control
|
||||||
|
|
||||||
struct TLINE_G2 // Unconnected Gouraud Line with ABR control
|
typedef struct __tline_g2
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char r1, g1, b1, p1;
|
u_char r1, g1, b1, p1;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
};
|
} TLINE_G2; // Unconnected Gouraud Line with ABR control
|
||||||
|
|
||||||
struct TLINE_F3 // 2 connected Flat Line with ABR control
|
typedef struct __tline_f3
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
u_long pad;
|
u_long pad;
|
||||||
};
|
} TLINE_F3; // 2 connected Flat Line with ABR control
|
||||||
|
|
||||||
struct TLINE_G3 // 2 connected Gouraud Line with ABR control
|
typedef struct __tline_g3
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char r1, g1, b1, p1;
|
u_char r1, g1, b1, p1;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
u_char r2, g2, b2, p2;
|
u_char r2, g2, b2, p2;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
u_long pad;
|
u_long pad;
|
||||||
};
|
} TLINE_G3; // 2 connected Gouraud Line with ABR control
|
||||||
|
|
||||||
struct TLINE_F4 // 3 connected Flat Line Quadrangle with ABR control
|
typedef struct __tline_f4
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
short x2, y2;
|
short x2, y2;
|
||||||
short x3, y3;
|
short x3, y3;
|
||||||
u_long pad;
|
u_long pad;
|
||||||
};
|
} TLINE_F4; // 3 connected Flat Line Quadrangle with ABR control
|
||||||
|
|
||||||
struct TLINE_G4 // 3 connected Gouraud Line with ABR control
|
typedef struct __tline_g4
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char r1, g1, b1, p1;
|
u_char r1, g1, b1, p1;
|
||||||
short x1, y1;
|
short x1, y1;
|
||||||
u_char r2, g2, b2, p2;
|
u_char r2, g2, b2, p2;
|
||||||
@ -264,82 +257,75 @@ struct TLINE_G4 // 3 connected Gouraud Line with ABR control
|
|||||||
u_char r3, g3, b3, p3;
|
u_char r3, g3, b3, p3;
|
||||||
short x3, y3;
|
short x3, y3;
|
||||||
u_long pad;
|
u_long pad;
|
||||||
};
|
} TLINE_G4; // 3 connected Gouraud Line with ABR control
|
||||||
|
|
||||||
//
|
//
|
||||||
// Sprite Primitive Definitions
|
// Sprite Primitive Definitions
|
||||||
//
|
//
|
||||||
|
|
||||||
struct TSPRT // Free size Sprite with TPage/ABR control
|
typedef struct __tsprt
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char u0, v0; u_short clut;
|
u_char u0, v0; u_short clut;
|
||||||
short w, h;
|
short w, h;
|
||||||
};
|
} TSPRT; // Free size Sprite with TPage/ABR control
|
||||||
|
|
||||||
struct TSPRT_16 // 16x16 Sprite with TPage/ABR control
|
typedef struct __tsprt_16
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char u0, v0; u_short clut;
|
u_char u0, v0; u_short clut;
|
||||||
};
|
} TSPRT_16; // 16x16 Sprite with TPage/ABR control
|
||||||
|
|
||||||
struct TSPRT_8 // 8x8 Sprite with TPage/ABR control
|
typedef struct __tsprt_8
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
u_char u0, v0; u_short clut;
|
u_char u0, v0; u_short clut;
|
||||||
};
|
} TSPRT_8; // 8x8 Sprite with TPage/ABR control
|
||||||
|
|
||||||
//
|
//
|
||||||
// Tile Primitive Definitions
|
// Tile Primitive Definitions
|
||||||
//
|
//
|
||||||
|
|
||||||
struct TTILE // free size Tile with ABR control
|
typedef struct __ttile
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
short w, h;
|
short w, h;
|
||||||
};
|
} TTILE; // free size Tile with ABR control
|
||||||
|
|
||||||
struct TTILE_16 // 16x16 Tile with ABR control
|
typedef struct __ttile16
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
};
|
} TTILE_16; // 16x16 Tile with ABR control
|
||||||
|
|
||||||
struct TTILE_8 // 8x8 Tile with ABR control
|
typedef struct __ttile_8
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
};
|
} TTILE_8; // 8x8 Tile with ABR control
|
||||||
|
|
||||||
struct TTILE_1 // 1x1 Tile with ABR control
|
typedef struct __ttile_1
|
||||||
{
|
{
|
||||||
u_long tag;
|
u_long tag;
|
||||||
u_long t_code[1];
|
u_long t_code;
|
||||||
u_long tag_poly;
|
|
||||||
u_char r0, g0, b0, code;
|
u_char r0, g0, b0, code;
|
||||||
short x0, y0;
|
short x0, y0;
|
||||||
};
|
} TTILE_1; // 1x1 Tile with ABR control
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -5,22 +5,17 @@
|
|||||||
#include "system\global.h"
|
#include "system\global.h"
|
||||||
#include <DStructs.h>
|
#include <DStructs.h>
|
||||||
#include "utils\utils.h"
|
#include "utils\utils.h"
|
||||||
|
#include "system\vid.h"
|
||||||
#include "gfx\prim.h"
|
#include "gfx\prim.h"
|
||||||
|
|
||||||
#include "Layer.h"
|
|
||||||
#include "LayerTile.h"
|
#include "LayerTile.h"
|
||||||
|
|
||||||
enum
|
/*****************************************************************************/
|
||||||
{
|
/*****************************************************************************/
|
||||||
TILE_WIDTH=16,
|
/*****************************************************************************/
|
||||||
TILE_HEIGHT=16,
|
CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_QuadList,sVtx *_VtxList)
|
||||||
};
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_QuadList,sVtx *_VtxList) : CLayer(Hdr)
|
|
||||||
{
|
{
|
||||||
|
LayerHdr=Hdr;
|
||||||
TileList=_TileList;
|
TileList=_TileList;
|
||||||
TriList=_TriList;
|
TriList=_TriList;
|
||||||
QuadList=_QuadList;
|
QuadList=_QuadList;
|
||||||
@ -32,91 +27,103 @@ CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_Qu
|
|||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLayerTile::~CLayerTile()
|
CLayerTile::~CLayerTile()
|
||||||
{
|
{
|
||||||
}
|
if (TileMap2d[0].List) MemFree(TileMap2d[0].List);
|
||||||
|
if (TileMap2d[1].List) MemFree(TileMap2d[1].List);
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
void CLayerTile::init()
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLayerTile::shutdown()
|
// NEED TO UPDATE FOR DIFF MAP POS's
|
||||||
|
void CLayerTile::InitTileMap2d(int InitX,int InitY,int Width,int Height)
|
||||||
{
|
{
|
||||||
}
|
int Size=Width*Height;
|
||||||
|
int MapWidth=GetWidth();
|
||||||
|
int MapHeight=GetWidth();
|
||||||
|
|
||||||
/*****************************************************************************/
|
ASSERT(Width>=SCREEN_TILE_WIDTH);
|
||||||
int MapX=0;
|
ASSERT(Height>=SCREEN_TILE_HEIGHT);
|
||||||
int MapY=0;
|
|
||||||
|
|
||||||
|
TileMapWidth=Width;
|
||||||
|
TileMapHeight=Height;
|
||||||
|
|
||||||
void CLayerTile::render()
|
for (int Buffer=0; Buffer<2; Buffer++)
|
||||||
{
|
|
||||||
int Width=32;//GetWidth();
|
|
||||||
int Height=21;//GetHeight();
|
|
||||||
POLY_FT4 *ft4;
|
|
||||||
sTileMapElem *ThisElem=Map;
|
|
||||||
int XOfs=MapX;
|
|
||||||
int YOfs=MapY;
|
|
||||||
int XTileOfs,YTileOfs;
|
|
||||||
|
|
||||||
|
|
||||||
if (LayerHdr->SubType==LAYER_TILE_SUBTYPE_BACK)
|
|
||||||
{
|
{
|
||||||
XOfs/=4;
|
sTileMapElem *MapPtr=Map;
|
||||||
YOfs/=4;
|
sTileMap2dElem *List=(sTileMap2dElem*) MemAlloc(Size*sizeof(sTileMap2dElem),"2d TileMap");
|
||||||
}
|
TileMap2d[Buffer].List=List;
|
||||||
if (LayerHdr->SubType==LAYER_TILE_SUBTYPE_MID)
|
|
||||||
{
|
|
||||||
XOfs/=2;
|
|
||||||
YOfs/=2;
|
|
||||||
}
|
|
||||||
|
|
||||||
YTileOfs=YOfs;
|
for (int Y=0; Y<Height; Y++)
|
||||||
for (int Y=0; Y<Height; Y++)
|
|
||||||
{
|
|
||||||
XTileOfs=XOfs;
|
|
||||||
for (int X=0; X<Width; X++)
|
|
||||||
{
|
{
|
||||||
if (ThisElem->Tile)
|
for (int X=0; X<Width; X++)
|
||||||
{
|
{
|
||||||
sTile *ThisTile=&TileList[ThisElem->Tile];
|
sTileMap2dElem *ThisElem=&List[X+(Y*Width)];
|
||||||
if (ThisTile->TPage)
|
// Tile prim
|
||||||
{
|
TSPRT_16 *ThisTile=&ThisElem->Tile;
|
||||||
s16 x0=XTileOfs;
|
sTile *SrcTile=&TileList[MapPtr->Tile];
|
||||||
s16 x1=XTileOfs+TILE_WIDTH;
|
setTSprt16(ThisTile);
|
||||||
s16 y0=YTileOfs;
|
setTSprtTPage(ThisTile,SrcTile->TPage);
|
||||||
s16 y1=YTileOfs+TILE_HEIGHT;
|
ThisTile->r0=128;
|
||||||
|
ThisTile->g0=128;
|
||||||
|
ThisTile->b0=128;
|
||||||
|
ThisTile->clut=SrcTile->Clut;
|
||||||
|
ThisTile->u0=SrcTile->uv0[0];
|
||||||
|
ThisTile->v0=SrcTile->uv0[1];
|
||||||
|
|
||||||
ft4=GetPrimFT4();
|
// Table
|
||||||
setShadeTex(ft4,1);
|
int TableR=(X+1) % Width;
|
||||||
ft4->tpage=ThisTile->TPage;
|
int TableD=(Y+1) % Height;
|
||||||
ft4->clut=ThisTile->Clut;
|
ThisElem->Right=&List[TableR+(Y*Width)];
|
||||||
ft4->x0=x0 ; ft4->y0=y0;
|
ThisElem->Down=&List[X+(TableD*Width)];
|
||||||
ft4->x1=x1 ; ft4->y1=y0;
|
|
||||||
ft4->x2=x0 ; ft4->y2=y1;
|
MapPtr++;
|
||||||
ft4->x3=x1 ; ft4->y3=y1;
|
|
||||||
*(u16*)&ft4->u0=*(u16*)ThisTile->uv0;
|
|
||||||
*(u16*)&ft4->u1=*(u16*)ThisTile->uv1;
|
|
||||||
*(u16*)&ft4->u2=*(u16*)ThisTile->uv2;
|
|
||||||
*(u16*)&ft4->u3=*(u16*)ThisTile->uv3;
|
|
||||||
AddPrimToList(ft4,0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ThisElem++;
|
|
||||||
XTileOfs+=TILE_WIDTH;
|
|
||||||
}
|
}
|
||||||
YTileOfs+=TILE_HEIGHT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLayerTile::think(int _frames)
|
|
||||||
|
void CLayerTile::RenderTileMap2d(int MapX,int MapY)
|
||||||
{
|
{
|
||||||
|
sTileMap2dElem *Table=TileMap2d[FrameFlipFlag].List;
|
||||||
|
int XShift,YShift;
|
||||||
|
u32 XYPos;
|
||||||
|
const u32 XInc=16<<0;
|
||||||
|
const u32 YInc=16<<16;
|
||||||
|
|
||||||
|
// Setup shift bits of pos
|
||||||
|
XShift=15-(MapX&15);
|
||||||
|
YShift=15-(MapY&15);
|
||||||
|
XYPos=YShift<<16 | XShift<<0;
|
||||||
|
|
||||||
|
MapX>>=4;
|
||||||
|
MapY>>=4;
|
||||||
|
// Calc Start pos (fully wrapping)
|
||||||
|
/**/ MapX=MapX % TileMapWidth;
|
||||||
|
/**/ MapY=MapY % TileMapHeight;
|
||||||
|
|
||||||
|
/**/ Table+=MapX;
|
||||||
|
/**/ Table+=MapY*TileMapWidth;
|
||||||
|
|
||||||
|
// Render it!!
|
||||||
|
for (int TileY=0; TileY<SCREEN_TILE_HEIGHT; TileY++)
|
||||||
|
{
|
||||||
|
sTileMap2dElem *TableDown=Table->Down;
|
||||||
|
u32 XYPosDown=XYPos+YInc;
|
||||||
|
for (int TileX=0; TileX<SCREEN_TILE_WIDTH; TileX++)
|
||||||
|
{
|
||||||
|
TSPRT_16 *TileData=&Table->Tile;
|
||||||
|
*(u32*)&TileData->x0=XYPos;
|
||||||
|
/**/ //AddPrimToList(TileData,0);
|
||||||
|
/**/ AddPrim(OtPtr,TileData);
|
||||||
|
Table=Table->Right;
|
||||||
|
XYPos+=XInc;
|
||||||
|
}
|
||||||
|
Table=TableDown;
|
||||||
|
XYPos=XYPosDown;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
@ -7,33 +7,68 @@
|
|||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
class CLayerTile : public CLayer
|
struct sTileMap2dElem
|
||||||
|
{
|
||||||
|
TSPRT_16 Tile;
|
||||||
|
sTileMap2dElem *Right;
|
||||||
|
sTileMap2dElem *Down;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sTileMap2d
|
||||||
|
{
|
||||||
|
int X,Y;
|
||||||
|
sTileMap2dElem *List;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
class CLayerTile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum LAYER_TILE_SUBTYPE
|
enum LAYER_TILE_TYPE
|
||||||
{
|
{ // Stored reverse for rendering :o)
|
||||||
LAYER_TILE_SUBTYPE_BACK=0,
|
LAYER_TILE_TYPE_FORE,
|
||||||
LAYER_TILE_SUBTYPE_MID,
|
LAYER_TILE_TYPE_ACTION,
|
||||||
LAYER_TILE_SUBTYPE_ACTION,
|
LAYER_TILE_TYPE_MID,
|
||||||
LAYER_TILE_SUBTYPE_FORE,
|
LAYER_TILE_TYPE_BACK,
|
||||||
LAYER_TILE_SUBTYPE_MAX
|
LAYER_TILE_TYPE_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
TILE_WIDTH=16,
|
||||||
|
TILE_HEIGHT=16,
|
||||||
|
SCREEN_TILE_WIDTH=32, // fast bits ops :o)
|
||||||
|
SCREEN_TILE_HEIGHT=16, // fast bits ops :o)
|
||||||
|
SCREEN_TILE_SIZE=SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_QuadList,sVtx *_VtxList);
|
CLayerTile(sLayerHdr *Hdr,sTile *_TileList,sTri *_TriList,sQuad *_QuadList,sVtx *_VtxList);
|
||||||
~CLayerTile();
|
virtual ~CLayerTile();
|
||||||
|
|
||||||
void init();
|
virtual void init()=0;
|
||||||
void shutdown();
|
virtual void shutdown()=0;
|
||||||
void render();
|
virtual void render()=0;
|
||||||
void think(int _frames);
|
virtual void think(int _frames)=0;
|
||||||
|
|
||||||
private:
|
void InitTileMap2d(int X,int Y,int Width=SCREEN_TILE_WIDTH,int Height=SCREEN_TILE_HEIGHT);
|
||||||
|
|
||||||
|
int GetWidth() {return(LayerHdr->Width);}
|
||||||
|
int GetHeight() {return(LayerHdr->Height);}
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void RenderTileMap2d(int X,int Y);
|
||||||
|
|
||||||
|
sLayerHdr *LayerHdr;
|
||||||
sTile *TileList;
|
sTile *TileList;
|
||||||
sTri *TriList;
|
sTri *TriList;
|
||||||
sQuad *QuadList;
|
sQuad *QuadList;
|
||||||
sVtx *VtxList;
|
sVtx *VtxList;
|
||||||
sTileMapElem *Map;
|
sTileMapElem *Map;
|
||||||
|
|
||||||
|
int TileMapWidth,TileMapHeight;
|
||||||
|
sTileMap2d TileMap2d[2]; // Double Buffered
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,27 +10,27 @@
|
|||||||
#include <DStructs.h>
|
#include <DStructs.h>
|
||||||
|
|
||||||
#include "level\level.h"
|
#include "level\level.h"
|
||||||
#include "level\layer.h"
|
|
||||||
#include "level\layertile.h"
|
#include "level\layertile.h"
|
||||||
|
#include "level\layerback.h"
|
||||||
|
|
||||||
#include "pad\pads.h"
|
#include "pad\pads.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLevel::CLevel()
|
CLevel::CLevel()
|
||||||
{
|
{
|
||||||
for (int i=0; i<CLayer::LAYER_TYPE_MAX; i++)
|
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
||||||
{
|
{
|
||||||
TileLayers[i]=0;
|
TileLayers[i]=0;
|
||||||
}
|
}
|
||||||
DAVE_DBGMSG("sizeof(POLY_FT4)=%i\n",sizeof(POLY_FT4));
|
DAVE_DBGMSG("sizeof(POLY_FT4)=%i",sizeof(POLY_FT4));
|
||||||
DAVE_DBGMSG("sizeof(SPRT)=%i\n",sizeof(SPRT));
|
DAVE_DBGMSG("sizeof(TSPRT)=%i",sizeof(TSPRT));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
CLevel::~CLevel()
|
CLevel::~CLevel()
|
||||||
{
|
{
|
||||||
for (int i=0; i<CLayer::LAYER_TYPE_MAX; i++)
|
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
||||||
{
|
{
|
||||||
if (TileLayers[i]) delete TileLayers[i];
|
if (TileLayers[i]) delete TileLayers[i];
|
||||||
}
|
}
|
||||||
@ -57,34 +57,36 @@ sTile *TileList=(sTile*)MakePtr(LevelHdr,LevelHdr->TileList);
|
|||||||
if (LevelHdr->BackLayer)
|
if (LevelHdr->BackLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
|
||||||
CLayer *NewLayer=new ("Back Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileList);
|
||||||
NewLayer->init();
|
NewLayer->init();
|
||||||
TileLayers[CLayer::LAYER_TYPE_TILE_BACK]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
// Mid
|
// Mid
|
||||||
if (LevelHdr->MidLayer)
|
if (LevelHdr->MidLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer);
|
||||||
CLayer *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
||||||
NewLayer->init();
|
NewLayer->init();
|
||||||
TileLayers[CLayer::LAYER_TYPE_TILE_MID]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer;
|
||||||
}
|
}
|
||||||
// Action
|
// Action
|
||||||
if (LevelHdr->ActionLayer)
|
if (LevelHdr->ActionLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
|
||||||
CLayer *NewLayer=new ("Action Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Action Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
||||||
NewLayer->init();
|
NewLayer->init();
|
||||||
TileLayers[CLayer::LAYER_TYPE_TILE_ACTION]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer;
|
||||||
}
|
}
|
||||||
// Fore
|
// Fore
|
||||||
if (LevelHdr->ForeLayer)
|
if (LevelHdr->ForeLayer)
|
||||||
{
|
{
|
||||||
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ForeLayer);
|
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ForeLayer);
|
||||||
CLayer *NewLayer=new ("Fore Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
CLayerTile *NewLayer=new ("Fore Layer") CLayerTile(Layer, TileList, TriList, QuadList, VtxList);
|
||||||
NewLayer->init();
|
NewLayer->init();
|
||||||
TileLayers[CLayer::LAYER_TYPE_TILE_FORE]=NewLayer;
|
TileLayers[CLayerTile::LAYER_TILE_TYPE_FORE]=NewLayer;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
@ -98,7 +100,7 @@ void CLevel::shutdown()
|
|||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void CLevel::render()
|
void CLevel::render()
|
||||||
{
|
{
|
||||||
for (int i=0; i<CLayer::LAYER_TYPE_MAX; i++)
|
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
||||||
{
|
{
|
||||||
if (TileLayers[i]) TileLayers[i]->render();
|
if (TileLayers[i]) TileLayers[i]->render();
|
||||||
}
|
}
|
||||||
@ -109,17 +111,20 @@ void CLevel::render()
|
|||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
extern int MapX;
|
extern int MapX;
|
||||||
extern int MapY;
|
extern int MapY;
|
||||||
|
int MapSpd=8;
|
||||||
void CLevel::think(int _frames)
|
void CLevel::think(int _frames)
|
||||||
{
|
{
|
||||||
int padh = PadGetHeld( 0 );
|
int padh = PadGetHeld( 0 );
|
||||||
|
|
||||||
if (padh & PAD_LEFT) MapX+=4;
|
if (padh & PAD_LEFT) MapX-=MapSpd;
|
||||||
if (padh & PAD_RIGHT) MapX-=4;
|
if (padh & PAD_RIGHT) MapX+=MapSpd;
|
||||||
if (padh & PAD_UP) MapY+=4;
|
if (padh & PAD_UP) MapY-=MapSpd;
|
||||||
if (padh & PAD_DOWN) MapY-=4;
|
if (padh & PAD_DOWN) MapY+=MapSpd;
|
||||||
|
|
||||||
for (int i=0; i<CLayer::LAYER_TYPE_MAX; i++)
|
if (MapX<0) MapX=0;
|
||||||
|
if (MapY<0) MapY=0;
|
||||||
|
|
||||||
|
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
|
||||||
{
|
{
|
||||||
if (TileLayers[i]) TileLayers[i]->think(_frames);
|
if (TileLayers[i]) TileLayers[i]->think(_frames);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
#ifndef __LEVEL_LEVEL_H__
|
#ifndef __LEVEL_LEVEL_H__
|
||||||
#define __LEVEL_LEVEL_H__
|
#define __LEVEL_LEVEL_H__
|
||||||
|
|
||||||
#include "level/layer.h"
|
#include "level/layertile.h"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
class CLayer;
|
class CLayer;
|
||||||
@ -27,7 +27,7 @@ private:
|
|||||||
sLvlHdr *LevelHdr;
|
sLvlHdr *LevelHdr;
|
||||||
|
|
||||||
// Tile Layers
|
// Tile Layers
|
||||||
CLayer *TileLayers[CLayer::LAYER_TYPE_MAX];
|
CLayerTile *TileLayers[CLayerTile::LAYER_TILE_TYPE_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -21,6 +21,10 @@ struct sVidScreen
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
extern int FrameFlipFlag;
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
void VidInit();
|
void VidInit();
|
||||||
|
|
||||||
void VidScrOn();
|
void VidScrOn();
|
||||||
|
Loading…
Reference in New Issue
Block a user