⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biomtoy.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 3 页
字号:
   // ----------   MAKE_SCROLL_512x512_4_16(       ReadWord(&RAM[0x8006]),       ReadWord(&RAM[0x8004])+16   );   START_SCROLL_512x512_4_16(32,32,320,240);      ta = (ReadWord( &RAM_VIDEO[zz+0x1000] ) >> 2);            if( GFX_TILE16_SOLID[ta] ){		                  MAP_PALETTE_MAPPED_NEW(           RAM_VIDEO[zz+0x1000+2] & 0x3F ,   // bank           16,	   map         );         if(GFX_TILE16_SOLID[ta]==1){			// Some pixels; trans            switch( RAM_VIDEO[zz+0x1000] & 0x03){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }else{		    switch( RAM_VIDEO[zz+0x1000] & 0x03){	// all pixels; solid               case 0x00: Draw16x16_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }      }	   END_SCROLL_512x512_4_16();   //  SCREEN 0   // ----------   MAKE_SCROLL_512x512_4_16(       ReadWord(&RAM[0x8002])+4,	// offset       ReadWord(&RAM[0x8000])+16		   );   START_SCROLL_512x512_4_16(32,32,320,240);            ta = (ReadWord( &RAM_VIDEO[zz] ) >> 2);            if( GFX_TILE16_SOLID[ta] ){		                  MAP_PALETTE_MAPPED_NEW(           RAM_VIDEO[zz+2] & 0x3F ,           16,           map         );         if(GFX_TILE16_SOLID[ta]==1){			// Some pixels; trans            switch(RAM_VIDEO[zz] & 0x03){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }else{		    switch(RAM_VIDEO[zz] & 0x03){		// all pixels; solid               case 0x00: Draw16x16_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }      }   END_SCROLL_512x512_4_16();      //  SPRITES   // ---------   for(zz=6;zz<0x1000-6;zz+=8){      y = 240 - RAM_SPR[zz];      y += (y< 0) ? 0x110 : 0x10;      if( (y>16) && (y<240+32) ){         ta = (ReadWord(&RAM_SPR[zz+6]) >> 2);         if(GFX_CHAR16_SOLID[ta]){				// No pixels; skip            x = 32 + (ReadWord(&RAM_SPR[zz+4])&0x1FF) - 15;            if((x>16)&&(x<320+32)){               MAP_PALETTE_MAPPED_NEW(                  (RAM_SPR[zz+5] & 0x7E) >> 1,                  16,                  map               );               if(GFX_CHAR16_SOLID[ta]==1){			// Some pixels; trans                  switch(RAM_SPR[zz+1]&0xC0){                     case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_CHAR16[ta<<8], x, y, map);        break;                     case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_CHAR16[ta<<8], x, y, map); break;                  }               } else{						// all pixels; solid                  switch(RAM_SPR[zz+1]&0xC0){                     case 0x00: Draw16x16_Mapped_Rot(&GFX_CHAR16[ta<<8], x, y, map);        break;                     case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_CHAR16[ta<<8], x, y, map); break;                  }               }            }         }      }   } }void DrawManiacsq(void){   int zz,zzz,zzzz,x16,y16,x,y,ta;   UINT8 *map;   ClearPaletteMap();   // We do not clear the screen because otherwise text doesn't work properly      //  SCREEN 0   // ----------   MAKE_SCROLL_512x512_4_16(       ReadWord(&RAM[0x8002])+4,	// offset       ReadWord(&RAM[0x8000])+16		   );   START_SCROLL_512x512_4_16(32,32,320,240);            ta = (ReadWord( &RAM_VIDEO[zz] ) >> 2)&0x1FFF;            if( GFX_TILE16_SOLID[ta] ){		                  MAP_PALETTE_MAPPED_NEW(           RAM_VIDEO[zz+2] & 0x3F ,           16,           map         );         if(GFX_TILE16_SOLID[ta]==1){			// Some pixels; trans            switch(RAM_VIDEO[zz] & 0x03){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }else{		    switch(RAM_VIDEO[zz] & 0x03){		// all pixels; solid               case 0x00: Draw16x16_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }      }   END_SCROLL_512x512_4_16();      //  SCREEN 1   // ----------   MAKE_SCROLL_512x512_4_16(       ReadWord(&RAM[0x8006]),       ReadWord(&RAM[0x8004])+16   );   START_SCROLL_512x512_4_16(32,32,320,240);      ta = (ReadWord( &RAM_VIDEO[zz+0x1000] ) >> 2)&0x1FFF;            if( GFX_TILE16_SOLID[ta] ){		                  MAP_PALETTE_MAPPED_NEW(           RAM_VIDEO[zz+0x1000+2] & 0x3F ,   // bank           16,           map         );         if(GFX_TILE16_SOLID[ta]==1){			// Some pixels; trans            switch( RAM_VIDEO[zz+0x1000] & 0x03){               case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }else{		    switch( RAM_VIDEO[zz+0x1000] & 0x03){	// all pixels; solid               case 0x00: Draw16x16_Mapped_Rot(&GFX_TILE16[ta<<8], x, y, map); break;               case 0x01: Draw16x16_Mapped_FlipY_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x02: Draw16x16_Mapped_FlipX_Rot(&GFX_TILE16[ta<<8], x, y, map);  break;               case 0x03: Draw16x16_Mapped_FlipXY_Rot(&GFX_TILE16[ta<<8], x, y, map); break;            }         }      }	   END_SCROLL_512x512_4_16();   //  SPRITES   // ---------   for(zz=6;zz<0x1000-6;zz+=8){      y = 240 - RAM_SPR[zz];      y += (y< 0) ? 0x110 : 0x10;      if( (y>16) && (y<240+32) ){         ta = (ReadWord(&RAM_SPR[zz+6]) >> 2)&0x1FFF;         if(GFX_CHAR16_SOLID[ta]){				// No pixels; skip            x = 32 + (ReadWord(&RAM_SPR[zz+4])&0x1FF) - 15;            if((x>16)&&(x<320+32)){               MAP_PALETTE_MAPPED_NEW(                  (RAM_SPR[zz+5] & 0x7E) >> 1,                  16,                  map               );               if(GFX_CHAR16_SOLID[ta]==1){			// Some pixels; trans                  switch(RAM_SPR[zz+1]&0xC0){                     case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_CHAR16[ta<<8], x, y, map);        break;                     case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_CHAR16[ta<<8], x, y, map); break;                  }               } else{						// all pixels; solid                  switch(RAM_SPR[zz+1]&0xC0){                     case 0x00: Draw16x16_Mapped_Rot(&GFX_CHAR16[ta<<8], x, y, map);        break;                     case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_CHAR16[ta<<8], x, y, map);  break;                     case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_CHAR16[ta<<8], x, y, map); break;                  }               }            }         }      }   } }/***********************************************************************************************From MAME source:        Tile format	-----------	Screen 0 & 1: (32*32, 16x16 tiles)	Byte | Bit(s)		 | Description	-----+-FEDCBA98-76543210-+--------------------------	  0  | -------- -------x | flip x	  0  | -------- ------x- | flip y	  0  | -------- xxxxxx-- | code (low 6 bits)	  0  | xxxxxxxx -------- | code (high 8 bits)	  2  | -------- --xxxxxx | color	  2  | -------- xx------ | priority	  2  | xxxxxxxx -------- | not used        Sprite Format	-------------	Byte | Bit(s)		 | Description	-----+-FEDCBA98-76543210-+--------------------------	  0  | -------- xxxxxxxx | y position	  0  | -----xxx -------- | not used	  0  | ----x--- -------- | sprite size	  0  | --xx---- -------- | sprite priority	  0  | -x------ -------- | flipx	  0  | x------- -------- | flipy	  2  | xxxxxxxx xxxxxxxx | not used	  4  | -------x xxxxxxxx | x position	  4  | -xxxxxx- -------- | sprite color	  6  | -------- ------xx | sprite code (8x8 cuadrant)	  6  | xxxxxxxx xxxxxx-- | sprite codeNotes-  sprite size: if bit is on the sprite is 8x8, oteherwise it's 16x16   In biomtoy and maniacsq this bit is always off and it's not used in the driver-  priority   In biomtoy it's always 0. In maniacsq the priority changes but there's no need to draw the    same plane with different priorities because swapping layers works good************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -