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

📄 toaplan1.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
         return RAM[0x023004];      break;      case 0x50:         return RAM[0x023005];      break;      case 0x60:         return RAM[0x023003];      break;      case 0x70:         return YM3812ReadZ80(0);      break;      default:         return 0xFF;      break;   }}static void hell_fire_port_wb(UINT16 offset, UINT8 data){   switch(offset&0xFF){      case 0x70:         YM3812WriteZ80(0,data);      break;      case 0x71:         YM3812WriteZ80(1,data);      break;      default:      break;   }}/******************************************************************************/void load_vimana(){   romset = 0;   if(!(RAM=AllocateMem(0x80000)))return;   GFX_BG0 = load_region[REGION_GFX1];   GFX_SPR = load_region[REGION_GFX2];   GFX_BG0_SOLID = make_solid_mask_8x8(GFX_BG0, 0x04000);   GFX_SPR_SOLID = make_solid_mask_8x8(GFX_SPR, 0x08000);   if(!(TileQueue = (struct TILE_Q *) AllocateMem(sizeof(TILE_Q)*MAX_TILES)))return;   memset(RAM+0x00000,0x00,0x40000);   RAMSize=0x40000+0x10000;   tp1vcu[0].VRAM          = RAM+0x11000;   tp1vcu[0].RAM_OBJ       = RAM+0x21000;   tp1vcu[0].SCROLL        = RAM+0x22000;   tp1vcu[0].GFX_BG        = GFX_BG0;   tp1vcu[0].MASK_BG       = GFX_BG0_SOLID;   tp1vcu[0].tile_mask_bg  = 0x03FFF;   tp1vcu[0].tile_mask_obj = 0x07FFF;   tp1vcu[0].tile_ofs_obj  = 0x04000;   init_tp1vcu(0);   InitPaletteMap(RAM+0x10000, 0x80, 0x10, 0x8000);   set_colour_mapper(&col_map_xbbb_bbgg_gggr_rrrr);   if(is_current_game("vimana"))   {   // Kill the annoying reset instruction   WriteWord68k(&ROM[0x1A830],0x4E71);          // nop   // Something failed a test   WriteWord68k(&ROM[0x1AA3E],0x4E71);          // nop   // 68000 speed hack   WriteLong68k(&ROM[0x17918],0x13FC0000);   WriteLong68k(&ROM[0x1791C],0x00AA0000);   }   else{   // Kill the annoying reset instruction   WriteWord68k(&ROM[0x1ab1c],0x4E71);          // nop   // Something failed a test   WriteWord68k(&ROM[0x1ad2a],0x4E71);          // nop   // 68000 speed hack   WriteLong68k(&ROM[0x17c04],0x13FC0000);   WriteLong68k(&ROM[0x17c08],0x00AA0000);   }/* *  StarScream Stuff follows */   ByteSwap(ROM,0x40000);   ByteSwap(RAM,0x40000);   AddMemFetch(0x000000, 0x03FFFF, ROM+0x000000-0x000000);      // 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadByte(0x480000, 0x483FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadByte(0x404000, 0x4047FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadByte(0x406000, 0x4067FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadByte(0x0C0000, 0x0C000F, tp1vcu_obj_rb, NULL);                // OBJECT   AddReadByte(0x4C0000, 0x4C001F, tp1vcu_bg_rb, NULL);                 // LAYER   AddReadByte(0x400000, 0x40000F, tp_vblank_rb, NULL);                 // VSYNC   AddReadByte(0x440000, 0x440FFF, vimana_z80_rb, NULL);                // SOUND COMM   AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL);               // <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadWord(0x480000, 0x483FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadWord(0x404000, 0x4047FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadWord(0x406000, 0x4067FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadWord(0x0C0000, 0x0C000F, tp1vcu_obj_rw, NULL);                // OBJECT   AddReadWord(0x4C0000, 0x4C001F, tp1vcu_bg_rw, NULL);                 // LAYER   AddReadWord(0x400000, 0x40000F, tp_vblank_rw, NULL);                 // VSYNC   AddReadWord(0x440000, 0x440FFF, vimana_z80_rw, NULL);                // SOUND COMM   AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL);               // <Bad Reads>   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x480000, 0x483FFF, NULL, RAM+0x000000);                // 68000 RAM   AddWriteByte(0x404000, 0x4047FF, NULL, RAM+0x010000);                // COLOR RAM   AddWriteByte(0x406000, 0x4067FF, NULL, RAM+0x010800);                // COLOR RAM   AddWriteByte(0x400000, 0x40000F, tp_vblank_wb, NULL);                // VSYNC   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);                   // Trap Idle 68000   AddWriteByte(0x000000, 0xFFFFFF, DefBadWriteByte, NULL);             // <Bad Writes>   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x480000, 0x483FFF, NULL, RAM+0x000000);                // 68000 RAM   AddWriteWord(0x404000, 0x4047FF, NULL, RAM+0x010000);                // COLOR RAM   AddWriteWord(0x406000, 0x4067FF, NULL, RAM+0x010800);                // COLOR RAM   AddWriteWord(0x0C0000, 0x0C000F, tp1vcu_obj_ww, NULL);               // OBJECT   AddWriteWord(0x4C0000, 0x4C001F, tp1vcu_bg_ww, NULL);                // LAYER   AddWriteWord(0x400000, 0x40000F, tp_vblank_ww, NULL);                // VSYNC   AddWriteWord(0x080000, 0x080003, tp1vcu_ofsreg_ww, NULL);            // OFFSET   AddWriteWord(0x000000, 0xFFFFFF, DefBadWriteWord, NULL);             // <Bad Writes>   AddWriteWord(-1, -1, NULL, NULL);   AddInitMemory();     // Set Starscream mem pointers... }void load_outzone(void){   romset = 2;   if(!(RAM=AllocateMem(0x80000)))return;   GFX_BG0 = load_region[REGION_GFX1];   GFX_SPR = load_region[REGION_GFX2];   GFX_BG0_SOLID = make_solid_mask_8x8(GFX_BG0, 0x08000);   GFX_SPR_SOLID = make_solid_mask_8x8(GFX_SPR, 0x04000);   if(!(TileQueue = (struct TILE_Q *) AllocateMem(sizeof(TILE_Q)*MAX_TILES)))return;   memset(RAM+0x00000,0x00,0x40000);   RAMSize=0x40000+0x10000;   /* Sound Setup */   Z80ROM=RAM+0x40000;   if(!load_rom("rom9.bin", Z80ROM, 0x08000)) return;/*   // Fix Checksum   Z80ROM[0x0156]=0x00; // NOP   Z80ROM[0x0157]=0x00; // NOP   Z80ROM[0x0158]=0x00; // NOP   // Apply Speed Patch   Z80ROM[0x019D]=0xD3; // OUTA (AAh)   Z80ROM[0x019E]=0xAA; //   SetStopZ80Mode2(0x019C);*/   // Setup Z80 memory map   // --------------------   AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);   AddZ80AReadByte(0x0000, 0x87FF, NULL,                Z80ROM+0x0000); // Z80 ROM/RAM   AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,       NULL);   AddZ80AReadByte(    -1,     -1, NULL,                NULL);   AddZ80AWriteByte(0x8000, 0x87FF, NULL,               Z80ROM+0x8000); // Z80 RAM   AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,     NULL);   AddZ80AWriteByte(    -1,     -1, NULL,               NULL);   AddZ80AReadPort(0x00, 0xFF, outzone_port_rb,         NULL);   AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,           NULL);   AddZ80AReadPort(  -1,   -1, NULL,                    NULL);   AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,           NULL);   AddZ80AWritePort(0x00, 0xFF, outzone_port_wb,        NULL);   AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,         NULL);   AddZ80AWritePort(  -1,   -1, NULL,                   NULL);   AddZ80AInit();   /* ----------- */   tp1vcu[0].VRAM          = RAM+0x11000;   tp1vcu[0].RAM_OBJ       = RAM+0x21000;   tp1vcu[0].SCROLL        = RAM+0x22000;   tp1vcu[0].GFX_BG        = GFX_BG0;   tp1vcu[0].MASK_BG       = GFX_BG0_SOLID;   tp1vcu[0].tile_mask_bg  = 0x07FFF;   tp1vcu[0].tile_mask_obj = 0x03FFF;   tp1vcu[0].tile_ofs_obj  = 0x08000;   init_tp1vcu(0);   InitPaletteMap(RAM+0x10000, 0x80, 0x10, 0x8000);   set_colour_mapper(&col_map_xbbb_bbgg_gggr_rrrr);   // Kill the annoying reset instruction   WriteWord68k(&ROM[0x124bc],0x4E71);          // nop/*   // Something failed a test   WriteWord68k(&ROM[0x1AA3E],0x4E71);          // nop   // 68000 speed hack   WriteLong68k(&ROM[0x17918],0x13FC0000);   WriteLong68k(&ROM[0x1791C],0x00AA0000);*//* *  StarScream Stuff follows */   ByteSwap(ROM,0x40000);   ByteSwap(RAM,0x40000);   AddMemFetch(0x000000, 0x03FFFF, ROM+0x000000-0x000000);      // 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadByte(0x240000, 0x243FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadByte(0x304000, 0x3047FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadByte(0x306000, 0x3067FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadByte(0x100000, 0x10000F, tp1vcu_obj_rb, NULL);                // OBJECT   AddReadByte(0x200000, 0x20001F, tp1vcu_bg_rb, NULL);                 // LAYER   AddReadByte(0x300000, 0x30000F, tp_vblank_rb, NULL);                 // VSYNC   AddReadByte(0x140000, 0x140FFF, tp1_z80_rb, NULL);                   // SOUND COMM   AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL);               // <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadWord(0x240000, 0x243FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadWord(0x304000, 0x3047FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadWord(0x306000, 0x3067FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadWord(0x100000, 0x10000F, tp1vcu_obj_rw, NULL);                // OBJECT   AddReadWord(0x200000, 0x20001F, tp1vcu_bg_rw, NULL);                 // LAYER   AddReadWord(0x300000, 0x30000F, tp_vblank_rw, NULL);                 // VSYNC   AddReadWord(0x140000, 0x140FFF, tp1_z80_rw, NULL);                   // SOUND COMM   AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL);               // <Bad Reads>   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x240000, 0x243FFF, NULL, RAM+0x000000);                // 68000 RAM   AddWriteByte(0x304000, 0x3047FF, NULL, RAM+0x010000);                // COLOR RAM   AddWriteByte(0x306000, 0x3067FF, NULL, RAM+0x010800);                // COLOR RAM   AddWriteByte(0x300000, 0x30000F, tp_vblank_wb, NULL);                // VSYNC   AddWriteByte(0x140000, 0x140FFF, tp1_z80_wb, NULL);                  // SOUND COMM   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);                   // Trap Idle 68000   AddWriteByte(0x000000, 0xFFFFFF, DefBadWriteByte, NULL);             // <Bad Writes>   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x240000, 0x243FFF, NULL, RAM+0x000000);                // 68000 RAM   AddWriteWord(0x304000, 0x3047FF, NULL, RAM+0x010000);                // COLOR RAM   AddWriteWord(0x306000, 0x3067FF, NULL, RAM+0x010800);                // COLOR RAM   AddWriteWord(0x100000, 0x10000F, tp1vcu_obj_ww, NULL);               // OBJECT   AddWriteWord(0x200000, 0x20001F, tp1vcu_bg_ww, NULL);                // LAYER   AddWriteWord(0x300000, 0x30000F, tp_vblank_ww, NULL);                // VSYNC   AddWriteWord(0x140000, 0x140FFF, tp1_z80_ww, NULL);                  // SOUND COMM   AddWriteWord(0x340000, 0x340003, tp1vcu_ofsreg_ww, NULL);            // OFFSET   AddWriteWord(0x000000, 0xFFFFFF, DefBadWriteWord, NULL);             // <Bad Writes>   AddWriteWord(-1, -1, NULL, NULL);   AddInitMemory();     // Set Starscream mem pointers... }void load_rally_bike(void){   romset = 3;   if(!(RAM=AllocateMem(0x80000)))return;   GFX_BG0 = load_region[REGION_GFX1];   GFX_SPR = load_region[REGION_GFX2];   GFX_BG0_SOLID = make_solid_mask_8x8(GFX_BG0, 0x04000);   GFX_SPR_SOLID = make_solid_mask_8x8(GFX_SPR, 0x02000);   if(!(TileQueue = (struct TILE_Q *) AllocateMem(sizeof(TILE_Q)*MAX_TILES)))return;   memset(RAM+0x00000,0x00,0x40000);   RAMSize=0x40000+0x10000;   /* Sound Setup */   Z80ROM=RAM+0x40000;   if(!load_rom("rb_05.bin", Z80ROM, 0x08000)) return;/*   // Fix Checksum   Z80ROM[0x0156]=0x00; // NOP   Z80ROM[0x0157]=0x00; // NOP   Z80ROM[0x0158]=0x00; // NOP   // Apply Speed Patch   Z80ROM[0x019D]=0xD3; // OUTA (AAh)   Z80ROM[0x019E]=0xAA; //   SetStopZ80Mode2(0x019C);*/   // Setup Z80 memory map   // --------------------   AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);   AddZ80AReadByte(0x0000, 0x87FF, NULL,                Z80ROM+0x0000); // Z80 ROM/RAM   AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,       NULL);   AddZ80AReadByte(    -1,     -1, NULL,                NULL);   AddZ80AWriteByte(0x8000, 0x87FF, NULL,               Z80ROM+0x8000); // Z80 RAM   AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,     NULL);   AddZ80AWriteByte(    -1,     -1, NULL,               NULL);   AddZ80AReadPort(0x00, 0xFF, truxton_port_rb,         NULL);   AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,           NULL);   AddZ80AReadPort(  -1,   -1, NULL,                    NULL);   AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,           NULL);   AddZ80AWritePort(0x00, 0xFF, truxton_port_wb,        NULL);   AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,         NULL);   AddZ80AWritePort(  -1,   -1, NULL,                   NULL);   AddZ80AInit();   /* ----------- */   tp1vcu[0].VRAM          = RAM+0x11000;   tp1vcu[0].RAM_OBJ       = RAM+0x21000;   tp1vcu[0].SCROLL        = RAM+0x22000;   tp1vcu[0].GFX_BG        = GFX_BG0;   tp1vcu[0].MASK_BG       = GFX_BG0_SOLID;   tp1vcu[0].tile_mask_bg  = 0x03FFF;   tp1vcu[0].tile_mask_obj = 0x01FFF;   tp1vcu[0].tile_ofs_obj  = 0x04000;   init_tp1vcu(0);   InitPaletteMap(RAM+0x10000, 0x80, 0x10, 0x8000);   set_colour_mapper(&col_map_xbbb_bbgg_gggr_rrrr);   // Something failed a test   WriteWord68k(&ROM[0x0193E],0x6000);   // Fix rom checksum   WriteWord68k(&ROM[0x01A66],0x7400);   // 68000 speed hack   WriteLong68k(&ROM[0x01BA0],0x13FC0000);   WriteLong68k(&ROM[0x01BA4],0x00AA0000);/* *  StarScream Stuff follows */   ByteSwap(ROM,0x80000);   ByteSwap(RAM,0x40000);   AddMemFetch(0x000000, 0x07FFFF, ROM+0x000000-0x000000);      // 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x07FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadByte(0x080000, 0x083FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadByte(0x144000, 0x1447FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadByte(0x146000, 0x1467FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadByte(0x0C0000, 0x0C0FFF, NULL, RAM+0x021000);                 // OBJECT   AddReadByte(0x100000, 0x10001F, tp1vcu_bg_rb, NULL);                 // LAYER   AddReadByte(0x140000, 0x14000F, tp_vblank_rb, NULL);                 // VSYNC   AddReadByte(0x180000, 0x180FFF, tp1_z80_rb, NULL);                   // SOUND COMM   AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL);               // <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x07FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadWord(0x080000, 0x083FFF, NULL, RAM+0x000000);                 // 68000 RAM   AddReadWord(0x144000, 0x1447FF, NULL, RAM+0x010000);                 // COLOR RAM   AddReadWord(0x146000, 0x1467FF, NULL, RAM+0x010800);                 // COLOR RAM   AddReadWord(0x0C0000, 0x0C0FFF, NULL, RAM+0x021000);                 // OBJECT   AddReadWord(0x100000, 0x10001F, tp1vcu_bg_rw, NULL);                 // LAYER   AddReadWord(0x140000, 0x14000F, tp_vblank_rw, NULL);                 // VSYNC   AddReadWord(0x180000, 0x180FFF, tp1_z80_rw, NULL);                   // SOUND COMM   AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL);               // <Bad Reads>   AddReadWord(-1, -1,NULL, NULL);   AddWriteByte(0x080000, 0x083FFF, NULL, RAM+0x000000);                // 68000 RAM   AddWriteByte(0x144000, 0x1447FF, NULL, RAM+0x010000);                // COLOR RAM   Add

⌨️ 快捷键说明

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