Return to previous page Return to menu Go to next page

2.4 Program description example

An example of actual program in
C language is shown below.

#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 * /


Return to previous page Return to menu Go to next page