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

📄 chasehq.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
   }   if(!load_rom("b91-07.bin", TMP, OBJ_B_COUNT*0x20)) return;	// 16x16 OBJ B   tb=0;   for(ta=0;ta<OBJ_B_COUNT*0x20;ta+=2){      tc=ReadWord(&TMP[ta]);      GFX_OBJ_B[tb+0] |=((tc&0x8000)>>(13));      GFX_OBJ_B[tb+1] |=((tc&0x4000)>>(12));      GFX_OBJ_B[tb+2] |=((tc&0x2000)>>(11));      GFX_OBJ_B[tb+3] |=((tc&0x1000)>>(10));      GFX_OBJ_B[tb+4] |=((tc&0x0800)>>( 9));      GFX_OBJ_B[tb+5] |=((tc&0x0400)>>( 8));      GFX_OBJ_B[tb+6] |=((tc&0x0200)>>( 7));      GFX_OBJ_B[tb+7] |=((tc&0x0100)>>( 6));      GFX_OBJ_B[tb+8] |=((tc&0x0080)>>( 5));      GFX_OBJ_B[tb+9] |=((tc&0x0040)>>( 4));      GFX_OBJ_B[tb+10]|=((tc&0x0020)>>( 3));      GFX_OBJ_B[tb+11]|=((tc&0x0010)>>( 2));      GFX_OBJ_B[tb+12]|=((tc&0x0008)>>( 1));      GFX_OBJ_B[tb+13]|=((tc&0x0004)>>( 0));      GFX_OBJ_B[tb+14]|=((tc&0x0002)<<( 1));      GFX_OBJ_B[tb+15]|=((tc&0x0001)<<( 2));      tb+=16;   }   if(!load_rom("b91-08.bin", TMP, OBJ_B_COUNT*0x20)) return;	// 16x16 OBJ B   tb=0;   for(ta=0;ta<OBJ_B_COUNT*0x20;ta+=2){      tc=ReadWord(&TMP[ta]);      GFX_OBJ_B[tb+0] |=((tc&0x8000)>>(12));      GFX_OBJ_B[tb+1] |=((tc&0x4000)>>(11));      GFX_OBJ_B[tb+2] |=((tc&0x2000)>>(10));      GFX_OBJ_B[tb+3] |=((tc&0x1000)>>( 9));      GFX_OBJ_B[tb+4] |=((tc&0x0800)>>( 8));      GFX_OBJ_B[tb+5] |=((tc&0x0400)>>( 7));      GFX_OBJ_B[tb+6] |=((tc&0x0200)>>( 6));      GFX_OBJ_B[tb+7] |=((tc&0x0100)>>( 5));      GFX_OBJ_B[tb+8] |=((tc&0x0080)>>( 4));      GFX_OBJ_B[tb+9] |=((tc&0x0040)>>( 3));      GFX_OBJ_B[tb+10]|=((tc&0x0020)>>( 2));      GFX_OBJ_B[tb+11]|=((tc&0x0010)>>( 1));      GFX_OBJ_B[tb+12]|=((tc&0x0008)>>( 0));      GFX_OBJ_B[tb+13]|=((tc&0x0004)<<( 1));      GFX_OBJ_B[tb+14]|=((tc&0x0002)<<( 2));      GFX_OBJ_B[tb+15]|=((tc&0x0001)<<( 3));      tb+=16;   }   if(!load_rom("b91-09.bin", OBJECT_MAP, 0x80000)) return; // TILE MAPPING   if(!load_rom("b91-11.bin", TMP, 0x80000)) return;	// 8x8 BG0 TILES   tb=0;   for(ta=0;ta<0x80000;ta+=2){      GFX[tb+3]=TMP[ta+0]&15;      GFX[tb+2]=TMP[ta+0]>>4;      GFX[tb+1]=TMP[ta+1]&15;      GFX[tb+0]=TMP[ta+1]>>4;      tb+=4;   }   FreeMem(TMP);   GFX_OBJ_A_SOLID = make_solid_mask_16x16(GFX_OBJ_A, OBJ_A_COUNT);   GFX_OBJ_B_SOLID = make_solid_mask_16x16(GFX_OBJ_B, OBJ_B_COUNT);   GFX_BG0_SOLID   = make_solid_mask_8x8  (GFX,       0x4000);   RAMSize=0x80000;   if(!(RAM=AllocateMem(0x80000))) return;   if(!(ROM=AllocateMem(0xC0000))) return;   if(!load_rom("b91-45.bin", RAM+0x00000, 0x20000)) return;	// 68000 MAIN ROM   if(!load_rom("b91-43.bin", RAM+0x20000, 0x20000)) return;	// 68000 MAIN ROM   for(ta=0;ta<0x40000;ta++){      ROM[ta+ta]=RAM[ta];   }   if(!load_rom("b91-44.bin", RAM+0x00000, 0x20000)) return;   if(!load_rom("b91-46.bin", RAM+0x20000, 0x20000)) return;   for(ta=0;ta<0x40000;ta++){      ROM[ta+ta+1]=RAM[ta];   }   if(!load_rom("b91-39.bin", RAM, 0x20000)) return;	// 68000 SUB ROM   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x80000]=RAM[ta];   }   if(!load_rom("b91-40.bin", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x80001]=RAM[ta];   }   /*-----[Sound Setup]-----*/   Z80ROM=RAM+0x50000;   if(!load_rom("b91-41.bin", Z80ROM, 0x20000)) return;		// Z80 SOUND ROM   if(!(PCMROM=AllocateMem(0x180000))) return;   if(!load_rom("b91-14.bin",PCMROM+0x000000,0x80000)) return;	// Delta-T ADPCM   if(!load_rom("b91-13.bin",PCMROM+0x080000,0x80000)) return;	// Main ADPCM 1/2   if(!load_rom("b91-12.bin",PCMROM+0x100000,0x80000)) return;	// Main ADPCM 2/2   YM2610SetBuffers(PCMROM, PCMROM+0x80000, 0x180000, 0x180000);   AddTaitoYM2610B(0x0246, 0x01BA, 0x20000);   /*-----------------------*/   memset(RAM+0x00000,0x00,0x40000);   RAM_VIDEO  = RAM+0x10000;   RAM_SCROLL = RAM+0x29000;   GFX_FG0    = RAM+0x3C000;   RAM_INPUT  = RAM+0x22800;   tc0110pcr_init_typeb(RAM+0x20000, 1, 0);   set_colour_mapper(&col_map_xbbb_bbgg_gggr_rrrr);   InitPaletteMap(RAM+0x20000, 0x100, 0x10, 0x8000);   ROM[0x0FE92]=0x60;   ROM[0x0FEB2]=0x4E;   ROM[0x0FEB3]=0x71;   ROM[0x0FEB4]=0x4E;   ROM[0x0FEB5]=0x71;   ROM[0x0F3AA]=0x4E;		// SKIP OLD CODE (NO ROOM FOR HACK)   ROM[0x0F3AB]=0xF9;		// (JMP $008000)   ROM[0x0F3AC]=0x00;   ROM[0x0F3AD]=0x00;   ROM[0x0F3AE]=0x80;   ROM[0x0F3AF]=0x00;   ROM[0x8000]=0x13;		// move.b #$00,$AA0000   ROM[0x8001]=0xFC;		// (Speed Hack)   ROM[0x8002]=0x00;   ROM[0x8003]=0x00;   ROM[0x8004]=0x00;   ROM[0x8005]=0xAA;   ROM[0x8006]=0x00;   ROM[0x8007]=0x00;   ROM[0x8008]=0x4E;		// GO BACK...   ROM[0x8009]=0xF9;		// (JMP $00F200)   ROM[0x800A]=0x00;   ROM[0x800B]=0x00;   ROM[0x800C]=0xF2;   ROM[0x800D]=0x00;   ROM[0x80856]=0x4E;		// SKIP OLD CODE (NO ROOM FOR HACK)   ROM[0x80857]=0xF9;		// (JMP $30000)   ROM[0x80858]=0x00;   ROM[0x80859]=0x03;   ROM[0x8085A]=0x00;   ROM[0x8085B]=0x00;   ROM[0xB0000]=0x4E;		// jsr $412   ROM[0xB0001]=0xB9;   ROM[0xB0002]=0x00;   ROM[0xB0003]=0x00;   ROM[0xB0004]=0x04;   ROM[0xB0005]=0x12;   ROM[0xB0006]=0x13;		// move.b #$00,$AA0000   ROM[0xB0007]=0xFC;		// (Speed Hack)   ROM[0xB0008]=0x00;   ROM[0xB0009]=0x00;   ROM[0xB000A]=0x00;   ROM[0xB000B]=0xAA;   ROM[0xB000C]=0x00;   ROM[0xB000D]=0x00;   ROM[0xB000E]=0x60;		// loop   ROM[0xB000F]=0x100-10;   // Init tc0220ioc emulation   // ------------------------   tc0220ioc.RAM  = RAM_INPUT;   tc0220ioc.ctrl = 0;		//TC0220_STOPCPU;   reset_tc0220ioc();   // Init tc0150rod emulation   // ------------------------   tc0150rod.RAM  	= RAM + 0x38000;   tc0150rod.GFX  	= GFX_LINES;   tc0150rod.PAL  	= PAL_MAP_2;   tc0150rod.mapper	= &Map_15bit_xBGR;   tc0150rod.bmp_x	= 32;   tc0150rod.bmp_y	= 32;   tc0150rod.bmp_w	= 320;   tc0150rod.bmp_h	= 240;   tc0150rod.scr_x	= 0;   tc0150rod.scr_y	= -15;   // 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=0x3FFF;   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=0x3FFF;   tc0100scn[0].layer[1].scr_x	=16;   tc0100scn[0].layer[1].scr_y	=8;   tc0100scn[0].layer[2].RAM	=RAM_VIDEO+0x4000;   tc0100scn[0].layer[2].GFX	=GFX_FG0;   tc0100scn[0].layer[2].SCR	=RAM_SCROLL+4;   tc0100scn[0].layer[2].type	=3;   tc0100scn[0].layer[2].bmp_x	=32;   tc0100scn[0].layer[2].bmp_y	=32;   tc0100scn[0].layer[2].bmp_w	=320;   tc0100scn[0].layer[2].bmp_h	=240;   tc0100scn[0].layer[2].mapper	=&Map_15bit_xBGR;   tc0100scn[0].layer[2].scr_x	=16;   tc0100scn[0].layer[2].scr_y	=8;   tc0100scn[0].RAM     = RAM_VIDEO;   tc0100scn[0].GFX_FG0 = GFX_FG0;   init_tc0100scn(0);   init_16x16_zoom();   zoom16_ofs = make_16x16_zoom_ofs_type1z();   obj_id = add_layer_info("Zooming Object");   rod_id = add_layer_info("Roadscroll");/* *  StarScream Stuff follows */   ByteSwap(ROM,0xC0000);   ByteSwap(RAM,0x40000);   AddMemFetch(0x000000, 0x07FFFF, ROM+0x000000-0x000000);	// 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x07FFFF, NULL, ROM+0x000000);			// 68000 ROM   AddReadByte(0x100000, 0x10FFFF, NULL, RAM+0x000000);			// 68000 RAM   AddReadByte(0xC00000, 0xC0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddReadByte(0x110000, 0x113FFF, NULL, RAM+0x034000);			// COMMON RAM   AddReadByte(0x400000, 0x40000F, NULL, RAM_INPUT);			// INPUT   AddReadByte(0xE40000, 0xE40007, NULL, RAM+0x022900);			// WHEEL   AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL);		// <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x07FFFF, NULL, ROM+0x000000);			// 68000 ROM   AddReadWord(0x100000, 0x10FFFF, NULL, RAM+0x000000);			// 68000 RAM   AddReadWord(0xC00000, 0xC0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddReadWord(0x110000, 0x113FFF, NULL, RAM+0x034000);			// COMMON RAM   AddReadWord(0xD00000, 0xD007FF, NULL, RAM+0x022000);			// OBJECT RAM   AddReadWord(0x400000, 0x40000F, NULL, RAM_INPUT);			// INPUT   AddReadWord(0xE40000, 0xE40007, NULL, RAM+0x022900);			// WHEEL   AddReadWord(0xA00000, 0xA00007, tc0110pcr_rw, NULL);			// COLOR RAM   AddReadWord(0x820000, 0x820003, tc0140syt_read_main_68k, NULL);	// SOUND COMM   AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL);		// <Bad Reads>   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x100000, 0x10FFFF, NULL, RAM+0x000000);		// 68000 RAM   AddWriteByte(0xC06000, 0xC06FFF, tc0100scn_0_gfx_fg0_wb, NULL);	// FG0 GFX RAM   AddWriteByte(0xC00000, 0xC0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddWriteByte(0x110000, 0x113FFF, NULL, RAM+0x034000);		// COMMON RAM   AddWriteByte(0x400000, 0x40000F, tc0220ioc_wb, NULL);		// INPUT   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);			// Trap Idle 68000   AddWriteByte(0x000000, 0xFFFFFF, DefBadWriteByte, NULL);		// <Bad Writes>   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x100000, 0x10FFFF, NULL, RAM+0x000000);		// 68000 RAM   AddWriteWord(0xC06000, 0xC06FFF, tc0100scn_0_gfx_fg0_ww, NULL);	// FG0 GFX RAM   AddWriteWord(0xC00000, 0xC0FFFF, NULL, RAM_VIDEO);			// SCREEN RAM   AddWriteWord(0xD00000, 0xD007FF, NULL, RAM+0x022000);		// OBJECT RAM   AddWriteWord(0x110000, 0x113FFF, NULL, RAM+0x034000);		// COMMON RAM   AddWriteWord(0xC20000, 0xC2000F, NULL, RAM_SCROLL);			// SCROLL RAM   AddWriteWord(0xA00000, 0xA00007, tc0110pcr_ww, NULL);		// COLOR RAM   AddWriteWord(0x820000, 0x820003, tc0140syt_write_main_68k, NULL);	// SOUND COMM   AddWriteWord(0x400000, 0x40000F, tc0220ioc_ww, NULL);		// INPUT   AddWriteWord(0x000000, 0xFFFFFF, DefBadWriteWord, NULL);		// <Bad Writes>   AddWriteWord(-1, -1, NULL, NULL);   AddInitMemory();	// Set Starscream mem pointers...    AddMemFetchMC68000B(0x000000, 0x03FFFF, ROM+0x080000-0x000000);	// 68000 ROM   AddMemFetchMC68000B(-1, -1, NULL);   AddReadByteMC68000B(0x000000, 0x03FFFF, NULL, ROM+0x080000);			// 68000 ROM   AddReadByteMC68000B(0x100000, 0x107FFF, NULL, RAM+0x030000);			// WORK+COMMON RAM   AddReadByteMC68000B(0x000000, 0xFFFFFF, DefBadReadByte, NULL);		// <Bad Reads>   AddReadByteMC68000B(-1, -1, NULL, NULL);   AddReadWordMC68000B(0x000000, 0x03FFFF, NULL, ROM+0x080000);			// 68000 ROM   AddReadWordMC68000B(0x100000, 0x107FFF, NULL, RAM+0x030000);			// WORK+COMMON RAM   AddReadWordMC68000B(0x800000, 0x801FFF, NULL, RAM+0x038000);			// ??? RAM   AddReadWordMC68000B(0x000000, 0xFFFFFF, DefBadReadWord, NULL);		// <Bad Reads>   AddReadWordMC68000B(-1, -1, NULL, NULL);   AddWriteByteMC68000B(0x100000, 0x107FFF, NULL, RAM+0x030000);		// WORK+COMMON RAM   AddWriteByteMC68000B(0xAA0000, 0xAA0001, Stop68000, NULL);			// Trap Idle 68000   AddWriteByteMC68000B(0x000000, 0xFFFFFF, DefBadWriteByte, NULL);		// <Bad Writes>   AddWriteByteMC68000B(-1, -1, NULL, NULL);   AddWriteWordMC68000B(0x100000, 0x107FFF, NULL, RAM+0x030000);		// WORK+COMMON RAM   AddWriteWordMC68000B(0x800000, 0x801FFF, NULL, RAM+0x038000);		// ??? RAM   AddWriteWordMC68000B(0x000000, 0xFFFFFF, DefBadWriteWord, NULL);		// <Bad Writes>   AddWriteWordMC68000B(-1, -1, NULL, NULL);   AddInitMemoryMC68000B();	// Set Starscream mem pointers... }void ClearNightStr(void){   RemoveTaitoYM2610();   #ifdef RAINE_DEBUG      save_debug("ROM.bin",ROM,0x0C0000,1);      save_debug("RAM.bin",RAM,0x040000,1);      //save_debug("GFX.bin",GFX,0x100000,0);   #endif}void ExecuteNightStrFrame(void){   // Wheel Hack   static int wx,wy;   if(wx >  0) wx-=4;   if(wx <  0) wx+=4;   if(wy >  0) wy-=4;   if(wy <  0) wy+=4;   if(RAM_INPUT[0x112]!=0){		// L      wx -= 16;   }   if(RAM_INPUT[0x113]!=0){		// R      wx += 16;   }   if(RAM_INPUT[0x110]!=0){		// U      wy -= 16;   }   if(RAM_INPUT[0x111]!=0){		// D      wy += 16;   }   if(wx >  127) wx=  127;   if(wx < -128) wx= -128;   if(wy >  127) wy=  127;   if(wy < -128) wy= -128;   RAM_INPUT[0x100] = wx&0xFF;   RAM_INPUT[0x104] = wy&0xFF;   cpu_execute_cycles(CPU_68K_0, CPU_FRAME_MHz(12,60));	// M68000 12MHz (60fps)   /*#ifdef RAINE_DEBUG      print_debug("PC0:%06x SR:%04x\n",s68000context.pc,s68000context.sr);   #endif*/   cpu_interrupt(CPU_68K_0, 6);   cpu_interrupt(CPU_68K_0, 4);   cpu_execute_cycles(CPU_68K_1, CPU_FRAME_MHz(12,60));	// M68000 12MHz (60fps)   /*#ifdef RAINE_DEBUG      print_debug("PC1:%06x SR:%04x\n",s68000context.pc,s68000context.sr);   #endif*/   cpu_interrupt(CPU_68K_1, 4);   Taito2610_Frame();			// Z80 and YM2610   //print_ingame(60,"%04x",ReadWord(&RAM[0x39FFE]));

⌨️ 快捷键说明

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