#include <machine.h> #define _SPR2_ / * Use sprite display extension library * / #include "sega_spr.h" #include "sega_scl.h" #include "sega_int.h"#define COMMAND_MAX 512 / * Maximum number of commands * / #define GOUR_TBL_MAX 512 / * Maximum number of gour tables * / #define LOOKUP_TBL_MAX 512 / * Maximum number of lookup tables * / #define CHAR_MAX 100 / * Maximum number of characters * / #define DRAW_PRTY_MAX 256 / * Maximum number of drawing priority blocks * / SPR_2DefineWork(work2d, COMMAND_MAX, GOUR_TBL_MAX, LOOKUP_TBL_MAX, CHAR_MAX, DRAW_PRTY_MAX) / * 2D work area definition * / extern void vbStart (void); / * V-BLANK IN interrupt routine * / extern void vbEnd (void); / * V-BLANK OUT interrupt routine * /
main() { set_imask (0); / * Enable interrupt * /
SCL_Vdp2Init (); / * Scroll and initialize priority * /
SCL_SetPriority(SCL_SP0|SCL_SP1|SCL_SP2|SCL_SP3|SCL_SP4| SCL_SP5|SCL_SP6|SCL_SP7,7); SCL_SetSpriteMode(SCL_TYPE1,SCL_MIX,SCL_SP_WINDOW); SPR_2Initial (& work2d); / * 2D sprite display initialization * /
INT_ChgMsk(INT_MSK_NULL, INT_MSK_VBL_IN | INT_MSK_VBL_OUT); / * Disable V-BLANK interrupt * / INT_SetFunc(INT_SCU_VBLK_IN, &vbStart); / * Register V-BLANK IN interrupt routine * / INT_SetFunc(INT_SCU_VBLK_OUT, &vbEnd); / * Register V-BLANK OUT interrupt routine * / INT_ChgMsk( INT_MSK_VBL_IN | INT_MSK_VBL_OUT, INT_MSK_NULL); / * Enable V-BLANK interrupt * /
for(;;){ SPR_2SetChar (...); / * Character data set to VRAM * / }
SPR_2FrameChgIntr (0xffff); / * Frame change interval * / / * Set to undefined mode * /
for(;;){
------------- / * Scroll data set * /
SPR_2OpenCommand(SPR_2DRAW_PRTY_OFF); / * Command write open * / SPR_2SysClip (0, & xy); / * System clip area command * / SPR_2LocalCoord (0, & xy); / * Local coordinate command * /