diff options
-rw-r--r-- | src/mame/drivers/system16.cpp | 181 | ||||
-rw-r--r-- | src/mame/includes/system16.h | 1 |
2 files changed, 101 insertions, 81 deletions
diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index 264921fbf39..3291f592b37 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -53,7 +53,7 @@ Passing Shot (2 sets) Wonderboy 3 - System 18 (more commplex tilemaps) + System 18 (more complex tilemaps) ---------------------------------- Alien Storm @@ -100,12 +100,6 @@ #define SHADOW_COLORS_MULTIPLIER 3 -INTERRUPT_GEN_MEMBER(segas1x_bootleg_state::sys16_interrupt) -{ - device.execute().set_input_line(4, HOLD_LINE); /* Interrupt vector 4, used by VBlank */ -} - - /***************************************************************************/ WRITE16_MEMBER(segas1x_bootleg_state::sound_command_nmi_w) @@ -551,7 +545,7 @@ WRITE16_MEMBER(segas1x_bootleg_state::s16bl_fgscrollx_bank_w) scroll += 0x200; set_tile_bank(bank); - scroll += 3; // so that the character portraits in attract mode are properly aligned (alighnment on character select no longer matches original tho?) + scroll += 3; // so that the character portraits in attract mode are properly aligned (alignment on character select no longer matches original tho?) m_fg_scrollx = -scroll; } @@ -1963,35 +1957,11 @@ GFXDECODE_END /************************************* * - * Machine driver + * Sound fragments * *************************************/ -/* System 16A/B Bootlegs */ -static MACHINE_CONFIG_START( system16_base, segas1x_bootleg_state ) - - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M68000, 10000000) - MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, sys16_interrupt) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 36*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) - MCFG_SCREEN_PALETTE("palette") - - MCFG_GFXDECODE_ADD("gfxdecode", "palette", sys16) - MCFG_PALETTE_ADD("palette", 2048*SHADOW_COLORS_MULTIPLIER) - - MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) - - MCFG_GENERIC_LATCH_8_ADD("soundlatch") -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( system16, system16_base ) +static MACHINE_CONFIG_FRAGMENT( z80_ym2151 ) MCFG_CPU_ADD("soundcpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(sound_map) @@ -2011,23 +1981,26 @@ WRITE_LINE_MEMBER(segas1x_bootleg_state::sound_cause_nmi) m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -static MACHINE_CONFIG_DERIVED( system16_7759, system16 ) - - /* basic machine hardware */ +static MACHINE_CONFIG_FRAGMENT( z80_ym2151_upd7759 ) - MCFG_CPU_MODIFY("soundcpu") + MCFG_CPU_ADD("soundcpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(sound_7759_map) MCFG_CPU_IO_MAP(sound_7759_io_map) /* sound hardware */ + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_YM2151_ADD("ymsnd", 4000000) + MCFG_SOUND_ROUTE(0, "lspeaker", 0.32) + MCFG_SOUND_ROUTE(1, "rspeaker", 0.32) + MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK) MCFG_UPD7759_DRQ_CALLBACK(WRITELINE(segas1x_bootleg_state,sound_cause_nmi)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48) MACHINE_CONFIG_END - -static MACHINE_CONFIG_FRAGMENT( system16_datsu_sound ) +static MACHINE_CONFIG_FRAGMENT( datsu_ym2151_msm5205 ) /* TODO: - other games might use this sound configuration - speaker is likely to be mono for the bootlegs, not stereo. @@ -2039,8 +2012,6 @@ static MACHINE_CONFIG_FRAGMENT( system16_datsu_sound ) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_GENERIC_LATCH_8_ADD("soundlatch") - MCFG_YM2151_ADD("ymsnd", 4000000) MCFG_SOUND_ROUTE(0, "lspeaker", 0.32) MCFG_SOUND_ROUTE(1, "rspeaker", 0.32) @@ -2052,19 +2023,7 @@ static MACHINE_CONFIG_FRAGMENT( system16_datsu_sound ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( shinobi_datsu, system16_base ) - - /* basic machine hardware */ - MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_PROGRAM_MAP(shinobib_map) - - MCFG_BOOTLEG_SYS16A_SPRITES_ADD("sprites") - MCFG_BOOTLEG_SYS16A_SPRITES_XORIGIN(189-117) - - MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi ) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) - +static MACHINE_CONFIG_FRAGMENT( datsu_2x_ym2203 ) MCFG_CPU_ADD("soundcpu", Z80, 4000000) MCFG_CPU_PERIODIC_INT_DRIVER(segas1x_bootleg_state, nmi_line_pulse, 3000) // or from the YM2203? MCFG_CPU_PROGRAM_MAP(shinobi_datsu_sound_map) @@ -2087,11 +2046,56 @@ static MACHINE_CONFIG_DERIVED( shinobi_datsu, system16_base ) MCFG_SOUND_ROUTE(1, "mono", 0.50) MCFG_SOUND_ROUTE(2, "mono", 0.50) MCFG_SOUND_ROUTE(3, "mono", 0.80) +MACHINE_CONFIG_END +/************************************* + * + * Machine driver + * + *************************************/ + +/* System 16A/B Bootlegs */ +static MACHINE_CONFIG_START( system16_base, segas1x_bootleg_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, 10000000) + MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(40*8, 36*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1) + MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_system16) + MCFG_SCREEN_PALETTE("palette") + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", sys16) + MCFG_PALETTE_ADD("palette", 2048*SHADOW_COLORS_MULTIPLIER) + + MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( shinobi_datsu, system16_base ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(shinobib_map) + + MCFG_BOOTLEG_SYS16A_SPRITES_ADD("sprites") + MCFG_BOOTLEG_SYS16A_SPRITES_XORIGIN(189-117) + + MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_shinobi ) + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + + MCFG_FRAGMENT_ADD(datsu_2x_ym2203) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 ) +static MACHINE_CONFIG_DERIVED( passshtb, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2104,10 +2108,12 @@ static MACHINE_CONFIG_DERIVED( passshtb, system16_7759 ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + + MCFG_FRAGMENT_ADD(z80_ym2151_upd7759) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( passsht4b, system16_7759 ) +static MACHINE_CONFIG_DERIVED( passsht4b, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2121,9 +2127,11 @@ static MACHINE_CONFIG_DERIVED( passsht4b, system16_7759 ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_passsht ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg_passht4b) + + MCFG_FRAGMENT_ADD(datsu_2x_ym2203) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( wb3bb, system16 ) +static MACHINE_CONFIG_DERIVED( wb3bb, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2137,6 +2145,8 @@ static MACHINE_CONFIG_DERIVED( wb3bb, system16 ) MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state, s16a_bootleg_wb3bl ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(segas1x_bootleg_state, screen_update_s16a_bootleg) + + MCFG_FRAGMENT_ADD(z80_ym2151) MACHINE_CONFIG_END @@ -2146,7 +2156,7 @@ static MACHINE_CONFIG_START( goldnaxeb1, segas1x_bootleg_state ) MCFG_CPU_ADD("maincpu", M68000, 10000000) MCFG_CPU_PROGRAM_MAP(goldnaxeb1_map) MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, sys16_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", segas1x_bootleg_state, irq4_line_hold) /* video hardware */ @@ -2192,35 +2202,28 @@ static MACHINE_CONFIG_DERIVED( bayrouteb2, goldnaxeb1 ) MCFG_CPU_PROGRAM_MAP(bayrouteb2_map) MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) - MCFG_FRAGMENT_ADD(system16_datsu_sound) + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + + MCFG_FRAGMENT_ADD(datsu_ym2151_msm5205) MCFG_DEVICE_MODIFY("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-107) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( tturfbl, system16_7759 ) +static MACHINE_CONFIG_DERIVED( tturfbl, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(tturfbl_map) - MCFG_CPU_MODIFY("soundcpu") - MCFG_CPU_PROGRAM_MAP(tturfbl_sound_map) - MCFG_CPU_IO_MAP(tturfbl_sound_io_map) - - MCFG_DEVICE_REMOVE("7759") - MCFG_SOUND_ADD("5205", MSM5205, 220000) - MCFG_MSM5205_VCLK_CB(WRITELINE(segas1x_bootleg_state, tturfbl_msm5205_callback)) - MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80) + MCFG_FRAGMENT_ADD(datsu_ym2151_msm5205) MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-107) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( dduxbl, system16 ) +static MACHINE_CONFIG_DERIVED( dduxbl, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2228,9 +2231,11 @@ static MACHINE_CONFIG_DERIVED( dduxbl, system16 ) MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-112) + + MCFG_FRAGMENT_ADD(z80_ym2151) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( eswatbl, system16_7759 ) +static MACHINE_CONFIG_DERIVED( eswatbl, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2238,11 +2243,13 @@ static MACHINE_CONFIG_DERIVED( eswatbl, system16_7759 ) MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-124) + + MCFG_FRAGMENT_ADD(z80_ym2151_upd7759) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( tetrisbl, system16 ) +static MACHINE_CONFIG_DERIVED( tetrisbl, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2250,10 +2257,22 @@ static MACHINE_CONFIG_DERIVED( tetrisbl, system16 ) MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-112) + + MCFG_FRAGMENT_ADD(z80_ym2151) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( altbeastbl, system16_base ) + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(tetrisbl_map) + + MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") + MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-112) + + MCFG_FRAGMENT_ADD(datsu_2x_ym2203) +MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( beautyb, system16 ) +static MACHINE_CONFIG_DERIVED( beautyb, system16_base ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -2261,6 +2280,8 @@ static MACHINE_CONFIG_DERIVED( beautyb, system16 ) MCFG_BOOTLEG_SYS16B_SPRITES_ADD("sprites") MCFG_BOOTLEG_SYS16B_SPRITES_XORIGIN(189-112) + + MCFG_FRAGMENT_ADD(z80_ym2151) MACHINE_CONFIG_END @@ -3254,7 +3275,7 @@ ROM_END Michael Jackson's Mooonwalker bootleg - Complete Dump -This romset comes from a bootleg pcb.This is the complement of which lacks in the existing set (mwalkbl) +This romset comes from a bootleg pcb. This is the complement of which lacks in the existing set (mwalkbl) Hardware info: Main cpu 68000P10 Sound cpu Z80A @@ -3265,7 +3286,7 @@ mwb5snd - sound program mwb10snd to mwb15snd - adpcm samples mwb16obj to mwb31obj - sprites/objects Rest of eproms (main program and tiles/bg) are identical of existing set and original set respectively. -Note - sound section was been heavily modified: sound program to use only samples and some musics are cut (not present).Sprite eproms are splitted from original set. +Note - sound section was been heavily modified: sound program to use only samples and some musics are cut (not present). Sprite eproms are split from original set. Eproms are 27512, 27010 */ @@ -3779,7 +3800,7 @@ DRIVER_INIT_MEMBER(segas1x_bootleg_state,astormbl) GAME( 1987, shinobld, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1987, shinoblda, shinobi, shinobi_datsu, shinobi, segas1x_bootleg_state, shinobl, ROT0, "bootleg (Datsu)", "Shinobi (Datsu bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1988, passshtb, passsht, passshtb, passsht, segas1x_bootleg_state, passsht, ROT270, "bootleg", "Passing Shot (2 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1988, passht4b, passsht, passsht4b, passht4b, segas1x_bootleg_state, shinobl, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1988, passht4b, passsht, passsht4b, passht4b, segas1x_bootleg_state, shinobl, ROT270, "bootleg", "Passing Shot (4 Players) (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1988, wb3bbl, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) GAME( 1988, wb3bble, wb3, wb3bb, wb3b, segas1x_bootleg_state, wb3bbl, ROT0, "bootleg", "Wonder Boy III - Monster Lair (encrypted bootleg)", MACHINE_NOT_WORKING ) @@ -3790,8 +3811,8 @@ GAME( 1989, goldnaxeb1, goldnaxe, goldnaxeb1, goldnaxe, segas1x_bootleg_state GAME( 1989, goldnaxeb2, goldnaxe, goldnaxeb2, goldnaxe, segas1x_bootleg_state, goldnaxeb2, ROT0, "bootleg", "Golden Axe (bootleg)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) GAME( 1989, tturfbl, tturf, tturfbl, tturf, segas1x_bootleg_state, tturfbl, ROT0, "bootleg (Datsu)", "Tough Turf (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1989, dduxbl, ddux, dduxbl, ddux, segas1x_bootleg_state, dduxbl, ROT0, "bootleg (Datsu)", "Dynamite Dux (Datsu bootleg)", MACHINE_NOT_WORKING ) -GAME( 1988, altbeastbl, altbeast, tetrisbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Altered Beast (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) -GAME( 1988, mutantwarr, altbeast, tetrisbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Mutant Warrior (Altered Beast - Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND ) +GAME( 1988, altbeastbl, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Altered Beast (Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1988, mutantwarr, altbeast, altbeastbl, tetris, segas1x_bootleg_state, altbeastbl, ROT0, "bootleg (Datsu)", "Mutant Warrior (Altered Beast - Datsu bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1989, eswatbl, eswat, eswatbl, eswat, segas1x_bootleg_state, eswatbl, ROT0, "bootleg", "E-Swat - Cyber Police (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1988, tetrisbl, tetris, tetrisbl, tetris, segas1x_bootleg_state, dduxbl, ROT0, "bootleg", "Tetris (bootleg)", 0 ) diff --git a/src/mame/includes/system16.h b/src/mame/includes/system16.h index cf4bde12f5f..db4ccb86b57 100644 --- a/src/mame/includes/system16.h +++ b/src/mame/includes/system16.h @@ -212,7 +212,6 @@ public: UINT32 screen_update_system18old(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_s16a_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_s16a_bootleg_passht4b(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(sys16_interrupt); void setup_system16_bootleg_spritebanking( ); void update_page( ); void set_tile_bank( int data ); |