New games added or promoted from NOT_WORKING status

---------------------------------------------------
Killer Instinct (SNES bootleg) [Tomasz Slanina]
Final Fight 2 (SNES bootleg) [David Haywood, Tomasz Slanina, Kowal]

New games marked as GAME_NOT_WORKING
------------------------------------
Sonic Blast Man TURBO 2 (SNES bootleg) [Corrado Tomaselli]
This commit is contained in:
Tomasz Slanina 2008-08-10 22:43:48 +00:00
parent 326ad99c3a
commit b6e297e8a4
5 changed files with 555 additions and 261 deletions

2
.gitattributes vendored
View File

@ -1591,7 +1591,6 @@ src/mame/drivers/kickgoal.c svneol=native#text/plain
src/mame/drivers/kingobox.c svneol=native#text/plain
src/mame/drivers/kingpin.c svneol=native#text/plain
src/mame/drivers/kinst.c svneol=native#text/plain
src/mame/drivers/kinstb.c svneol=native#text/plain
src/mame/drivers/klax.c svneol=native#text/plain
src/mame/drivers/kncljoe.c svneol=native#text/plain
src/mame/drivers/koftball.c svneol=native#text/plain
@ -1934,6 +1933,7 @@ src/mame/drivers/slapfght.c svneol=native#text/plain
src/mame/drivers/slapshot.c svneol=native#text/plain
src/mame/drivers/sliver.c svneol=native#text/plain
src/mame/drivers/smstrv.c svneol=native#text/plain
src/mame/drivers/snesb.c svneol=native#text/plain
src/mame/drivers/snk.c svneol=native#text/plain
src/mame/drivers/snk68.c svneol=native#text/plain
src/mame/drivers/snookr10.c svneol=native#text/plain

View File

@ -1,259 +0,0 @@
/***************************************************************************
Killer Instinct bootleg/hack.
-----------------------------
Driver (based on nss.c ) by Tomasz Slanina analog[at]op.pl
PCB Info:
---------
(Nintendo SNES hardware)
PQFP 100(?)pin chip marked "SP-BE0"
PQFP 100(?)pin chip marked "SP-BH0"
PQFP 100(?)pin chip marked "SP-AF0"
Lattice pLSI 1024-60LJ B604S03
6116 SRAM x2
AS7C256 SRAM x8
jumper pack (12)
dsw8 x2
Xtal 24.576 MHz
Xtal 21.47727 MHz
volume pot
27c801 x4
two empty eprom sockets
It's SNES version of KI with few mods (removed copyright messages,
extra code for coin input, etc).
256 bytes of RAM ( mapped to reserved area) are shared with some
device (probably Lattice PLD) used for handle coin inputs and dips
Data lines of eproms are bitswapped.
***************************************************************************/
#include "driver.h"
#include "includes/snes.h"
static INT8 shared_ram[0x100];
static READ8_HANDLER(sharedram_r)
{
//check coins
static INT32 oldinput=0;
INT32 coincnt;
INT32 input = input_port_read(machine, "COIN");
if(input&3)
{
if( ((input&1)==1)&&((oldinput&1)==0)) {shared_ram[0]++;}
coincnt=shared_ram[0];
if(coincnt>99){coincnt=99;}
shared_ram[0xb]=(coincnt/10)+'0';
shared_ram[0xa]=(coincnt%10)+'0';
}
oldinput=input;
return shared_ram[offset];
}
static WRITE8_HANDLER(sharedram_w)
{
shared_ram[offset]=data;
}
static ADDRESS_MAP_START( kinstb_map, ADDRESS_SPACE_PROGRAM, 8)
AM_RANGE(0x000000, 0x2fffff) AM_READWRITE(snes_r_bank1, snes_w_bank1) /* I/O and ROM (repeats for each bank) */
AM_RANGE(0x300000, 0x3fffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* I/O and ROM (repeats for each bank) */
AM_RANGE(0x400000, 0x5fffff) AM_READWRITE(snes_r_bank3, SMH_ROM) /* ROM (and reserved in Mode 20) */
AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(snes_r_bank6, snes_w_bank6) /* used by Mode 20 DSP-1 */
AM_RANGE(0x700000, 0x77ffff) AM_READWRITE(snes_r_sram, snes_w_sram) /* 256KB Mode 20 save ram + reserved from 0x8000 - 0xffff */
AM_RANGE(0x781000, 0x7810ff) AM_READWRITE(sharedram_r, sharedram_w) /*shared with some device - mcu ? */
AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank4, snes_w_bank4) /* Mirror and ROM */
ADDRESS_MAP_END
static READ8_HANDLER( spc_ram_100_r )
{
return spc_ram_r(machine, offset + 0x100);
}
static WRITE8_HANDLER( spc_ram_100_w )
{
spc_ram_w(machine, offset + 0x100, data);
}
static ADDRESS_MAP_START( spc_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x00ef) AM_READWRITE(spc_ram_r, spc_ram_w) AM_BASE(&spc_ram) /* lower 32k ram */
AM_RANGE(0x00f0, 0x00ff) AM_READWRITE(spc_io_r, spc_io_w) /* spc io */
AM_RANGE(0x0100, 0xffff) AM_WRITE(spc_ram_100_w)
AM_RANGE(0x0100, 0xffbf) AM_READ(spc_ram_100_r)
AM_RANGE(0xffc0, 0xffff) AM_READ(spc_ipl_r)
ADDRESS_MAP_END
static INPUT_PORTS_START( kinstb )
PORT_START("PAD1L") /* IN 0 : Joypad 1 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button A") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Button X") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Button L") PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P1 Button R") PORT_PLAYER(1)
PORT_START("PAD1H") /* IN 1 : Joypad 1 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button B") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button Y") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("P1 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("P1 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_START("PAD2L") /* IN 2 : Joypad 2 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P2 Button A") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P2 Button X") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P2 Button L") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P2 Button R") PORT_PLAYER(2)
PORT_START("PAD2H") /* IN 3 : Joypad 2 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P2 Button B") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P2 Button Y") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("P2 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("P2 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_START("PAD3L") /* IN 4 : Joypad 3 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P3 Button A") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P3 Button X") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P3 Button L") PORT_PLAYER(3)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P3 Button R") PORT_PLAYER(3)
PORT_START("PAD3H") /* IN 5 : Joypad 3 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3 Button B") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3 Button Y") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE3 ) PORT_NAME("P3 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START3 ) PORT_NAME("P3 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
PORT_START("PAD4L") /* IN 6 : Joypad 4 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P4 Button A") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P4 Button X") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P4 Button L") PORT_PLAYER(4)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P4 Button R") PORT_PLAYER(4)
PORT_START("PAD4H") /* IN 7 : Joypad 4 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P4 Button B") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P4 Button Y") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE4 ) PORT_NAME("P4 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START4 ) PORT_NAME("P4 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
PORT_START("INTERNAL") /* IN 8 : Internal switches */
PORT_DIPNAME( 0x1, 0x1, "Enforce 32 sprites/line" )
PORT_DIPSETTING( 0x0, DEF_STR( No ) )
PORT_DIPSETTING( 0x1, DEF_STR( Yes ) )
#ifdef MAME_DEBUG
PORT_START("DEBUG1") /* IN 9 : debug switches */
PORT_DIPNAME( 0x3, 0x0, "Browse tiles" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x1, "2bpl" )
PORT_DIPSETTING( 0x2, "4bpl" )
PORT_DIPSETTING( 0x3, "8bpl" )
PORT_DIPNAME( 0xc, 0x0, "Browse maps" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4, "2bpl" )
PORT_DIPSETTING( 0x8, "4bpl" )
PORT_DIPSETTING( 0xc, "8bpl" )
PORT_START("DEBUG2") /* IN 10 : debug switches */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle BG 1") PORT_PLAYER(2)
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle BG 2") PORT_PLAYER(2)
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle BG 3") PORT_PLAYER(2)
PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle BG 4") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Objects") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle Main/Sub") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle Back col") PORT_PLAYER(3)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle Windows") PORT_PLAYER(3)
PORT_START("DEBUG3") /* IN 11 : debug input */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Pal prev")
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Pal next")
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Transparency") PORT_PLAYER(4)
#endif
PORT_START("DSW") /* IN 12 : dip-switches */
PORT_START("COIN") /* IN 13 : coins */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
INPUT_PORTS_END
static const custom_sound_interface snes_sound_interface =
{ snes_sh_start };
static MACHINE_DRIVER_START( kinstb )
/* basic machine hardware */
MDRV_CPU_ADD("main", G65816, 3580000) /* 2.68Mhz, also 3.58Mhz */
MDRV_CPU_PROGRAM_MAP(kinstb_map, 0)
MDRV_CPU_ADD("sound", SPC700, 2048000/2) /* 2.048 Mhz, but internal divider */
MDRV_CPU_PROGRAM_MAP(spc_mem, 0)
MDRV_INTERLEAVE(400)
MDRV_MACHINE_START( snes )
MDRV_MACHINE_RESET( snes )
/* video hardware */
MDRV_VIDEO_UPDATE( snes )
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
/* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
MDRV_SOUND_ADD("snes", CUSTOM, 0)
MDRV_SOUND_CONFIG(snes_sound_interface)
MDRV_SOUND_ROUTE(0, "left", 1.00)
MDRV_SOUND_ROUTE(1, "right", 1.00)
MACHINE_DRIVER_END
static DRIVER_INIT(kinstb)
{
INT32 i;
UINT8 *rom = memory_region(machine, "user3");
for(i=0;i<0x400000;i++)
{
rom[i]=BITSWAP8(rom[i],5,0,6,1,7,4,3,2);
}
DRIVER_INIT_CALL(snes_hirom);
}
ROM_START( kinstb )
ROM_REGION( 0x400000, "user3", ROMREGION_DISPOSE )
ROM_LOAD( "1.u14", 0x000000, 0x100000, CRC(70889919) SHA1(1451714cbdacb7f6ced2bc7afa478ad7264cf3b7) )
ROM_LOAD( "2.u15", 0x100000, 0x100000, CRC(e4a5d1da) SHA1(6ae566bd2f740a251d7a81b8ebb92a651cfaac8d) )
ROM_LOAD( "3.u16", 0x200000, 0x100000, CRC(7a40f7dd) SHA1(cebe632e8d2d68d0619077cc1e931af73c9a723b) )
ROM_LOAD( "4.u17", 0x300000, 0x100000, CRC(3d7564c1) SHA1(392b513991897668d5dd469ac84a34f785895774) )
ROM_REGION(0x100, "user5", 0)
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) )
ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
ROM_END
GAME( 199?, kinstb, 0, kinstb, kinstb, kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )

551
src/mame/drivers/snesb.c Normal file
View File

@ -0,0 +1,551 @@
/***************************************************************************
Arcade games (hacks of console games) running on SNES harware.
Driver (based on nss.c ) by Tomasz Slanina analog[at]op.pl
Supported games:
- Killer Instinct
- Final Fight 2
- Sonic Blast Man 2 (not working)
Not dumped:
- Final Fight 3
TODO:
- ffight2b - dipswitches ($7eadd7 ?)
- sblast2b - decrypt (xor+swaps)
- kiinstb - fix gfx glitches, missing texts
Final Fight 2 PCB layout:
------------------------
|----------------------------------------------------------------------------|
| |-----------| |
| | | 21.47727 MHz 24.576 MHz |
| | Lattice | |
| | pLSI | |--------| |--------| HM65256 |
| | 1024-60LJ | |--------| | | | | |
| | | | | | 86A621 | | 86A537 | |
| |-----------| | 86A623 | | JDCF | | JDCF | |
| | JDCF | | | | | D42832C |
| ff2_1.u8 | | |--------| |--------| |
| |--------| |
| |--------| |--------| |
| ff2_2.u7 |--------| | | | | KM62256 |
| | | | 86A617 | | 86A618 | |
| | 86A540 | | JDCF | | JDKF | |
| ff2_3.u6 | JDKF | | | | | |
| | | |--------| |--------| KM62256 |
| |--------| |
| GL324 D41464C D41464C |
| |
| D41464C D41464C DSW2 DSW1 |
| |
| 7414 74245 74245 74245 |
| |
| uPC1242H VR1 GD4021B GD4021B GD4021B GD4021B |
| |
| |
| |---| JAMMA |---| |
|---------------| |------------------------------------| |---------------|
Killer Instinct PCB Info:
--------------------------
PQFP 100(?)pin chip marked "SP-BE0"
PQFP 100(?)pin chip marked "SP-BH0"
PQFP 100(?)pin chip marked "SP-AF0"
Lattice pLSI 1024-60LJ B604S03
6116 SRAM x2
AS7C256 SRAM x8
jumper pack (12)
dsw8 x2
Xtal 24.576 MHz
Xtal 21.47727 MHz
volume pot
27c801 x4
two empty eprom sockets
It's SNES version of KI with few mods (removed copyright messages,
extra code for coin input, etc).
256 bytes of RAM ( mapped to reserved area) are shared with some
device (probably Lattice PLD) used for handle coin inputs and dips
Data lines of eproms are bitswapped.
***************************************************************************/
#include "driver.h"
#include "includes/snes.h"
static INT8 *shared_ram;
static UINT8 ffight2b_coins;
static READ8_HANDLER(sharedram_r)
{
static INT32 oldinput=0;
INT32 coincnt;
INT32 input = input_port_read(machine, "COIN");
if(input&3)
{
if( ((input&1)==1)&&((oldinput&1)==0)) {shared_ram[0]++;}
coincnt=shared_ram[0];
if(coincnt>99){coincnt=99;}
shared_ram[0xb]=(coincnt/10)+'0';
shared_ram[0xa]=(coincnt%10)+'0';
}
oldinput=input;
return shared_ram[offset];
}
static WRITE8_HANDLER(sharedram_w)
{
shared_ram[offset]=data;
}
static READ8_HANDLER(ffight2b_coin_r)
{
static INT32 oldinput=0;
INT32 input = input_port_read(machine, "COIN");
if( ((input&1)==1)&&((oldinput&1)==0))
{
INT32 coin_cnt=(ffight2b_coins&0xf)+10*(ffight2b_coins>>4);
if(++coin_cnt>99) coin_cnt=99;
ffight2b_coins=(coin_cnt%10)|((coin_cnt/10)<<4);
}
oldinput=input;
return ffight2b_coins;
}
static ADDRESS_MAP_START( snesb_map, ADDRESS_SPACE_PROGRAM, 8)
AM_RANGE(0x000000, 0x2fffff) AM_READWRITE(snes_r_bank1, snes_w_bank1) /* I/O and ROM (repeats for each bank) */
AM_RANGE(0x300000, 0x3fffff) AM_READWRITE(snes_r_bank2, snes_w_bank2) /* I/O and ROM (repeats for each bank) */
AM_RANGE(0x400000, 0x5fffff) AM_READWRITE(snes_r_bank3, SMH_ROM) /* ROM (and reserved in Mode 20) */
AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(snes_r_bank6, snes_w_bank6) /* used by Mode 20 DSP-1 */
AM_RANGE(0x700000, 0x77ffff) AM_READWRITE(snes_r_sram, snes_w_sram) /* 256KB Mode 20 save ram + reserved from 0x8000 - 0xffff */
AM_RANGE(0x7e0000, 0x7fffff) AM_RAM /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes_r_bank4, snes_w_bank4) /* Mirror and ROM */
ADDRESS_MAP_END
static READ8_HANDLER( spc_ram_100_r )
{
return spc_ram_r(machine, offset + 0x100);
}
static WRITE8_HANDLER( spc_ram_100_w )
{
spc_ram_w(machine, offset + 0x100, data);
}
static ADDRESS_MAP_START( spc_mem, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x00ef) AM_READWRITE(spc_ram_r, spc_ram_w) AM_BASE(&spc_ram) /* lower 32k ram */
AM_RANGE(0x00f0, 0x00ff) AM_READWRITE(spc_io_r, spc_io_w) /* spc io */
AM_RANGE(0x0100, 0xffff) AM_WRITE(spc_ram_100_w)
AM_RANGE(0x0100, 0xffbf) AM_READ(spc_ram_100_r)
AM_RANGE(0xffc0, 0xffff) AM_READ(spc_ipl_r)
ADDRESS_MAP_END
static INPUT_PORTS_START( kinstb )
PORT_START("PAD1L") /* IN 0 : Joypad 1 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button A") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Button X") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Button L") PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P1 Button R") PORT_PLAYER(1)
PORT_START("PAD1H") /* IN 1 : Joypad 1 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button B") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button Y") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("P1 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("P1 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_START("PAD2L") /* IN 2 : Joypad 2 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P2 Button A") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P2 Button X") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P2 Button L") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P2 Button R") PORT_PLAYER(2)
PORT_START("PAD2H") /* IN 3 : Joypad 2 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P2 Button B") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P2 Button Y") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("P2 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("P2 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_START("PAD3L") /* IN 4 : Joypad 3 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P3 Button A") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P3 Button X") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P3 Button L") PORT_PLAYER(3)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P3 Button R") PORT_PLAYER(3)
PORT_START("PAD3H") /* IN 5 : Joypad 3 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3 Button B") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3 Button Y") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE3 ) PORT_NAME("P3 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START3 ) PORT_NAME("P3 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
PORT_START("PAD4L") /* IN 6 : Joypad 4 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P4 Button A") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P4 Button X") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P4 Button L") PORT_PLAYER(4)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P4 Button R") PORT_PLAYER(4)
PORT_START("PAD4H") /* IN 7 : Joypad 4 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P4 Button B") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P4 Button Y") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE4 ) PORT_NAME("P4 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START4 ) PORT_NAME("P4 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
PORT_START("INTERNAL") /* IN 8 : Internal switches */
PORT_DIPNAME( 0x1, 0x1, "Enforce 32 sprites/line" )
PORT_DIPSETTING( 0x0, DEF_STR( No ) )
PORT_DIPSETTING( 0x1, DEF_STR( Yes ) )
#ifdef MAME_DEBUG
PORT_START("DEBUG1") /* IN 9 : debug switches */
PORT_DIPNAME( 0x3, 0x0, "Browse tiles" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x1, "2bpl" )
PORT_DIPSETTING( 0x2, "4bpl" )
PORT_DIPSETTING( 0x3, "8bpl" )
PORT_DIPNAME( 0xc, 0x0, "Browse maps" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4, "2bpl" )
PORT_DIPSETTING( 0x8, "4bpl" )
PORT_DIPSETTING( 0xc, "8bpl" )
PORT_START("DEBUG2") /* IN 10 : debug switches */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle BG 1") PORT_PLAYER(2)
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle BG 2") PORT_PLAYER(2)
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle BG 3") PORT_PLAYER(2)
PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle BG 4") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Objects") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle Main/Sub") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle Back col") PORT_PLAYER(3)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle Windows") PORT_PLAYER(3)
PORT_START("DEBUG3") /* IN 11 : debug input */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Pal prev")
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Pal next")
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Transparency") PORT_PLAYER(4)
#endif
PORT_START("DSW") /* IN 12 : dip-switches */
PORT_START("COIN") /* IN 13 : coins */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
INPUT_PORTS_END
static INPUT_PORTS_START( ffight2b )
PORT_START("PAD1L") /* IN 0 : Joypad 1 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button A") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Button X") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Button L") PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P1 Button R") PORT_PLAYER(1)
PORT_START("PAD1H") /* IN 1 : Joypad 1 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button B") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button Y") PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("P1 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("P1 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_START("PAD2L") /* IN 2 : Joypad 2 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P2 Button A") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P2 Button X") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P2 Button L") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P2 Button R") PORT_PLAYER(2)
PORT_START("PAD2H") /* IN 3 : Joypad 2 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P2 Button B") PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P2 Button Y") PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("P2 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("P2 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_START("PAD3L") /* IN 4 : Joypad 3 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P3 Button A") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P3 Button X") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P3 Button L") PORT_PLAYER(3)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P3 Button R") PORT_PLAYER(3)
PORT_START("PAD3H") /* IN 5 : Joypad 3 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3 Button B") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3 Button Y") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE3 ) PORT_NAME("P3 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START3 ) PORT_NAME("P3 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
PORT_START("PAD4L") /* IN 6 : Joypad 4 - L */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P4 Button A") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P4 Button X") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P4 Button L") PORT_PLAYER(4)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P4 Button R") PORT_PLAYER(4)
PORT_START("PAD4H") /* IN 7 : Joypad 4 - H */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P4 Button B") PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P4 Button Y") PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE4 ) PORT_NAME("P4 Select")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START4 ) PORT_NAME("P4 Start")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
PORT_START("INTERNAL") /* IN 8 : Internal switches */
PORT_DIPNAME( 0x1, 0x1, "Enforce 32 sprites/line" )
PORT_DIPSETTING( 0x0, DEF_STR( No ) )
PORT_DIPSETTING( 0x1, DEF_STR( Yes ) )
#ifdef MAME_DEBUG
PORT_START("DEBUG1") /* IN 9 : debug switches */
PORT_DIPNAME( 0x3, 0x0, "Browse tiles" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x1, "2bpl" )
PORT_DIPSETTING( 0x2, "4bpl" )
PORT_DIPSETTING( 0x3, "8bpl" )
PORT_DIPNAME( 0xc, 0x0, "Browse maps" )
PORT_DIPSETTING( 0x0, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4, "2bpl" )
PORT_DIPSETTING( 0x8, "4bpl" )
PORT_DIPSETTING( 0xc, "8bpl" )
PORT_START("DEBUG2") /* IN 10 : debug switches */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle BG 1") PORT_PLAYER(2)
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle BG 2") PORT_PLAYER(2)
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle BG 3") PORT_PLAYER(2)
PORT_BIT( 0x8, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle BG 4") PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Objects") PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Toggle Main/Sub") PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Toggle Back col") PORT_PLAYER(3)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Toggle Windows") PORT_PLAYER(3)
PORT_START("DEBUG3") /* IN 11 : debug input */
PORT_BIT( 0x1, IP_ACTIVE_HIGH, IPT_BUTTON9 ) PORT_NAME("Pal prev")
PORT_BIT( 0x2, IP_ACTIVE_HIGH, IPT_BUTTON10 ) PORT_NAME("Pal next")
PORT_BIT( 0x4, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Toggle Transparency") PORT_PLAYER(4)
#endif
PORT_START("DSW") /* IN 12 : dip-switches */
PORT_DIPNAME( 0x01, 0x01, "Player Bonus" ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_DIPNAME( 0x06, 0x04, "Game Level" ) PORT_DIPLOCATION("SW1:2,3")
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x04, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x06, DEF_STR( Easy ) )
PORT_DIPNAME( 0x18, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5")
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPNAME( 0xe0, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:6,7,8")
PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x60, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
/* PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) ) */
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
PORT_START("COIN") /* IN 13 : coins */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
INPUT_PORTS_END
static const custom_sound_interface snes_sound_interface =
{ snes_sh_start };
static MACHINE_DRIVER_START( kinstb )
/* basic machine hardware */
MDRV_CPU_ADD("main", G65816, 3580000) /* 2.68Mhz, also 3.58Mhz */
MDRV_CPU_PROGRAM_MAP(snesb_map, 0)
/* audio CPU */
MDRV_CPU_ADD("sound", SPC700, 2048000/2) /* 2.048 Mhz, but internal divider */
MDRV_CPU_PROGRAM_MAP(spc_mem, 0)
MDRV_INTERLEAVE(400)
MDRV_MACHINE_START( snes )
MDRV_MACHINE_RESET( snes )
/* video hardware */
MDRV_VIDEO_UPDATE( snes )
MDRV_SCREEN_ADD("main", RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_RAW_PARAMS(DOTCLK_NTSC, SNES_HTOTAL, 0, SNES_SCR_WIDTH, SNES_VTOTAL_NTSC, 0, SNES_SCR_HEIGHT_NTSC)
/* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
MDRV_SOUND_ADD("snes", CUSTOM, 0)
MDRV_SOUND_CONFIG(snes_sound_interface)
MDRV_SOUND_ROUTE(0, "left", 1.00)
MDRV_SOUND_ROUTE(1, "right", 1.00)
MACHINE_DRIVER_END
static DRIVER_INIT(kinstb)
{
INT32 i;
UINT8 *rom = memory_region(machine, "user3");
for(i=0;i<0x400000;i++)
{
rom[i]=BITSWAP8(rom[i],5,0,6,1,7,4,3,2);
}
shared_ram=auto_malloc(0x100);
memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x781000, 0x7810ff, 0, 0, sharedram_r, sharedram_w);
DRIVER_INIT_CALL(snes_hirom);
}
DRIVER_INIT( ffight2b )
{
INT32 i;
UINT8 *rom = memory_region(machine, "user3");
for(i=0;i<0x200000;i++)
{
rom[i]=rom[i]^0xff;
if (i<0x10000) /* 0x00000 - 0x0ffff */
{
rom[i]=BITSWAP8(rom[i],3,1,6,4,7,0,2,5);
}
else if (i<0x20000) /* 0x10000 - 0x1ffff */
{
rom[i]=BITSWAP8(rom[i],3,7,0,5,1,6,2,4);
}
else if (i<0x30000) /* 0x20000 - 0x2ffff */
{
rom[i]=BITSWAP8(rom[i],1,7,6,4,5,2,3,0);
}
else if (i<0x40000) /* 0x30000 - 0x3ffff */
{
rom[i]=BITSWAP8(rom[i],0,3,2,5,4,6,7,1);
}
else if (i<0x150000)
{
rom[i]=BITSWAP8(rom[i],6,4,0,5,1,3,2,7);
}
}
/* boot vector */
rom[0x7ffd]=0x89;
rom[0x7ffc]=0x54;
ffight2b_coins=0;
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x7eadce, 0x7eadce, 0, 0, ffight2b_coin_r);
DRIVER_INIT_CALL(snes);
}
ROM_START( kinstb )
ROM_REGION( 0x400000, "user3", ROMREGION_DISPOSE )
ROM_LOAD( "1.u14", 0x000000, 0x100000, CRC(70889919) SHA1(1451714cbdacb7f6ced2bc7afa478ad7264cf3b7) )
ROM_LOAD( "2.u15", 0x100000, 0x100000, CRC(e4a5d1da) SHA1(6ae566bd2f740a251d7a81b8ebb92a651cfaac8d) )
ROM_LOAD( "3.u16", 0x200000, 0x100000, CRC(7a40f7dd) SHA1(cebe632e8d2d68d0619077cc1e931af73c9a723b) )
ROM_LOAD( "4.u17", 0x300000, 0x100000, CRC(3d7564c1) SHA1(392b513991897668d5dd469ac84a34f785895774) )
ROM_REGION(0x100, "user5", 0)
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) )
ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
ROM_END
ROM_START( ffight2b )
ROM_REGION( 0x400000, "user3", ROMREGION_DISPOSE )
ROM_LOAD( "ff2_3.u6", 0x000000, 0x008000, CRC(343bf582) SHA1(cc6b7219bb2fe61f0b377b606ad28b0e5a78be0b) )
ROM_CONTINUE( 0x088000, 0x008000 )
ROM_CONTINUE( 0x010000, 0x008000 )
ROM_CONTINUE( 0x098000, 0x008000 )
ROM_CONTINUE( 0x020000, 0x008000 )
ROM_CONTINUE( 0x0a8000, 0x008000 )
ROM_CONTINUE( 0x030000, 0x008000 )
ROM_CONTINUE( 0x0b8000, 0x008000 )
ROM_CONTINUE( 0x040000, 0x008000 )
ROM_CONTINUE( 0x0c8000, 0x008000 )
ROM_CONTINUE( 0x050000, 0x008000 )
ROM_CONTINUE( 0x0d8000, 0x008000 )
ROM_CONTINUE( 0x060000, 0x008000 )
ROM_CONTINUE( 0x0e8000, 0x008000 )
ROM_CONTINUE( 0x070000, 0x008000 )
ROM_CONTINUE( 0x0f8000, 0x008000 )
ROM_LOAD( "ff2_2.u7", 0x080000, 0x008000, CRC(b2078ae5) SHA1(e7bc3ad26ed672707d0dcfcaff238aad74986532) )
ROM_CONTINUE( 0x008000, 0x008000 )
ROM_CONTINUE( 0x090000, 0x008000 )
ROM_CONTINUE( 0x018000, 0x008000 )
ROM_CONTINUE( 0x0a0000, 0x008000 )
ROM_CONTINUE( 0x028000, 0x008000 )
ROM_CONTINUE( 0x0b0000, 0x008000 )
ROM_CONTINUE( 0x038000, 0x008000 )
ROM_CONTINUE( 0x0c0000, 0x008000 )
ROM_CONTINUE( 0x048000, 0x008000 )
ROM_CONTINUE( 0x0d0000, 0x008000 )
ROM_CONTINUE( 0x058000, 0x008000 )
ROM_CONTINUE( 0x0e0000, 0x008000 )
ROM_CONTINUE( 0x068000, 0x008000 )
ROM_CONTINUE( 0x0f0000, 0x008000 )
ROM_CONTINUE( 0x078000, 0x008000 )
ROM_LOAD( "ff2_1.u8", 0x100000, 0x040000, CRC(ea315ac1) SHA1(a85de091882d35bc77dc99677511828ff7c20350) )
ROM_REGION(0x100, "user5", 0)
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) )
ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
ROM_END
ROM_START( sblast2b )
ROM_REGION( 0x180000, "user3", ROMREGION_DISPOSE )
ROM_LOAD( "1.bin", 0x000000, 0x080000, CRC(bea10c40) SHA1(d9cc65267b9b57145d714f2c17b436c1fb21513f) )
ROM_LOAD( "2.bin", 0x080000, 0x080000, CRC(57d2b6e9) SHA1(1a7b347101f67b254e2f86294d501b0669431644) )
ROM_LOAD( "3.bin", 0x100000, 0x080000, CRC(9e63a5ce) SHA1(1d18606fbb28b55a921fc37e1af1aff4caae9003) )
ROM_REGION(0x100, "user5", 0)
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) )
ROM_REGION(0x800, "user6", ROMREGION_ERASEFF)
ROM_END
GAME( 199?, kinstb, 0, kinstb, kinstb, kinstb, ROT0, "bootleg", "Killer Instinct (SNES bootleg)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
GAME( 1996, ffight2b, 0, kinstb, ffight2b, ffight2b, ROT0, "bootleg", "Final Fight 2 (SNES bootleg)", GAME_IMPERFECT_SOUND )
GAME( 199?, sblast2b, 0, kinstb, kinstb, snes, ROT0, "bootleg", "Sonic Blast Man TURBO 2 (SNES bootleg)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )

View File

@ -1049,7 +1049,7 @@ $(MAMEOBJ)/nichibut.a: \
$(MAMEOBJ)/nintendo.a: \
$(DRIVERS)/dkong.o $(AUDIO)/dkong.o $(VIDEO)/dkong.o \
$(DRIVERS)/cham24.o \
$(DRIVERS)/kinstb.o \
$(DRIVERS)/snesb.o \
$(DRIVERS)/mario.o $(AUDIO)/mario.o $(VIDEO)/mario.o \
$(DRIVERS)/multigam.o \
$(DRIVERS)/n8080.o $(AUDIO)/n8080.o $(VIDEO)/n8080.o \

View File

@ -1104,6 +1104,8 @@ const game_driver * const drivers[] =
/* SNES-based hacks */
DRIVER( kinstb ) /* bootleg */
DRIVER( ffight2b ) /* bootleg */
DRIVER( sblast2b ) /* bootleg */
/* Midway 8080 b/w games */
DRIVER( seawolf ) /* 596 [1976] */