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

📄 topspeed.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 3 页
字号:
      GFX_OBJ_A[tb+7] =((tc&0x01)>>( 0));      tc=TMP[ta+0x40000];      GFX_OBJ_A[tb+8] =((tc&0x80)>>( 7));      GFX_OBJ_A[tb+9] =((tc&0x40)>>( 6));      GFX_OBJ_A[tb+10]=((tc&0x20)>>( 5));      GFX_OBJ_A[tb+11]=((tc&0x10)>>( 4));      GFX_OBJ_A[tb+12]=((tc&0x08)>>( 3));      GFX_OBJ_A[tb+13]=((tc&0x04)>>( 2));      GFX_OBJ_A[tb+14]=((tc&0x02)>>( 1));      GFX_OBJ_A[tb+15]=((tc&0x01)>>( 0));      tb+=16;   }   }   if(romset==0){   if(!load_rom("b14-03", TMP, OBJ_A_COUNT*0x10)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<OBJ_A_COUNT*0x10;ta+=2){      tc=ReadWord(&TMP[ta]);      GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(14));      GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(13));      GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(12));      GFX_OBJ_A[tb+3] |=((tc&0x1000)>>(11));      GFX_OBJ_A[tb+4] |=((tc&0x0800)>>(10));      GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 9));      GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 8));      GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 7));      GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 6));      GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 5));      GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 4));      GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 3));      GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 2));      GFX_OBJ_A[tb+13]|=((tc&0x0004)>>( 1));      GFX_OBJ_A[tb+14]|=((tc&0x0002)>>( 0));      GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 1));      tb+=16;   }   }   else{   if(!load_rom("b14-46", TMP+0x00000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-47", TMP+0x20000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-44", TMP+0x40000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-45", TMP+0x60000, 0x20000)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=TMP[ta];      GFX_OBJ_A[tb+0] |=((tc&0x80)>>( 6));      GFX_OBJ_A[tb+1] |=((tc&0x40)>>( 5));      GFX_OBJ_A[tb+2] |=((tc&0x20)>>( 4));      GFX_OBJ_A[tb+3] |=((tc&0x10)>>( 3));      GFX_OBJ_A[tb+4] |=((tc&0x08)>>( 2));      GFX_OBJ_A[tb+5] |=((tc&0x04)>>( 1));      GFX_OBJ_A[tb+6] |=((tc&0x02)>>( 0));      GFX_OBJ_A[tb+7] |=((tc&0x01)<<( 1));      tc=TMP[ta+0x40000];      GFX_OBJ_A[tb+8] |=((tc&0x80)>>( 6));      GFX_OBJ_A[tb+9] |=((tc&0x40)>>( 5));      GFX_OBJ_A[tb+10]|=((tc&0x20)>>( 4));      GFX_OBJ_A[tb+11]|=((tc&0x10)>>( 3));      GFX_OBJ_A[tb+12]|=((tc&0x08)>>( 2));      GFX_OBJ_A[tb+13]|=((tc&0x04)>>( 1));      GFX_OBJ_A[tb+14]|=((tc&0x02)>>( 0));      GFX_OBJ_A[tb+15]|=((tc&0x01)<<( 1));      tb+=16;   }   }   if(romset==0){   if(!load_rom("b14-02", TMP, OBJ_A_COUNT*0x10)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<OBJ_A_COUNT*0x10;ta+=2){      tc=ReadWord(&TMP[ta]);      GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(13));      GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(12));      GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(11));      GFX_OBJ_A[tb+3] |=((tc&0x1000)>>(10));      GFX_OBJ_A[tb+4] |=((tc&0x0800)>>( 9));      GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 8));      GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 7));      GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 6));      GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 5));      GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 4));      GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 3));      GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 2));      GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 1));      GFX_OBJ_A[tb+13]|=((tc&0x0004)>>( 0));      GFX_OBJ_A[tb+14]|=((tc&0x0002)<<( 1));      GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 2));      tb+=16;   }   }   else{   if(!load_rom("b14-42", TMP+0x00000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-43", TMP+0x20000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-40", TMP+0x40000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-41", TMP+0x60000, 0x20000)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=TMP[ta];      GFX_OBJ_A[tb+0] |=((tc&0x80)>>( 5));      GFX_OBJ_A[tb+1] |=((tc&0x40)>>( 4));      GFX_OBJ_A[tb+2] |=((tc&0x20)>>( 3));      GFX_OBJ_A[tb+3] |=((tc&0x10)>>( 2));      GFX_OBJ_A[tb+4] |=((tc&0x08)>>( 1));      GFX_OBJ_A[tb+5] |=((tc&0x04)>>( 0));      GFX_OBJ_A[tb+6] |=((tc&0x02)<<( 1));      GFX_OBJ_A[tb+7] |=((tc&0x01)<<( 2));      tc=TMP[ta+0x40000];      GFX_OBJ_A[tb+8] |=((tc&0x80)>>( 5));      GFX_OBJ_A[tb+9] |=((tc&0x40)>>( 4));      GFX_OBJ_A[tb+10]|=((tc&0x20)>>( 3));      GFX_OBJ_A[tb+11]|=((tc&0x10)>>( 2));      GFX_OBJ_A[tb+12]|=((tc&0x08)>>( 1));      GFX_OBJ_A[tb+13]|=((tc&0x04)>>( 0));      GFX_OBJ_A[tb+14]|=((tc&0x02)<<( 1));      GFX_OBJ_A[tb+15]|=((tc&0x01)<<( 2));      tb+=16;   }   }   if(romset==0){   if(!load_rom("b14-01", TMP, OBJ_A_COUNT*0x10)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<OBJ_A_COUNT*0x10;ta+=2){      tc=ReadWord(&TMP[ta]);      GFX_OBJ_A[tb+0] |=((tc&0x8000)>>(12));      GFX_OBJ_A[tb+1] |=((tc&0x4000)>>(11));      GFX_OBJ_A[tb+2] |=((tc&0x2000)>>(10));      GFX_OBJ_A[tb+3] |=((tc&0x1000)>>( 9));      GFX_OBJ_A[tb+4] |=((tc&0x0800)>>( 8));      GFX_OBJ_A[tb+5] |=((tc&0x0400)>>( 7));      GFX_OBJ_A[tb+6] |=((tc&0x0200)>>( 6));      GFX_OBJ_A[tb+7] |=((tc&0x0100)>>( 5));      GFX_OBJ_A[tb+8] |=((tc&0x0080)>>( 4));      GFX_OBJ_A[tb+9] |=((tc&0x0040)>>( 3));      GFX_OBJ_A[tb+10]|=((tc&0x0020)>>( 2));      GFX_OBJ_A[tb+11]|=((tc&0x0010)>>( 1));      GFX_OBJ_A[tb+12]|=((tc&0x0008)>>( 0));      GFX_OBJ_A[tb+13]|=((tc&0x0004)<<( 1));      GFX_OBJ_A[tb+14]|=((tc&0x0002)<<( 2));      GFX_OBJ_A[tb+15]|=((tc&0x0001)<<( 3));      tb+=16;   }   }   else{   if(!load_rom("b14-38", TMP+0x00000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-39", TMP+0x20000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-36", TMP+0x40000, 0x20000)) return;	// 16x16 OBJ A   if(!load_rom("b14-37", TMP+0x60000, 0x20000)) return;	// 16x16 OBJ A   tb=0;   for(ta=0;ta<0x40000;ta++){      tc=TMP[ta];      GFX_OBJ_A[tb+0] |=((tc&0x80)>>( 4));      GFX_OBJ_A[tb+1] |=((tc&0x40)>>( 3));      GFX_OBJ_A[tb+2] |=((tc&0x20)>>( 2));      GFX_OBJ_A[tb+3] |=((tc&0x10)>>( 1));      GFX_OBJ_A[tb+4] |=((tc&0x08)>>( 0));      GFX_OBJ_A[tb+5] |=((tc&0x04)<<( 1));      GFX_OBJ_A[tb+6] |=((tc&0x02)<<( 2));      GFX_OBJ_A[tb+7] |=((tc&0x01)<<( 3));      tc=TMP[ta+0x40000];      GFX_OBJ_A[tb+8] |=((tc&0x80)>>( 4));      GFX_OBJ_A[tb+9] |=((tc&0x40)>>( 3));      GFX_OBJ_A[tb+10]|=((tc&0x20)>>( 2));      GFX_OBJ_A[tb+11]|=((tc&0x10)>>( 1));      GFX_OBJ_A[tb+12]|=((tc&0x08)>>( 0));      GFX_OBJ_A[tb+13]|=((tc&0x04)<<( 1));      GFX_OBJ_A[tb+14]|=((tc&0x02)<<( 2));      GFX_OBJ_A[tb+15]|=((tc&0x01)<<( 3));      tb+=16;   }   }   if(!load_rom("b14-07", TMP+0x00000, 0x20000)) return;	// 8x8 TILES   if(!load_rom("b14-06", TMP+0x20000, 0x20000)) return;	// 8x8 TILES   tb=0;   for(ta=0;ta<0x20000;ta++){      GFX[tb+3]=TMP[ta+0x00000]&15;      GFX[tb+2]=TMP[ta+0x00000]>>4;      GFX[tb+1]=TMP[ta+0x20000]&15;      GFX[tb+0]=TMP[ta+0x20000]>>4;      tb+=4;   }   FreeMem(TMP);   RAMSize=0x80000;   if(!(RAM=AllocateMem(0x80000))) return;   if(!(ROM=AllocateMem(0xC0000))) return;   if(romset==0){   if(!load_rom("b14-67", RAM, 0x10000)) return;	// 68000 MAIN ROM   }   else{   if(!load_rom("b14-67-1", RAM, 0x10000)) return; // 68000 MAIN ROM   }   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta]=RAM[ta];   }   if(romset==0){   if(!load_rom("b14-68", RAM, 0x10000)) return;   }   else{   if(!load_rom("b14-68-1", RAM, 0x10000)) return;   }   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+1]=RAM[ta];   }   if(romset==0){   if(!load_rom("b14-05", ROM+0x20000, 0x80000)) return;   ByteSwap(ROM+0x20000,0x80000);   }   else{   if(!load_rom("b14-54", RAM+0x00000, 0x20000)) return;   if(!load_rom("b14-55", RAM+0x20000, 0x20000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[ta+ta+0x20000]=RAM[ta];   }   if(!load_rom("b14-52", RAM+0x00000, 0x20000)) return;   if(!load_rom("b14-53", RAM+0x20000, 0x20000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[ta+ta+0x20001]=RAM[ta];   }   }   if(!load_rom("b14-69", RAM, 0x10000)) return;	// 68000 SUB ROM   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xA0000]=RAM[ta];   }   if(romset==0){   if(!load_rom("b14-71", RAM, 0x10000)) return;   }   else{   if(!load_rom("b14-70", RAM, 0x10000)) return;   }   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0xA0001]=RAM[ta];   }   /*-----[Sound Setup]-----*/   Z80ROM=RAM+0x64000;   if(!load_rom("b14-25", Z80ROM, 0x10000)) return;	// Z80 SOUND ROM   AddTaitoYM2151(0x0348, 0x0294, 0x10000, NULL, NULL);   /*-----------------------*/   memset(RAM+0x00000,0x00,0x64000);   memset(RAM+0x55000,0xFF,0x00100);   RAM_VIDEO    = RAM+0x10000;   RAM_VIDEO_2  = RAM+0x20000;   RAM_SCROLL   = RAM+0x1F000;   RAM_SCROLL_2 = RAM+0x2F000;   RAM_INPUT    = RAM+0x55000;   OBJECT_MAP   = RAM+0x34000;   GFX_OBJ_A_SOLID = make_solid_mask_16x8(GFX_OBJ_A, OBJ_A_COUNT);   GFX_BG0_SOLID   = make_solid_mask_8x8(GFX, 0x2000);   set_colour_mapper(&col_map_xbbb_bbgg_gggr_rrrr);   InitPaletteMap(RAM+0x30000, 0x100, 0x10, 0x8000);   // Main 68000 Speed Hack   // ---------------------   WriteLong68k(&ROM[0x0063A],0x13FC0000);	//	move.b	#$00,$AA0000   WriteLong68k(&ROM[0x0063E],0x00AA0000);	//   // Sub 68000 Speed Hack   // ---------------------   WriteLong68k(&ROM[0xB3CA8],0x4EF80100);	// [B3CAE]   WriteLong68k(&ROM[0xB413A],0x4EF80100);	// [B4140]   WriteWord68k(&ROM[0xA0100],0x4EB9);		//   WriteLong68k(&ROM[0xA0102],0x00014B9E);	//   WriteLong68k(&ROM[0xA0106],0x13FC0000);	//	move.b	#$00,$AA0000   WriteLong68k(&ROM[0xA010A],0x00AA0000);	//   WriteWord68k(&ROM[0xA010E],0x6100-16);	//   // Init tc0220ioc emulation   // ------------------------   tc0220ioc.RAM  = RAM_INPUT;   tc0220ioc.ctrl = 0;		//TC0220_STOPCPU;   reset_tc0220ioc();   memset(RAM_INPUT,0xFF,0x00020);   // Init tc0100scn emulation   // ------------------------   tc0100scn[0].layer[0].RAM	=RAM_VIDEO+0x0000;   tc0100scn[0].layer[0].GFX	=GFX;   tc0100scn[0].layer[0].MASK	=GFX_BG0_SOLID;   tc0100scn[0].layer[0].SCR	=RAM_SCROLL+0;   tc0100scn[0].layer[0].type	=0;   tc0100scn[0].layer[0].bmp_x	=32;   tc0100scn[0].layer[0].bmp_y	=32;   tc0100scn[0].layer[0].bmp_w	=320;   tc0100scn[0].layer[0].bmp_h	=240;   tc0100scn[0].layer[0].mapper	=&Map_15bit_xBGR;   tc0100scn[0].layer[0].tile_mask=0x1FFF;   tc0100scn[0].layer[0].scr_x	=16;   tc0100scn[0].layer[0].scr_y	=8;   tc0100scn[0].layer[1].RAM	=RAM_VIDEO+0x8000;   tc0100scn[0].layer[1].GFX	=GFX;   tc0100scn[0].layer[1].MASK	=GFX_BG0_SOLID;   tc0100scn[0].layer[1].SCR	=RAM_SCROLL+2;   tc0100scn[0].layer[1].type	=0;   tc0100scn[0].layer[1].bmp_x	=32;   tc0100scn[0].layer[1].bmp_y	=32;   tc0100scn[0].layer[1].bmp_w	=320;   tc0100scn[0].layer[1].bmp_h	=240;   tc0100scn[0].layer[1].mapper	=&Map_15bit_xBGR;   tc0100scn[0].layer[1].tile_mask=0x1FFF;   tc0100scn[0].layer[1].scr_x	=16;   tc0100scn[0].layer[1].scr_y	=8;   tc0100scn[1].layer[0].RAM	=RAM_VIDEO_2+0x0000;   tc0100scn[1].layer[0].GFX	=GFX;   tc0100scn[1].layer[0].MASK	=GFX_BG0_SOLID;   tc0100scn[1].layer[0].SCR	=RAM_SCROLL_2+0;   tc0100scn[1].layer[0].type	=0;   tc0100scn[1].layer[0].bmp_x	=32;   tc0100scn[1].layer[0].bmp_y	=32;   tc0100scn[1].layer[0].bmp_w	=320;   tc0100scn[1].layer[0].bmp_h	=240;   tc0100scn[1].layer[0].mapper	=&Map_15bit_xBGR;   tc0100scn[1].layer[0].tile_mask=0x1FFF;   tc0100scn[1].layer[0].scr_x	=16;   tc0100scn[1].layer[0].scr_y	=8;   tc0100scn[1].layer[1].RAM	=RAM_VIDEO_2+0x8000;   tc0100scn[1].layer[1].GFX	=GFX;   tc0100scn[1].layer[1].MASK	=GFX_BG0_SOLID;   tc0100scn[1].layer[1].SCR	=RAM_SCROLL_2+2;   tc0100scn[1].layer[1].type	=0;   tc0100scn[1].layer[1].bmp_x	=32;   tc0100scn[1].layer[1].bmp_y	=32;   tc0100scn[1].layer[1].bmp_w	=320;   tc0100scn[1].layer[1].bmp_h	=240;   tc0100scn[1].layer[1].mapper	=&Map_15bit_xBGR;   tc0100scn[1].layer[1].tile_mask=0x1FFF;   tc0100scn[1].layer[1].scr_x	=16;   tc0100scn[1].layer[1].scr_y	=8;   tc0100scn[0].RAM     = RAM_VIDEO;   tc0100scn[0].GFX_FG0 = NULL;   tc0100scn[1].RAM     = RAM_VIDEO_2;   tc0100scn[1].GFX_FG0 = NULL;   init_tc0100scn(0);   init_tc0100scn(1);   init_16x8_zoom();   zoom16_ofs = make_16x16_zoom_ofs_type1z();   zoom8_ofs  = make_16x8_zoom_ofs_type1z();/* *  StarScream Stuff follows */   ByteSwap(ROM,0xC0000);   ByteSwap(RAM,0x64000);   AddMemFetch(0x000000, 0x01FFFF, ROM+0x000000-0x000000);	// 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x01FFFF, NULL, ROM+0x000000);			// 68000 ROM   AddReadByte(0x080000, 0x0FFFFF, NULL, ROM+0x020000);                 // DATA ROM   AddReadByte(0x400000, 0x40FFFF, NULL, RAM+0x000000);			// 68000 RAM   AddReadByte(0xA00000, 0xA0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddReadByte(0xB00000, 0xB0FFFF, NULL, RAM_VIDEO_2);			// SCREEN RAM   AddReadByte(0x7E0000, 0x7E0003, tc0140syt_read_main_68k, NULL); 	// SOUND   AddReadByte(0x000000, 0xFFFFFF, BadReadByte, NULL);			// <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x01FFFF, NULL, ROM+0x000000);			// 68000 ROM   AddReadWord(0x080000, 0x0FFFFF, NULL, ROM+0x020000);                 // DATA ROM   AddReadWord(0x400000, 0x40FFFF, NULL, RAM+0x000000);			// 68000 RAM   AddReadWord(0xA00000, 0xA0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddReadWord(0xB00000, 0xB0FFFF, NULL, RAM_VIDEO_2);			// SCREEN RAM   AddReadWord(0x500000, 0x503FFF, NULL, RAM+0x030000);                 // COLOUR RAM   AddReadWord(0xE00000, 0xE0FFFF, NULL, OBJECT_MAP);                   // OBJECT CHAIN   AddReadWord(0xD00000, 0xD00FFF, NULL, RAM+0x044000);                 // OBJECT RAM   AddReadWord(0x000000, 0xFFFFFF, BadReadWord, NULL);			// <Bad Reads>   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x400000, 0x40FFFF, NULL, RAM+0x000000);		// 68000 RAM   AddWriteByte(0xA00000, 0xA0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddWriteByte(0xB00000, 0xB0FFFF, NULL, RAM_VIDEO_2);			// SCREEN RAM   AddWriteByte(0xA20000, 0xA20003, NULL, RAM_SCROLL+6);                // SCROLL Y   AddWriteByte(0xA40000, 0xA40003, NULL, RAM_SCROLL+0);                // SCROLL X   AddWriteByte(0xA50000, 0xA50001, NULL, RAM_SCROLL+14);               // CTRL   AddWriteByte(0xB20000, 0xB20003, NULL, RAM_SCROLL_2+6);              // SCROLL Y   AddWriteByte(0xB40000, 0xB40003, NULL, RAM_SCROLL_2+0);              // SCROLL X   AddWriteByte(0xB50000, 0xB50001, NULL, RAM_SCROLL_2+14);             // CTRL   AddWriteByte(0x7E0000, 0x7E0003, tc0140syt_write_main_68k, NULL);	// SOUND   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);			// Trap Idle 68000   AddWriteByte(0x000000, 0xFFFFFF, DefBadWriteByte, NULL);		// <Bad Writes>   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x400000, 0x40FFFF, NULL, RAM+0x000000);		// 68000 RAM   AddWriteWord(0xA00000, 0xA0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM

⌨️ 快捷键说明

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