* David Haywood's fixes for:

gridiron079gre
maniach37b11gre / matmaniac37b14gre
qzkklgy2_0106u6red
warriorb0109u2gre

* Bryan McPhail's fix for vball071u1gre
This commit is contained in:
Phil Bennett 2008-01-05 00:25:47 +00:00
parent f749752b00
commit 3af7441ba2
6 changed files with 80 additions and 236 deletions

View File

@ -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) )

View File

@ -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 )

View File

@ -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 ) \

View File

@ -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);

View File

@ -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();

View File

@ -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);