diff --git a/src/mame/drivers/seta.c b/src/mame/drivers/seta.c index d1f43f29c63..afb501b296d 100644 --- a/src/mame/drivers/seta.c +++ b/src/mame/drivers/seta.c @@ -2161,8 +2161,7 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( drgnunit_readmem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM ) // ROM - AM_RANGE(0x080000, 0x0bffff) AM_READ(MRA16_RAM ) // ROM (qzkklgy2) + AM_RANGE(0x000000, 0x0bffff) AM_READ(MRA16_ROM ) // ROM AM_RANGE(0xf00000, 0xf0ffff) AM_READ(MRA16_RAM ) // RAM (qzkklogy) AM_RANGE(0xffc000, 0xffffff) AM_READ(MRA16_RAM ) // RAM (drgnunit,stg) AM_RANGE(0x100000, 0x103fff) AM_READ(seta_sound_word_r ) // Sound @@ -2180,8 +2179,7 @@ static ADDRESS_MAP_START( drgnunit_readmem, ADDRESS_SPACE_PROGRAM, 16 ) ADDRESS_MAP_END static ADDRESS_MAP_START( drgnunit_writemem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM ) // ROM - AM_RANGE(0x080000, 0x0bffff) AM_WRITE(MWA16_RAM ) // ROM (qzkklgy2) + AM_RANGE(0x000000, 0x0bffff) AM_WRITE(MWA16_ROM ) // ROM AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(MWA16_RAM ) // RAM (qzkklogy) AM_RANGE(0xffc000, 0xffffff) AM_WRITE(MWA16_RAM ) // RAM (drgnunit,stg) AM_RANGE(0x100000, 0x103fff) AM_WRITE(seta_sound_word_w ) // Sound @@ -4923,7 +4921,7 @@ static INPUT_PORTS_START( qzkklgy2 ) PORT_DIPNAME( 0x0004, 0x0004, "Highlight Right Answer (Cheat)") PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, "Unknown 1-3" ) + PORT_DIPNAME( 0x0008, 0x0008, "Skip Real DAT Rom Check?" ) // 'ON' it will pass DAT rom even if it isn't mapped(!) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0010, 0x0010, "Unknown 1-4" ) @@ -8240,7 +8238,7 @@ ROM_END ROM_START( drgnunit ) - ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 Code */ + ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "prg-e.bin", 0x000000, 0x020000, CRC(728447df) SHA1(8bdc52a4cc5f36794a47f963545bdaa26c9acd6b) ) ROM_LOAD16_BYTE( "prg-o.bin", 0x000001, 0x020000, CRC(b2f58ecf) SHA1(5198e75b22bab630b458797988f2e443c601351f) ) @@ -8376,7 +8374,7 @@ ROM_START( rezont ) ROM_END ROM_START( stg ) - ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 Code */ + ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "att01003.u27", 0x000000, 0x020000, CRC(7a640a93) SHA1(28c54eca9502d06ca55c2db91bfe7d149af006ed) ) ROM_LOAD16_BYTE( "att01001.u9", 0x000001, 0x020000, CRC(4fa88ad3) SHA1(55e0e689758511cdf514a633ffe3d7729e281b52) ) ROM_LOAD16_BYTE( "att01004.u33", 0x040000, 0x020000, CRC(bbd45ca1) SHA1(badb11faf5779e8444dd95eb08a94fbf9f73cc2c) ) // 1xxxxxxxxxxxxxxxx = 0xFF @@ -8491,7 +8489,7 @@ ROM_START( blockcar ) ROM_END ROM_START( qzkklogy ) - ROM_REGION( 0x080000, REGION_CPU1, 0 ) /* 68000 Code */ + ROM_REGION( 0x0c0000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_LOAD16_BYTE( "3.u27", 0x000000, 0x020000, CRC(b8c27cde) SHA1(4c36076801b6c915888b925c1e37d772bab1bb02) ) ROM_LOAD16_BYTE( "1.u9", 0x000001, 0x020000, CRC(ce01cd54) SHA1(ef91aecdf7b5586a6870ff237372d65f85cd4cd3) ) ROM_LOAD16_BYTE( "4.u33", 0x040000, 0x020000, CRC(4f5c554c) SHA1(0a10cefdf2dd876e6cb78023c3c15af24ba3c39a) ) diff --git a/src/mame/drivers/tehkanwc.c b/src/mame/drivers/tehkanwc.c index 3368d1a7c1b..453ee090390 100644 --- a/src/mame/drivers/tehkanwc.c +++ b/src/mame/drivers/tehkanwc.c @@ -1,3 +1,19 @@ +/* Notes: DJH 04 Jan 2008 + + fixed gridiron079gre (shared access to spriteram was broken) + + This driver is antiquated.. the LED drawing in the video file is one giant + hack, we should change it to use the artwork system, not hack it to draw + characters from the gfx roms onscreen.. + + The inputs also seem to be a hacky mess (although there was reportedly a + hardware joystick hack for tehkanwc via plugin logic subboard, is this + attempting to simulate it? + + Also there is a hack to reset the sound CPU... + +*/ + /*************************************************************************** Tehkan World Cup - (c) Tehkan 1985 @@ -100,18 +116,6 @@ extern VIDEO_START( tehkanwc ); extern VIDEO_UPDATE( tehkanwc ); -static UINT8 *shared_ram; - -static READ8_HANDLER( shared_r ) -{ - return shared_ram[offset]; -} - -static WRITE8_HANDLER( shared_w ) -{ - shared_ram[offset] = data; -} - static WRITE8_HANDLER( sub_cpu_halt_w ) { if (data) @@ -230,202 +234,61 @@ static void tehkanwc_adpcm_int (int data) -static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_READ(MRA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_READ(shared_r) - AM_RANGE(0xd000, 0xd3ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd400, 0xd7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd800, 0xddff) AM_READ(MRA8_RAM) - AM_RANGE(0xde00, 0xdfff) AM_READ(MRA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xe800, 0xebff) AM_READ(MRA8_RAM) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_READ(MRA8_RAM) - AM_RANGE(0xec02, 0xec02) AM_READ(MRA8_RAM) - AM_RANGE(0xf800, 0xf801) AM_READ(tehkanwc_track_0_r) /* track 0 x/y */ - AM_RANGE(0xf802, 0xf802) AM_READ(input_port_9_r) /* Coin & Start */ - AM_RANGE(0xf803, 0xf803) AM_READ(input_port_5_r) /* joy0 - button */ - AM_RANGE(0xf810, 0xf811) AM_READ(tehkanwc_track_1_r) /* track 1 x/y */ - AM_RANGE(0xf813, 0xf813) AM_READ(input_port_8_r) /* joy1 - button */ - AM_RANGE(0xf820, 0xf820) AM_READ(soundlatch2_r) /* answer from the sound CPU */ - AM_RANGE(0xf840, 0xf840) AM_READ(input_port_0_r) /* DSW1 */ - AM_RANGE(0xf850, 0xf850) AM_READ(input_port_1_r) /* DSW2 */ - AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) - AM_RANGE(0xf870, 0xf870) AM_READ(input_port_2_r) /* DSW3 */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_WRITE(shared_w) AM_BASE(&shared_ram) - AM_RANGE(0xd000, 0xd3ff) AM_WRITE(tehkanwc_videoram_w) AM_BASE(&videoram) - AM_RANGE(0xd400, 0xd7ff) AM_WRITE(tehkanwc_colorram_w) AM_BASE(&colorram) - AM_RANGE(0xd800, 0xddff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) - AM_RANGE(0xde00, 0xdfff) AM_WRITE(MWA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(tehkanwc_videoram2_w) AM_BASE(&tehkanwc_videoram2) - AM_RANGE(0xe800, 0xebff) AM_WRITE(spriteram_w) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_WRITE(tehkanwc_scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_WRITE(tehkanwc_scroll_y_w) - AM_RANGE(0xf800, 0xf801) AM_WRITE(tehkanwc_track_0_reset_w) - AM_RANGE(0xf802, 0xf802) AM_WRITE(gridiron_led0_w) - AM_RANGE(0xf810, 0xf811) AM_WRITE(tehkanwc_track_1_reset_w) - AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w) - AM_RANGE(0xf820, 0xf820) AM_WRITE(sound_command_w) - AM_RANGE(0xf840, 0xf840) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xf850, 0xf850) AM_WRITE(MWA8_NOP) /* ?? writes 0x00 or 0xff */ - AM_RANGE(0xf860, 0xf860) AM_WRITE(tehkanwc_flipscreen_x_w) /* Check if it's really X */ - AM_RANGE(0xf870, 0xf870) AM_WRITE(tehkanwc_flipscreen_y_w) /* Check if it's really Y */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( gridiron_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_READ(MRA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_READ(shared_r) - AM_RANGE(0xd000, 0xd3ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd400, 0xd7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd800, 0xddff) AM_READ(MRA8_RAM) - AM_RANGE(0xde00, 0xdfff) AM_READ(MRA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xe800, 0xebff) AM_READ(MRA8_RAM) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_READ(MRA8_RAM) - AM_RANGE(0xec02, 0xec02) AM_READ(MRA8_RAM) - AM_RANGE(0xf800, 0xf801) AM_READ(tehkanwc_track_0_r) /* track 0 x/y */ - AM_RANGE(0xf802, 0xf802) AM_READ(input_port_9_r) /* Coin & Start */ - AM_RANGE(0xf803, 0xf803) AM_READ(input_port_5_r) /* joy0 - button */ - AM_RANGE(0xf810, 0xf811) AM_READ(tehkanwc_track_1_r) /* track 1 x/y */ - AM_RANGE(0xf813, 0xf813) AM_READ(input_port_8_r) /* joy1 - button */ - AM_RANGE(0xf820, 0xf820) AM_READ(soundlatch2_r) /* answer from the sound CPU */ - AM_RANGE(0xf840, 0xf840) AM_READ(input_port_0_r) /* DSW1 */ - AM_RANGE(0xf850, 0xf850) AM_READ(input_port_1_r) /* DSW2 */ - AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) - AM_RANGE(0xf870, 0xf870) AM_READ(MRA8_NOP) /* ?? read in the IRQ handler */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( gridiron_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_WRITE(shared_w) AM_BASE(&shared_ram) - AM_RANGE(0xd000, 0xd3ff) AM_WRITE(tehkanwc_videoram_w) AM_BASE(&videoram) - AM_RANGE(0xd400, 0xd7ff) AM_WRITE(tehkanwc_colorram_w) AM_BASE(&colorram) - AM_RANGE(0xd800, 0xddff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) - AM_RANGE(0xde00, 0xdfff) AM_WRITE(MWA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(tehkanwc_videoram2_w) AM_BASE(&tehkanwc_videoram2) - AM_RANGE(0xe800, 0xebff) AM_WRITE(spriteram_w) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_WRITE(tehkanwc_scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_WRITE(tehkanwc_scroll_y_w) - AM_RANGE(0xf800, 0xf801) AM_WRITE(tehkanwc_track_0_reset_w) - AM_RANGE(0xf802, 0xf802) AM_WRITE(gridiron_led0_w) - AM_RANGE(0xf810, 0xf811) AM_WRITE(tehkanwc_track_1_reset_w) - AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w) - AM_RANGE(0xf820, 0xf820) AM_WRITE(sound_command_w) - AM_RANGE(0xf840, 0xf840) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xf850, 0xf850) AM_WRITE(MWA8_NOP) /* ?? writes 0x00 or 0xff */ - AM_RANGE(0xf860, 0xf860) AM_WRITE(tehkanwc_flipscreen_x_w) /* Check if it's really X */ - AM_RANGE(0xf870, 0xf870) AM_WRITE(tehkanwc_flipscreen_y_w) /* Check if it's really Y */ -ADDRESS_MAP_END - -static ADDRESS_MAP_START( teedoff_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_READ(MRA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_READ(shared_r) - AM_RANGE(0xd000, 0xd3ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd400, 0xd7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd800, 0xddff) AM_READ(MRA8_RAM) - AM_RANGE(0xde00, 0xdfff) AM_READ(MRA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xe800, 0xebff) AM_READ(MRA8_RAM) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_READ(MRA8_RAM) - AM_RANGE(0xec02, 0xec02) AM_READ(MRA8_RAM) - AM_RANGE(0xf800, 0xf801) AM_READ(tehkanwc_track_0_r) /* track 0 x/y */ - AM_RANGE(0xf802, 0xf802) AM_READ(input_port_9_r) /* Coin */ +static ADDRESS_MAP_START( main_mem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xbfff) AM_ROM + AM_RANGE(0xc000, 0xc7ff) AM_RAM + AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE(1) + AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE(2) AM_WRITE(tehkanwc_videoram_w) AM_BASE(&videoram) + AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE(3) AM_WRITE(tehkanwc_colorram_w) AM_BASE(&colorram) + AM_RANGE(0xd800, 0xddff) AM_RAM AM_SHARE(4) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) + AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE(5) /* unused part of the palette RAM, I think? Gridiron uses it */ + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE(6) AM_WRITE(tehkanwc_videoram2_w) AM_BASE(&tehkanwc_videoram2) + AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE(7) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprites */ + AM_RANGE(0xec00, 0xec01) AM_RAM AM_WRITE(tehkanwc_scroll_x_w) + AM_RANGE(0xec02, 0xec02) AM_RAM AM_WRITE(tehkanwc_scroll_y_w) + AM_RANGE(0xf800, 0xf801) AM_READWRITE(tehkanwc_track_0_r, tehkanwc_track_0_reset_w) /* track 0 x/y */ + AM_RANGE(0xf802, 0xf802) AM_READWRITE(input_port_9_r, gridiron_led0_w) /* Coin & Start */ AM_RANGE(0xf803, 0xf803) AM_READ(input_port_5_r) /* joy0 - button */ AM_RANGE(0xf806, 0xf806) AM_READ(input_port_9_r) /* Start */ - AM_RANGE(0xf810, 0xf811) AM_READ(tehkanwc_track_1_r) /* track 1 x/y */ - AM_RANGE(0xf813, 0xf813) AM_READ(input_port_8_r) /* joy1 - button */ - AM_RANGE(0xf820, 0xf820) AM_READ(soundlatch2_r) /* answer from the sound CPU */ - AM_RANGE(0xf840, 0xf840) AM_READ(input_port_0_r) /* DSW1 */ - AM_RANGE(0xf850, 0xf850) AM_READ(input_port_1_r) /* DSW2 */ - AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( teedoff_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xbfff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_WRITE(shared_w) AM_BASE(&shared_ram) - AM_RANGE(0xd000, 0xd3ff) AM_WRITE(tehkanwc_videoram_w) AM_BASE(&videoram) - AM_RANGE(0xd400, 0xd7ff) AM_WRITE(tehkanwc_colorram_w) AM_BASE(&colorram) - AM_RANGE(0xd800, 0xddff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) - AM_RANGE(0xde00, 0xdfff) AM_WRITE(MWA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(tehkanwc_videoram2_w) AM_BASE(&tehkanwc_videoram2) - AM_RANGE(0xe800, 0xebff) AM_WRITE(spriteram_w) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_WRITE(tehkanwc_scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_WRITE(tehkanwc_scroll_y_w) - AM_RANGE(0xf800, 0xf801) AM_WRITE(tehkanwc_track_0_reset_w) - AM_RANGE(0xf802, 0xf802) AM_WRITE(gridiron_led0_w) - AM_RANGE(0xf810, 0xf811) AM_WRITE(tehkanwc_track_1_reset_w) + AM_RANGE(0xf810, 0xf811) AM_READWRITE(tehkanwc_track_1_r, tehkanwc_track_1_reset_w) /* track 1 x/y */ AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w) - AM_RANGE(0xf820, 0xf820) AM_WRITE(sound_command_w) - AM_RANGE(0xf840, 0xf840) AM_WRITE(sub_cpu_halt_w) - AM_RANGE(0xf850, 0xf850) AM_WRITE(MWA8_NOP) /* ?? Same value as in 0xf840 */ - AM_RANGE(0xf860, 0xf860) AM_WRITE(tehkanwc_flipscreen_x_w) /* Check if it's really X */ - AM_RANGE(0xf870, 0xf870) AM_WRITE(tehkanwc_flipscreen_y_w) /* Check if it's really Y */ + AM_RANGE(0xf813, 0xf813) AM_READ(input_port_8_r) /* joy1 - button */ + AM_RANGE(0xf820, 0xf820) AM_READWRITE(soundlatch2_r, sound_command_w) /* answer from the sound CPU */ + AM_RANGE(0xf840, 0xf840) AM_READWRITE(input_port_0_r, sub_cpu_halt_w) /* DSW1 */ + AM_RANGE(0xf850, 0xf850) AM_READWRITE(input_port_1_r, MWA8_NOP) /* DSW2, ?? writes 0x00 or 0xff */ + AM_RANGE(0xf860, 0xf860) AM_READWRITE(watchdog_reset_r, tehkanwc_flipscreen_x_w) + AM_RANGE(0xf870, 0xf870) AM_READWRITE(input_port_2_r, tehkanwc_flipscreen_y_w) /* DSW3 */ ADDRESS_MAP_END -static ADDRESS_MAP_START( readmem_sub, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) - AM_RANGE(0x8000, 0xc7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_READ(shared_r) - AM_RANGE(0xd000, 0xd3ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd400, 0xd7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xd800, 0xddff) AM_READ(MRA8_RAM) - AM_RANGE(0xde00, 0xdfff) AM_READ(MRA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_READ(MRA8_RAM) - AM_RANGE(0xe800, 0xebff) AM_READ(MRA8_RAM) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_READ(MRA8_RAM) - AM_RANGE(0xec02, 0xec02) AM_READ(MRA8_RAM) +static ADDRESS_MAP_START( sub_mem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0xc7ff) AM_RAM + AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE(1) + AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_SHARE(2) AM_WRITE(tehkanwc_videoram_w) + AM_RANGE(0xd400, 0xd7ff) AM_RAM AM_SHARE(3) AM_WRITE(tehkanwc_colorram_w) + AM_RANGE(0xd800, 0xddff) AM_RAM AM_SHARE(4) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) + AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE(5) /* unused part of the palette RAM, I think? Gridiron uses it */ + AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE(6) AM_WRITE(tehkanwc_videoram2_w) + AM_RANGE(0xe800, 0xebff) AM_RAM AM_SHARE(7) /* sprites */ + AM_RANGE(0xec00, 0xec01) AM_READ(MRA8_RAM) AM_WRITE(tehkanwc_scroll_x_w) + AM_RANGE(0xec02, 0xec02) AM_READ(MRA8_RAM) AM_WRITE(tehkanwc_scroll_y_w) AM_RANGE(0xf860, 0xf860) AM_READ(watchdog_reset_r) ADDRESS_MAP_END -static ADDRESS_MAP_START( writemem_sub, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0xc000, 0xc7ff) AM_WRITE(MWA8_RAM) - AM_RANGE(0xc800, 0xcfff) AM_WRITE(shared_w) - AM_RANGE(0xd000, 0xd3ff) AM_WRITE(tehkanwc_videoram_w) - AM_RANGE(0xd400, 0xd7ff) AM_WRITE(tehkanwc_colorram_w) - AM_RANGE(0xd800, 0xddff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram) - AM_RANGE(0xde00, 0xdfff) AM_WRITE(MWA8_RAM) /* unused part of the palette RAM, I think? Gridiron uses it */ - AM_RANGE(0xe000, 0xe7ff) AM_WRITE(tehkanwc_videoram2_w) - AM_RANGE(0xe800, 0xebff) AM_WRITE(spriteram_w) /* sprites */ - AM_RANGE(0xec00, 0xec01) AM_WRITE(tehkanwc_scroll_x_w) - AM_RANGE(0xec02, 0xec02) AM_WRITE(tehkanwc_scroll_y_w) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x3fff) AM_READ(MRA8_ROM) - AM_RANGE(0x4000, 0x47ff) AM_READ(MRA8_RAM) - AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0x3fff) AM_WRITE(MWA8_ROM) - AM_RANGE(0x4000, 0x47ff) AM_WRITE(MWA8_RAM) +static ADDRESS_MAP_START( sound_mem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x8001, 0x8001) AM_WRITE(msm_reset_w)/* MSM51xx reset */ AM_RANGE(0x8002, 0x8002) AM_WRITE(MWA8_NOP) /* ?? written in the IRQ handler */ AM_RANGE(0x8003, 0x8003) AM_WRITE(MWA8_NOP) /* ?? written in the NMI handler */ - AM_RANGE(0xc000, 0xc000) AM_WRITE(sound_answer_w) /* answer for main CPU */ + AM_RANGE(0xc000, 0xc000) AM_READWRITE(soundlatch_r, sound_answer_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( sound_port, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) - AM_RANGE(0x00, 0x00) AM_READ(AY8910_read_port_0_r) - AM_RANGE(0x02, 0x02) AM_READ(AY8910_read_port_1_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) - AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_write_port_0_w) + AM_RANGE(0x00, 0x00) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w) AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_control_port_0_w) - AM_RANGE(0x02, 0x02) AM_WRITE(AY8910_write_port_1_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(AY8910_read_port_1_r, AY8910_write_port_1_w) AM_RANGE(0x03, 0x03) AM_WRITE(AY8910_control_port_1_w) ADDRESS_MAP_END @@ -795,17 +658,17 @@ static const struct MSM5205interface msm5205_interface = static MACHINE_DRIVER_START( tehkanwc ) /* basic machine hardware */ - MDRV_CPU_ADD_TAG("main", Z80, 4608000) /* 18.432000 / 4 */ - MDRV_CPU_PROGRAM_MAP(readmem,writemem) + MDRV_CPU_ADD_TAG("main", Z80, 18432000/4) /* 18.432000 / 4 */ + MDRV_CPU_PROGRAM_MAP(main_mem,0) MDRV_CPU_VBLANK_INT(irq0_line_hold,1) - MDRV_CPU_ADD(Z80, 4608000) /* 18.432000 / 4 */ - MDRV_CPU_PROGRAM_MAP(readmem_sub,writemem_sub) + MDRV_CPU_ADD(Z80, 18432000/4) + MDRV_CPU_PROGRAM_MAP(sub_mem,0) MDRV_CPU_VBLANK_INT(irq0_line_hold,1) - MDRV_CPU_ADD(Z80, 4608000) /* 18.432000 / 4; communication is bidirectional, can't mark it as AUDIO_CPU */ - MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound) - MDRV_CPU_IO_MAP(sound_readport,sound_writeport) + MDRV_CPU_ADD(Z80, 18432000/4) + MDRV_CPU_PROGRAM_MAP(sound_mem,0) + MDRV_CPU_IO_MAP(sound_port,0) MDRV_CPU_VBLANK_INT(irq0_line_hold,1) MDRV_SCREEN_REFRESH_RATE(60) @@ -839,23 +702,6 @@ static MACHINE_DRIVER_START( tehkanwc ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MACHINE_DRIVER_END -static MACHINE_DRIVER_START( gridiron ) - - /* basic machine hardware */ - MDRV_IMPORT_FROM(tehkanwc) - MDRV_CPU_MODIFY("main") - MDRV_CPU_PROGRAM_MAP(gridiron_readmem,gridiron_writemem) -MACHINE_DRIVER_END - -static MACHINE_DRIVER_START( teedoff ) - - /* basic machine hardware */ - MDRV_IMPORT_FROM(tehkanwc) - MDRV_CPU_MODIFY("main") - MDRV_CPU_PROGRAM_MAP(teedoff_readmem,teedoff_writemem) -MACHINE_DRIVER_END - - static DRIVER_INIT( teedoff ) { @@ -1047,5 +893,5 @@ ROM_END GAME( 1985, tehkanwc, 0, tehkanwc, tehkanwc, 0, ROT0, "Tehkan", "Tehkan World Cup (set 1)", 0 ) GAME( 1985, tehkanwb, tehkanwc, tehkanwc, tehkanwc, 0, ROT0, "Tehkan", "Tehkan World Cup (set 2, bootleg?)", 0 ) -GAME( 1985, gridiron, 0, gridiron, gridiron, 0, ROT0, "Tehkan", "Gridiron Fight", 0 ) -GAME( 1986, teedoff, 0, teedoff, teedoff, teedoff, ROT90, "Tecmo", "Tee'd Off (Japan)", 0 ) +GAME( 1985, gridiron, 0, tehkanwc, gridiron, 0, ROT0, "Tehkan", "Gridiron Fight", 0 ) +GAME( 1986, teedoff, 0, tehkanwc, teedoff, teedoff, ROT90, "Tecmo", "Tee'd Off (Japan)", 0 ) diff --git a/src/mame/drivers/vball.c b/src/mame/drivers/vball.c index d6c2d984708..bb08b4bc88b 100644 --- a/src/mame/drivers/vball.c +++ b/src/mame/drivers/vball.c @@ -251,7 +251,7 @@ ADDRESS_MAP_END PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) \ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) \ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) \ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_VBLANK ) \ + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK ) \ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) \ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) \ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \ diff --git a/src/mame/video/matmania.c b/src/mame/video/matmania.c index fea0cdc1e1d..c39680567ae 100644 --- a/src/mame/video/matmania.c +++ b/src/mame/video/matmania.c @@ -219,7 +219,7 @@ VIDEO_UPDATE( matmania ) scrolly = -*matmania_scroll; - if (*matmania_pageselect) + if (matmania_pageselect[0]&0x01) // maniach sets 0x20 sometimes, which must have a different meaning copyscrollbitmap(bitmap,tmpbitmap2,0,0,1,&scrolly,&machine->screen[0].visarea,TRANSPARENCY_NONE,0); else copyscrollbitmap(bitmap,tmpbitmap,0,0,1,&scrolly,&machine->screen[0].visarea,TRANSPARENCY_NONE,0); @@ -316,7 +316,8 @@ VIDEO_UPDATE( maniach ) scrolly = -*matmania_scroll; - if (*matmania_pageselect) + + if (matmania_pageselect[0]&0x01) // this sets 0x20 sometimes, which must have a different meaning copyscrollbitmap(bitmap,tmpbitmap2,0,0,1,&scrolly,&machine->screen[0].visarea,TRANSPARENCY_NONE,0); else copyscrollbitmap(bitmap,tmpbitmap,0,0,1,&scrolly,&machine->screen[0].visarea,TRANSPARENCY_NONE,0); diff --git a/src/mame/video/ninjaw.c b/src/mame/video/ninjaw.c index 6af356c5d87..3842d1af6ad 100644 --- a/src/mame/video/ninjaw.c +++ b/src/mame/video/ninjaw.c @@ -30,7 +30,7 @@ static VIDEO_START( ninjaw_core ) assert_always(chips > 0, "we have an erroneous TC0100SCN configuration"); - TC0100SCN_vh_start(machine,chips,TC0100SCN_GFX_NUM,taito_hide_pixels,0,0,0,0,0,0); + TC0100SCN_vh_start(machine,chips,TC0100SCN_GFX_NUM,taito_hide_pixels,0,0,0,0,0,2); if (has_TC0110PCR()) TC0110PCR_vh_start(); diff --git a/src/mame/video/taitoic.c b/src/mame/video/taitoic.c index 17b9adf89af..70dfcbbddfa 100644 --- a/src/mame/video/taitoic.c +++ b/src/mame/video/taitoic.c @@ -2378,17 +2378,16 @@ void TC0100SCN_vh_start(running_machine *machine, int chips,int gfxnum,int x_off xd = -x_offset; yd = 8-y_offset; -#if 0 + // the multi-screen games need this, check the alignment grid screens.. if (chips==2) /* Dual screen */ { - if (i==1) xd += (320-multiscrn_xoffs); + if (i==1) xd -= (multiscrn_xoffs); } if (chips==3) /* Triple screen */ { - if (i==1) xd += (286-multiscrn_xoffs); - if (i==2) xd += (572-multiscrn_xoffs*2); + if (i==1) xd -= multiscrn_xoffs; + if (i==2) xd -= multiscrn_xoffs*2; } -#endif tilemap_set_scrolldx(TC0100SCN_tilemap[i][0][1], xd-16, -flip_xoffs -xd-16); tilemap_set_scrolldy(TC0100SCN_tilemap[i][0][1], yd, -flip_yoffs -yd); tilemap_set_scrolldx(TC0100SCN_tilemap[i][1][1], xd-16, -flip_xoffs -xd-16);