📄 toaplan1.c
字号:
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 + -