/*============================================================================ NuSYSTEM sample program SNAKE TAIL HACK graphic.h Copyright (C) 1997, NINTENDO Co,Ltd. ============================================================================*/ #ifndef _GRAPHIC_H_ #define _GRAPHIC_H_ #include "para.h" /* The screen size */ #define SCREEN_HT 240 #define SCREEN_WD 320 /* The maximum length of the display list of one task */ #define GFX_GLIST_LEN 2048*10 /* The maximum value of the graphic task in 1 retrace period */ #define GFX_GTASK_NUM 2 /*-------------------------- define structure ------------------------------ */ /* The projection-matrix structure */ typedef struct { Mtx projection; Mtx modeling; Mtx viewing; Mtx base_trans; Mtx base_rotate; Mtx base_scale; Mtx saku_trans; Mtx saku_rotate; Mtx saku_scale; Mtx obj_trans[OBJ_MAX]; Mtx obj_rotate[OBJ_MAX]; Mtx obj_scale[OBJ_MAX]; Mtx snake_trans[SNAKE_MAX][SNAKE_MAX_LEN+1]; Mtx snake_rotate[SNAKE_MAX][SNAKE_MAX_LEN+1]; Mtx snake_scale[SNAKE_MAX][SNAKE_MAX_LEN+1]; Mtx shot_trans[20]; Mtx shot_rotate[20]; Mtx shot_scale[20]; /* The buffer for movie drawing */ unsigned short MovieBuf[8200]; } Dynamic; /* Various parameters of the self-machine */ typedef struct { int tailcnt[SNAKE_MAX]; /*The number of tails connected to the self-machine*/ int wallhit[SNAKE_MAX]; /*Whether or not the self-machine is within the range of the map*/ int objhit[SNAKE_MAX]; /*Whether or not the self-machine is within the range of the map*/ int shottailhit[SNAKE_MAX]; /*Whether or not the tail shot by the enemy has hit self*/ int enemyhit[SNAKE_MAX]; /*Whether or not the self-machine has hit the enemy*/ int bufidx[SNAKE_MAX]; /*The index of the buffer which is for that the tail chases the locus of the self-machine*/ int bufidx_wk[SNAKE_MAX]; /*Work for the calculation of ^ */ int stickon[SNAKE_MAX]; /*Whether or not the control stick is pulled down*/ float head_dir[SNAKE_MAX]; /*The head direction of the self-machine*/ int sleepcnt[SNAKE_MAX]; /*The fainting time (the V-unit)*/ int enemytailhit[SNAKE_MAX]; /*Whether or not it has hit the opponent's tail*/ int enemytailhitnum[SNAKE_MAX]; /*The opponent's tail number when it has hit the opponent's tail*/ int tail_attr[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The type of the displaying tail*/ float pos_x[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The displaying X-coordinate*/ float pos_y[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The displaying Y-coordinate*/ float pos_z[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The displaying Z-coordinate*/ float rot_x[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The rotational angle of the displaying X-axis direction*/ float rot_y[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The rotational angle of the displaying Y-axis direction*/ float rot_z[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The rotational angle of the displaying Z-axis direction*/ float size_x[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The scale of the displaying X-axis direction*/ float size_y[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The scale of the displaying Y-axis direction*/ float size_z[SNAKE_MAX][SNAKE_MAX_LEN+1]; /*The scale of the displaying Z-axis direction*/ } SnakePara; /* The parameter of the tail for shooting */ typedef struct{ float pos_x; /*The X-coordinate*/ float pos_y; /*The Y-coordinate*/ float pos_z; /*The Z-coordinate*/ float rot_x; /*The rotational angle of the X-axis direction*/ float rot_y; /*The rotational angle of the Y-axis direction*/ float rot_z; /*The rotational angle of the Z-axis direction*/ float size_x; float size_y; float size_z; int tail_pattern; int user; float tail_dir; int status; }ShotTail; /* The head locus of the self-machine */ typedef struct{ float SnakeX[TAIL_MOVE_BUF]; float SnakeY[TAIL_MOVE_BUF]; float SnakeRotZ[TAIL_MOVE_BUF]; }SnakeMove; /*-------------------------------- parameter---------------------------------*/ extern Dynamic gfx_dynamic[]; extern Gfx* glistp; extern Gfx gfx_glist[GFX_GTASK_NUM][GFX_GLIST_LEN]; extern u32 gfx_gtask_no; /*-------------------------------- function ---------------------------------*/ extern void gfxRCPInit(void); extern void gfxClearCfb(void); /*------------------------------- other extern define -----------------------*/ extern Gfx setup_rdpstate[]; extern Gfx setup_rspstate[]; #endif /* _GRAPHIC_H_ */