HomeForumsWhat's newResources 
 
 
TV_640x480
mrkotfw - Jun 7, 2003
   mrkotfw Jun 7, 2003 
Hi guys, i was reading up on SL_DEF.H and i saw other modes, since my sprites are 80x120 they are too big for 320x224, so i tried TV_640x480 and the size of the sprites were perect but! i got these results:

http://ss_snk_359.artheos.net/new.rar...

if anyone can please try my demo on real hardware and be so kind to give me a pic of a few .. i would be so happy if it actually does work...

http://ss_snk_359.atheos.net/temp-real-hardware.bi...

Code:
  
#include "sgl.h" #include "sega_sys.h" #include "SCROLL/BG1.CEL" #include "SCROLL/BG1.MAP" #include "SCROLL/BG1.PAL" #include "SCROLL/VF.CEL" #include "SCROLL/VF.MAP" #include "SCROLL/VF.PAL" #include "RAW/BMANI.C" #include "RAW/LOGO.C" #include "RAW/ZOMBIE.C" #define WIDTH 72 #define HEIGHT 120 #define SIZEOF 8760 #define NUM_SP 13 FIXED ang[]={ DEGtoANG(0.0), // 1 DEGtoANG(0.0), // 2 DEGtoANG(0.0), // 3 DEGtoANG(0.0), // 4 DEGtoANG(0.0), // 5 DEGtoANG(0.0), // 6 DEGtoANG(0.0), // 7 DEGtoANG(0.0), // 8 DEGtoANG(0.0), // 9 DEGtoANG(0.0), // 10 DEGtoANG(0.0), // 11 DEGtoANG(0.0), // 12 DEGtoANG(0.0), // 13 }; FIXED pos[][XYZS]={ {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 1 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 2 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 3 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 4 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 5 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 6 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 7 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 8 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 9 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 10 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 11 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 12 {toFIXED(-64.0),toFIXED(-16.0),toFIXED(170.0),toFIXED(1.0)}, // 13 }; PICTURE sprite[]={ PICDEF(0,COL_32K,Bmani), PICDEF(1,COL_32K,Bmani_Left), PICDEF(2,COL_32K,Bmani_Left2), PICDEF(3,COL_32K,Bmani_Right), PICDEF(4,COL_32K,Bmani_Right2), PICDEF(5,COL_32K,Bmani_Beam), PICDEF(6,COL_32K,Bmani_Beam2), PICDEF(7,COL_32K,Main_NewGame), PICDEF(8,COL_32K,Main_GameOver), PICDEF(9,COL_32K,Enemy_Zombie), PICDEF(10,COL_32K,Enemy_Zombie2), PICDEF(11,COL_32K,Enemy_ZombieBeam), PICDEF(12,COL_32K,Enemy_ZombieBeam2), }; TEXTURE texture[]={ TEXDEF(WIDTH,HEIGHT,0), // Bmani[]; // 1 TEXDEF(WIDTH,HEIGHT,SIZEOF* 1), // Bmani_Left[]; // 2 TEXDEF(WIDTH,HEIGHT,SIZEOF* 2), // Bmani_Left2[]; // 3 TEXDEF(WIDTH,HEIGHT,SIZEOF* 3), // Bmani_Right[]; // 4 TEXDEF(WIDTH,HEIGHT,SIZEOF* 4), // Bmani_Right2[]; // 5 TEXDEF(WIDTH,HEIGHT,SIZEOF* 5), // Bmani_Beam[]; // 6 TEXDEF(WIDTH,HEIGHT,SIZEOF* 6), // Bmani_Beam2[]; // 7 TEXDEF(WIDTH,HEIGHT,SIZEOF* 7), // Main_NewGame[]; // 8 TEXDEF(WIDTH,HEIGHT,SIZEOF* 8), // Main_GameOver[]; // 9 TEXDEF(WIDTH,HEIGHT,SIZEOF* 9), // Enemy_Zombie[]; // 10 TEXDEF(WIDTH,HEIGHT,SIZEOF*10), // Enemy_Zombie2[]; // 11 TEXDEF(WIDTH,HEIGHT,SIZEOF*11), // Enemy_ZombieBeam[]; // 12 TEXDEF(WIDTH,HEIGHT,SIZEOF*12), // Enemy_ZombieBeam2[]; // 13 }; SPR_ATTR sprite_attr[]={ SPR_ATTRIBUTE(0,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(1,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(2,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(3,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(4,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(5,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(6,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(7,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(8,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(9,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(10,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(11,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), SPR_ATTRIBUTE(12,No_Palet,No_Gouraud,CL32KRGB|ECdis,sprNoflip), }; #define RBG0RB_CEL_ADR (VDP2_VRAM_A0) #define RBG0RB_MAP_ADR (VDP2_VRAM_B0) #define RBG0RB_COL_ADR (VDP2_COLRAM+0x00200) #define RBG0RA_CEL_ADR (RBG0RB_CEL_ADR+0x06e80) #define RBG0RA_MAP_ADR (RBG0RB_MAP_ADR+0x02000) #define RBG0RA_COL_ADR (RBG0RB_COL_ADR+0x00200) #define RBG0_KTB_ADR (VDP2_VRAM_A1) #define RBG0_PRA_ADR (VDP2_VRAM_A1+0x1fe00) #define RBG0_PRB_ADR (RBG0_PRA_ADR+0x00080) #define BACK_COL_ADR (VDP2_VRAM_A1+0x1fffe) #define LINE_TBL_ADR (VDP2_VRAM_A1) #define MAP_HSIZE 1 #define MAP_VSIZE 1 #define MAP_UNIT 2048L #define S2D_PNBSIZE PNB_1WORD #define S2D_COLTYPE COL_TYPE_256 #define S2D_CHRSIZE CHAR_SIZE_2x2 #define S2D_CELSIZE 4352L #define S2D_CEL cel_vf #define S2D_MAP map_vf #define S2D_PAL pal_vf #define S2D_PALSIZE 1024L extern TEXTURE texture[]; extern PICTURE sprite[]; extern SPR_ATTR sprite_attr[]; extern FIXED pos[][]; extern FIXED ang[]; extern Uint16 cel_vf[]; extern Uint16 map_vf[]; extern Uint16 pal_vf[]; void Cel2VRAM(Uint8 *Cel_Data,void *Cell_Adr,Uint32 suu); void Map2VRAM(Uint16 *Map_Data,void *Map_Adr,Uint16 suuj,Uint16 suui,Uint16 palnum,Uint32 mapoff); void Pal2CRAM(Uint16 *Pal_Data,void *Col_Adr,Uint32 suu); void LoadSprite(PICTURE *pcptr,Uint32 NbPicture); void DisplaySprite(Int sprite); void Player1(void); Uint16 pad_asign[]={ PER_DGT_KU, PER_DGT_KD, PER_DGT_KR, PER_DGT_KL, PER_DGT_TA, PER_DGT_TB, PER_DGT_TC, PER_DGT_ST, PER_DGT_TX, PER_DGT_TY, PER_DGT_TZ, PER_DGT_TR, PER_DGT_TL, }; Uint16 i; Uint16 data; Uint16 tv_mode=TV_640x480; Uint32 *tb,l; Int move_left=320; Int move_right=320; Int shoot_beam=120; FIXED position=toFIXED(0.0); FIXED main_scr_x=toFIXED(0.0); FIXED main_scr_y=toFIXED(0.0); ANGLE angle=DEGtoANG(0.0); ANGLE angle_up=DEGtoANG(0.0); Int ss_main(void){ slInitSystem((Uint16)tv_mode,texture,1); slColRAMMode(CRM16_2048); slBack1ColSet((void *)BACK_COL_ADR,C_RGB(0,0,0)); slTVOff(); LoadSprite(sprite,NUM_SP); slRparaInitSet((void *)RBG0_PRA_ADR); slMakeKtable((void *)RBG0_KTB_ADR); slCharRbg0(COL_TYPE_256,CHAR_SIZE_1x1); slPageRbg0((void *)RBG0RB_CEL_ADR,0,PNB_1WORD|CN_12BIT); slPlaneRA(PL_SIZE_1x1); sl1MapRA((void *)RBG0RA_MAP_ADR); slOverRA(0); slKtableRA((void *)RBG0_KTB_ADR,K_FIX|K_DOT|K_2WORD|K_ON); Cel2VRAM(tuti_cel,(void *)RBG0RA_CEL_ADR,65536); Map2VRAM(tuti_map,(void *)RBG0RA_MAP_ADR,64,64,2,884); Pal2CRAM(tuti_pal,(void *)RBG0RA_COL_ADR,160); slCharNbg1(S2D_COLTYPE,S2D_CHRSIZE); slPageNbg1((void *)RBG0RB_CEL_ADR,0,S2D_PNBSIZE); slPlaneNbg1(PL_SIZE_1x1); slMapNbg1((void *)RBG0RB_MAP_ADR,(void *)RBG0RB_MAP_ADR,(void *)RBG0RB_MAP_ADR,(void *)RBG0RB_MAP_ADR); slDMACopy((void*)S2D_CEL,(void*)RBG0RB_CEL_ADR,(Uint32)S2D_CELSIZE); slDMACopy((void*)S2D_MAP,(void*)RBG0RB_MAP_ADR,(Uint32)(MAP_HSIZE*MAP_VSIZE*MAP_UNIT)); slDMACopy((void*)S2D_PAL,(void*)VDP2_COLRAM,(Uint32)S2D_PALSIZE); slLineScrollModeNbg1(lineSZ1|lineHScroll); tb=(Uint32*)LINE_TBL_ADR; for(i=0; i<512; i++) *tb++=16*slSin(((i&0x00ff)<<8)*0x00ff); slLineScrollTable1((void*)VDP2_VRAM_A1); i=0; slScrPosNbg1(main_scr_x,main_scr_y); slScrAutoDisp(NBG1ON|RBG0ON); slTVOn(); while(1){ Player1(); slCurRpara(RA); slUnitMatrix(CURRENT); slTranslate(toFIXED(0.0),toFIXED(0.0)+position,toFIXED(100.0)); slRotX(DEGtoANG(-90.0)); slScrMatSet(); slScrPosNbg1(main_scr_x,main_scr_y); slLineScrollTable1((void*)(VDP2_VRAM_A1+(i<<2))); i=(i+5)&0x00ff; slSynch(); } } void Cel2VRAM(Uint8 *Cel_Data,void *Cell_Adr,Uint32 suu){ Uint32 i; Uint8 *VRAM; VRAM=(Uint8 *)Cell_Adr; for(i=0; i<suu; i++){ *(VRAM++)=*(Cel_Data++); } } void Map2VRAM(Uint16 *Map_Data,void *Map_Adr,Uint16 suuj,Uint16 suui,Uint16 palnum,Uint32 mapoff){ Uint16 i,j; Uint16 paloff; Uint16 *VRAM; paloff=palnum<<12; VRAM=(Uint16 *)Map_Adr; for(i=0; i<suui; i++){ for(j=0; j<suuj; j++){ *VRAM++=(*Map_Data|paloff)+mapoff; Map_Data++; } VRAM+=(64-suuj); } } void Pal2CRAM(Uint16 *Pal_Data,void *Col_Adr,Uint32 suu){ Uint16 i; Uint16 *VRAM; VRAM=(Uint16 *)Col_Adr; for(i=0; i<suu; i++){ *(VRAM++)=*(Pal_Data++); } } void LoadSprite(PICTURE *pcptr,Uint32 NbPicture){ TEXTURE *txptr; for(; NbPicture-->0; pcptr++){ txptr=texture+pcptr->texno; slDMACopy((void *)pcptr->pcsrc,(void *)(SpriteVRAM+((txptr->CGadr)<<3)),(Uint32)((txptr->Hsize*txptr->Vsize*4)>>(pcptr->cmode))); } } void DisplaySprite(int sprite){ slDispSprite((FIXED*)pos[sprite],(SPR_ATTR*)&sprite_attr[sprite].texno,DEGtoANG(ang[sprite])); } void Player1(void){ data=Smpc_Peripheral[0].data; move_left=320; move_right=320; shoot_beam=120; DisplaySprite(0); if(!(data&(PER_DGT_KL))){ slSynch(); move_left-=10; pos[0][0]=pos[1][0]= pos[2][0]=pos[3][0]= pos[4][0]=pos[5][0]=pos[6][0]+=toFIXED(10.0); if(move_left==320){ DisplaySprite(0); } else { if(move_left>=(320-10*2)){ DisplaySprite(0); } if(move_left>=(320-10*2)){ slSynch(); DisplaySprite(1); } if(move_left>=0){ move_left=320; } } } if(!(data&(PER_DGT_KR))){ slSynch(); move_right-=10; pos[0][0]=pos[1][0]= pos[2][0]=pos[3][0]= pos[4][0]=pos[5][0]=pos[6][0]+=toFIXED(10.0); if(move_right==320){ DisplaySprite(0); } else { if(move_right>=(320-10*2)){ DisplaySprite(0); } if(move_right>=(320-10*2)){ slSynch(); DisplaySprite(1); } if(move_right>=0){ move_left=320; } } } if(!(data&(PER_DGT_TA))){ slSynch(); shoot_beam-=10; pos[0][0]=pos[1][0]= pos[2][0]=pos[3][0]= pos[4][0]=pos[5][1]=pos[6][1]-=toFIXED(10.0); if(shoot_beam>=(120-10*2)){ DisplaySprite(5); } if(shoot_beam>=(120-10*2)){ slSynch(); DisplaySprite(6); } if(shoot_beam>=0){ shoot_beam=120; } } }

   mrkotfw Jun 7, 2003 
ok another question:

what is the #define of NBG0 ?