summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-02-10 07:22:56 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-02-10 07:22:56 +0000
commitfb2b198f2e3372847dec348cc9e9d5b21c8d9733 (patch)
treea487f9f784bd817166e276ba4935debabe5fea82 /src/mame
parentcd3b9c59d66d307a023ebcd0dd12fb4771c5cd95 (diff)
Moved knightsb to fcrash.c
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/cps1.c154
-rw-r--r--src/mame/drivers/fcrash.c207
-rw-r--r--src/mame/includes/cps1.h5
3 files changed, 212 insertions, 154 deletions
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index 79ebf786446..1ded3c3f7f1 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -2038,7 +2038,7 @@ static INPUT_PORTS_START( captcomm )
PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( knights )
+INPUT_PORTS_START( knights )
PORT_INCLUDE( cps1_3players )
PORT_MODIFY("IN0")
@@ -3276,134 +3276,6 @@ static MACHINE_CONFIG_DERIVED( wofhfh, cps1_12MHz )
MCFG_EEPROM_ADD("eeprom", qsound_eeprom_interface)
MACHINE_CONFIG_END
-/*
-
-CPU:
-
-1x MC68000P12 ic65 main
-1x Z0840006PSC ic1 sound
-1x YM2151 ic29 sound
-1x YM3012 ic30 sound
-2x LM324 ic15,ic31 sound
-2x M5205 ic184,ic185 sound
-1x TDA2003 ic14 sound
-1x oscillator 24.000000MHz (close to main)
-1x oscillator 29.821000MHz (close to sound)
-
-ROMs
-
-5x M27C2001 1,2,3,4,5 dumped
-4x maskrom KA,KB,KC,KD not dumped
-
-RAMs:
-
-4x KM62256ALP ic112,ic113,ic168,ic170
-1x SYC6116L ic24
-1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78
-
-PLDs:
-
-1x TPC1020AFN ic116 read protected
-3x GAL20V8A ic120,ic121,ic169 read protected
-3x GAL16V8A ic7,ic72,ic80 read protected
-
-Note:
-
-1x JAMMA edge connector
-2x 10 legs connector
-1x trimmer (volume)
-3x 8x2 switches DIP
-
-*/
-
-// The following is temporary - new code is on the way
-
-static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xd7ff) AM_RAM
- AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
- AM_RANGE(0xdc00, 0xdc00) AM_READ(soundlatch_byte_r)
-ADDRESS_MAP_END
-
-static void m5205_int1( device_t *device )
-{
- cps_state *state = device->machine().driver_data<cps_state>();
-
- msm5205_data_w(device, state->m_sample_buffer1 & 0x0f);
- state->m_sample_buffer1 >>= 4;
- state->m_sample_select1 ^= 1;
- if (state->m_sample_select1 == 0)
- state->m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-}
-
-static void m5205_int2( device_t *device )
-{
- cps_state *state = device->machine().driver_data<cps_state>();
-
- msm5205_data_w(device, state->m_sample_buffer2 & 0x0f);
- state->m_sample_buffer2 >>= 4;
- state->m_sample_select2 ^= 1;
-}
-
-static const msm5205_interface msm5205_interface1 =
-{
- m5205_int1, /* interrupt function */
- MSM5205_S96_4B /* 4KHz 4-bit */
-};
-
-static const msm5205_interface msm5205_interface2 =
-{
- m5205_int2, /* interrupt function */
- MSM5205_S96_4B /* 4KHz 4-bit */
-};
-
-
-static MACHINE_CONFIG_START( knightsb, cps_state )
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2)
- MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
-
- MCFG_CPU_ADD("audiocpu", Z80, 29821000 / 8)
- MCFG_CPU_PROGRAM_MAP(sf2mdt_z80map)
-
- MCFG_MACHINE_START_OVERRIDE(cps_state,common)
-
- /* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
- MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
-
- MCFG_GFXDECODE(cps1)
- MCFG_PALETTE_LENGTH(0xc00)
-
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
-
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
-
- MCFG_YM2151_ADD("2151", 29821000 / 8)
- MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
-
- /* has 2x MSM5205 instead of OKI6295 */
- MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
- MCFG_SOUND_CONFIG(msm5205_interface1)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-
- MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
- MCFG_SOUND_CONFIG(msm5205_interface2)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-MACHINE_CONFIG_END
-
-
-
/***************************************************************************
@@ -7747,29 +7619,6 @@ ROM_START( knightsja )
ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
ROM_END
-/* bootleg */
-/* FIXME - GFX ROMs are wrong, copied from the other version */
-/* ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94 */
-ROM_START( knightsb )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) )
- ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) )
- ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) )
- ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) )
-
- ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg MASKroms, these need dumping so that the format is known */
- ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
- ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
-
- ROM_REGION( 0x40000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
- ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) )
-ROM_END
/* B-Board 91635B-2 */
ROM_START( sf2ce )
@@ -11369,7 +11218,6 @@ GAME( 1991, knights, 0, cps1_10MHz, knights, cps_state, cps1,
GAME( 1991, knightsu, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (USA 911127)", GAME_SUPPORTS_SAVE )
GAME( 1991, knightsj, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 91634B-2)", GAME_SUPPORTS_SAVE )
GAME( 1991, knightsja, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 89625B-1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, knightsb, knights, knightsb, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version
GAME( 1992, sf2ce, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920513)", GAME_SUPPORTS_SAVE ) // "ETC"
GAME( 1992, sf2ceea, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920313)", GAME_SUPPORTS_SAVE ) // "ETC"
GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920313)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index f5e5fd8ae96..20602bb9075 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -45,7 +45,7 @@ Also, it should be using a vblank irq value of 4. This triggers the following bo
- the layer enable and layer mask writes continue at 0x98000c and 0x980020-2
These read/writes are identical to those used by a Knights of the Round bootleg which uses the all sf2mdt sound
-hardware. This set is currently non-working in cps1.c but I will move it here soon.
+hardware. This set is currently non-working.
This also prevents the game from toggling the sprite address at m_cps_a_regs[0], similar to other bootlegs.
Currently the game is working somewhat, but only using the code left over from the original. If anyone wants to
@@ -100,6 +100,14 @@ WRITE8_MEMBER( cps_state::sf2mdt_snd_bankswitch_w )
membank("bank1")->set_entry(data & 0x07);
}
+WRITE8_MEMBER( cps_state::knightsb_snd_bankswitch_w )
+{
+ m_msm_1->set_output_gain(0, (data & 0x20) ? 0.0 : 1.0);
+ m_msm_2->set_output_gain(0, (data & 0x10) ? 0.0 : 1.0);
+
+ membank("bank1")->set_entry(data & 0x0f);
+}
+
static void m5205_int1( device_t *device )
{
cps_state *state = device->machine().driver_data<cps_state>();
@@ -148,6 +156,42 @@ WRITE16_MEMBER(cps_state::kodb_layer_w)
m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
}
+WRITE16_MEMBER(cps_state::knightsb_layer_w)
+{
+ if (offset == 0x05)
+ m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
+ else
+ if (offset == 0x04)
+ m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
+ else
+ if (offset == 0x03)
+ m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
+ else
+ if (offset == 0x01)
+ m_cps_a_regs[0x0c / 2] = data + 0xffc2; /* scroll 1x */
+ else
+ if (offset == 0x02)
+ {
+ m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
+ m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
+ }
+ else
+ if (offset == 0x00)
+ m_cps_a_regs[0x0e / 2] = data; /* scroll 1y - fixes scroll of high scores */
+ else
+ if (offset == 0x06)
+ m_cps_b_regs[m_layer_enable_reg / 2] = data;
+ else
+ if (offset == 0x10)
+ m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
+ else
+ if (offset == 0x11)
+ m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
+ else
+ if (offset == 0x12)
+ m_cps_b_regs[m_layer_mask_reg[3] / 2] = data;
+}
+
WRITE16_MEMBER(cps_state::sf2mdt_layer_w)
{
/* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
@@ -409,6 +453,23 @@ UINT32 cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitm
}
+static ADDRESS_MAP_START( knightsb_map, AS_PROGRAM, 16, cps_state )
+ AM_RANGE(0x000000, 0x3fffff) AM_ROM
+ AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */
+ AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2")//(cps1_in2_r) /* Player 3 controls */
+ AM_RANGE(0x800006, 0x800007) AM_WRITE(cps1_soundlatch_w) /* Sound command */
+ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
+ AM_RANGE(0x800030, 0x800037) AM_WRITENOP //AM_WRITE(cps1_coinctrl_w) only writes bit 15
+ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x800180, 0x800181) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
+ AM_RANGE(0x880000, 0x880001) AM_WRITENOP //?
+ AM_RANGE(0x900000, 0x93ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
+ AM_RANGE(0x980000, 0x98002f) AM_WRITE(knightsb_layer_w)
+ AM_RANGE(0x991000, 0x993fff) AM_WRITENOP // could be bootleg_sprite_ram
+ AM_RANGE(0xff0000, 0xffffff) AM_RAM
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( fcrash_map, AS_PROGRAM, 16, cps_state )
AM_RANGE(0x000000, 0x3fffff) AM_ROM
AM_RANGE(0x800030, 0x800031) AM_WRITE(cps1_coinctrl_w)
@@ -454,6 +515,17 @@ static ADDRESS_MAP_START( sf2mdt_z80map, AS_PROGRAM, 8, cps_state )
AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( knightsb_z80map, AS_PROGRAM, 8, cps_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM
+ AM_RANGE(0xd800, 0xd801) AM_DEVREADWRITE("2151", ym2151_device, read, write)
+ AM_RANGE(0xdc00, 0xdc00) AM_READ(soundlatch_byte_r)
+ AM_RANGE(0xe000, 0xe000) AM_WRITE(knightsb_snd_bankswitch_w)
+ AM_RANGE(0xe400, 0xe400) AM_WRITE(fcrash_msm5205_0_data_w)
+ AM_RANGE(0xe800, 0xe800) AM_WRITE(fcrash_msm5205_1_data_w)
+ADDRESS_MAP_END
+
#define CPS1_COINAGE_1 \
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
@@ -968,6 +1040,29 @@ MACHINE_START_MEMBER(cps_state, sf2mdt)
save_item(NAME(m_sample_select2));
}
+MACHINE_START_MEMBER(cps_state, knightsb)
+{
+ UINT8 *ROM = memregion("soundcpu")->base();
+
+ membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000);
+
+ m_maincpu = machine().device<cpu_device>("maincpu");
+ m_audiocpu = machine().device<cpu_device>("soundcpu");
+ m_msm_1 = machine().device<msm5205_device>("msm1");
+ m_msm_2 = machine().device<msm5205_device>("msm2");
+ m_layer_enable_reg = 0x20;
+ m_layer_mask_reg[0] = 0x28;
+ m_layer_mask_reg[1] = 0x2a;
+ m_layer_mask_reg[2] = 0x2c;
+ m_layer_mask_reg[3] = 0x2e;
+ m_layer_scroll1x_offset = 0;
+ m_layer_scroll2x_offset = 0;
+ m_layer_scroll3x_offset = 0;
+ m_sprite_base = 0x1000;
+ m_sprite_list_end_marker = 0xffff;
+ m_sprite_x_offset = 0;
+}
+
MACHINE_RESET_MEMBER(cps_state,fcrash)
{
m_sample_buffer1 = 0;
@@ -1118,6 +1213,51 @@ static MACHINE_CONFIG_START( sf2mdt, cps_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( knightsb, cps_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 24000000 / 2)
+ MCFG_CPU_PROGRAM_MAP(knightsb_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) // to get past ETC screen
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, ganbare_interrupt, "screen", 0, 1) // to activate 98xxxx writes
+
+ MCFG_CPU_ADD("soundcpu", Z80, 29821000 / 8)
+ MCFG_CPU_PROGRAM_MAP(knightsb_z80map)
+
+ MCFG_MACHINE_START_OVERRIDE(cps_state, knightsb)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
+ MCFG_SCREEN_VBLANK_DRIVER(cps_state, screen_eof_cps1)
+
+ MCFG_GFXDECODE(cps1)
+ MCFG_PALETTE_LENGTH(0xc00)
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_YM2151_ADD("2151", 29821000 / 8)
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
+ MCFG_SOUND_ROUTE(0, "mono", 0.35)
+ MCFG_SOUND_ROUTE(1, "mono", 0.35)
+
+ /* has 2x MSM5205 instead of OKI6295 */
+ MCFG_SOUND_ADD("msm1", MSM5205, 24000000/64) /* ? */
+ MCFG_SOUND_CONFIG(msm5205_interface1)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, 24000000/64) /* ? */
+ MCFG_SOUND_CONFIG(msm5205_interface2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
ROM_START( fcrash )
ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */
@@ -1216,6 +1356,70 @@ ROM_START( kodb )
ROM_LOAD( "2.ic19", 0x00000, 0x40000, CRC(a2db1575) SHA1(1a4a29e4b045af50700adf1665697feab12cc234) )
ROM_END
+/*
+
+CPU:
+
+1x MC68000P12 ic65 main
+1x Z0840006PSC ic1 sound
+1x YM2151 ic29 sound
+1x YM3012 ic30 sound
+2x LM324 ic15,ic31 sound
+2x M5205 ic184,ic185 sound
+1x TDA2003 ic14 sound
+1x oscillator 24.000000MHz (close to main)
+1x oscillator 29.821000MHz (close to sound)
+
+ROMs
+
+5x M27C2001 1,2,3,4,5 dumped
+4x maskrom KA,KB,KC,KD not dumped
+
+RAMs:
+
+4x KM62256ALP ic112,ic113,ic168,ic170
+1x SYC6116L ic24
+1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78
+
+PLDs:
+
+1x TPC1020AFN ic116 read protected
+3x GAL20V8A ic120,ic121,ic169 read protected
+3x GAL16V8A ic7,ic72,ic80 read protected
+
+Note:
+
+1x JAMMA edge connector
+2x 10 legs connector
+1x trimmer (volume)
+3x 8x2 switches DIP
+
+*/
+/* bootleg */
+/* FIXME - GFX ROMs are wrong, copied from the other version */
+/* ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94 */
+ROM_START( knightsb )
+ ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) )
+ ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) )
+ ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) )
+ ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) )
+
+ ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg MASKroms, these need dumping so that the format is known */
+ ROMX_LOAD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x50000, "soundcpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) )
+ ROM_RELOAD( 0x10000, 0x40000 )
+ROM_END
+
ROM_START( cawingbl )
ROM_REGION( 0x400000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "caw2.bin", 0x00000, 0x80000, CRC(8125d3f0) SHA1(a0e48c326c6164ca189c9372f5c38a7c103772c1) )
@@ -1467,6 +1671,7 @@ DRIVER_INIT_MEMBER(cps_state, sf2mdta)
GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE )
GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 910731 "ETC"
+GAME( 1991, knightsb, knights, knightsb, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version
GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE )
GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE )
GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index ed032b17d86..f77f65f2add 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -251,14 +251,17 @@ public:
DECLARE_MACHINE_RESET(fcrash);
DECLARE_MACHINE_START(kodb);
DECLARE_MACHINE_START(cawingbl);
+ DECLARE_MACHINE_START(knightsb);
DECLARE_MACHINE_START(sf2mdt);
DECLARE_WRITE16_MEMBER(kodb_layer_w);
DECLARE_WRITE16_MEMBER(cawingbl_soundlatch_w);
+ DECLARE_WRITE16_MEMBER(knightsb_layer_w);
DECLARE_WRITE16_MEMBER(sf2mdt_layer_w);
DECLARE_WRITE16_MEMBER(sf2mdta_layer_w);
DECLARE_WRITE16_MEMBER(fcrash_soundlatch_w);
DECLARE_WRITE8_MEMBER(fcrash_snd_bankswitch_w);
DECLARE_WRITE8_MEMBER(sf2mdt_snd_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(knightsb_snd_bankswitch_w);
DECLARE_WRITE8_MEMBER(fcrash_msm5205_0_data_w);
DECLARE_WRITE8_MEMBER(fcrash_msm5205_1_data_w);
UINT32 screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -307,5 +310,7 @@ ADDRESS_MAP_EXTERN( qsound_sub_map, 8 );
GFXDECODE_EXTERN( cps1 );
+INPUT_PORTS_EXTERN( knights );
+
#endif