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

📄 terraf.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
   AddReadWord(0x000000, 0x04FFFF, NULL, ROM+0x000000);			// 68000 ROM   AddReadWord(0x060000, 0x07FFFF, NULL, RAM+0x000000);			// ALL RAM   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x060000, 0x07FFFF, NULL, RAM+0x000000);		// ALL RAM   AddWriteByte(0x0C0000, 0x0C000F, NULL, RAM+0x020000);		// ???   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);			// Trap Idle 68000   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x060000, 0x07FFFF, NULL, RAM+0x000000);		// ALL RAM   AddWriteWord(0xBB0000, 0xBB0001, NichiSoundCommWrite68k, NULL);	// SOUND COMM   AddWriteWord(-1, -1, NULL, NULL);   AddInitMemory();	// Set Starscream mem pointers...}void ClearTerraF(void){   RemoveNichibutsuYM3526();}void ExecuteTerraFFrame(void){   cpu_execute_cycles(CPU_68K_0, CPU_FRAME_MHz(12,60));	// M68000 12MHz (60fps)   cpu_interrupt(CPU_68K_0, 1);   Nichibutsu3526_Frame();		// Z80 and YM3526}void DrawTerraF(void){   UINT8 *map;   int x,y,ta,zz,zzz,zzzz,x16,y16;   ClearPaletteMap();   // BG0   // ---   if(((zzz=ReadWord(RAM_SCR))&0x0200)==0){      clear_game_screen(0);			// Game has no solid BG0   }   else{   zzz=15+(ReadWord(&RAM[0x1C004]));   zzzz=((zzz&0x1F0)>>4)<<1;			// X Offset (16-511)   x16=15-(zzz&15);				// X Offset (0-15)   zzz=95+(ReadWord(&RAM[0x1C002]));   zzzz+=((zzz&0x3F0)>>4)<<6;			// Y Offset (16-511)   y16=15-(zzz&15);				// Y Offset (0-15)   zzzz&=0xFFF;   for(x=(16+y16);x<(320+32);x+=16){   zz=zzzz;   for(y=(16+x16);y<(224+32);y+=16){      MAP_PALETTE_MAPPED(         Map_12bit_xxxxRRRRGGGGBBBB_Rev,         (RAM[0x14001+zz]>>3)|0x60,         16,         map      );      Draw16x16_Mapped(&GFX_BG0[(ReadWord(&RAM[0x14000+zz])&0x3FF)<<8],x,y,map);   zz+=2;   if((zz&0x3F)==0){zz-=0x40;}   }   zzzz+=0x40;   zzzz&=0xFFF;   }   }   // OBJECT LOW   // ----------   if(((zzz=ReadWord(RAM_SCR))&0x0800)!=0){   for(zz=0;zz<0x600;zz+=8){      if((ReadWord(&RAM[zz+0])&0x1000)==0){      ta=ReadWord(&RAM[zz+2])&0x3FF;      if(MSK_SPR[ta]!=0){				// No pixels; skip      y=((320+32+32) - ReadWord(&RAM[zz+0]))&0x1FF;      x=(ReadWord(&RAM[zz+6]) - (32+32))&0x1FF;      if((x>16)&&(y>16)&&(x<320+32)&&(y<224+32)){         MAP_PALETTE_MAPPED(            Map_12bit_xxxxRRRRGGGGBBBB_Rev,            (RAM[zz+5]&0x1F)|0x20,            16,            map         );         if(MSK_SPR[ta]==1){				// Some pixels; trans            switch(RAM[zz+3]&0x30){            case 0x00: Draw16x16_Trans_Mapped(&GFX_SPR[ta<<8],x,y,map);        break;            case 0x10: Draw16x16_Trans_Mapped_FlipX(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x20: Draw16x16_Trans_Mapped_FlipY(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x30: Draw16x16_Trans_Mapped_FlipXY(&GFX_SPR[ta<<8],x,y,map); break;            }         }         else{						// all pixels; solid            switch(RAM[zz+3]&0x30){            case 0x00: Draw16x16_Mapped(&GFX_SPR[ta<<8],x,y,map);        break;            case 0x10: Draw16x16_Mapped_FlipX(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x20: Draw16x16_Mapped_FlipY(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x30: Draw16x16_Mapped_FlipXY(&GFX_SPR[ta<<8],x,y,map); break;            }         }      }      }      }   }   }   // BG1   // ---   if(((zzz=ReadWord(RAM_SCR))&0x0400)!=0){   zzz=15+((RAM[0x1C007])|(((RAM[0x1D001]>>0)&3)<<8));   zzzz=((zzz&0x1F0)>>4)<<1;			// X Offset (16-511)   x16=15-(zzz&15);				// X Offset (0-15)   zzz=95+((RAM[0x1C009])|(((RAM[0x1D001]>>4)&3)<<8));   zzzz+=((zzz&0x3F0)>>4)<<6;			// Y Offset (16-511)   y16=15-(zzz&15);				// Y Offset (0-15)   zzzz&=0xFFF;   for(x=(16+y16);x<(320+32);x+=16){   zz=zzzz;   for(y=(16+x16);y<(224+32);y+=16){      ta=ReadWord(&RAM[0x10000+zz])&0x3FF;      if(MSK_BG1[ta]!=0){				// No pixels; skip      MAP_PALETTE_MAPPED(         Map_12bit_xxxxRRRRGGGGBBBB_Rev,         (RAM[0x10001+zz]>>3)|0x40,         16,         map      );      if(MSK_BG1[ta]==1){				// Some pixels; trans         Draw16x16_Trans_Mapped(&GFX_BG1[ta<<8],x,y,map);      }      else{						// all pixels; solid         Draw16x16_Mapped(&GFX_BG1[ta<<8],x,y,map);      }      }   zz+=2;   if((zz&0x3F)==0){zz-=0x40;}   }   zzzz+=0x40;   zzzz&=0xFFF;   }   }   // OBJECT HIGH   // -----------   if(((zzz=ReadWord(RAM_SCR))&0x0800)!=0){   for(zz=0;zz<0x600;zz+=8){      if((ReadWord(&RAM[zz+0])&0x1000)!=0){      ta=ReadWord(&RAM[zz+2])&0x3FF;      if(MSK_SPR[ta]!=0){				// No pixels; skip      y=((320+32+32) - ReadWord(&RAM[zz+0]))&0x1FF;      x=(ReadWord(&RAM[zz+6]) - (32+32))&0x1FF;      if((x>16)&&(y>16)&&(x<320+32)&&(y<224+32)){         MAP_PALETTE_MAPPED(            Map_12bit_xxxxRRRRGGGGBBBB_Rev,            (RAM[zz+5]&0x1F)|0x20,            16,            map         );         if(MSK_SPR[ta]==1){				// Some pixels; trans            switch(RAM[zz+3]&0x30){            case 0x00: Draw16x16_Trans_Mapped(&GFX_SPR[ta<<8],x,y,map);        break;            case 0x10: Draw16x16_Trans_Mapped_FlipX(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x20: Draw16x16_Trans_Mapped_FlipY(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x30: Draw16x16_Trans_Mapped_FlipXY(&GFX_SPR[ta<<8],x,y,map); break;            }         }         else{						// all pixels; solid            switch(RAM[zz+3]&0x30){            case 0x00: Draw16x16_Mapped(&GFX_SPR[ta<<8],x,y,map);        break;            case 0x10: Draw16x16_Mapped_FlipX(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x20: Draw16x16_Mapped_FlipY(&GFX_SPR[ta<<8],x,y,map);  break;            case 0x30: Draw16x16_Mapped_FlipXY(&GFX_SPR[ta<<8],x,y,map); break;            }         }      }      }      }   }   }   // FG0   // ---    if(((zzz=ReadWord(RAM_SCR))&0x0100)!=0){   zz=64*2;   for(y=224+24;y>=32;y-=8){   for(x=32+32;x<256+32+32;x+=8){   ta=(((RAM[0x8800+zz]&3)<<14)|((RAM[0x8000+zz])<<6));   if(ta!=0){      MAP_PALETTE_MAPPED(         Map_12bit_xxxxRRRRGGGGBBBB_Rev,         (RAM[0x8800+zz]>>4),         16,         map      );      Draw8x8_Trans_Mapped(&GFX_FG0[ta],x,y,map);   }   zz+=2;   }   }   zz=64*2;   for(y=224+24;y>=32;y-=8){   for(x=0+32;x<32+32;x+=8){   ta=(((RAM[0x9800+zz+0x38]&3)<<14)|((RAM[0x9000+zz+0x38])<<6));   if(ta!=0){      MAP_PALETTE_MAPPED(         Map_12bit_xxxxRRRRGGGGBBBB_Rev,         (RAM[0x9800+zz+0x38]>>4),         16,         map      );      Draw8x8_Trans_Mapped(&GFX_FG0[ta],x,y,map);   }   ta=(((RAM[0x9800+zz]&3)<<14)|((RAM[0x9000+zz])<<6));   if(ta!=0){      MAP_PALETTE_MAPPED(         Map_12bit_xxxxRRRRGGGGBBBB_Rev,         (RAM[0x9800+zz]>>4),         16,         map      );      Draw8x8_Trans_Mapped(&GFX_FG0[ta],x+256+32,y,map);   }   zz+=2;   }   zz+=56;   }   }}/*-----+--------+--------------------Byte | Bit(s) | Info-----+76543210+--------------------  0  |....xxxx| Sprite Y (high)  1  |xxxxxxxx| Sprite Y (low)  2  |...x....| Sprite Flip X Axis  2  |..x.....| Sprite Flip Y Axis  2  |......xx| Sprite Number (high)  3  |xxxxxxxx| Sprite Number (low)  4  |...xxxxx| Colour Bank  6  |xxxxxxxx| Sprite X (high)  7  |xxxxxxxx| Sprite X (low)  -----+--------+--------------------*/

⌨️ 快捷键说明

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