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

📄 setax1.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
#if 0   // BACK   if( ((RAM_B[0x0301])&0x40) == 0){   RAM_BGA = RAM_A + 0x00400;   RAM_BGB = RAM_A + 0x00600;   }   else{   RAM_BGA = RAM_A + 0x00C00;   RAM_BGB = RAM_A + 0x00E00;   }   st = (RAM_B[0x0301])&0x0F;   if(st!=0){   if(st==1) st=16;   tb = ( (((RAM_B[0x0302])&0xFF)<<8) | ((RAM_B[0x0303])&0xFF)<<16);   for(zzz=0;zzz<st;zzz++){   z = (zzz<<4)^0x80;   x16 = ((16+ ((RAM_B[0x0204+z]) | (tb&0x100))) + scr_x) & MASK_X;   y16 = ((((249+16) - (RAM_B[0x0200+z]))) + scr_y) & MASK_Y;   tb >>= 1;   z <<= 1;      y = y16;      for(ry=0;ry<0x10;ry++){      x = x16;      for(rx=0;rx<0x02;rx++){      if((x>16)&&(y>0)&&(x<bmp_w+32)&&(y<bmp_h+16)){   		ta = ((RAM_BGA[z+0x1000]<<8)|(RAM_BGA[z])) & 0x1FFF;         if(GFX_SPR_SOLID[ta]){				// No pixels; skip         MAP_PALETTE_MAPPED_NEW(            RAM_BGB[z+0x1000]>>3,            16,            map         );         if(GFX_SPR_SOLID[ta]==1){			// Some pixels; trans            switch(RAM_BGA[z+0x1000]&0xC0){            case 0x0000: Draw16x16_Trans_Mapped_Rot(&GFX[ta<<8], x, y+16, map);        break;            case 0x4000: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX[ta<<8], x, y+16, map);  break;            case 0x8000: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX[ta<<8], x, y+16, map);  break;            case 0xC000: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX[ta<<8], x, y+16, map); break;            }         }         else{						// all pixels; solid            switch(RAM_BGA[z+0x1000]&0xC0){            case 0x0000: Draw16x16_Mapped_Rot(&GFX[ta<<8], x, y+16, map);        break;            case 0x4000: Draw16x16_Mapped_FlipX_Rot(&GFX[ta<<8], x, y+16, map);  break;            case 0x8000: Draw16x16_Mapped_FlipY_Rot(&GFX[ta<<8], x, y+16, map);  break;            case 0xC000: Draw16x16_Mapped_FlipXY_Rot(&GFX[ta<<8], x, y+16, map); break;            }         }         }      }      x = (x+16)&MASK_X;      z += 1;      }      y = (y+16)&0x0FF;      }   }   }#else   // BACK   if( ((RAM_B[0x0301])&0x40) == 0){   RAM_BGA = RAM_A + 0x00400;   RAM_BGB = RAM_A + 0x00600;   }   else{   RAM_BGA = RAM_A + 0x00C00;   RAM_BGB = RAM_A + 0x00E00;   }   st = RAM_B[0x0301]&0x0F;   if(st!=0){   if(st==1) st=16;   tb = ReadWord(&RAM_B[0x0302])<<8;   for(zzz=0;zzz<st;zzz++){   z=(zzz<<5)^0x100;   x16 = (RAM_B[0x0204+((z>>1)^0x80)] | (tb&0x100)) + 32;   y16 = ((256+16) - RAM_B[0x0200+((z>>1)^0x80)]) + 1;   tb >>= 1;   for(zz=z;zz<(z+0x20);zz++){   ta = ((RAM_BGA[zz+0x1000]<<8)|(RAM_BGA[zz])) & 0x1FFF;   if(GFX_SPR_SOLID[ta]!=0){			// No pixels; skip   x=(x16+((zz&0x01)<<4))&MASK_X;   y=(y16+((zz&0x1E)<<3))&MASK_Y;   if((x>16)&&(y>16)&&(x<256+32)&&(y<224+32)){      MAP_PALETTE_MAPPED_NEW(         RAM_BGB[zz+0x1000]>>3,         16,         map      );      if(GFX_SPR_SOLID[ta]==1){			// Some pixels; trans         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX[ta<<8],x,y,map);        break;         case 0x40: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX[ta<<8],x,y,map);  break;         case 0x80: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX[ta<<8],x,y,map);  break;         case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX[ta<<8],x,y,map); break;         }      }      else{					// all pixels; solid         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0x00: Draw16x16_Mapped_Rot(&GFX[ta<<8],x,y,map);        break;         case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX[ta<<8],x,y,map);  break;         case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX[ta<<8],x,y,map);  break;         case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX[ta<<8],x,y,map); break;         }      }   }   }   }   }   }#endif   // OBJECT   if( ((RAM_B[0x0301])&0x40) == 0){   RAM_BGA = RAM_A + 0x00000;   RAM_BGB = RAM_A + 0x00200;   }   else{   RAM_BGA = RAM_A + 0x00800;   RAM_BGB = RAM_A + 0x00A00;   }   for(zz=0x1FF;zz>=0;zz--){      x = (32+((RAM_BGB[zz+0x1000]<<8)|(RAM_BGB[zz]))) & MASK_X;      if((x>16)&&(x<256+32)){      y = ((224+32+2)-(RAM_B[zz])) & MASK_Y;      if((y>16)&&(y<224+32)){      ta = ((RAM_BGA[zz+0x1000]<<8)|(RAM_BGA[zz])) & 0x1FFF;      if(GFX_SPR_SOLID[ta]!=0){			// No pixels; skip      MAP_PALETTE_MAPPED_NEW(         RAM_BGB[zz+0x1000]>>3,         16,         map      );      if(GFX_SPR_SOLID[ta]==1){			// Some pixels; trans         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX[ta<<8],x,y,map);        break;         case 0x40: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX[ta<<8],x,y,map);  break;         case 0x80: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX[ta<<8],x,y,map);  break;         case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX[ta<<8],x,y,map); break;         }      }      else{					// all pixels; solid         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0x00: Draw16x16_Mapped_Rot(&GFX[ta<<8],x,y,map);        break;         case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX[ta<<8],x,y,map);  break;         case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX[ta<<8],x,y,map);  break;         case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX[ta<<8],x,y,map); break;         }      }      }      }      }   }   }   else{   // BACK   if( ((RAM_B[0x0301])&0x40) == 0){   RAM_BGA = RAM_A + 0x00400;   RAM_BGB = RAM_A + 0x00600;   }   else{   RAM_BGA = RAM_A + 0x00C00;   RAM_BGB = RAM_A + 0x00E00;   }   st = RAM_B[0x0301]&0x0F;   if(st!=0){   if(st==1) st=16;   tb = ReadWord(&RAM_B[0x0302])<<8;   for(zzz=0;zzz<st;zzz++){   z=(zzz<<5)^0x100;   x16 = (RAM_B[0x0204+((z>>1)^0x80)] | (tb&0x100)) + 32;   y16 = ((256+16) - RAM_B[0x0200+((z>>1)^0x80)]) + 1 - 2;   tb >>= 1;   for(zz=z;zz<(z+0x20);zz++){   ta = ((RAM_BGA[zz+0x1000]<<8)|(RAM_BGA[zz])) & 0x1FFF;   if(GFX_SPR_SOLID[ta]!=0){			// No pixels; skip   x=(x16+((zz&0x01)<<4))&MASK_X;   y=(y16+((zz&0x1E)<<3))&MASK_Y;   if((x>16)&&(y>16)&&(x<256+32)&&(y<224+32)){      MAP_PALETTE_MAPPED_NEW(         RAM_BGB[zz+0x1000]>>3,         16,         map      );      if(GFX_SPR_SOLID[ta]==1){			// Some pixels; trans         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0xC0: Draw16x16_Trans_Mapped_Rot(&GFX[ta<<8],x,224+48-y,map);        break;         case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x00: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX[ta<<8],x,224+48-y,map); break;         }      }      else{					// all pixels; solid         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0xC0: Draw16x16_Mapped_Rot(&GFX[ta<<8],x,224+48-y,map);        break;         case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x00: Draw16x16_Mapped_FlipXY_Rot(&GFX[ta<<8],x,224+48-y,map); break;         }      }   }   }   }   }   }   // OBJECT   if( ((RAM_B[0x0301])&0x40) == 0){   RAM_BGA = RAM_A + 0x00000;   RAM_BGB = RAM_A + 0x00200;   }   else{   RAM_BGA = RAM_A + 0x00800;   RAM_BGB = RAM_A + 0x00A00;   }   for(zz=0x1FF;zz>=0;zz--){      x = (32+((RAM_BGB[zz+0x1000]<<8)|(RAM_BGB[zz]))) & MASK_X;      if((x>16)&&(x<256+32)){      y = ((224+32+2-4)-(RAM_B[zz])) & MASK_Y;      if((y>16)&&(y<224+32)){      ta = ((RAM_BGA[zz+0x1000]<<8)|(RAM_BGA[zz])) & 0x1FFF;      if(GFX_SPR_SOLID[ta]!=0){			// No pixels; skip      MAP_PALETTE_MAPPED_NEW(         RAM_BGB[zz+0x1000]>>3,         16,         map      );      if(GFX_SPR_SOLID[ta]==1){			// Some pixels; trans         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0xC0: Draw16x16_Trans_Mapped_Rot(&GFX[ta<<8],x,224+48-y,map);        break;         case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x00: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX[ta<<8],x,224+48-y,map); break;         }      }      else{					// all pixels; solid         switch(RAM_BGA[zz+0x1000]&0xC0){         case 0xC0: Draw16x16_Mapped_Rot(&GFX[ta<<8],x,224+48-y,map);        break;         case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX[ta<<8],x,224+48-y,map);  break;         case 0x00: Draw16x16_Mapped_FlipXY_Rot(&GFX[ta<<8],x,224+48-y,map); break;         }      }      }      }      }   }   }}

⌨️ 快捷键说明

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