mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
Taito wip:
* Fixed TC0100SCN & TC0080VCO device start procedures to avoid pointers to non allocated memory and added missing multiscreen setups * Converted asuka.c, ninjaw.c, othunder.c, taito_h.c, taito_o.c, taitoair.c, warriorb.c and wgp.c to use video devices
This commit is contained in:
parent
7858c436fc
commit
34f4656cca
@ -216,7 +216,7 @@ DIP locations verified for:
|
|||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
@ -226,9 +226,6 @@ DIP locations verified for:
|
|||||||
|
|
||||||
WRITE16_HANDLER( asuka_spritectrl_w );
|
WRITE16_HANDLER( asuka_spritectrl_w );
|
||||||
|
|
||||||
VIDEO_START( asuka );
|
|
||||||
VIDEO_START( galmedes );
|
|
||||||
VIDEO_START( cadash );
|
|
||||||
VIDEO_UPDATE( asuka );
|
VIDEO_UPDATE( asuka );
|
||||||
VIDEO_UPDATE( bonzeadv );
|
VIDEO_UPDATE( bonzeadv );
|
||||||
|
|
||||||
@ -325,7 +322,7 @@ static ADDRESS_MAP_START( bonzeadv_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x080000, 0x0fffff) AM_ROM
|
AM_RANGE(0x080000, 0x0fffff) AM_ROM
|
||||||
AM_RANGE(0x10c000, 0x10ffff) AM_RAM
|
AM_RANGE(0x10c000, 0x10ffff) AM_RAM
|
||||||
AM_RANGE(0x200000, 0x200007) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_word_w)
|
AM_RANGE(0x200000, 0x200007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
|
||||||
AM_RANGE(0x390000, 0x390001) AM_READ_PORT("DSWA")
|
AM_RANGE(0x390000, 0x390001) AM_READ_PORT("DSWA")
|
||||||
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(asuka_spritectrl_w)
|
AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(asuka_spritectrl_w)
|
||||||
AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("DSWB")
|
AM_RANGE(0x3b0000, 0x3b0001) AM_READ_PORT("DSWB")
|
||||||
@ -336,24 +333,24 @@ static ADDRESS_MAP_START( bonzeadv_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(bonzeadv_cchip_ram_r, bonzeadv_cchip_ram_w)
|
AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(bonzeadv_cchip_ram_r, bonzeadv_cchip_ram_w)
|
||||||
AM_RANGE(0x800802, 0x800803) AM_READWRITE(bonzeadv_cchip_ctrl_r, bonzeadv_cchip_ctrl_w)
|
AM_RANGE(0x800802, 0x800803) AM_READWRITE(bonzeadv_cchip_ctrl_r, bonzeadv_cchip_ctrl_w)
|
||||||
AM_RANGE(0x800c00, 0x800c01) AM_WRITE(bonzeadv_cchip_bank_w)
|
AM_RANGE(0x800c00, 0x800c01) AM_WRITE(bonzeadv_cchip_bank_w)
|
||||||
AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0xc20000, 0xc2000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r, PC090OJ_word_0_w) /* sprite ram */
|
AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( asuka_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( asuka_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||||
AM_RANGE(0x100000, 0x103fff) AM_RAM
|
AM_RANGE(0x100000, 0x103fff) AM_RAM
|
||||||
AM_RANGE(0x1076f0, 0x1076f1) AM_READNOP /* Mofflott init does dummy reads here */
|
AM_RANGE(0x1076f0, 0x1076f1) AM_READNOP /* Mofflott init does dummy reads here */
|
||||||
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_word_w)
|
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
|
||||||
AM_RANGE(0x3a0000, 0x3a0003) AM_WRITE(asuka_spritectrl_w)
|
AM_RANGE(0x3a0000, 0x3a0003) AM_WRITE(asuka_spritectrl_w)
|
||||||
AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
||||||
AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
AM_RANGE(0x400000, 0x40000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
||||||
AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0xc10000, 0xc103ff) AM_WRITENOP /* error in Asuka init code */
|
AM_RANGE(0xc10000, 0xc103ff) AM_WRITENOP /* error in Asuka init code */
|
||||||
AM_RANGE(0xc20000, 0xc2000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r, PC090OJ_word_0_w) /* sprite ram */
|
AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( cadash_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( cadash_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
@ -364,25 +361,25 @@ static ADDRESS_MAP_START( cadash_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x100000, 0x107fff) AM_RAM
|
AM_RANGE(0x100000, 0x107fff) AM_RAM
|
||||||
AM_RANGE(0x800000, 0x800fff) AM_RAM /* network ram */
|
AM_RANGE(0x800000, 0x800fff) AM_RAM /* network ram */
|
||||||
AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
AM_RANGE(0x900000, 0x90000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
||||||
AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_4bpg_word_w)
|
AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_4bpg_word_w)
|
||||||
AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(PC090OJ_word_0_r, PC090OJ_word_0_w) /* sprite ram */
|
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */
|
||||||
AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0xc20000, 0xc2000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0xc20000, 0xc2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( eto_map, ADDRESS_SPACE_PROGRAM, 16 ) /* N.B. tc100scn mirror overlaps spriteram */
|
static ADDRESS_MAP_START( eto_map, ADDRESS_SPACE_PROGRAM, 16 ) /* N.B. tc100scn mirror overlaps spriteram */
|
||||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||||
AM_RANGE(0x100000, 0x10000f) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_word_w)
|
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_word_w)
|
||||||
AM_RANGE(0x200000, 0x203fff) AM_RAM
|
AM_RANGE(0x200000, 0x203fff) AM_RAM
|
||||||
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x40000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_r, 0x00ff) /* service mode mirror */
|
AM_RANGE(0x400000, 0x40000f) AM_DEVREAD8("tc0220ioc", tc0220ioc_r, 0x00ff) /* service mode mirror */
|
||||||
AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(asuka_spritectrl_w)
|
AM_RANGE(0x4a0000, 0x4a0003) AM_WRITE(asuka_spritectrl_w)
|
||||||
AM_RANGE(0x4e0000, 0x4e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
AM_RANGE(0x4e0000, 0x4e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
||||||
AM_RANGE(0x4e0002, 0x4e0003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
AM_RANGE(0x4e0002, 0x4e0003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
||||||
AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(PC090OJ_word_0_r, PC090OJ_word_0_w) /* sprite ram */
|
AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("pc090oj", pc090oj_word_r, pc090oj_word_w) /* sprite ram */
|
||||||
AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(TC0100SCN_word_0_w) /* service mode mirror */
|
AM_RANGE(0xc00000, 0xc0ffff) AM_DEVWRITE("tc0100scn", tc0100scn_word_w)
|
||||||
AM_RANGE(0xd00000, 0xd0ffff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0xd00000, 0xd0ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0xd20000, 0xd2000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0xd20000, 0xd2000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -783,9 +780,45 @@ static const msm5205_interface msm5205_config =
|
|||||||
MACHINE DRIVERS
|
MACHINE DRIVERS
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
|
static const tc0100scn_interface asuka_tc0100scn_intf =
|
||||||
|
{
|
||||||
|
"screen",
|
||||||
|
1, 2, /* gfxnum, txnum */
|
||||||
|
0, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface cadash_tc0100scn_intf =
|
||||||
|
{
|
||||||
|
"screen",
|
||||||
|
1, 2, /* gfxnum, txnum */
|
||||||
|
1, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const pc090oj_interface asuka_pc090oj_intf =
|
||||||
|
{
|
||||||
|
0, 0, 8, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const pc090oj_interface cadash_pc090oj_intf =
|
||||||
|
{
|
||||||
|
0, 0, 8, 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0110pcr_interface asuka_tc0110pcr_intf =
|
||||||
|
{
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
static VIDEO_EOF( asuka )
|
static VIDEO_EOF( asuka )
|
||||||
{
|
{
|
||||||
PC090OJ_eof_callback();
|
const device_config *pc090oj = devtag_get_device(machine, "pc090oj");
|
||||||
|
pc090oj_eof_callback(pc090oj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const tc0220ioc_interface asuka_io_intf =
|
static const tc0220ioc_interface asuka_io_intf =
|
||||||
@ -805,6 +838,9 @@ static MACHINE_DRIVER_START( bonzeadv )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80,4000000) /* sound CPU, also required for test mode */
|
MDRV_CPU_ADD("audiocpu", Z80,4000000) /* sound CPU, also required for test mode */
|
||||||
MDRV_CPU_PROGRAM_MAP(bonzeadv_z80_map)
|
MDRV_CPU_PROGRAM_MAP(bonzeadv_z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -817,13 +853,13 @@ static MACHINE_DRIVER_START( bonzeadv )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096)
|
MDRV_PALETTE_LENGTH(4096)
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(asuka)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(bonzeadv)
|
MDRV_VIDEO_UPDATE(bonzeadv)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -844,6 +880,9 @@ static MACHINE_DRIVER_START( asuka )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* verified on pcb */
|
MDRV_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* verified on pcb */
|
||||||
MDRV_CPU_PROGRAM_MAP(z80_map)
|
MDRV_CPU_PROGRAM_MAP(z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
||||||
@ -858,13 +897,13 @@ static MACHINE_DRIVER_START( asuka )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096)
|
MDRV_PALETTE_LENGTH(4096)
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(asuka)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(asuka)
|
MDRV_VIDEO_UPDATE(asuka)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", asuka_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -888,6 +927,9 @@ static MACHINE_DRIVER_START( cadash )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) /* verified on pcb */
|
MDRV_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) /* verified on pcb */
|
||||||
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
||||||
@ -902,13 +944,13 @@ static MACHINE_DRIVER_START( cadash )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096)
|
MDRV_PALETTE_LENGTH(4096)
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(cadash)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(bonzeadv)
|
MDRV_VIDEO_UPDATE(bonzeadv)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", cadash_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -928,6 +970,9 @@ static MACHINE_DRIVER_START( mofflott )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
||||||
MDRV_CPU_PROGRAM_MAP(z80_map)
|
MDRV_CPU_PROGRAM_MAP(z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
||||||
@ -942,13 +987,13 @@ static MACHINE_DRIVER_START( mofflott )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
|
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(galmedes)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(asuka)
|
MDRV_VIDEO_UPDATE(asuka)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -972,6 +1017,9 @@ static MACHINE_DRIVER_START( galmedes )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
||||||
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
||||||
@ -986,13 +1034,13 @@ static MACHINE_DRIVER_START( galmedes )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
|
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(galmedes)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(asuka)
|
MDRV_VIDEO_UPDATE(asuka)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -1012,6 +1060,9 @@ static MACHINE_DRIVER_START( eto )
|
|||||||
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ??? */
|
||||||
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
MDRV_CPU_PROGRAM_MAP(cadash_z80_map)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(asuka)
|
||||||
|
MDRV_MACHINE_RESET(asuka)
|
||||||
|
|
||||||
MDRV_QUANTUM_TIME(HZ(600))
|
MDRV_QUANTUM_TIME(HZ(600))
|
||||||
|
|
||||||
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
MDRV_TC0220IOC_ADD("tc0220ioc", asuka_io_intf)
|
||||||
@ -1026,13 +1077,13 @@ static MACHINE_DRIVER_START( eto )
|
|||||||
MDRV_GFXDECODE(asuka)
|
MDRV_GFXDECODE(asuka)
|
||||||
MDRV_PALETTE_LENGTH(4096)
|
MDRV_PALETTE_LENGTH(4096)
|
||||||
|
|
||||||
MDRV_MACHINE_START(asuka)
|
|
||||||
MDRV_MACHINE_RESET(asuka)
|
|
||||||
|
|
||||||
MDRV_VIDEO_START(galmedes)
|
|
||||||
MDRV_VIDEO_EOF(asuka)
|
MDRV_VIDEO_EOF(asuka)
|
||||||
MDRV_VIDEO_UPDATE(asuka)
|
MDRV_VIDEO_UPDATE(asuka)
|
||||||
|
|
||||||
|
MDRV_PC090OJ_ADD("pc090oj", asuka_pc090oj_intf)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", cadash_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", asuka_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
|
@ -314,7 +314,7 @@ rumbling on a subwoofer in the cabinet.)
|
|||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
@ -401,6 +401,17 @@ static WRITE8_HANDLER( ninjaw_pancontrol )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE16_HANDLER( tc0100scn_triple_screen_w )
|
||||||
|
{
|
||||||
|
const device_config *tc0100scn_1 = devtag_get_device(space->machine, "tc0100scn_1");
|
||||||
|
const device_config *tc0100scn_2 = devtag_get_device(space->machine, "tc0100scn_2");
|
||||||
|
const device_config *tc0100scn_3 = devtag_get_device(space->machine, "tc0100scn_3");
|
||||||
|
|
||||||
|
tc0100scn_word_w(tc0100scn_1, offset, data, mem_mask);
|
||||||
|
tc0100scn_word_w(tc0100scn_2, offset, data, mem_mask);
|
||||||
|
tc0100scn_word_w(tc0100scn_3, offset, data, mem_mask);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
MEMORY STRUCTURES
|
MEMORY STRUCTURES
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
@ -414,15 +425,15 @@ static ADDRESS_MAP_START( ninjaw_master_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
|
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
|
||||||
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2") AM_BASE_SIZE_GENERIC(spriteram)
|
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2") AM_BASE_SIZE_GENERIC(spriteram)
|
||||||
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
||||||
AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
|
AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (2nd screen) */
|
||||||
AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
|
AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
|
AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (3rd screen) */
|
||||||
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
|
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
|
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
|
||||||
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
|
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
|
||||||
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
|
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
// NB there could be conflicts between which cpu writes what to the
|
// NB there could be conflicts between which cpu writes what to the
|
||||||
@ -435,10 +446,10 @@ static ADDRESS_MAP_START( ninjaw_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
||||||
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2")
|
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2")
|
||||||
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
||||||
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
|
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
|
||||||
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
|
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
|
||||||
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
|
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( darius2_master_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( darius2_master_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
@ -450,15 +461,15 @@ static ADDRESS_MAP_START( darius2_master_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
|
AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
|
||||||
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2") AM_BASE_SIZE_GENERIC(spriteram)
|
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2") AM_BASE_SIZE_GENERIC(spriteram)
|
||||||
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
||||||
AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x2a0000, 0x2a000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
|
AM_RANGE(0x2c0000, 0x2d3fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (2nd screen) */
|
||||||
AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
|
AM_RANGE(0x2e0000, 0x2e000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w) /* tilemaps (3rd screen) */
|
AM_RANGE(0x300000, 0x313fff) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (3rd screen) */
|
||||||
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
|
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_3", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w) /* palette (1st screen) */
|
AM_RANGE(0x340000, 0x340007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
|
||||||
AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
|
AM_RANGE(0x350000, 0x350007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
|
||||||
AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w) /* palette (3rd screen) */
|
AM_RANGE(0x360000, 0x360007) AM_DEVREADWRITE("tc0110pcr_3", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (3rd screen) */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( darius2_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( darius2_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
@ -468,7 +479,7 @@ static ADDRESS_MAP_START( darius2_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
||||||
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2")
|
AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE("share2")
|
||||||
AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
AM_RANGE(0x280000, 0x293fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_triple_screen_w) /* tilemaps (1st screen/all screens) */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
@ -682,6 +693,40 @@ to the scrolling background.
|
|||||||
Darius2: arbitrary interleaving of 10 to keep cpus synced.
|
Darius2: arbitrary interleaving of 10 to keep cpus synced.
|
||||||
*************************************************************/
|
*************************************************************/
|
||||||
|
|
||||||
|
static const tc0100scn_interface darius2_tc0100scn_intf_l =
|
||||||
|
{
|
||||||
|
"lscreen",
|
||||||
|
1, 3, /* gfxnum, txnum */
|
||||||
|
22, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface darius2_tc0100scn_intf_m =
|
||||||
|
{
|
||||||
|
"mscreen",
|
||||||
|
2, 3, /* gfxnum, txnum */
|
||||||
|
22, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
2, 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface darius2_tc0100scn_intf_r =
|
||||||
|
{
|
||||||
|
"rscreen",
|
||||||
|
2, 3, /* gfxnum, txnum */
|
||||||
|
22, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
4, 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0110pcr_interface darius2_tc0110pcr_intf_l = { 0 /* pal_offs / 0x1000 */ };
|
||||||
|
static const tc0110pcr_interface darius2_tc0110pcr_intf_m = { 1 /* pal_offs / 0x1000 */ };
|
||||||
|
static const tc0110pcr_interface darius2_tc0110pcr_intf_r = { 2 /* pal_offs / 0x1000 */ };
|
||||||
|
|
||||||
static const tc0220ioc_interface ninjaw_io_intf =
|
static const tc0220ioc_interface ninjaw_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -738,6 +783,13 @@ static MACHINE_DRIVER_START( ninjaw )
|
|||||||
MDRV_VIDEO_START(ninjaw)
|
MDRV_VIDEO_START(ninjaw)
|
||||||
MDRV_VIDEO_UPDATE(ninjaw)
|
MDRV_VIDEO_UPDATE(ninjaw)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_2", darius2_tc0100scn_intf_m)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_1", darius2_tc0110pcr_intf_l)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_2", darius2_tc0110pcr_intf_m)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_3", darius2_tc0110pcr_intf_r)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
@ -813,6 +865,13 @@ static MACHINE_DRIVER_START( darius2 )
|
|||||||
MDRV_VIDEO_START(ninjaw)
|
MDRV_VIDEO_START(ninjaw)
|
||||||
MDRV_VIDEO_UPDATE(ninjaw)
|
MDRV_VIDEO_UPDATE(ninjaw)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_1", darius2_tc0100scn_intf_l)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_2", darius2_tc0100scn_intf_m)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_3", darius2_tc0100scn_intf_r)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_1", darius2_tc0110pcr_intf_l)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_2", darius2_tc0110pcr_intf_m)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_3", darius2_tc0110pcr_intf_r)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ TODO:
|
|||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "machine/eeprom.h"
|
#include "machine/eeprom.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
@ -478,9 +478,9 @@ static ADDRESS_MAP_START( othunder_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x090000, 0x09000f) AM_READWRITE(othunder_tc0220ioc_r, othunder_tc0220ioc_w)
|
AM_RANGE(0x090000, 0x09000f) AM_READWRITE(othunder_tc0220ioc_r, othunder_tc0220ioc_w)
|
||||||
// AM_RANGE(0x090006, 0x090007) AM_WRITE(eeprom_w)
|
// AM_RANGE(0x090006, 0x090007) AM_WRITE(eeprom_w)
|
||||||
// AM_RANGE(0x09000c, 0x09000d) AM_WRITENOP /* ?? (keeps writing 0x77) */
|
// AM_RANGE(0x09000c, 0x09000d) AM_WRITENOP /* ?? (keeps writing 0x77) */
|
||||||
AM_RANGE(0x100000, 0x100007) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_rbswap_word_w) /* palette */
|
AM_RANGE(0x100000, 0x100007) AM_DEVREADWRITE("tc0110pcr", tc0110pcr_word_r, tc0110pcr_step1_rbswap_word_w) /* palette */
|
||||||
AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0x220000, 0x22000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x300000, 0x300003) AM_READWRITE(othunder_sound_r, othunder_sound_w)
|
AM_RANGE(0x300000, 0x300003) AM_READWRITE(othunder_sound_r, othunder_sound_w)
|
||||||
AM_RANGE(0x400000, 0x4005ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
AM_RANGE(0x400000, 0x4005ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
||||||
AM_RANGE(0x500000, 0x500007) AM_READWRITE(othunder_lightgun_r, othunder_lightgun_w)
|
AM_RANGE(0x500000, 0x500007) AM_READWRITE(othunder_lightgun_r, othunder_lightgun_w)
|
||||||
@ -663,6 +663,21 @@ static const ym2610_interface ym2610_config =
|
|||||||
MACHINE DRIVERS
|
MACHINE DRIVERS
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
|
static const tc0100scn_interface othunder_tc0100scn_intf =
|
||||||
|
{
|
||||||
|
"screen",
|
||||||
|
1, 2, /* gfxnum, txnum */
|
||||||
|
4, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0110pcr_interface othunder_tc0110pcr_intf =
|
||||||
|
{
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
static const tc0220ioc_interface othunder_io_intf =
|
static const tc0220ioc_interface othunder_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -701,6 +716,9 @@ static MACHINE_DRIVER_START( othunder )
|
|||||||
MDRV_VIDEO_START(othunder)
|
MDRV_VIDEO_START(othunder)
|
||||||
MDRV_VIDEO_UPDATE(othunder)
|
MDRV_VIDEO_UPDATE(othunder)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", othunder_tc0100scn_intf)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr", othunder_tc0110pcr_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
|
@ -139,18 +139,16 @@ some kind of zoom table?
|
|||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Variable
|
Variable
|
||||||
@ -159,9 +157,6 @@ some kind of zoom table?
|
|||||||
|
|
||||||
static UINT16 *taitoh_68000_mainram;
|
static UINT16 *taitoh_68000_mainram;
|
||||||
|
|
||||||
VIDEO_START( syvalion );
|
|
||||||
VIDEO_START( recordbr );
|
|
||||||
VIDEO_START( dleague );
|
|
||||||
VIDEO_UPDATE( syvalion );
|
VIDEO_UPDATE( syvalion );
|
||||||
VIDEO_UPDATE( recordbr );
|
VIDEO_UPDATE( recordbr );
|
||||||
VIDEO_UPDATE( dleague );
|
VIDEO_UPDATE( dleague );
|
||||||
@ -274,7 +269,7 @@ static ADDRESS_MAP_START( syvalion_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
||||||
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
||||||
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
|
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_word_r, tc0080vco_word_w)
|
||||||
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -285,7 +280,7 @@ static ADDRESS_MAP_START( recordbr_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
AM_RANGE(0x200002, 0x200003) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_port_r, tc0220ioc_port_w, 0x00ff)
|
||||||
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
||||||
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
|
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_word_r, tc0080vco_word_w)
|
||||||
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -295,7 +290,7 @@ static ADDRESS_MAP_START( dleague_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
||||||
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
AM_RANGE(0x300000, 0x300001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
|
||||||
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
AM_RANGE(0x300002, 0x300003) AM_READWRITE8(taitosound_comm_r, taitosound_comm_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
|
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_word_r, tc0080vco_word_w)
|
||||||
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||||
AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* ?? writes zero once per frame */
|
AM_RANGE(0x600000, 0x600001) AM_WRITENOP /* ?? writes zero once per frame */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -546,6 +541,20 @@ static MACHINE_START( taitoh )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const tc0080vco_interface syvalion_tc0080vco_intf =
|
||||||
|
{
|
||||||
|
0, 1, /* gfxnum, txnum */
|
||||||
|
1, 1, -2,
|
||||||
|
1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0080vco_interface recordbr_tc0080vco_intf =
|
||||||
|
{
|
||||||
|
0, 1, /* gfxnum, txnum */
|
||||||
|
1, 1, -2,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
static const tc0220ioc_interface taitoh_io_intf =
|
static const tc0220ioc_interface taitoh_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -580,9 +589,10 @@ static MACHINE_DRIVER_START( syvalion )
|
|||||||
MDRV_GFXDECODE(syvalion)
|
MDRV_GFXDECODE(syvalion)
|
||||||
MDRV_PALETTE_LENGTH(33*16)
|
MDRV_PALETTE_LENGTH(33*16)
|
||||||
|
|
||||||
MDRV_VIDEO_START(syvalion)
|
|
||||||
MDRV_VIDEO_UPDATE(syvalion)
|
MDRV_VIDEO_UPDATE(syvalion)
|
||||||
|
|
||||||
|
MDRV_TC0080VCO_ADD("tc0080vco", syvalion_tc0080vco_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -622,9 +632,10 @@ static MACHINE_DRIVER_START( recordbr )
|
|||||||
MDRV_GFXDECODE(recordbr)
|
MDRV_GFXDECODE(recordbr)
|
||||||
MDRV_PALETTE_LENGTH(32*16)
|
MDRV_PALETTE_LENGTH(32*16)
|
||||||
|
|
||||||
MDRV_VIDEO_START(recordbr)
|
|
||||||
MDRV_VIDEO_UPDATE(recordbr)
|
MDRV_VIDEO_UPDATE(recordbr)
|
||||||
|
|
||||||
|
MDRV_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
@ -664,9 +675,10 @@ static MACHINE_DRIVER_START( dleague )
|
|||||||
MDRV_GFXDECODE(dleague)
|
MDRV_GFXDECODE(dleague)
|
||||||
MDRV_PALETTE_LENGTH(33*16)
|
MDRV_PALETTE_LENGTH(33*16)
|
||||||
|
|
||||||
MDRV_VIDEO_START(dleague)
|
|
||||||
MDRV_VIDEO_UPDATE(dleague)
|
MDRV_VIDEO_UPDATE(dleague)
|
||||||
|
|
||||||
|
MDRV_TC0080VCO_ADD("tc0080vco", recordbr_tc0080vco_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
|
@ -32,12 +32,11 @@ TODO:
|
|||||||
#include "deprecat.h"
|
#include "deprecat.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "sound/2203intf.h"
|
#include "sound/2203intf.h"
|
||||||
|
|
||||||
static const int clear_hack=1;
|
static const int clear_hack=1;
|
||||||
|
|
||||||
VIDEO_START( parentj );
|
|
||||||
VIDEO_UPDATE( parentj );
|
VIDEO_UPDATE( parentj );
|
||||||
|
|
||||||
static WRITE16_HANDLER(io_w)
|
static WRITE16_HANDLER(io_w)
|
||||||
@ -67,7 +66,7 @@ static ADDRESS_MAP_START( parentj_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
|
AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
|
||||||
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
|
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
|
||||||
AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
|
AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymsnd", ym2203_r, ym2203_w, 0x00ff)
|
||||||
AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
|
AM_RANGE(0x400000, 0x420fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_word_r, tc0080vco_word_w)
|
||||||
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
AM_RANGE(0x500800, 0x500fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -232,6 +231,13 @@ static const ym2203_interface ym2203_config =
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const tc0080vco_interface parentj_intf =
|
||||||
|
{
|
||||||
|
0, 1, /* gfxnum, txnum */
|
||||||
|
1, 1, -2,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( parentj )
|
static MACHINE_DRIVER_START( parentj )
|
||||||
|
|
||||||
|
|
||||||
@ -249,9 +255,10 @@ static MACHINE_DRIVER_START( parentj )
|
|||||||
MDRV_GFXDECODE(parentj)
|
MDRV_GFXDECODE(parentj)
|
||||||
MDRV_PALETTE_LENGTH(33*16)
|
MDRV_PALETTE_LENGTH(33*16)
|
||||||
|
|
||||||
MDRV_VIDEO_START(parentj)
|
|
||||||
MDRV_VIDEO_UPDATE(parentj)
|
MDRV_VIDEO_UPDATE(parentj)
|
||||||
|
|
||||||
|
MDRV_TC0080VCO_ADD("tc0080vco", parentj_intf)
|
||||||
|
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) /*?? MHz */
|
MDRV_SOUND_ADD("ymsnd", YM2203, 2000000) /*?? MHz */
|
||||||
|
@ -220,7 +220,7 @@ cpu #2 (PC=0000060E): unmapped memory word read from 0000683A & FFFF
|
|||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "cpu/tms32025/tms32025.h"
|
#include "cpu/tms32025/tms32025.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
@ -231,7 +231,6 @@ static UINT16 *taitoh_68000_mainram;
|
|||||||
UINT16 *taitoair_line_ram;
|
UINT16 *taitoair_line_ram;
|
||||||
static UINT16 *dsp_ram; /* Shared 68000/TMS32025 RAM */
|
static UINT16 *dsp_ram; /* Shared 68000/TMS32025 RAM */
|
||||||
|
|
||||||
VIDEO_START( taitoair );
|
|
||||||
VIDEO_UPDATE( taitoair );
|
VIDEO_UPDATE( taitoair );
|
||||||
|
|
||||||
|
|
||||||
@ -383,7 +382,7 @@ static ADDRESS_MAP_START( airsys_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x180000, 0x183fff) AM_RAM /* "gradiation ram (0)" */
|
AM_RANGE(0x180000, 0x183fff) AM_RAM /* "gradiation ram (0)" */
|
||||||
AM_RANGE(0x184000, 0x187fff) AM_RAM /* "gradiation ram (1)" */
|
AM_RANGE(0x184000, 0x187fff) AM_RAM /* "gradiation ram (1)" */
|
||||||
AM_RANGE(0x188000, 0x18bfff) AM_RAM_WRITE(airsys_paletteram16_w) AM_BASE_GENERIC(paletteram)
|
AM_RANGE(0x188000, 0x18bfff) AM_RAM_WRITE(airsys_paletteram16_w) AM_BASE_GENERIC(paletteram)
|
||||||
AM_RANGE(0x800000, 0x820fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w) /* tilemaps, sprites */
|
AM_RANGE(0x800000, 0x820fff) AM_DEVREADWRITE("tc0080vco", tc0080vco_word_r, tc0080vco_word_w) /* tilemaps, sprites */
|
||||||
AM_RANGE(0x908000, 0x90ffff) AM_RAM AM_BASE(&taitoair_line_ram) /* "line ram" */
|
AM_RANGE(0x908000, 0x90ffff) AM_RAM AM_BASE(&taitoair_line_ram) /* "line ram" */
|
||||||
AM_RANGE(0x910000, 0x91ffff) AM_RAM AM_BASE(&dsp_ram) /* "dsp common ram" (TMS320C25) */
|
AM_RANGE(0x910000, 0x91ffff) AM_RAM AM_BASE(&dsp_ram) /* "dsp common ram" (TMS320C25) */
|
||||||
AM_RANGE(0xa00000, 0xa00007) AM_READ(stick_input_r)
|
AM_RANGE(0xa00000, 0xa00007) AM_READ(stick_input_r)
|
||||||
@ -596,6 +595,13 @@ static const ym2610_interface airsys_ym2610_interface =
|
|||||||
MACHINE DRIVERS
|
MACHINE DRIVERS
|
||||||
************************************************************/
|
************************************************************/
|
||||||
|
|
||||||
|
static const tc0080vco_interface airsys_tc0080vco_intf =
|
||||||
|
{
|
||||||
|
0, 1, /* gfxnum, txnum */
|
||||||
|
1, 1, -2,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
static const tc0220ioc_interface airsys_io_intf =
|
static const tc0220ioc_interface airsys_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -634,9 +640,10 @@ static MACHINE_DRIVER_START( airsys )
|
|||||||
MDRV_GFXDECODE(airsys)
|
MDRV_GFXDECODE(airsys)
|
||||||
MDRV_PALETTE_LENGTH(512*16)
|
MDRV_PALETTE_LENGTH(512*16)
|
||||||
|
|
||||||
MDRV_VIDEO_START(taitoair)
|
|
||||||
MDRV_VIDEO_UPDATE(taitoair)
|
MDRV_VIDEO_UPDATE(taitoair)
|
||||||
|
|
||||||
|
MDRV_TC0080VCO_ADD("tc0080vco", airsys_tc0080vco_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ Colscroll effects?
|
|||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "rendlay.h"
|
#include "rendlay.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
@ -157,7 +157,6 @@ Colscroll effects?
|
|||||||
static MACHINE_START( warriorb );
|
static MACHINE_START( warriorb );
|
||||||
static MACHINE_RESET( taito_dualscreen );
|
static MACHINE_RESET( taito_dualscreen );
|
||||||
|
|
||||||
VIDEO_START( darius2d );
|
|
||||||
VIDEO_START( warriorb );
|
VIDEO_START( warriorb );
|
||||||
VIDEO_UPDATE( warriorb );
|
VIDEO_UPDATE( warriorb );
|
||||||
|
|
||||||
@ -210,6 +209,14 @@ static WRITE8_HANDLER( warriorb_pancontrol )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE16_HANDLER( tc0100scn_dual_screen_w )
|
||||||
|
{
|
||||||
|
const device_config *tc0100scn_1 = devtag_get_device(space->machine, "tc0100scn_1");
|
||||||
|
const device_config *tc0100scn_2 = devtag_get_device(space->machine, "tc0100scn_2");
|
||||||
|
|
||||||
|
tc0100scn_word_w(tc0100scn_1, offset, data, mem_mask);
|
||||||
|
tc0100scn_word_w(tc0100scn_2, offset, data, mem_mask);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
MEMORY STRUCTURES
|
MEMORY STRUCTURES
|
||||||
@ -218,13 +225,13 @@ static WRITE8_HANDLER( warriorb_pancontrol )
|
|||||||
static ADDRESS_MAP_START( darius2d_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( darius2d_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||||
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main ram */
|
AM_RANGE(0x100000, 0x10ffff) AM_RAM /* main ram */
|
||||||
AM_RANGE(0x200000, 0x213fff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_dual_screen_w) /* tilemaps (all screens) */
|
AM_RANGE(0x200000, 0x213fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */
|
||||||
AM_RANGE(0x214000, 0x2141ff) AM_WRITENOP /* error in screen clearing code ? */
|
AM_RANGE(0x214000, 0x2141ff) AM_WRITENOP /* error in screen clearing code ? */
|
||||||
AM_RANGE(0x220000, 0x22000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x220000, 0x22000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x240000, 0x253fff) AM_READWRITE(TC0100SCN_word_1_r, TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
|
AM_RANGE(0x240000, 0x253fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (2nd screen) */
|
||||||
AM_RANGE(0x260000, 0x26000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r, TC0100SCN_ctrl_word_1_w)
|
AM_RANGE(0x260000, 0x26000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x400000, 0x400007) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_word_w) /* palette (1st screen) */
|
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
|
||||||
AM_RANGE(0x420000, 0x420007) AM_READWRITE(TC0110PCR_word_1_r, TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
|
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
|
||||||
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
||||||
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0x00ff)
|
||||||
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ???
|
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ???
|
||||||
@ -234,12 +241,12 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( warriorb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( warriorb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
||||||
AM_RANGE(0x200000, 0x213fff) AM_RAM
|
AM_RANGE(0x200000, 0x213fff) AM_RAM
|
||||||
AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_0_r, TC0100SCN_dual_screen_w) /* tilemaps (all screens) */
|
AM_RANGE(0x300000, 0x313fff) AM_DEVREAD("tc0100scn_1", tc0100scn_word_r) AM_WRITE(tc0100scn_dual_screen_w) /* tilemaps (all screens) */
|
||||||
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r, TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn_1", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x340000, 0x353fff) AM_READWRITE(TC0100SCN_word_1_r, TC0100SCN_word_1_w) /* tilemaps (2nd screen) */
|
AM_RANGE(0x340000, 0x353fff) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps (2nd screen) */
|
||||||
AM_RANGE(0x360000, 0x36000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r, TC0100SCN_ctrl_word_1_w)
|
AM_RANGE(0x360000, 0x36000f) AM_DEVREADWRITE("tc0100scn_2", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x400000, 0x400007) AM_READWRITE(TC0110PCR_word_r, TC0110PCR_step1_word_w) /* palette (1st screen) */
|
AM_RANGE(0x400000, 0x400007) AM_DEVREADWRITE("tc0110pcr_1", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (1st screen) */
|
||||||
AM_RANGE(0x420000, 0x420007) AM_READWRITE(TC0110PCR_word_1_r, TC0110PCR_step1_word_1_w) /* palette (2nd screen) */
|
AM_RANGE(0x420000, 0x420007) AM_DEVREADWRITE("tc0110pcr_2", tc0110pcr_word_r, tc0110pcr_step1_word_w) /* palette (2nd screen) */
|
||||||
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
AM_RANGE(0x600000, 0x6013ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
|
||||||
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
|
AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("tc0510nio", tc0510nio_halfword_r, tc0510nio_halfword_w)
|
||||||
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ? uses bits 0,2,3
|
// AM_RANGE(0x820000, 0x820001) AM_WRITENOP // ? uses bits 0,2,3
|
||||||
@ -445,6 +452,57 @@ static DEVICE_GET_INFO( subwoofer )
|
|||||||
MACHINE DRIVERS
|
MACHINE DRIVERS
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
|
static const tc0100scn_interface darius2d_tc0100scn_intf_l =
|
||||||
|
{
|
||||||
|
"lscreen",
|
||||||
|
1, 3, /* gfxnum, txnum */
|
||||||
|
4, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface darius2d_tc0100scn_intf_r =
|
||||||
|
{
|
||||||
|
"rscreen",
|
||||||
|
2, 3, /* gfxnum, txnum */
|
||||||
|
4, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface warriorb_tc0100scn_intf_l =
|
||||||
|
{
|
||||||
|
"lscreen",
|
||||||
|
1, 3, /* gfxnum, txnum */
|
||||||
|
4, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface warriorb_tc0100scn_intf_r =
|
||||||
|
{
|
||||||
|
"rscreen",
|
||||||
|
2, 3, /* gfxnum, txnum */
|
||||||
|
4, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
1, 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0110pcr_interface darius2d_tc0110pcr_intf_l =
|
||||||
|
{
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0110pcr_interface darius2d_tc0110pcr_intf_r =
|
||||||
|
{
|
||||||
|
1
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const tc0220ioc_interface darius2d_io_intf =
|
static const tc0220ioc_interface darius2d_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -491,9 +549,14 @@ static MACHINE_DRIVER_START( darius2d )
|
|||||||
MDRV_SCREEN_SIZE(40*8, 32*8)
|
MDRV_SCREEN_SIZE(40*8, 32*8)
|
||||||
MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 32*8-1)
|
MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 3*8, 32*8-1)
|
||||||
|
|
||||||
MDRV_VIDEO_START(darius2d)
|
MDRV_VIDEO_START(warriorb)
|
||||||
MDRV_VIDEO_UPDATE(warriorb)
|
MDRV_VIDEO_UPDATE(warriorb)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_1", darius2d_tc0100scn_intf_l)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_2", darius2d_tc0100scn_intf_r)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_1", darius2d_tc0110pcr_intf_l)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_2", darius2d_tc0110pcr_intf_r)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
@ -554,6 +617,11 @@ static MACHINE_DRIVER_START( warriorb )
|
|||||||
MDRV_VIDEO_START(warriorb)
|
MDRV_VIDEO_START(warriorb)
|
||||||
MDRV_VIDEO_UPDATE(warriorb)
|
MDRV_VIDEO_UPDATE(warriorb)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_1", warriorb_tc0100scn_intf_l)
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn_2", warriorb_tc0100scn_intf_r)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_1", darius2d_tc0110pcr_intf_l)
|
||||||
|
MDRV_TC0110PCR_ADD("tc0110pcr_2", darius2d_tc0110pcr_intf_r)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
|
@ -398,7 +398,7 @@ Stephh's notes (based on the game M68000 code and some tests) :
|
|||||||
#include "includes/taitoipt.h"
|
#include "includes/taitoipt.h"
|
||||||
#include "cpu/m68000/m68000.h"
|
#include "cpu/m68000/m68000.h"
|
||||||
#include "machine/taitoio.h"
|
#include "machine/taitoio.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
#include "audio/taitosnd.h"
|
#include "audio/taitosnd.h"
|
||||||
#include "sound/2610intf.h"
|
#include "sound/2610intf.h"
|
||||||
|
|
||||||
@ -661,8 +661,8 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0xff00)
|
AM_RANGE(0x180000, 0x18000f) AM_DEVREADWRITE8("tc0220ioc", tc0220ioc_r, tc0220ioc_w, 0xff00)
|
||||||
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w)
|
AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(cpua_ctrl_w)
|
||||||
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(wgp_adinput_r,wgp_adinput_w)
|
AM_RANGE(0x200000, 0x20000f) AM_READWRITE(wgp_adinput_r,wgp_adinput_w)
|
||||||
AM_RANGE(0x300000, 0x30ffff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_word_0_w) /* tilemaps */
|
AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE("tc0100scn", tc0100scn_word_r, tc0100scn_word_w) /* tilemaps */
|
||||||
AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
|
AM_RANGE(0x320000, 0x32000f) AM_DEVREADWRITE("tc0100scn", tc0100scn_ctrl_word_r, tc0100scn_ctrl_word_w)
|
||||||
AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_BASE(&wgp_spritemap) AM_SIZE(&wgp_spritemap_size) /* sprite tilemaps */
|
AM_RANGE(0x400000, 0x40bfff) AM_RAM AM_BASE(&wgp_spritemap) AM_SIZE(&wgp_spritemap_size) /* sprite tilemaps */
|
||||||
AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* sprite ram */
|
AM_RANGE(0x40c000, 0x40dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) /* sprite ram */
|
||||||
AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */
|
AM_RANGE(0x40fff0, 0x40fff1) AM_WRITENOP /* ?? (writes 0x8000 and 0 alternately - Wgp2 just 0) */
|
||||||
@ -897,9 +897,7 @@ static const gfx_layout charlayout =
|
|||||||
32*8 /* every sprite takes 32 consecutive bytes */
|
32*8 /* every sprite takes 32 consecutive bytes */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx
|
/* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx slot */
|
||||||
slot */
|
|
||||||
|
|
||||||
static GFXDECODE_START( wgp )
|
static GFXDECODE_START( wgp )
|
||||||
GFXDECODE_ENTRY( "gfx3", 0x0, wgp_tilelayout, 0, 256 ) /* sprites */
|
GFXDECODE_ENTRY( "gfx3", 0x0, wgp_tilelayout, 0, 256 ) /* sprites */
|
||||||
GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 256 ) /* sprites & playfield */
|
GFXDECODE_ENTRY( "gfx1", 0x0, charlayout, 0, 256 ) /* sprites & playfield */
|
||||||
@ -951,6 +949,26 @@ static MACHINE_START( wgp )
|
|||||||
state_save_register_postload(machine, wgp_postload, NULL);
|
state_save_register_postload(machine, wgp_postload, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const tc0100scn_interface wgp_tc0100scn_intf =
|
||||||
|
{
|
||||||
|
"screen",
|
||||||
|
1, 3, /* gfxnum, txnum */
|
||||||
|
0, 0, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
static const tc0100scn_interface wgp2_tc0100scn_intf =
|
||||||
|
{
|
||||||
|
"screen",
|
||||||
|
1, 3, /* gfxnum, txnum */
|
||||||
|
4, 2, /* x_offset, y_offset */
|
||||||
|
0, 0, /* flip_xoff, flip_yoff */
|
||||||
|
0, 0, /* flip_text_xoff, flip_text_yoff */
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
static const tc0220ioc_interface wgp_io_intf =
|
static const tc0220ioc_interface wgp_io_intf =
|
||||||
{
|
{
|
||||||
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
DEVCB_INPUT_PORT("DSWA"), DEVCB_INPUT_PORT("DSWB"),
|
||||||
@ -992,6 +1010,8 @@ static MACHINE_DRIVER_START( wgp )
|
|||||||
MDRV_VIDEO_START(wgp)
|
MDRV_VIDEO_START(wgp)
|
||||||
MDRV_VIDEO_UPDATE(wgp)
|
MDRV_VIDEO_UPDATE(wgp)
|
||||||
|
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", wgp_tc0100scn_intf)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
@ -1010,6 +1030,9 @@ static MACHINE_DRIVER_START( wgp2 )
|
|||||||
MDRV_QUANTUM_TIME(HZ(12000))
|
MDRV_QUANTUM_TIME(HZ(12000))
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MDRV_VIDEO_START(wgp2)
|
MDRV_VIDEO_START(wgp2)
|
||||||
|
|
||||||
|
MDRV_DEVICE_REMOVE("tc0100scn")
|
||||||
|
MDRV_TC0100SCN_ADD("tc0100scn", wgp2_tc0100scn_intf)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,32 +1,5 @@
|
|||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
|
|
||||||
#define TC0100SCN_GFX_NUM 1
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
|
||||||
|
|
||||||
static void asuka_core_video_start(running_machine *machine, int x_offs,int buffering)
|
|
||||||
{
|
|
||||||
PC090OJ_vh_start(machine,0,0,8,buffering); /* gfxset, x offset, y offset, buffering */
|
|
||||||
TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,x_offs,0,0,0,0,0,0);
|
|
||||||
TC0110PCR_vh_start(machine);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( asuka )
|
|
||||||
{
|
|
||||||
asuka_core_video_start(machine, 0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( galmedes )
|
|
||||||
{
|
|
||||||
asuka_core_video_start(machine, 1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( cadash )
|
|
||||||
{
|
|
||||||
asuka_core_video_start(machine, 1,1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************
|
/**************************************************************
|
||||||
SPRITE READ AND WRITE HANDLERS
|
SPRITE READ AND WRITE HANDLERS
|
||||||
@ -34,8 +7,10 @@ VIDEO_START( cadash )
|
|||||||
|
|
||||||
WRITE16_HANDLER( asuka_spritectrl_w )
|
WRITE16_HANDLER( asuka_spritectrl_w )
|
||||||
{
|
{
|
||||||
|
const device_config *pc090oj = devtag_get_device(space->machine, "pc090oj");
|
||||||
|
|
||||||
/* Bits 2-5 are color bank; in asuka games bit 0 is global priority */
|
/* Bits 2-5 are color bank; in asuka games bit 0 is global priority */
|
||||||
PC090OJ_sprite_ctrl = ((data & 0x3c) >> 2) | ((data & 0x1) << 15);
|
pc090oj_set_sprite_ctrl(pc090oj, ((data & 0x3c) >> 2) | ((data & 0x1) << 15));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -45,11 +20,13 @@ WRITE16_HANDLER( asuka_spritectrl_w )
|
|||||||
|
|
||||||
VIDEO_UPDATE( asuka )
|
VIDEO_UPDATE( asuka )
|
||||||
{
|
{
|
||||||
|
const device_config *tc0100scn = devtag_get_device(screen->machine, "tc0100scn");
|
||||||
|
const device_config *pc090oj = devtag_get_device(screen->machine, "pc090oj");
|
||||||
UINT8 layer[3];
|
UINT8 layer[3];
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
layer[1] = layer[0]^1;
|
layer[1] = layer[0]^1;
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
@ -58,36 +35,38 @@ VIDEO_UPDATE( asuka )
|
|||||||
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[0],TILEMAP_DRAW_OPAQUE,1);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[1],0,2);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 2);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[2],0,4);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 4);
|
||||||
|
|
||||||
/* Sprites may be over or under top bg layer */
|
/* Sprites may be over or under top bg layer */
|
||||||
PC090OJ_draw_sprites(screen->machine,bitmap,cliprect,2);
|
pc090oj_draw_sprites(pc090oj, bitmap, cliprect, 2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VIDEO_UPDATE( bonzeadv )
|
VIDEO_UPDATE( bonzeadv )
|
||||||
{
|
{
|
||||||
|
const device_config *tc0100scn = devtag_get_device(screen->machine, "tc0100scn");
|
||||||
|
const device_config *pc090oj = devtag_get_device(screen->machine, "pc090oj");
|
||||||
UINT8 layer[3];
|
UINT8 layer[3];
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
layer[1] = layer[0]^1;
|
layer[1] = layer[0] ^ 1;
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||||
|
|
||||||
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[0],TILEMAP_DRAW_OPAQUE,1);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[1],0,2);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 2);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[2],0,4);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 4);
|
||||||
|
|
||||||
/* Sprites are always over both bg layers */
|
/* Sprites are always over both bg layers */
|
||||||
PC090OJ_draw_sprites(screen->machine,bitmap,cliprect,0);
|
pc090oj_draw_sprites(pc090oj, bitmap, cliprect, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
|
|
||||||
#define TC0100SCN_GFX_NUM 1
|
|
||||||
|
|
||||||
struct tempsprite
|
struct tempsprite
|
||||||
{
|
{
|
||||||
@ -14,43 +12,17 @@ struct tempsprite
|
|||||||
};
|
};
|
||||||
static struct tempsprite *spritelist;
|
static struct tempsprite *spritelist;
|
||||||
|
|
||||||
static int taito_hide_pixels;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
|
||||||
static VIDEO_START( ninjaw_core )
|
VIDEO_START( ninjaw )
|
||||||
{
|
{
|
||||||
int chips;
|
const device_config *tc0100scn = devtag_get_device(machine, "tc0100scn_1");
|
||||||
int mask;
|
|
||||||
|
|
||||||
spritelist = auto_alloc_array(machine, struct tempsprite, 0x1000);
|
spritelist = auto_alloc_array(machine, struct tempsprite, 0x1000);
|
||||||
|
|
||||||
chips = TC0100SCN_count(machine);
|
|
||||||
|
|
||||||
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,2);
|
|
||||||
|
|
||||||
mask = TC0110PCR_mask(machine);
|
|
||||||
if (mask & 1)
|
|
||||||
TC0110PCR_vh_start(machine);
|
|
||||||
|
|
||||||
if (mask & 2)
|
|
||||||
TC0110PCR_1_vh_start(machine);
|
|
||||||
|
|
||||||
if (mask & 4)
|
|
||||||
TC0110PCR_2_vh_start(machine);
|
|
||||||
|
|
||||||
/* Ensure palette from correct TC0110PCR used for each screen */
|
/* Ensure palette from correct TC0110PCR used for each screen */
|
||||||
TC0100SCN_set_chip_colbanks(0x0,0x100,0x200);
|
tc0100scn_set_colbanks(tc0100scn, 0x0, 0x100, 0x200);
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( ninjaw )
|
|
||||||
{
|
|
||||||
taito_hide_pixels = 22;
|
|
||||||
VIDEO_START_CALL(ninjaw_core);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************
|
/************************************************************
|
||||||
@ -149,51 +121,53 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
|
|||||||
|
|
||||||
VIDEO_UPDATE( ninjaw )
|
VIDEO_UPDATE( ninjaw )
|
||||||
{
|
{
|
||||||
int xoffs = 0, screen_number = -1;
|
int xoffs = 0;
|
||||||
UINT8 layer[3], nodraw;
|
UINT8 layer[3], nodraw;
|
||||||
|
|
||||||
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
||||||
const device_config *middle_screen = devtag_get_device(screen->machine, "mscreen");
|
const device_config *middle_screen = devtag_get_device(screen->machine, "mscreen");
|
||||||
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
||||||
|
const device_config *tc0100scn = NULL;
|
||||||
|
|
||||||
if (screen == left_screen)
|
if (screen == left_screen)
|
||||||
{
|
{
|
||||||
xoffs = 36*8*0;
|
xoffs = 36 * 8 * 0;
|
||||||
screen_number = 0;
|
tc0100scn = devtag_get_device(screen->machine, "tc0100scn_1");
|
||||||
}
|
}
|
||||||
else if (screen == middle_screen)
|
else if (screen == middle_screen)
|
||||||
{
|
{
|
||||||
xoffs = 36*8*1;
|
xoffs = 36 * 8 * 1;
|
||||||
screen_number = 1;
|
tc0100scn = devtag_get_device(screen->machine, "tc0100scn_2");
|
||||||
}
|
}
|
||||||
else if (screen == right_screen)
|
else if (screen == right_screen)
|
||||||
{
|
{
|
||||||
xoffs = 36*8*2;
|
xoffs = 36 * 8 * 2;
|
||||||
screen_number = 2;
|
tc0100scn = devtag_get_device(screen->machine, "tc0100scn_3");
|
||||||
}
|
}
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
layer[1] = layer[0]^1;
|
layer[1] = layer[0] ^ 1;
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
/* chip 0 does tilemaps on the left, chip 1 center, chip 2 the right */
|
/* chip 0 does tilemaps on the left, chip 1 center, chip 2 the right */
|
||||||
// draw bottom layer
|
// draw bottom layer
|
||||||
nodraw = TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[0],TILEMAP_DRAW_OPAQUE,0); /* left */
|
nodraw = tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0); /* left */
|
||||||
|
|
||||||
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
|
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
|
||||||
if (nodraw) bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
if (nodraw)
|
||||||
|
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
||||||
|
|
||||||
/* Sprites can be under/over the layer below text layer */
|
/* Sprites can be under/over the layer below text layer */
|
||||||
draw_sprites(screen->machine,bitmap,cliprect,1,xoffs,8); // draw sprites with priority 1 which are under the mid layer
|
draw_sprites(screen->machine, bitmap, cliprect, 1, xoffs, 8); // draw sprites with priority 1 which are under the mid layer
|
||||||
|
|
||||||
// draw middle layer
|
// draw middle layer
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[1],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 0);
|
||||||
|
|
||||||
draw_sprites(screen->machine,bitmap,cliprect,0,xoffs,8); // draw sprites with priority 0 which are over the mid layer
|
draw_sprites(screen->machine,bitmap,cliprect,0,xoffs,8); // draw sprites with priority 0 which are over the mid layer
|
||||||
|
|
||||||
// draw top(text) layer
|
// draw top(text) layer
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[2],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
|
|
||||||
#define TC0100SCN_GFX_NUM 1
|
|
||||||
|
|
||||||
struct tempsprite
|
struct tempsprite
|
||||||
{
|
{
|
||||||
@ -23,13 +21,7 @@ VIDEO_START( othunder )
|
|||||||
/* Up to $800/8 big sprites, requires 0x100 * sizeof(*spritelist)
|
/* Up to $800/8 big sprites, requires 0x100 * sizeof(*spritelist)
|
||||||
Multiply this by 32 to give room for the number of small sprites,
|
Multiply this by 32 to give room for the number of small sprites,
|
||||||
which are what actually get put in the structure. */
|
which are what actually get put in the structure. */
|
||||||
|
|
||||||
spritelist = auto_alloc_array(machine, struct tempsprite, 0x2000);
|
spritelist = auto_alloc_array(machine, struct tempsprite, 0x2000);
|
||||||
|
|
||||||
TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,4,0,0,0,0,0,0);
|
|
||||||
|
|
||||||
if (TC0110PCR_mask(machine) & 1)
|
|
||||||
TC0110PCR_vh_start(machine);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -220,27 +212,28 @@ logerror("Sprite number %04x had %02x invalid chunks\n",tilenum,bad_chunks);
|
|||||||
|
|
||||||
VIDEO_UPDATE( othunder )
|
VIDEO_UPDATE( othunder )
|
||||||
{
|
{
|
||||||
|
const device_config *tc0100scn = devtag_get_device(screen->machine, "tc0100scn");
|
||||||
int layer[3];
|
int layer[3];
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
layer[1] = layer[0]^1;
|
layer[1] = layer[0] ^ 1;
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
|
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||||
|
|
||||||
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
/* Ensure screen blanked even when bottom layer not drawn due to disable bit */
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[0],TILEMAP_DRAW_OPAQUE,1);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[1],0,2);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 2);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[2],0,4);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 4);
|
||||||
|
|
||||||
/* Sprites can be under/over the layer below text layer */
|
/* Sprites can be under/over the layer below text layer */
|
||||||
{
|
{
|
||||||
static const int primasks[2] = {0xf0,0xfc};
|
static const int primasks[2] = {0xf0, 0xfc};
|
||||||
draw_sprites(screen->machine, bitmap,cliprect,primasks,3);
|
draw_sprites(screen->machine, bitmap, cliprect, primasks, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1800,7 +1800,8 @@ void tc0080vco_tilemap_draw( const device_config *device, bitmap_t *bitmap, cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: these could replace the external uses of RAM regions... completely untested! */
|
/* FIXME: maybe it would be better to provide pointers to these RAM regions
|
||||||
|
which can be accessed directly by the drivers... */
|
||||||
READ16_DEVICE_HANDLER( tc0080vco_cram_0_r )
|
READ16_DEVICE_HANDLER( tc0080vco_cram_0_r )
|
||||||
{
|
{
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
||||||
@ -1831,36 +1832,6 @@ READ_LINE_DEVICE_HANDLER( tc0080vco_flipscreen_r )
|
|||||||
return tc0080vco->flipscreen;
|
return tc0080vco->flipscreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_cram_0_w )
|
|
||||||
{
|
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
|
||||||
COMBINE_DATA(&tc0080vco->chain_ram_0[offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_cram_1_w )
|
|
||||||
{
|
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
|
||||||
COMBINE_DATA(&tc0080vco->chain_ram_1[offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_sprram_w )
|
|
||||||
{
|
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
|
||||||
COMBINE_DATA(&tc0080vco->spriteram[offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_scrram_w )
|
|
||||||
{
|
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
|
||||||
COMBINE_DATA(&tc0080vco->scroll_ram[offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE_LINE_DEVICE_HANDLER( tc0080vco_flipscreen_w )
|
|
||||||
{
|
|
||||||
tc0080vco_state *tc0080vco = tc0080vco_get_safe_token(device);
|
|
||||||
tc0080vco->flipscreen = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static STATE_POSTLOAD( tc0080vco_postload )
|
static STATE_POSTLOAD( tc0080vco_postload )
|
||||||
{
|
{
|
||||||
@ -1912,9 +1883,6 @@ static DEVICE_START( tc0080vco )
|
|||||||
/* Perform extra initialisations for text layer */
|
/* Perform extra initialisations for text layer */
|
||||||
tc0080vco->tilemap[2] = tilemap_create_device(device, tc0080vco_get_tx_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
tc0080vco->tilemap[2] = tilemap_create_device(device, tc0080vco_get_tx_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
||||||
|
|
||||||
/* create the char set (gfx will then be updated dynamically from RAM) */
|
|
||||||
device->machine->gfx[tc0080vco->tx_gfx] = gfx_element_alloc(device->machine, &tc0080vco_charlayout, (UINT8 *)tc0080vco->char_ram, 64, 0);
|
|
||||||
|
|
||||||
tilemap_set_scrolldx(tc0080vco->tilemap[2], 0, 0);
|
tilemap_set_scrolldx(tc0080vco->tilemap[2], 0, 0);
|
||||||
tilemap_set_scrolldy(tc0080vco->tilemap[2], 48, -448);
|
tilemap_set_scrolldy(tc0080vco->tilemap[2], 48, -448);
|
||||||
|
|
||||||
@ -1938,6 +1906,9 @@ static DEVICE_START( tc0080vco )
|
|||||||
tc0080vco->spriteram = tc0080vco->ram + 0x20400 / 2;
|
tc0080vco->spriteram = tc0080vco->ram + 0x20400 / 2;
|
||||||
tc0080vco->scroll_ram = tc0080vco->ram + 0x20800 / 2;
|
tc0080vco->scroll_ram = tc0080vco->ram + 0x20800 / 2;
|
||||||
|
|
||||||
|
/* create the char set (gfx will then be updated dynamically from RAM) */
|
||||||
|
device->machine->gfx[tc0080vco->tx_gfx] = gfx_element_alloc(device->machine, &tc0080vco_charlayout, (UINT8 *)tc0080vco->char_ram, 64, 0);
|
||||||
|
|
||||||
state_save_register_device_item_pointer(device, 0, tc0080vco->ram, TC0080VCO_RAM_SIZE / 2);
|
state_save_register_device_item_pointer(device, 0, tc0080vco->ram, TC0080VCO_RAM_SIZE / 2);
|
||||||
state_save_register_postload(device->machine, tc0080vco_postload, tc0080vco);
|
state_save_register_postload(device->machine, tc0080vco_postload, tc0080vco);
|
||||||
}
|
}
|
||||||
@ -2220,21 +2191,6 @@ WRITE16_DEVICE_HANDLER( tc0100scn_word_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 // these must be moved to the drivers
|
|
||||||
WRITE16_DEVICE_HANDLER( TC0100SCN_dual_screen_w )
|
|
||||||
{
|
|
||||||
TC0100SCN_word_0_w(space,offset,data,mem_mask);
|
|
||||||
TC0100SCN_word_1_w(space,offset,data,mem_mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( TC0100SCN_triple_screen_w )
|
|
||||||
{
|
|
||||||
TC0100SCN_word_0_w(space,offset,data,mem_mask);
|
|
||||||
TC0100SCN_word_1_w(space,offset,data,mem_mask);
|
|
||||||
TC0100SCN_word_2_w(space,offset,data,mem_mask);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
READ16_DEVICE_HANDLER( tc0100scn_ctrl_word_r )
|
READ16_DEVICE_HANDLER( tc0100scn_ctrl_word_r )
|
||||||
{
|
{
|
||||||
tc0100scn_state *tc0100scn = tc0100scn_get_safe_token(device);
|
tc0100scn_state *tc0100scn = tc0100scn_get_safe_token(device);
|
||||||
@ -2468,14 +2424,17 @@ static DEVICE_START( tc0100scn )
|
|||||||
|
|
||||||
tc0100scn->screen = devtag_get_device(device->machine, intf->screen);
|
tc0100scn->screen = devtag_get_device(device->machine, intf->screen);
|
||||||
|
|
||||||
|
/* Set up clipping for multi-TC0100SCN games. We assume
|
||||||
|
this code won't ever affect single screen games:
|
||||||
|
Thundfox is the only one of those with two chips, and
|
||||||
|
we're safe as it uses single width tilemaps. */
|
||||||
|
|
||||||
tc0100scn->cliprect = *video_screen_get_visible_area(tc0100scn->screen);
|
tc0100scn->cliprect = *video_screen_get_visible_area(tc0100scn->screen);
|
||||||
|
|
||||||
/* create the char set (gfx will then be updated dynamically from RAM) */
|
/* use the given gfx sets for bg/tx tiles*/
|
||||||
device->machine->gfx[intf->txnum] = gfx_element_alloc(device->machine, &tc0100scn_charlayout, (UINT8 *)tc0100scn->char_ram, 64, 0);
|
tc0100scn->bg_gfx = intf->gfxnum; /* 2nd/3rd chips will use the same gfx set */
|
||||||
tc0100scn->tx_gfx = intf->txnum;
|
tc0100scn->tx_gfx = intf->txnum;
|
||||||
|
|
||||||
tc0100scn->bg_gfx = intf->gfxnum; /* use the given gfx set for bg tiles; 2nd/3rd chips will use the same gfx set */
|
|
||||||
|
|
||||||
/* Single width versions */
|
/* Single width versions */
|
||||||
tc0100scn->tilemap[0][0] = tilemap_create_device(device, tc0100scn_get_bg_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
tc0100scn->tilemap[0][0] = tilemap_create_device(device, tc0100scn_get_bg_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
||||||
tc0100scn->tilemap[1][0] = tilemap_create_device(device, tc0100scn_get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
tc0100scn->tilemap[1][0] = tilemap_create_device(device, tc0100scn_get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 64);
|
||||||
@ -2486,13 +2445,6 @@ static DEVICE_START( tc0100scn )
|
|||||||
tc0100scn->tilemap[1][1] = tilemap_create_device(device, tc0100scn_get_fg_tile_info, tilemap_scan_rows, 8, 8, 128, 64);
|
tc0100scn->tilemap[1][1] = tilemap_create_device(device, tc0100scn_get_fg_tile_info, tilemap_scan_rows, 8, 8, 128, 64);
|
||||||
tc0100scn->tilemap[2][1] = tilemap_create_device(device, tc0100scn_get_tx_tile_info, tilemap_scan_rows, 8, 8, 128, 32);
|
tc0100scn->tilemap[2][1] = tilemap_create_device(device, tc0100scn_get_tx_tile_info, tilemap_scan_rows, 8, 8, 128, 32);
|
||||||
|
|
||||||
/* Set up clipping for multi-TC0100SCN games. We assume
|
|
||||||
this code won't ever affect single screen games:
|
|
||||||
Thundfox is the only one of those with two chips, and
|
|
||||||
we're safe as it uses single width tilemaps. */
|
|
||||||
|
|
||||||
tc0100scn_set_layer_ptrs(tc0100scn);
|
|
||||||
|
|
||||||
tilemap_set_transparent_pen(tc0100scn->tilemap[0][0], 0);
|
tilemap_set_transparent_pen(tc0100scn->tilemap[0][0], 0);
|
||||||
tilemap_set_transparent_pen(tc0100scn->tilemap[1][0], 0);
|
tilemap_set_transparent_pen(tc0100scn->tilemap[1][0], 0);
|
||||||
tilemap_set_transparent_pen(tc0100scn->tilemap[2][0], 0);
|
tilemap_set_transparent_pen(tc0100scn->tilemap[2][0], 0);
|
||||||
@ -2505,9 +2457,8 @@ static DEVICE_START( tc0100scn )
|
|||||||
7 bits higher and 2 pixels to the left than chip #1 because
|
7 bits higher and 2 pixels to the left than chip #1 because
|
||||||
that's how thundfox wants it. */
|
that's how thundfox wants it. */
|
||||||
|
|
||||||
// FIXME: use intf->multiscrn_xoffs to deal screen 2 & 3!
|
xd = (intf->multiscrn_hack == 0) ? (-intf->x_offset) : (-intf->x_offset - 2);
|
||||||
xd = -intf->x_offset;
|
yd = (intf->multiscrn_hack == 0) ? (8 - intf->y_offset) : (1 - intf->y_offset);
|
||||||
yd = 8 - intf->y_offset;
|
|
||||||
|
|
||||||
tilemap_set_scrolldx(tc0100scn->tilemap[0][0], xd - 16, -intf->flip_xoffs - xd - 16);
|
tilemap_set_scrolldx(tc0100scn->tilemap[0][0], xd - 16, -intf->flip_xoffs - xd - 16);
|
||||||
tilemap_set_scrolldy(tc0100scn->tilemap[0][0], yd, -intf->flip_yoffs - yd);
|
tilemap_set_scrolldy(tc0100scn->tilemap[0][0], yd, -intf->flip_yoffs - yd);
|
||||||
@ -2521,7 +2472,8 @@ static DEVICE_START( tc0100scn )
|
|||||||
display not from the edges of individual screens.
|
display not from the edges of individual screens.
|
||||||
NB flipscreen tilemap offsets are based on Cameltry */
|
NB flipscreen tilemap offsets are based on Cameltry */
|
||||||
|
|
||||||
// FIXME: use intf->multiscrn_xoffs to deal screen 2 & 3!
|
xd = -intf->x_offset - intf->multiscrn_xoffs;
|
||||||
|
yd = 8 - intf->y_offset;
|
||||||
|
|
||||||
tilemap_set_scrolldx(tc0100scn->tilemap[0][1], xd - 16, -intf->flip_xoffs - xd - 16);
|
tilemap_set_scrolldx(tc0100scn->tilemap[0][1], xd - 16, -intf->flip_xoffs - xd - 16);
|
||||||
tilemap_set_scrolldy(tc0100scn->tilemap[0][1], yd, -intf->flip_yoffs - yd);
|
tilemap_set_scrolldy(tc0100scn->tilemap[0][1], yd, -intf->flip_yoffs - yd);
|
||||||
@ -2546,11 +2498,18 @@ static DEVICE_START( tc0100scn )
|
|||||||
if (device->machine->gfx[intf->gfxnum]->color_granularity == 0x40) /* Undrfire */
|
if (device->machine->gfx[intf->gfxnum]->color_granularity == 0x40) /* Undrfire */
|
||||||
tc0100scn->tx_col_mult = 4;
|
tc0100scn->tx_col_mult = 4;
|
||||||
|
|
||||||
//logerror("TC0100SCN bg gfx granularity %04x: multiplier %04x\n",
|
//logerror("TC0100SCN bg gfx granularity %04x: multiplier %04x\n", device->machine->gfx[intf->gfxnum]->color_granularity, tc0100scn->tx_col_mult);
|
||||||
//device->machine->gfx[intf->gfxnum]->color_granularity,TC0100SCN_tx_col_mult);
|
|
||||||
|
|
||||||
tc0100scn->ram = auto_alloc_array_clear(device->machine, UINT16, TC0100SCN_RAM_SIZE / 2);
|
tc0100scn->ram = auto_alloc_array_clear(device->machine, UINT16, TC0100SCN_RAM_SIZE / 2);
|
||||||
|
|
||||||
|
tc0100scn_set_layer_ptrs(tc0100scn);
|
||||||
|
|
||||||
|
tc0100scn_set_colbanks(device, 0, 0, 0); /* standard values, only Wgp & multiscreen games change them */
|
||||||
|
/* we call this here, so that they can be modified at VIDEO_START*/
|
||||||
|
|
||||||
|
/* create the char set (gfx will then be updated dynamically from RAM) */
|
||||||
|
device->machine->gfx[tc0100scn->tx_gfx] = gfx_element_alloc(device->machine, &tc0100scn_charlayout, (UINT8 *)tc0100scn->char_ram, 64, 0);
|
||||||
|
|
||||||
state_save_register_device_item_pointer(device, 0, tc0100scn->ram, TC0100SCN_RAM_SIZE / 2);
|
state_save_register_device_item_pointer(device, 0, tc0100scn->ram, TC0100SCN_RAM_SIZE / 2);
|
||||||
state_save_register_device_item_array(device, 0, tc0100scn->ctrl);
|
state_save_register_device_item_array(device, 0, tc0100scn->ctrl);
|
||||||
state_save_register_device_item(device, 0, tc0100scn->dblwidth);
|
state_save_register_device_item(device, 0, tc0100scn->dblwidth);
|
||||||
@ -2567,7 +2526,6 @@ static DEVICE_RESET( tc0100scn )
|
|||||||
tc0100scn->dblwidth = 0;
|
tc0100scn->dblwidth = 0;
|
||||||
tc0100scn->colbank = 0;
|
tc0100scn->colbank = 0;
|
||||||
tc0100scn->gfxbank = 0; /* Mjnquest uniquely banks tiles */
|
tc0100scn->gfxbank = 0; /* Mjnquest uniquely banks tiles */
|
||||||
tc0100scn_set_colbanks(device, 0, 0, 0); /* standard values, only Wgp changes them */
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
tc0100scn->ctrl[i] = 0;
|
tc0100scn->ctrl[i] = 0;
|
||||||
@ -2585,7 +2543,7 @@ struct _tc0280grd_state
|
|||||||
{
|
{
|
||||||
UINT16 * ram;
|
UINT16 * ram;
|
||||||
|
|
||||||
tilemap_t *tilemap;
|
tilemap_t *tilemap;
|
||||||
|
|
||||||
UINT16 ctrl[8];
|
UINT16 ctrl[8];
|
||||||
int gfxnum, base_color;
|
int gfxnum, base_color;
|
||||||
|
@ -58,6 +58,7 @@ struct _tc0100scn_interface
|
|||||||
int flip_text_xoffs, flip_text_yoffs;
|
int flip_text_xoffs, flip_text_yoffs;
|
||||||
|
|
||||||
int multiscrn_xoffs;
|
int multiscrn_xoffs;
|
||||||
|
int multiscrn_hack;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -232,23 +233,9 @@ READ16_DEVICE_HANDLER( tc0080vco_cram_1_r );
|
|||||||
READ16_DEVICE_HANDLER( tc0080vco_sprram_r );
|
READ16_DEVICE_HANDLER( tc0080vco_sprram_r );
|
||||||
READ16_DEVICE_HANDLER( tc0080vco_scrram_r );
|
READ16_DEVICE_HANDLER( tc0080vco_scrram_r );
|
||||||
READ_LINE_DEVICE_HANDLER( tc0080vco_flipscreen_r );
|
READ_LINE_DEVICE_HANDLER( tc0080vco_flipscreen_r );
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_cram_0_w );
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_cram_1_w );
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_sprram_w );
|
|
||||||
WRITE16_DEVICE_HANDLER( tc0080vco_scrram_w );
|
|
||||||
WRITE_LINE_DEVICE_HANDLER( tc0080vco_flipscreen_w );
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
extern UINT16 *TC0080VCO_chain_ram_0;
|
|
||||||
extern UINT16 *TC0080VCO_chain_ram_1;
|
|
||||||
extern UINT16 *TC0080VCO_spriteram;
|
|
||||||
extern UINT16 *TC0080VCO_scroll_ram;
|
|
||||||
extern int TC0080VCO_flipscreen;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/** TC0100SCN **/
|
/** TC0100SCN **/
|
||||||
|
|
||||||
#define TC0100SCN_SINGLE_VDU 1024
|
#define TC0100SCN_SINGLE_VDU 1024
|
||||||
|
|
||||||
/* Function to set separate color banks for the three tilemapped layers.
|
/* Function to set separate color banks for the three tilemapped layers.
|
||||||
@ -276,12 +263,6 @@ WRITE32_DEVICE_HANDLER( tc0100scn_long_w );
|
|||||||
READ32_DEVICE_HANDLER( tc0100scn_ctrl_long_r );
|
READ32_DEVICE_HANDLER( tc0100scn_ctrl_long_r );
|
||||||
WRITE32_DEVICE_HANDLER( tc0100scn_ctrl_long_w );
|
WRITE32_DEVICE_HANDLER( tc0100scn_ctrl_long_w );
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Functions to write multiple TC0100SCNs with the same data */
|
|
||||||
WRITE16_DEVICE_HANDLER( TC0100SCN_dual_screen_w );
|
|
||||||
WRITE16_DEVICE_HANDLER( TC0100SCN_triple_screen_w );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void tc0100scn_tilemap_update(const device_config *device);
|
void tc0100scn_tilemap_update(const device_config *device);
|
||||||
int tc0100scn_tilemap_draw(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, int layer, int flags, UINT32 priority);
|
int tc0100scn_tilemap_draw(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, int layer, int flags, UINT32 priority);
|
||||||
|
|
||||||
@ -291,7 +272,6 @@ int tc0100scn_bottomlayer(const device_config *device);
|
|||||||
|
|
||||||
|
|
||||||
/** TC0280GRD & TC0430GRW **/
|
/** TC0280GRD & TC0430GRW **/
|
||||||
|
|
||||||
READ16_DEVICE_HANDLER( tc0280grd_word_r );
|
READ16_DEVICE_HANDLER( tc0280grd_word_r );
|
||||||
WRITE16_DEVICE_HANDLER( tc0280grd_word_w );
|
WRITE16_DEVICE_HANDLER( tc0280grd_word_w );
|
||||||
WRITE16_DEVICE_HANDLER( tc0280grd_ctrl_word_w );
|
WRITE16_DEVICE_HANDLER( tc0280grd_ctrl_word_w );
|
||||||
@ -306,7 +286,6 @@ void TC0430GRW_zoom_draw(const device_config *device, bitmap_t *bitmap, const re
|
|||||||
|
|
||||||
|
|
||||||
/** TC0360PRI **/
|
/** TC0360PRI **/
|
||||||
|
|
||||||
WRITE8_DEVICE_HANDLER( tc0360pri_w );
|
WRITE8_DEVICE_HANDLER( tc0360pri_w );
|
||||||
READ8_DEVICE_HANDLER( tc0360pri_r );
|
READ8_DEVICE_HANDLER( tc0360pri_r );
|
||||||
|
|
||||||
@ -339,7 +318,6 @@ int tc0480scp_get_bg_priority(const device_config *device);
|
|||||||
//extern int TC0480SCP_pri_reg;
|
//extern int TC0480SCP_pri_reg;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** TC0150ROD **/
|
/** TC0150ROD **/
|
||||||
READ16_DEVICE_HANDLER( tc0150rod_word_r );
|
READ16_DEVICE_HANDLER( tc0150rod_word_r );
|
||||||
WRITE16_DEVICE_HANDLER( tc0150rod_word_w );
|
WRITE16_DEVICE_HANDLER( tc0150rod_word_w );
|
||||||
@ -365,4 +343,3 @@ WRITE16_DEVICE_HANDLER( tc0180vcu_scroll_w );
|
|||||||
READ16_DEVICE_HANDLER( tc0180vcu_word_r );
|
READ16_DEVICE_HANDLER( tc0180vcu_word_r );
|
||||||
WRITE16_DEVICE_HANDLER( tc0180vcu_word_w );
|
WRITE16_DEVICE_HANDLER( tc0180vcu_word_w );
|
||||||
void tc0180vcu_tilemap_draw(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, int tmap_num, int plane);
|
void tc0180vcu_tilemap_draw(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect, int tmap_num, int plane);
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ sprite RAM
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "taitoic.h"
|
#include "taiicdev.h"
|
||||||
|
|
||||||
|
|
||||||
/* These are hand-tuned values */
|
/* These are hand-tuned values */
|
||||||
@ -65,33 +65,13 @@ static const int zoomy_conv_table[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Initialize and destroy video hardware emulation
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
VIDEO_START( syvalion )
|
|
||||||
{
|
|
||||||
TC0080VCO_vh_start(machine,0,1,1,1,-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( recordbr )
|
|
||||||
{
|
|
||||||
TC0080VCO_vh_start(machine,0,0,1,1,-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( dleague )
|
|
||||||
{
|
|
||||||
TC0080VCO_vh_start(machine,0,0,1,1,-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Screen refresh
|
Screen refresh
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static void syvalion_draw_sprites(running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect)
|
static void syvalion_draw_sprites( running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect )
|
||||||
{
|
{
|
||||||
|
const device_config *tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||||
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
||||||
is always 64 pixels. */
|
is always 64 pixels. */
|
||||||
|
|
||||||
@ -103,13 +83,13 @@ static void syvalion_draw_sprites(running_machine *machine,bitmap_t *bitmap,cons
|
|||||||
int tile_offs; /* sprite chain offset */
|
int tile_offs; /* sprite chain offset */
|
||||||
int zoomx; /* zoomx value */
|
int zoomx; /* zoomx value */
|
||||||
|
|
||||||
for (offs = 0x03f8 / 2 ; offs >= 0 ; offs -= 0x008 / 2)
|
for (offs = 0x03f8 / 2; offs >= 0; offs -= 0x008 / 2)
|
||||||
{
|
{
|
||||||
x0 = TC0080VCO_spriteram[offs + 1] & 0x3ff;
|
x0 = tc0080vco_sprram_r(tc0080vco, offs + 1, 0xffff) & 0x3ff;
|
||||||
y0 = TC0080VCO_spriteram[offs + 0] & 0x3ff;
|
y0 = tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x3ff;
|
||||||
zoomx = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
|
zoomx = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x7f00) >> 8;
|
||||||
tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
|
tile_offs = (tc0080vco_sprram_r(tc0080vco, offs + 3, 0xffff) & 0x1fff) << 2;
|
||||||
ysize = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
|
ysize = size[(tc0080vco_sprram_r(tc0080vco, offs, 0xffff) & 0x0c00) >> 10];
|
||||||
|
|
||||||
if (tile_offs)
|
if (tile_offs)
|
||||||
{
|
{
|
||||||
@ -131,7 +111,7 @@ static void syvalion_draw_sprites(running_machine *machine,bitmap_t *bitmap,cons
|
|||||||
if (x0 >= 0x200) x0 -= 0x400;
|
if (x0 >= 0x200) x0 -= 0x400;
|
||||||
if (y0 >= 0x200) y0 -= 0x400;
|
if (y0 >= 0x200) y0 -= 0x400;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
x0 = 497 - x0;
|
x0 = 497 - x0;
|
||||||
y0 = 498 - y0;
|
y0 = 498 - y0;
|
||||||
@ -144,21 +124,21 @@ static void syvalion_draw_sprites(running_machine *machine,bitmap_t *bitmap,cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
y = y0;
|
y = y0;
|
||||||
for ( j = 0 ; j < ysize ; j ++ )
|
for (j = 0 ; j < ysize ; j++)
|
||||||
{
|
{
|
||||||
x = x0;
|
x = x0;
|
||||||
for (k = 0 ; k < 4 ; k ++ )
|
for (k = 0 ; k < 4 ; k++)
|
||||||
{
|
{
|
||||||
if (tile_offs >= 0x1000)
|
if (tile_offs >= 0x1000)
|
||||||
{
|
{
|
||||||
int tile, color, flipx, flipy;
|
int tile, color, flipx, flipy;
|
||||||
|
|
||||||
tile = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
|
tile = tc0080vco_cram_0_r(tc0080vco, tile_offs, 0xffff) & 0x7fff;
|
||||||
color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
|
color = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x001f;
|
||||||
flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
|
flipx = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0040;
|
||||||
flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
|
flipy = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0080;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
flipx ^= 0x0040;
|
flipx ^= 0x0040;
|
||||||
flipy ^= 0x0080;
|
flipy ^= 0x0080;
|
||||||
@ -184,6 +164,7 @@ static void syvalion_draw_sprites(running_machine *machine,bitmap_t *bitmap,cons
|
|||||||
|
|
||||||
static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
||||||
{
|
{
|
||||||
|
const device_config *tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||||
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
||||||
is always 64 pixels. */
|
is always 64 pixels. */
|
||||||
|
|
||||||
@ -200,12 +181,12 @@ static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, co
|
|||||||
if (offs < 0x01b0 && priority == 0) continue;
|
if (offs < 0x01b0 && priority == 0) continue;
|
||||||
if (offs >= 0x01b0 && priority == 1) continue;
|
if (offs >= 0x01b0 && priority == 1) continue;
|
||||||
|
|
||||||
x0 = TC0080VCO_spriteram[offs + 1] & 0x3ff;
|
x0 = tc0080vco_sprram_r(tc0080vco, offs + 1, 0xffff) & 0x3ff;
|
||||||
y0 = TC0080VCO_spriteram[offs + 0] & 0x3ff;
|
y0 = tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x3ff;
|
||||||
zoomx = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
|
zoomx = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x7f00) >> 8;
|
||||||
zoomy = (TC0080VCO_spriteram[offs + 2] & 0x007f);
|
zoomy = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x007f);
|
||||||
tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
|
tile_offs = (tc0080vco_sprram_r(tc0080vco, offs + 3, 0xffff) & 0x1fff) << 2;
|
||||||
ysize = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
|
ysize = size[(tc0080vco_sprram_r(tc0080vco, offs, 0xffff) & 0x0c00) >> 10];
|
||||||
|
|
||||||
if (tile_offs)
|
if (tile_offs)
|
||||||
{
|
{
|
||||||
@ -241,7 +222,7 @@ static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, co
|
|||||||
if (x0 >= 0x200) x0 -= 0x400;
|
if (x0 >= 0x200) x0 -= 0x400;
|
||||||
if (y0 >= 0x200) y0 -= 0x400;
|
if (y0 >= 0x200) y0 -= 0x400;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
x0 = 497 - x0;
|
x0 = 497 - x0;
|
||||||
y0 = 498 - y0;
|
y0 = 498 - y0;
|
||||||
@ -264,12 +245,12 @@ static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, co
|
|||||||
{
|
{
|
||||||
int tile, color, flipx, flipy;
|
int tile, color, flipx, flipy;
|
||||||
|
|
||||||
tile = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
|
tile = tc0080vco_cram_0_r(tc0080vco, tile_offs, 0xffff) & 0x7fff;
|
||||||
color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
|
color = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x001f;
|
||||||
flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
|
flipx = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0040;
|
||||||
flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
|
flipy = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0080;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
flipx ^= 0x0040;
|
flipx ^= 0x0040;
|
||||||
flipy ^= 0x0080;
|
flipy ^= 0x0080;
|
||||||
@ -295,6 +276,7 @@ static void recordbr_draw_sprites(running_machine *machine, bitmap_t *bitmap, co
|
|||||||
|
|
||||||
static void dleague_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
static void dleague_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
||||||
{
|
{
|
||||||
|
const device_config *tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||||
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
||||||
is always 64 pixels. */
|
is always 64 pixels. */
|
||||||
|
|
||||||
@ -309,12 +291,12 @@ static void dleague_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
|
|
||||||
for (offs = 0x03f8 / 2 ; offs >= 0 ; offs -= 0x008 / 2)
|
for (offs = 0x03f8 / 2 ; offs >= 0 ; offs -= 0x008 / 2)
|
||||||
{
|
{
|
||||||
x0 = TC0080VCO_spriteram[offs + 1] & 0x3ff;
|
x0 = tc0080vco_sprram_r(tc0080vco, offs + 1, 0xffff) & 0x3ff;
|
||||||
y0 = TC0080VCO_spriteram[offs + 0] & 0x3ff;
|
y0 = tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x3ff;
|
||||||
zoomx = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
|
zoomx = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x7f00) >> 8;
|
||||||
tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
|
tile_offs = (tc0080vco_sprram_r(tc0080vco, offs + 3, 0xffff) & 0x1fff) << 2;
|
||||||
pribit = (TC0080VCO_spriteram[offs + 0] & 0x1000) >> 12;
|
pribit = (tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x1000) >> 12;
|
||||||
ysize = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
|
ysize = size[(tc0080vco_sprram_r(tc0080vco, offs, 0xffff) & 0x0c00) >> 10];
|
||||||
|
|
||||||
if (tile_offs)
|
if (tile_offs)
|
||||||
{
|
{
|
||||||
@ -334,13 +316,13 @@ static void dleague_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
zx = (dx + ex) << 12;
|
zx = (dx + ex) << 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TC0080VCO_scroll_ram[0x0002] & 0x8000)
|
if (tc0080vco_scrram_r(tc0080vco, 0x0002, 0xffff) & 0x8000)
|
||||||
pribit = 1;
|
pribit = 1;
|
||||||
|
|
||||||
if (x0 >= 0x200) x0 -= 0x400;
|
if (x0 >= 0x200) x0 -= 0x400;
|
||||||
if (y0 >= 0x200) y0 -= 0x400;
|
if (y0 >= 0x200) y0 -= 0x400;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
x0 = 497 - x0;
|
x0 = 497 - x0;
|
||||||
y0 = 498 - y0;
|
y0 = 498 - y0;
|
||||||
@ -352,24 +334,25 @@ static void dleague_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
y0 += 2;
|
y0 += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( priority == pribit )
|
if (priority == pribit)
|
||||||
{
|
{
|
||||||
y = y0;
|
y = y0;
|
||||||
for ( j = 0 ; j < ysize ; j ++ )
|
for (j = 0; j < ysize; j ++)
|
||||||
{
|
{
|
||||||
x = x0;
|
x = x0;
|
||||||
for (k = 0 ; k < 4 ; k ++ )
|
for (k = 0; k < 4; k ++ )
|
||||||
{
|
{
|
||||||
if (tile_offs >= 0x1000) /* or pitcher gets blanked */
|
if (tile_offs >= 0x1000) /* or pitcher gets blanked */
|
||||||
{
|
{
|
||||||
int tile, color, flipx, flipy;
|
int tile, color, flipx, flipy;
|
||||||
|
|
||||||
tile = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
|
tile = tc0080vco_cram_0_r(tc0080vco, tile_offs, 0xffff) & 0x7fff;
|
||||||
color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
|
color = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x001f;
|
||||||
flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
|
flipx = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0040;
|
||||||
flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
|
flipy = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0080;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
|
||||||
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
flipx ^= 0x0040;
|
flipx ^= 0x0040;
|
||||||
flipy ^= 0x0080;
|
flipy ^= 0x0080;
|
||||||
@ -409,23 +392,27 @@ static void taitoh_log_vram(running_machine *machine)
|
|||||||
|
|
||||||
VIDEO_UPDATE( syvalion )
|
VIDEO_UPDATE( syvalion )
|
||||||
{
|
{
|
||||||
TC0080VCO_tilemap_update(screen->machine);
|
const device_config *tc0080vco = devtag_get_device(screen->machine, "tc0080vco");
|
||||||
|
|
||||||
|
tc0080vco_tilemap_update(tc0080vco);
|
||||||
|
|
||||||
taitoh_log_vram(screen->machine);
|
taitoh_log_vram(screen->machine);
|
||||||
|
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
syvalion_draw_sprites(screen->machine,bitmap,cliprect);
|
syvalion_draw_sprites(screen->machine, bitmap,cliprect);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 2, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VIDEO_UPDATE( recordbr )
|
VIDEO_UPDATE( recordbr )
|
||||||
{
|
{
|
||||||
TC0080VCO_tilemap_update(screen->machine);
|
const device_config *tc0080vco = devtag_get_device(screen->machine, "tc0080vco");
|
||||||
|
|
||||||
|
tc0080vco_tilemap_update(tc0080vco);
|
||||||
|
|
||||||
taitoh_log_vram(screen->machine);
|
taitoh_log_vram(screen->machine);
|
||||||
|
|
||||||
@ -433,28 +420,30 @@ VIDEO_UPDATE( recordbr )
|
|||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
||||||
recordbr_draw_sprites(screen->machine,bitmap,cliprect,0);
|
recordbr_draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
||||||
recordbr_draw_sprites(screen->machine,bitmap,cliprect,1);
|
recordbr_draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
#else
|
#else
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
recordbr_draw_sprites(screen->machine,bitmap,cliprect,0);
|
recordbr_draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
recordbr_draw_sprites(screen->machine,bitmap,cliprect,1);
|
recordbr_draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 2, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VIDEO_UPDATE( dleague )
|
VIDEO_UPDATE( dleague )
|
||||||
{
|
{
|
||||||
TC0080VCO_tilemap_update(screen->machine);
|
const device_config *tc0080vco = devtag_get_device(screen->machine, "tc0080vco");
|
||||||
|
|
||||||
|
tc0080vco_tilemap_update(tc0080vco);
|
||||||
|
|
||||||
taitoh_log_vram(screen->machine);
|
taitoh_log_vram(screen->machine);
|
||||||
|
|
||||||
@ -462,21 +451,21 @@ VIDEO_UPDATE( dleague )
|
|||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
||||||
dleague_draw_sprites(screen->machine,bitmap,cliprect,0);
|
dleague_draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
||||||
dleague_draw_sprites(screen->machine,bitmap,cliprect,1);
|
dleague_draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
#else
|
#else
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
dleague_draw_sprites (screen->machine,bitmap,cliprect,0);
|
dleague_draw_sprites (screen->machine, bitmap, cliprect, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
dleague_draw_sprites (screen->machine,bitmap,cliprect,1);
|
dleague_draw_sprites (screen->machine, bitmap, cliprect, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 2, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ Based on taito_h.c
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "taitoic.h"
|
#include "taiicdev.h"
|
||||||
|
|
||||||
|
|
||||||
/* These are hand-tuned values */
|
/* These are hand-tuned values */
|
||||||
@ -23,14 +23,10 @@ static const int zoomy_conv_table[] =
|
|||||||
0x67,0x68,0x6a,0x6b,0x6c,0x6e,0x6f,0x71, 0x72,0x74,0x76,0x78,0x80,0x7b,0x7d,0x7f
|
0x67,0x68,0x6a,0x6b,0x6c,0x6e,0x6f,0x71, 0x72,0x74,0x76,0x78,0x80,0x7b,0x7d,0x7f
|
||||||
};
|
};
|
||||||
|
|
||||||
VIDEO_START( parentj )
|
|
||||||
{
|
|
||||||
TC0080VCO_vh_start(machine,0,0,1,1,-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
||||||
{
|
{
|
||||||
|
const device_config *tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||||
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
||||||
is always 64 pixels. */
|
is always 64 pixels. */
|
||||||
|
|
||||||
@ -47,12 +43,12 @@ static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
if (offs < 0x01b0 && priority == 0) continue;
|
if (offs < 0x01b0 && priority == 0) continue;
|
||||||
if (offs >= 0x01b0 && priority == 1) continue;
|
if (offs >= 0x01b0 && priority == 1) continue;
|
||||||
|
|
||||||
x0 = TC0080VCO_spriteram[offs + 1] & 0x3ff;
|
x0 = tc0080vco_sprram_r(tc0080vco, offs + 1, 0xffff) & 0x3ff;
|
||||||
y0 = TC0080VCO_spriteram[offs + 0] & 0x3ff;
|
y0 = tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x3ff;
|
||||||
zoomx = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
|
zoomx = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x7f00) >> 8;
|
||||||
zoomy = (TC0080VCO_spriteram[offs + 2] & 0x007f);
|
zoomy = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x007f);
|
||||||
tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
|
tile_offs = (tc0080vco_sprram_r(tc0080vco, offs + 3, 0xffff) & 0x1fff) << 2;
|
||||||
ysize = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
|
ysize = size[(tc0080vco_sprram_r(tc0080vco, offs, 0xffff) & 0x0c00) >> 10];
|
||||||
|
|
||||||
if (tile_offs)
|
if (tile_offs)
|
||||||
{
|
{
|
||||||
@ -88,7 +84,7 @@ static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
if (x0 >= 0x200) x0 -= 0x400;
|
if (x0 >= 0x200) x0 -= 0x400;
|
||||||
if (y0 >= 0x200) y0 -= 0x400;
|
if (y0 >= 0x200) y0 -= 0x400;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
x0 = 497 - x0;
|
x0 = 497 - x0;
|
||||||
y0 = 498 - y0;
|
y0 = 498 - y0;
|
||||||
@ -111,12 +107,12 @@ static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
{
|
{
|
||||||
int tile, color, flipx, flipy;
|
int tile, color, flipx, flipy;
|
||||||
|
|
||||||
tile = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
|
tile = tc0080vco_cram_0_r(tc0080vco, tile_offs, 0xffff) & 0x7fff;
|
||||||
color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
|
color = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x001f;
|
||||||
flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
|
flipx = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0040;
|
||||||
flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
|
flipy = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0080;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
flipx ^= 0x0040;
|
flipx ^= 0x0040;
|
||||||
flipy ^= 0x0080;
|
flipy ^= 0x0080;
|
||||||
@ -143,13 +139,14 @@ static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, con
|
|||||||
|
|
||||||
VIDEO_UPDATE( parentj )
|
VIDEO_UPDATE( parentj )
|
||||||
{
|
{
|
||||||
TC0080VCO_tilemap_update(screen->machine);
|
const device_config *tc0080vco = devtag_get_device(screen->machine, "tc0080vco");
|
||||||
|
tc0080vco_tilemap_update(tc0080vco);
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, TILEMAP_DRAW_OPAQUE, 0);
|
||||||
parentj_draw_sprites(screen->machine,bitmap,cliprect,0);
|
parentj_draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
parentj_draw_sprites(screen->machine,bitmap,cliprect,1);
|
parentj_draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 2, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ sprite RAM
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "taitoic.h"
|
#include "taiicdev.h"
|
||||||
|
|
||||||
|
|
||||||
/* These are hand-tuned values */
|
/* These are hand-tuned values */
|
||||||
@ -64,24 +64,13 @@ static const int zoomy_conv_table[] =
|
|||||||
0x67,0x68,0x6a,0x6b,0x6c,0x6e,0x6f,0x71, 0x72,0x74,0x76,0x78,0x80,0x7b,0x7d,0x7f
|
0x67,0x68,0x6a,0x6b,0x6c,0x6e,0x6f,0x71, 0x72,0x74,0x76,0x78,0x80,0x7b,0x7d,0x7f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Initialize and destroy video hardware emulation
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
VIDEO_START( taitoair )
|
|
||||||
{
|
|
||||||
TC0080VCO_vh_start(machine,0,0,1,1,-2);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Screen refresh
|
Screen refresh
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
|
||||||
{
|
{
|
||||||
|
const device_config *tc0080vco = devtag_get_device(machine, "tc0080vco");
|
||||||
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
/* Y chain size is 16/32?/64/64? pixels. X chain size
|
||||||
is always 64 pixels. */
|
is always 64 pixels. */
|
||||||
|
|
||||||
@ -93,17 +82,17 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
|
|||||||
int tile_offs; /* sprite chain offset */
|
int tile_offs; /* sprite chain offset */
|
||||||
int zoomx, zoomy; /* zoom value */
|
int zoomx, zoomy; /* zoom value */
|
||||||
|
|
||||||
for (offs = 0x03f8 / 2 ; offs >= 0 ; offs -= 0x008 / 2)
|
for (offs = 0x03f8 / 2; offs >= 0; offs -= 0x008 / 2)
|
||||||
{
|
{
|
||||||
if (offs < 0x01b0 && priority == 0) continue;
|
if (offs < 0x01b0 && priority == 0) continue;
|
||||||
if (offs >= 0x01b0 && priority == 1) continue;
|
if (offs >= 0x01b0 && priority == 1) continue;
|
||||||
|
|
||||||
x0 = TC0080VCO_spriteram[offs + 1] & 0x3ff;
|
x0 = tc0080vco_sprram_r(tc0080vco, offs + 1, 0xffff) & 0x3ff;
|
||||||
y0 = TC0080VCO_spriteram[offs + 0] & 0x3ff;
|
y0 = tc0080vco_sprram_r(tc0080vco, offs + 0, 0xffff) & 0x3ff;
|
||||||
zoomx = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
|
zoomx = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x7f00) >> 8;
|
||||||
zoomy = (TC0080VCO_spriteram[offs + 2] & 0x007f);
|
zoomy = (tc0080vco_sprram_r(tc0080vco, offs + 2, 0xffff) & 0x007f);
|
||||||
tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
|
tile_offs = (tc0080vco_sprram_r(tc0080vco, offs + 3, 0xffff) & 0x1fff) << 2;
|
||||||
ysize = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
|
ysize = size[(tc0080vco_sprram_r(tc0080vco, offs, 0xffff) & 0x0c00) >> 10];
|
||||||
|
|
||||||
if (tile_offs)
|
if (tile_offs)
|
||||||
{
|
{
|
||||||
@ -139,7 +128,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
|
|||||||
if (x0 >= 0x200) x0 -= 0x400;
|
if (x0 >= 0x200) x0 -= 0x400;
|
||||||
if (y0 >= 0x200) y0 -= 0x400;
|
if (y0 >= 0x200) y0 -= 0x400;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
x0 = 497 - x0;
|
x0 = 497 - x0;
|
||||||
y0 = 498 - y0;
|
y0 = 498 - y0;
|
||||||
@ -153,21 +142,21 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
|
|||||||
}
|
}
|
||||||
|
|
||||||
y = y0;
|
y = y0;
|
||||||
for (j = 0 ; j < ysize ; j ++)
|
for (j = 0; j < ysize; j ++)
|
||||||
{
|
{
|
||||||
x = x0;
|
x = x0;
|
||||||
for (k = 0 ; k < 4 ; k ++)
|
for (k = 0; k < 4; k ++)
|
||||||
{
|
{
|
||||||
if (tile_offs >= 0x1000)
|
if (tile_offs >= 0x1000)
|
||||||
{
|
{
|
||||||
int tile, color, flipx, flipy;
|
int tile, color, flipx, flipy;
|
||||||
|
|
||||||
tile = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
|
tile = tc0080vco_cram_0_r(tc0080vco, tile_offs, 0xffff) & 0x7fff;
|
||||||
color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
|
color = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x001f;
|
||||||
flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
|
flipx = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0040;
|
||||||
flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
|
flipy = tc0080vco_cram_1_r(tc0080vco, tile_offs, 0xffff) & 0x0080;
|
||||||
|
|
||||||
if (TC0080VCO_flipscreen)
|
if (tc0080vco_flipscreen_r(tc0080vco))
|
||||||
{
|
{
|
||||||
flipx ^= 0x0040;
|
flipx ^= 0x0040;
|
||||||
flipy ^= 0x0080;
|
flipy ^= 0x0080;
|
||||||
@ -356,29 +345,32 @@ static void fill_poly(bitmap_t *bitmap, const struct poly *q)
|
|||||||
|
|
||||||
VIDEO_UPDATE( taitoair )
|
VIDEO_UPDATE( taitoair )
|
||||||
{
|
{
|
||||||
TC0080VCO_tilemap_update(screen->machine);
|
const device_config *tc0080vco = devtag_get_device(screen->machine, "tc0080vco");
|
||||||
|
|
||||||
|
tc0080vco_tilemap_update(tc0080vco);
|
||||||
|
|
||||||
bitmap_fill(bitmap, cliprect, 0x41);
|
bitmap_fill(bitmap, cliprect, 0x41);
|
||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_A) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, 0, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_S) )
|
||||||
draw_sprites(screen->machine,bitmap,cliprect,0);
|
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_D) )
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
if ( !input_code_pressed(screen->machine, KEYCODE_F) )
|
||||||
draw_sprites(screen->machine,bitmap,cliprect,1);
|
draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
#else
|
#else
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 0, 0, 0);
|
||||||
draw_sprites (screen->machine,bitmap,cliprect,0);
|
draw_sprites(screen->machine, bitmap, cliprect, 0);
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 1, 0, 0);
|
||||||
draw_sprites (screen->machine,bitmap,cliprect,1);
|
draw_sprites(screen->machine, bitmap, cliprect, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
|
tc0080vco_tilemap_draw(tc0080vco, bitmap, cliprect, 2, 0, 0);
|
||||||
|
|
||||||
if(taitoair_line_ram[0x3fff]) {
|
if (taitoair_line_ram[0x3fff])
|
||||||
|
{
|
||||||
int adr = 0x3fff;
|
int adr = 0x3fff;
|
||||||
struct poly q;
|
struct poly q;
|
||||||
view.x1 = cliprect->min_x;
|
view.x1 = cliprect->min_x;
|
||||||
@ -386,16 +378,19 @@ VIDEO_UPDATE( taitoair )
|
|||||||
view.x2 = cliprect->max_x;
|
view.x2 = cliprect->max_x;
|
||||||
view.y2 = cliprect->max_y;
|
view.y2 = cliprect->max_y;
|
||||||
|
|
||||||
while(adr>=0 && taitoair_line_ram[adr] && taitoair_line_ram[adr] != 0x4000) {
|
while(adr>=0 && taitoair_line_ram[adr] && taitoair_line_ram[adr] != 0x4000)
|
||||||
|
{
|
||||||
int pcount;
|
int pcount;
|
||||||
if(!(taitoair_line_ram[adr] & 0x8000) || adr<10) {
|
if(!(taitoair_line_ram[adr] & 0x8000) || adr < 10)
|
||||||
|
{
|
||||||
logerror("quad: unknown value %04x at %04x\n", taitoair_line_ram[adr], adr);
|
logerror("quad: unknown value %04x at %04x\n", taitoair_line_ram[adr], adr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
q.col = (taitoair_line_ram[adr] & 0x7fff) + 0x300;
|
q.col = (taitoair_line_ram[adr] & 0x7fff) + 0x300;
|
||||||
adr--;
|
adr--;
|
||||||
pcount = 0;
|
pcount = 0;
|
||||||
while(pcount < POLY_MAX_PT && adr>=1 && !(taitoair_line_ram[adr] & 0xc000)) {
|
while(pcount < POLY_MAX_PT && adr>=1 && !(taitoair_line_ram[adr] & 0xc000))
|
||||||
|
{
|
||||||
q.p[pcount].y = taitoair_line_ram[adr]+3*16;
|
q.p[pcount].y = taitoair_line_ram[adr]+3*16;
|
||||||
q.p[pcount].x = taitoair_line_ram[adr-1];
|
q.p[pcount].x = taitoair_line_ram[adr-1];
|
||||||
pcount++;
|
pcount++;
|
||||||
|
@ -1,40 +1,14 @@
|
|||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
|
|
||||||
#define TC0100SCN_GFX_NUM 1
|
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
|
||||||
static void warriorb_core_vh_start(running_machine *machine, int x_offs,int multiscrn_xoffs)
|
|
||||||
{
|
|
||||||
int chips;
|
|
||||||
int mask;
|
|
||||||
|
|
||||||
chips = TC0100SCN_count(machine);
|
|
||||||
|
|
||||||
assert_always(chips > 0, "erroneous TC0100SCN configuration");
|
|
||||||
|
|
||||||
TC0100SCN_vh_start(machine,chips,TC0100SCN_GFX_NUM,x_offs,0,0,0,0,0,multiscrn_xoffs);
|
|
||||||
|
|
||||||
mask = TC0110PCR_mask(machine);
|
|
||||||
if (mask & 1)
|
|
||||||
TC0110PCR_vh_start(machine);
|
|
||||||
|
|
||||||
if (mask & 2)
|
|
||||||
TC0110PCR_1_vh_start(machine);
|
|
||||||
|
|
||||||
/* Ensure palette from correct TC0110PCR used for each screen */
|
|
||||||
TC0100SCN_set_chip_colbanks(0,0x100,0x0);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( darius2d )
|
|
||||||
{
|
|
||||||
warriorb_core_vh_start(machine, 4,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
VIDEO_START( warriorb )
|
VIDEO_START( warriorb )
|
||||||
{
|
{
|
||||||
warriorb_core_vh_start(machine, 4,1);
|
const device_config *tc0100scn = devtag_get_device(machine, "tc0100scn_1");
|
||||||
|
|
||||||
|
/* Ensure palette from correct TC0110PCR used for each screen */
|
||||||
|
tc0100scn_set_colbanks(tc0100scn, 0x0, 0x100, 0x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -110,27 +84,28 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan
|
|||||||
|
|
||||||
VIDEO_UPDATE( warriorb )
|
VIDEO_UPDATE( warriorb )
|
||||||
{
|
{
|
||||||
int xoffs = 0, screen_number = -1;
|
int xoffs = 0;
|
||||||
UINT8 layer[3], nodraw;
|
UINT8 layer[3], nodraw;
|
||||||
|
|
||||||
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
const device_config *left_screen = devtag_get_device(screen->machine, "lscreen");
|
||||||
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
const device_config *right_screen = devtag_get_device(screen->machine, "rscreen");
|
||||||
|
const device_config *tc0100scn = NULL;
|
||||||
|
|
||||||
if (screen == left_screen)
|
if (screen == left_screen)
|
||||||
{
|
{
|
||||||
xoffs = 40*8*0;
|
xoffs = 40 * 8 * 0;
|
||||||
screen_number = 0;
|
tc0100scn = devtag_get_device(screen->machine, "tc0100scn_1");
|
||||||
}
|
}
|
||||||
else if (screen == right_screen)
|
else if (screen == right_screen)
|
||||||
{
|
{
|
||||||
xoffs = 40*8*1;
|
xoffs = 40 * 8 * 1;
|
||||||
screen_number = 1;
|
tc0100scn = devtag_get_device(screen->machine, "tc0100scn_2");
|
||||||
}
|
}
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
layer[1] = layer[0]^1;
|
layer[1] = layer[0] ^ 1;
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
/* Clear priority bitmap */
|
/* Clear priority bitmap */
|
||||||
@ -138,18 +113,19 @@ VIDEO_UPDATE( warriorb )
|
|||||||
|
|
||||||
/* chip 0 does tilemaps on the left, chip 1 does the ones on the right */
|
/* chip 0 does tilemaps on the left, chip 1 does the ones on the right */
|
||||||
// draw bottom layer
|
// draw bottom layer
|
||||||
nodraw = TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[0],TILEMAP_DRAW_OPAQUE,0); /* left */
|
nodraw = tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0); /* left */
|
||||||
|
|
||||||
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
|
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
|
||||||
if(nodraw) bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
if (nodraw)
|
||||||
|
bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine));
|
||||||
|
|
||||||
// draw middle layer
|
// draw middle layer
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[1],0,1);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 1);
|
||||||
|
|
||||||
/* Sprites can be under/over the layer below text layer */
|
/* Sprites can be under/over the layer below text layer */
|
||||||
draw_sprites(screen->machine, bitmap,cliprect,xoffs,8); // draw sprites
|
draw_sprites(screen->machine, bitmap, cliprect, xoffs, 8); // draw sprites
|
||||||
|
|
||||||
// draw top(text) layer
|
// draw top(text) layer
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,screen_number,layer[2],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "video/taitoic.h"
|
#include "video/taiicdev.h"
|
||||||
|
|
||||||
#define TC0100SCN_GFX_NUM 1
|
|
||||||
|
|
||||||
static tilemap_t *wgp_piv_tilemap[3];
|
static tilemap_t *wgp_piv_tilemap[3];
|
||||||
|
|
||||||
@ -47,46 +45,41 @@ static TILE_GET_INFO( get_piv2_tile_info )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wgp_core_vh_start(running_machine *machine, int x_offs,int y_offs,int piv_xoffs,int piv_yoffs)
|
static void wgp_core_vh_start(running_machine *machine, int piv_xoffs, int piv_yoffs)
|
||||||
{
|
{
|
||||||
wgp_piv_tilemap[0] = tilemap_create(machine, get_piv0_tile_info,tilemap_scan_rows,16,16,64,64);
|
const device_config *tc0100scn = devtag_get_device(machine, "tc0100scn");
|
||||||
wgp_piv_tilemap[1] = tilemap_create(machine, get_piv1_tile_info,tilemap_scan_rows,16,16,64,64);
|
|
||||||
wgp_piv_tilemap[2] = tilemap_create(machine, get_piv2_tile_info,tilemap_scan_rows,16,16,64,64);
|
|
||||||
|
|
||||||
TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,x_offs,y_offs,0,0,0,0,0);
|
wgp_piv_tilemap[0] = tilemap_create(machine, get_piv0_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
|
||||||
|
wgp_piv_tilemap[1] = tilemap_create(machine, get_piv1_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
|
||||||
if (TC0110PCR_mask(machine) & 1)
|
wgp_piv_tilemap[2] = tilemap_create(machine, get_piv2_tile_info, tilemap_scan_rows, 16, 16, 64, 64);
|
||||||
TC0110PCR_vh_start(machine);
|
|
||||||
|
|
||||||
wgp_piv_xoffs = piv_xoffs;
|
wgp_piv_xoffs = piv_xoffs;
|
||||||
wgp_piv_yoffs = piv_yoffs;
|
wgp_piv_yoffs = piv_yoffs;
|
||||||
|
|
||||||
tilemap_set_transparent_pen( wgp_piv_tilemap[0],0 );
|
tilemap_set_transparent_pen(wgp_piv_tilemap[0], 0);
|
||||||
tilemap_set_transparent_pen( wgp_piv_tilemap[1],0 );
|
tilemap_set_transparent_pen(wgp_piv_tilemap[1], 0);
|
||||||
tilemap_set_transparent_pen( wgp_piv_tilemap[2],0 );
|
tilemap_set_transparent_pen(wgp_piv_tilemap[2], 0);
|
||||||
|
|
||||||
/* flipscreen n/a */
|
/* flipscreen n/a */
|
||||||
tilemap_set_scrolldx( wgp_piv_tilemap[0],-piv_xoffs,0 );
|
tilemap_set_scrolldx(wgp_piv_tilemap[0], -piv_xoffs, 0);
|
||||||
tilemap_set_scrolldx( wgp_piv_tilemap[1],-piv_xoffs,0 );
|
tilemap_set_scrolldx(wgp_piv_tilemap[1], -piv_xoffs, 0);
|
||||||
tilemap_set_scrolldx( wgp_piv_tilemap[2],-piv_xoffs,0 );
|
tilemap_set_scrolldx(wgp_piv_tilemap[2], -piv_xoffs, 0);
|
||||||
tilemap_set_scrolldy( wgp_piv_tilemap[0],-piv_yoffs,0 );
|
tilemap_set_scrolldy(wgp_piv_tilemap[0], -piv_yoffs, 0);
|
||||||
tilemap_set_scrolldy( wgp_piv_tilemap[1],-piv_yoffs,0 );
|
tilemap_set_scrolldy(wgp_piv_tilemap[1], -piv_yoffs, 0);
|
||||||
tilemap_set_scrolldy( wgp_piv_tilemap[2],-piv_yoffs,0 );
|
tilemap_set_scrolldy(wgp_piv_tilemap[2], -piv_yoffs, 0);
|
||||||
|
|
||||||
/* We don't need tilemap_set_scroll_rows, as the custom draw routine
|
/* We don't need tilemap_set_scroll_rows, as the custom draw routine applies rowscroll manually */
|
||||||
applies rowscroll manually */
|
tc0100scn_set_colbanks(tc0100scn, 0x80, 0xc0, 0x40);
|
||||||
|
|
||||||
TC0100SCN_set_colbanks(0x80,0xc0,0x40);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VIDEO_START( wgp )
|
VIDEO_START( wgp )
|
||||||
{
|
{
|
||||||
wgp_core_vh_start(machine, 0,0,32,16);
|
wgp_core_vh_start(machine, 32, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
VIDEO_START( wgp2 )
|
VIDEO_START( wgp2 )
|
||||||
{
|
{
|
||||||
wgp_core_vh_start(machine, 4,2,32,16);
|
wgp_core_vh_start(machine, 32, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -646,6 +639,7 @@ static void wgp_piv_layer_draw(running_machine *machine,bitmap_t *bitmap,const r
|
|||||||
|
|
||||||
VIDEO_UPDATE( wgp )
|
VIDEO_UPDATE( wgp )
|
||||||
{
|
{
|
||||||
|
const device_config *tc0100scn = devtag_get_device(screen->machine, "tc0100scn");
|
||||||
int i;
|
int i;
|
||||||
UINT8 layer[3];
|
UINT8 layer[3];
|
||||||
|
|
||||||
@ -685,7 +679,7 @@ VIDEO_UPDATE( wgp )
|
|||||||
tilemap_set_scrolly(wgp_piv_tilemap[i], 0, wgp_piv_scrolly[i]);
|
tilemap_set_scrolly(wgp_piv_tilemap[i], 0, wgp_piv_scrolly[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
TC0100SCN_tilemap_update(screen->machine);
|
tc0100scn_tilemap_update(tc0100scn);
|
||||||
|
|
||||||
bitmap_fill(bitmap, cliprect, 0);
|
bitmap_fill(bitmap, cliprect, 0);
|
||||||
|
|
||||||
@ -702,36 +696,34 @@ VIDEO_UPDATE( wgp )
|
|||||||
/* We should draw the following on a 1024x1024 bitmap... */
|
/* We should draw the following on a 1024x1024 bitmap... */
|
||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if (dislayer[layer[0]]==0)
|
if (dislayer[layer[0]] == 0)
|
||||||
#endif
|
#endif
|
||||||
wgp_piv_layer_draw(screen->machine,bitmap,cliprect,layer[0],TILEMAP_DRAW_OPAQUE,1);
|
wgp_piv_layer_draw(screen->machine, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
|
||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if (dislayer[layer[1]]==0)
|
if (dislayer[layer[1]] == 0)
|
||||||
#endif
|
#endif
|
||||||
wgp_piv_layer_draw(screen->machine,bitmap,cliprect,layer[1],0,2);
|
wgp_piv_layer_draw(screen->machine, bitmap, cliprect, layer[1], 0, 2);
|
||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if (dislayer[layer[2]]==0)
|
if (dislayer[layer[2]] == 0)
|
||||||
#endif
|
#endif
|
||||||
wgp_piv_layer_draw(screen->machine,bitmap,cliprect,layer[2],0,4);
|
wgp_piv_layer_draw(screen->machine, bitmap, cliprect, layer[2], 0, 4);
|
||||||
|
|
||||||
draw_sprites(screen->machine, bitmap,cliprect,16);
|
draw_sprites(screen->machine, bitmap, cliprect, 16);
|
||||||
|
|
||||||
/* ... then here we should apply rotation from wgp_sate_ctrl[] to
|
/* ... then here we should apply rotation from wgp_sate_ctrl[] to the bitmap before we draw the TC0100SCN layers on it */
|
||||||
the bitmap before we draw the TC0100SCN layers on it */
|
layer[0] = tc0100scn_bottomlayer(tc0100scn);
|
||||||
|
layer[1] = layer[0] ^ 1;
|
||||||
layer[0] = TC0100SCN_bottomlayer(0);
|
|
||||||
layer[1] = layer[0]^1;
|
|
||||||
layer[2] = 2;
|
layer[2] = 2;
|
||||||
|
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[0],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[0], 0, 0);
|
||||||
|
|
||||||
#ifdef MAME_DEBUG
|
#ifdef MAME_DEBUG
|
||||||
if (dislayer[3]==0)
|
if (dislayer[3] == 0)
|
||||||
#endif
|
#endif
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[1],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[1], 0, 0);
|
||||||
TC0100SCN_tilemap_draw(screen->machine,bitmap,cliprect,0,layer[2],0,0);
|
tc0100scn_tilemap_draw(tc0100scn, bitmap, cliprect, layer[2], 0, 0);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user