mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
This essentially rewrites the CVS system video code. This fixes wallst071gre. Also fixed the S2650 registry window display.
This commit is contained in:
parent
9d3cf20f84
commit
531aea4a38
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2148,6 +2148,7 @@ src/mame/includes/crbaloon.h svneol=native#text/plain
|
||||
src/mame/includes/crgolf.h svneol=native#text/plain
|
||||
src/mame/includes/crshrace.h svneol=native#text/plain
|
||||
src/mame/includes/cubocd32.h svneol=native#text/plain
|
||||
src/mame/includes/cvs.h svneol=native#text/plain
|
||||
src/mame/includes/cyberbal.h svneol=native#text/plain
|
||||
src/mame/includes/dc.h svneol=native#text/plain
|
||||
src/mame/includes/dcheese.h svneol=native#text/plain
|
||||
|
@ -1605,9 +1605,9 @@ void s2650_get_info(UINT32 state, cpuinfo *info)
|
||||
case CPUINFO_STR_REGISTER + S2650_R1: sprintf(info->s, "R1:%02X", S.reg[1]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R2: sprintf(info->s, "R2:%02X", S.reg[2]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R3: sprintf(info->s, "R3:%02X", S.reg[3]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R1A: sprintf(info->s, "R1'%02X", S.reg[4]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R2A: sprintf(info->s, "R2'%02X", S.reg[5]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R3A: sprintf(info->s, "R3'%02X", S.reg[6]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R1A: sprintf(info->s, "R1':%02X", S.reg[4]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R2A: sprintf(info->s, "R2':%02X", S.reg[5]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_R3A: sprintf(info->s, "R3':%02X", S.reg[6]); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_HALT: sprintf(info->s, "HALT:%X", S.halt); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_SI: sprintf(info->s, "SI:%X", (S.psu & SI) ? 1 : 0); break;
|
||||
case CPUINFO_STR_REGISTER + S2650_FO: sprintf(info->s, "FO:%X", (S.psu & FO) ? 1 : 0); break;
|
||||
|
@ -76,7 +76,7 @@
|
||||
#include "driver.h"
|
||||
#include "s2636.h"
|
||||
|
||||
static const int SpriteOffset[4] = {0,0x10,0x20,0x40};
|
||||
static const int sprite_offsets[4] = { 0x00, 0x10, 0x20, 0x40};
|
||||
|
||||
/* To adjust sprites against bitmap */
|
||||
|
||||
@ -88,8 +88,19 @@ mame_bitmap *s2636_1_bitmap;
|
||||
mame_bitmap *s2636_2_bitmap;
|
||||
mame_bitmap *s2636_3_bitmap;
|
||||
|
||||
int s2636_x_offset=0;
|
||||
int s2636_y_offset=0;
|
||||
int s2636_x_offset;
|
||||
int s2636_y_offset;
|
||||
|
||||
const gfx_layout s2636_gfx_layout =
|
||||
{
|
||||
8,10,
|
||||
5,
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
|
||||
/*****************************************/
|
||||
@ -103,20 +114,20 @@ static int SpriteCheck(running_machine *machine, int first,int second,UINT8 *wor
|
||||
|
||||
// Does not check shadow sprites yet
|
||||
|
||||
if((workram[SpriteOffset[first] + 10] != 0xff) && (workram[SpriteOffset[second] + 10] != 0xff))
|
||||
if((workram[sprite_offsets[first] + 10] != 0xff) && (workram[sprite_offsets[second] + 10] != 0xff))
|
||||
{
|
||||
int fx1 = workram[SpriteOffset[first] + 10] + s2636_x_offset;
|
||||
int fy1 = workram[SpriteOffset[first] + 12] + s2636_y_offset;
|
||||
int fx2 = workram[SpriteOffset[second] + 10] + s2636_x_offset;
|
||||
int fy2 = workram[SpriteOffset[second] + 12] + s2636_y_offset;
|
||||
int fx1 = workram[sprite_offsets[first] + 10] + s2636_x_offset;
|
||||
int fy1 = workram[sprite_offsets[first] + 12] + s2636_y_offset;
|
||||
int fx2 = workram[sprite_offsets[second] + 10] + s2636_x_offset;
|
||||
int fy2 = workram[sprite_offsets[second] + 12] + s2636_y_offset;
|
||||
|
||||
if((fx1>=0) && (fy1>=0) && (fx2>=0) && (fy2>=0))
|
||||
{
|
||||
int expand1 = 1 << (16+((workram[0xC0]>>(first<<1)) & 3));
|
||||
int expand2 = 1 << (16+((workram[0xC0]>>(second<<1)) & 3));
|
||||
|
||||
int char1 = SpriteOffset[first]>>4;
|
||||
int char2 = SpriteOffset[second]>>4;
|
||||
int char1 = sprite_offsets[first]>>4;
|
||||
int char2 = sprite_offsets[second]>>4;
|
||||
|
||||
/* Draw first sprite */
|
||||
|
||||
@ -197,7 +208,7 @@ void s2636_update_bitmap(running_machine *machine,mame_bitmap *bitmap,UINT8 *wor
|
||||
|
||||
for(spriteno=0;spriteno<4;spriteno++)
|
||||
{
|
||||
offs = SpriteOffset[spriteno];
|
||||
offs = sprite_offsets[spriteno];
|
||||
|
||||
if(workram[offs+10]!=0xFF)
|
||||
{
|
||||
|
@ -9,5 +9,7 @@ extern mame_bitmap *s2636_3_bitmap;
|
||||
extern int s2636_x_offset;
|
||||
extern int s2636_y_offset;
|
||||
|
||||
extern const gfx_layout s2636_gfx_layout;
|
||||
|
||||
void s2636_update_bitmap(running_machine *machine,mame_bitmap *bitmap,UINT8 *workram,int Graphics_Bank,mame_bitmap *collision_bitmap);
|
||||
|
||||
|
@ -83,36 +83,13 @@ Hardware Info
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "cvs.h"
|
||||
#include "cpu/s2650/s2650.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/5110intf.h"
|
||||
#include "sound/tms5110.h"
|
||||
#include "video/s2636.h"
|
||||
|
||||
INTERRUPT_GEN( cvs_interrupt );
|
||||
PALETTE_INIT( cvs );
|
||||
VIDEO_UPDATE( cvs );
|
||||
VIDEO_START( cvs );
|
||||
|
||||
extern UINT8 *cvs_bullet_ram;
|
||||
|
||||
WRITE8_HANDLER( cvs_videoram_w );
|
||||
WRITE8_HANDLER( cvs_bullet_w );
|
||||
WRITE8_HANDLER( cvs_2636_1_w );
|
||||
WRITE8_HANDLER( cvs_2636_2_w );
|
||||
WRITE8_HANDLER( cvs_2636_3_w );
|
||||
WRITE8_HANDLER( cvs_scroll_w );
|
||||
WRITE8_HANDLER( cvs_video_fx_w );
|
||||
|
||||
READ8_HANDLER( cvs_collision_r );
|
||||
READ8_HANDLER( cvs_collision_clear );
|
||||
READ8_HANDLER( cvs_videoram_r );
|
||||
READ8_HANDLER( cvs_bullet_r );
|
||||
READ8_HANDLER( cvs_2636_1_r );
|
||||
READ8_HANDLER( cvs_2636_2_r );
|
||||
READ8_HANDLER( cvs_2636_3_r );
|
||||
READ8_HANDLER( cvs_character_mode_r );
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Speech Calls
|
||||
@ -229,11 +206,11 @@ static const struct TMS5110interface tms5110_interface =
|
||||
|
||||
static ADDRESS_MAP_START( cvs_cpu1_program, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x13ff) AM_ROM
|
||||
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_r, cvs_bullet_w) AM_BASE(&cvs_bullet_ram)
|
||||
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_3_r, cvs_2636_3_w) AM_BASE(&s2636_3_ram)
|
||||
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_2_r, cvs_2636_2_w) AM_BASE(&s2636_2_ram)
|
||||
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_1_r, cvs_2636_1_w) AM_BASE(&s2636_1_ram)
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(cvs_videoram_r, cvs_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
|
||||
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_ram_or_palette_r, cvs_bullet_ram_or_palette_w) AM_BASE(&cvs_bullet_ram)
|
||||
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_3_or_character_ram_r, cvs_s2636_3_or_character_ram_w) AM_BASE(&s2636_3_ram)
|
||||
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w) AM_BASE(&s2636_2_ram)
|
||||
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w) AM_BASE(&s2636_1_ram)
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(cvs_video_or_color_ram_r, cvs_video_or_color_ram_w) AM_BASE(&cvs_video_ram)
|
||||
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
|
||||
AM_RANGE(0x2000, 0x33ff) AM_ROM
|
||||
AM_RANGE(0x4000, 0x53ff) AM_ROM
|
||||
@ -241,14 +218,7 @@ static ADDRESS_MAP_START( cvs_cpu1_program, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( cvs_cpu1_io, ADDRESS_SPACE_IO, 8 )
|
||||
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
|
||||
AM_RANGE(0x02, 0x02) AM_READ(input_port_1_r)
|
||||
AM_RANGE(0x03, 0x03) AM_READ(input_port_2_r)
|
||||
AM_RANGE(0x04, 0x04) AM_READ(input_port_3_r)
|
||||
AM_RANGE(0x06, 0x06) AM_READ(input_port_4_r) // Dip 1
|
||||
AM_RANGE(0x07, 0x07) AM_READ(input_port_5_r) // Dip 2
|
||||
AM_RANGE(0x10, 0xff) AM_READ(cvs_character_mode_r) // Programmable Character Settings
|
||||
AM_RANGE(0x00, 0xff) AM_WRITE(cvs_scroll_w)
|
||||
AM_RANGE(0x00, 0xff) AM_READWRITE(cvs_input_r, cvs_scroll_w)
|
||||
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, cvs_video_fx_w)
|
||||
AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(cvs_collision_r, control_port_w)
|
||||
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_6_r)
|
||||
@ -337,7 +307,7 @@ static INPUT_PORTS_START( cvs )
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
static const gfx_layout charlayout8colour =
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,8, /* 8*8 characters */
|
||||
256, /* 256 characters */
|
||||
@ -348,25 +318,11 @@ static const gfx_layout charlayout8colour =
|
||||
8*8 /* every char takes 8 consecutive bytes */
|
||||
};
|
||||
|
||||
/* S2636 Mappings */
|
||||
|
||||
static const gfx_layout s2636_character10 =
|
||||
{
|
||||
8,10,
|
||||
5,
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0,1,2,3,4,5,6,7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
static GFXDECODE_START( cvs )
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout8colour, 0, 259 ) /* Rom chars */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout8colour, 0, 259 ) /* Ram chars */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 259 ) /* chars */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_DRIVER_START( cvs )
|
||||
@ -429,7 +385,7 @@ ROM_START( cvs )
|
||||
ROM_LOAD( "82s185.10h", 0x0000, 0x0800, CRC(c205bca6) SHA1(ec9bd220e75f7b067ede6139763ef8aca0fb7a29) )
|
||||
ROM_LOAD( "82s123.10k", 0x0800, 0x0020, CRC(b5221cec) SHA1(71d9830b33b1a8140b0fe1a2ba8024ba8e6e48e0) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_FILL(0x000000, 0x1800, 0 )
|
||||
ROM_END
|
||||
|
||||
@ -467,7 +423,7 @@ ROM_START( huncholy )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "ho-sp1.bin", 0x0000, 0x1000, CRC(3fd39b1e) SHA1(f5d0b2cfaeda994762403f039a6f7933c5525234) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "ho-cp1.bin", 0x0000, 0x0800, CRC(c6c73d46) SHA1(63aba92f77105fedf46337b591b074020bec05d0) )
|
||||
ROM_LOAD( "ho-cp2.bin", 0x0800, 0x0800, CRC(e596371c) SHA1(93a0d0ccdf830ae72d070b03b7e2222f4a737ead) )
|
||||
ROM_LOAD( "ho-cp3.bin", 0x1000, 0x0800, CRC(11fae1cf) SHA1(5ceabfb1ff1a6f76d1649512f57d7151f5258ecb) )
|
||||
@ -510,7 +466,7 @@ ROM_START( darkwar )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "dw-sp1.bin", 0x0000, 0x1000, CRC(ce815074) SHA1(105f24fb776131b30e35488cca29954298559518) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "dw-cp1.bin", 0x0000, 0x0800, CRC(7a0f9f3e) SHA1(0aa787923fbb614f15016d99c03093a59a0bfb88) )
|
||||
ROM_LOAD( "dw-cp2.bin", 0x0800, 0x0800, CRC(232e5120) SHA1(76e4d6d17e8108306761604bd56d6269bfc431e1) )
|
||||
ROM_LOAD( "dw-cp3.bin", 0x1000, 0x0800, CRC(573e0a17) SHA1(9c7991eac625b287bafb6cf722ffb405a9627e09) )
|
||||
@ -553,7 +509,7 @@ ROM_START( 8ball )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "8b-sp1.bin", 0x0000, 0x0800, CRC(1ee167f3) SHA1(40c876a60832456a27108252ba0b9963f9fe70b0) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "8b-cp1.bin", 0x0000, 0x0800, CRC(c1f68754) SHA1(481c8e3dc35300f779b7925fa8a54320688dac54) )
|
||||
ROM_LOAD( "8b-cp2.bin", 0x0800, 0x0800, CRC(6ec1d711) SHA1(768df8e621a7b110a963c93402ee01b1c9009286) )
|
||||
ROM_LOAD( "8b-cp3.bin", 0x1000, 0x0800, CRC(4a9afce4) SHA1(187e5106aa2d0bdebf6ec9f2b7c2c2f67d47d221) )
|
||||
@ -596,7 +552,7 @@ ROM_START( 8ball1 )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "8b-sp1.bin", 0x0000, 0x0800, CRC(1ee167f3) SHA1(40c876a60832456a27108252ba0b9963f9fe70b0) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "8a-cp1.bin", 0x0000, 0x0800, CRC(d9b36c16) SHA1(dbb496102fa2344f19b5d9a3eecdb29c433e4c08) )
|
||||
ROM_LOAD( "8a-cp2.bin", 0x0800, 0x0800, CRC(6f66f0ff) SHA1(1e91474973356e97f89b4d9093565747a8331f50) )
|
||||
ROM_LOAD( "8a-cp3.bin", 0x1000, 0x0800, CRC(baee8b17) SHA1(9f86f1d5903aeead17cc75dac8a2b892bb375dad) )
|
||||
@ -639,7 +595,7 @@ ROM_START( hunchbak )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "hb-sp1.bin", 0x0000, 0x0800, CRC(ed1cd201) SHA1(6cc3842dda1bfddc06ffb436c55d14276286bd67) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "hb-cp1.bin", 0x0000, 0x0800, CRC(f256b047) SHA1(02d79882bad37ffdd58ef478e2658a1369c32ebc) )
|
||||
ROM_LOAD( "hb-cp2.bin", 0x0800, 0x0800, CRC(b870c64f) SHA1(ce4f8de87568782ce02bba754edff85df7f5c393) )
|
||||
ROM_LOAD( "hb-cp3.bin", 0x1000, 0x0800, CRC(9a7dab88) SHA1(cd39a9d4f982a7f49c478db1408d7e07335f2ddc) )
|
||||
@ -682,7 +638,7 @@ ROM_START( hunchbka )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "hb-sp1.bin", 0x0000, 0x0800, CRC(ed1cd201) SHA1(6cc3842dda1bfddc06ffb436c55d14276286bd67) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "hb-cp1.bin", 0x0000, 0x0800, CRC(f256b047) SHA1(02d79882bad37ffdd58ef478e2658a1369c32ebc) )
|
||||
ROM_LOAD( "hb-cp2.bin", 0x0800, 0x0800, CRC(b870c64f) SHA1(ce4f8de87568782ce02bba754edff85df7f5c393) )
|
||||
ROM_LOAD( "hb-cp3.bin", 0x1000, 0x0800, CRC(9a7dab88) SHA1(cd39a9d4f982a7f49c478db1408d7e07335f2ddc) )
|
||||
@ -725,7 +681,7 @@ ROM_START( wallst )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "ws-sp1.bin", 0x0000, 0x0800, CRC(84b72637) SHA1(9c5834320f39545403839fb7088c37177a6c8861) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "ws-cp1.bin", 0x0000, 0x0800, CRC(5aca11df) SHA1(5ef815b5b09445515ff8b958c4ea29f1a221cee1) )
|
||||
ROM_LOAD( "ws-cp2.bin", 0x0800, 0x0800, CRC(ca530d85) SHA1(e5a78667c3583d06d8387848323b11e4a91091ec) )
|
||||
ROM_LOAD( "ws-cp3.bin", 0x1000, 0x0800, CRC(1e0225d6) SHA1(410795046c64c24de6711b167315308808b54291) )
|
||||
@ -768,7 +724,7 @@ ROM_START( dazzler )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "dz-sp1.bin", 0x0000, 0x0800, CRC(25da1fc1) SHA1(c14717ec3399ce7dc47a9d42c8ac8f585db770e9) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "dz-cp1.bin", 0x0000, 0x0800, CRC(0a8a9034) SHA1(9df3d4f387bd5ce3d3580ba678aeda1b65634ac2) )
|
||||
ROM_LOAD( "dz-cp2.bin", 0x0800, 0x0800, CRC(3868dd82) SHA1(844584c5a80fb8f1797b4aa4e22024e75726293d) )
|
||||
ROM_LOAD( "dz-cp3.bin", 0x1000, 0x0800, CRC(755d9ed2) SHA1(a7165a1d12a5a81d8bb941d8ad073e2097c90beb) )
|
||||
@ -811,7 +767,7 @@ ROM_START( radarzon )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "rd-sp1.bin", 0x0000, 0x0800, CRC(43b17734) SHA1(59960f0c48ed24cedb4b4655f97f6f1fdac4445e) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "rd-cp1.bin", 0x0000, 0x0800, CRC(ed601677) SHA1(efe2b6033f319603ee80ed4ba66d3b3607537b13) )
|
||||
ROM_LOAD( "rd-cp2.bin", 0x0800, 0x0800, CRC(35e317ff) SHA1(458550b431ec66006e2966d86a2286905c0495ed) )
|
||||
ROM_LOAD( "rd-cp3.bin", 0x1000, 0x0800, CRC(90f2c43f) SHA1(406215217f6f20c1a78f31b2ae3c0a97391e3371) )
|
||||
@ -854,7 +810,7 @@ ROM_START( radarzn1 )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "rd-sp1.bin", 0x0000, 0x0800, CRC(43b17734) SHA1(59960f0c48ed24cedb4b4655f97f6f1fdac4445e) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "rd-cp1.bin", 0x0000, 0x0800, CRC(ed601677) SHA1(efe2b6033f319603ee80ed4ba66d3b3607537b13) )
|
||||
ROM_LOAD( "rd-cp2.bin", 0x0800, 0x0800, CRC(35e317ff) SHA1(458550b431ec66006e2966d86a2286905c0495ed) )
|
||||
ROM_LOAD( "rd-cp3.bin", 0x1000, 0x0800, CRC(90f2c43f) SHA1(406215217f6f20c1a78f31b2ae3c0a97391e3371) )
|
||||
@ -897,7 +853,7 @@ ROM_START( radarznt )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "rd-sp1.bin", 0x0000, 0x0800, CRC(43b17734) SHA1(59960f0c48ed24cedb4b4655f97f6f1fdac4445e) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "rd-cp1.bin", 0x0000, 0x0800, CRC(ed601677) SHA1(efe2b6033f319603ee80ed4ba66d3b3607537b13) )
|
||||
ROM_LOAD( "rd-cp2.bin", 0x0800, 0x0800, CRC(35e317ff) SHA1(458550b431ec66006e2966d86a2286905c0495ed) )
|
||||
ROM_LOAD( "rd-cp3.bin", 0x1000, 0x0800, CRC(90f2c43f) SHA1(406215217f6f20c1a78f31b2ae3c0a97391e3371) )
|
||||
@ -940,7 +896,7 @@ ROM_START( outline )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "ot-sp1.bin", 0x0000, 0x1000, CRC(fa21422a) SHA1(a75d13455c65e5a77db02fc87f0c112e329d0d6d) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "rd-cp1.bin", 0x0000, 0x0800, CRC(ed601677) SHA1(efe2b6033f319603ee80ed4ba66d3b3607537b13) )
|
||||
ROM_LOAD( "rd-cp2.bin", 0x0800, 0x0800, CRC(35e317ff) SHA1(458550b431ec66006e2966d86a2286905c0495ed) )
|
||||
ROM_LOAD( "rd-cp3.bin", 0x1000, 0x0800, CRC(90f2c43f) SHA1(406215217f6f20c1a78f31b2ae3c0a97391e3371) )
|
||||
@ -983,7 +939,7 @@ ROM_START( goldbug )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "gb-sp1.bin", 0x0000, 0x0800, CRC(5d0205c3) SHA1(578937058d56e5c9fba8a2204ddbb59a6d23dec7) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "gb-cp1.bin", 0x0000, 0x0800, CRC(80e1ad5a) SHA1(0a577b0faffd9d6807c39175ce213f017a5cc7f8) )
|
||||
ROM_LOAD( "gb-cp2.bin", 0x0800, 0x0800, CRC(0a288b29) SHA1(0c6471a3517805a5c873857ff21ca94dfe91c24e) )
|
||||
ROM_LOAD( "gb-cp3.bin", 0x1000, 0x0800, CRC(e5bcf8cf) SHA1(7f53b8ee6f87e6c8761d2200e8194a7d16d8c7ac) )
|
||||
@ -1026,7 +982,7 @@ ROM_START( diggerc )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "dig-sp1.bin", 0x0000, 0x0800, CRC(db526ee1) SHA1(afe319e64350b0c54b72394294a6369c885fdb7f) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "dig-cp1.bin", 0x0000, 0x0800, CRC(ca30fb97) SHA1(148f3a6f20b1f256a73e7a1992262116d77cc0a8) )
|
||||
ROM_LOAD( "dig-cp2.bin", 0x0800, 0x0800, CRC(bed2334c) SHA1(c93902d01174e13fb9265194e5e44f67b38c5970) )
|
||||
ROM_LOAD( "dig-cp3.bin", 0x1000, 0x0800, CRC(46db9b65) SHA1(1c655b4611ab182b6e4a3cdd3ef930e0d4dad0d9) )
|
||||
@ -1069,7 +1025,7 @@ ROM_START( superbik )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "sb-sp1.bin", 0x0000, 0x0800, CRC(0aeb9ccd) SHA1(e7123eed21e4e758bbe1cebfd5aad44a5de45c27) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "sb-cp1.bin", 0x0000, 0x0800, CRC(03ba7760) SHA1(4ed252e2c4ec7cea2199524f7c35a1dc7c44f8d8) )
|
||||
ROM_LOAD( "sb-cp2.bin", 0x0800, 0x0800, CRC(04de69f2) SHA1(3ef3b3c159d47230622b6cc45baad8737bd93a90) )
|
||||
ROM_LOAD( "sb-cp3.bin", 0x1000, 0x0800, CRC(bb7d0b9a) SHA1(94c72d6961204be9cab351ac854ac9c69b51e79a) )
|
||||
@ -1112,7 +1068,7 @@ ROM_START( hero )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "hr-sp1.bin", 0x0000, 0x0800, CRC(a5c33cb1) SHA1(447ffb193b0dc4985bae5d8c214a893afd08664b) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "hr-cp1.bin", 0x0000, 0x0800, CRC(2d201496) SHA1(f195aa1b231a0e1752c7da824a10321f0527f8c9) )
|
||||
ROM_LOAD( "hr-cp2.bin", 0x0800, 0x0800, CRC(21b61fe3) SHA1(31882003f0557ffc4ec38ae6ee07b5d294b4162c) )
|
||||
ROM_LOAD( "hr-cp3.bin", 0x1000, 0x0800, CRC(9c8e3f9e) SHA1(9d949a4d12b45da12b434677670b2b109568564a) )
|
||||
@ -1155,7 +1111,7 @@ ROM_START( logger )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "lg-sp1.bin", 0x0000, 0x0800, CRC(74f67815) SHA1(6a26a16c27a7e4d58b611e5127115005a60cff91) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "lg-cp1.bin", 0x0000, 0x0800, CRC(e4ede80e) SHA1(62f2bc78106a057b6a8420d40421908df609bf29) )
|
||||
ROM_LOAD( "lg-cp2.bin", 0x0800, 0x0800, CRC(d3de8e5b) SHA1(f95320e001869c42e51195d9cc11e4f2555e153f) )
|
||||
ROM_LOAD( "lg-cp3.bin", 0x1000, 0x0800, CRC(9b8d1031) SHA1(87ef12aeae80cc0f240dead651c6222848f8dccc) )
|
||||
@ -1198,7 +1154,7 @@ ROM_START( cosmos )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "cs-sp1.bin", 0x0000, 0x1000, CRC(3c7fe86d) SHA1(9ae0b63b231a7092820650a196cde60588bc6b58) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "cs-cp1.bin", 0x0000, 0x0800, CRC(6a48c898) SHA1(c27f7bcdb2fe042ec52d1b9b4b9a4e47c288862d) )
|
||||
ROM_LOAD( "cs-cp2.bin", 0x0800, 0x0800, CRC(db0dfd8c) SHA1(f2b0dd43f0e514fdae54e4066606187f45b98e38) )
|
||||
ROM_LOAD( "cs-cp3.bin", 0x1000, 0x0800, CRC(01eee875) SHA1(6c41d716b5795f085229d855518862fb85f395a4) )
|
||||
@ -1241,7 +1197,7 @@ ROM_START( heartatk )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "ha-sp1.bin", 0x0000, 0x1000, CRC(fa21422a) SHA1(a75d13455c65e5a77db02fc87f0c112e329d0d6d) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "ha-cp1.bin", 0x0000, 0x0800, CRC(2d0f6d13) SHA1(55e45eaf1bf24a7a78a2f34ffc0d99a4c191d138) )
|
||||
ROM_LOAD( "ha-cp2.bin", 0x0800, 0x0800, CRC(7f5671bd) SHA1(7f4ae92a96c5a847c113f6f7e8d67d3e5ee0bcb0) )
|
||||
ROM_LOAD( "ha-cp3.bin", 0x1000, 0x0800, CRC(35b05ab4) SHA1(f336eb0c674c3d52e84be0f37b70953cce6112dc) )
|
||||
@ -1284,7 +1240,7 @@ ROM_START( spacefrt )
|
||||
ROM_REGION( 0x1000, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "sf-sp1.bin", 0x0000, 0x1000, CRC(c5628d30) SHA1(d29a5852a1762cbd5f3eba29ae2bf49b3a26f894) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "sf-cp1.bin", 0x0000, 0x0800, CRC(da194a68) SHA1(4215267e91644cf1e1f32f898bc9562bfba711f3) )
|
||||
ROM_LOAD( "sf-cp2.bin", 0x0800, 0x0800, CRC(b96977c7) SHA1(8f0fab044f16787bce83562e2b22d962d0a2c209) )
|
||||
ROM_LOAD( "sf-cp3.bin", 0x1000, 0x0800, CRC(f5d67b9a) SHA1(a492b41c53b1f28ac5f70969e5f06afa948c1a7d) )
|
||||
@ -1327,7 +1283,7 @@ ROM_START( raiders )
|
||||
ROM_REGION( 0x0800, REGION_SOUND1, 0 )
|
||||
ROM_LOAD( "raidr1-8.bin", 0x0000, 0x0800, CRC(b6b90d2e) SHA1(a966fa208b72aec358b7fb277e603e47b6984aa7) )
|
||||
|
||||
ROM_REGION( 0x1800, REGION_GFX1, ROMREGION_DISPOSE )
|
||||
ROM_REGION( 0x1800, REGION_GFX1, 0 )
|
||||
ROM_LOAD( "raid4-11.bin", 0x0000, 0x0800, CRC(5eb7143b) SHA1(a19e803c15593b37ae2e61789f6e16f319620a37) )
|
||||
ROM_LOAD( "raid4-10.bin", 0x0800, 0x0800, CRC(391948a4) SHA1(7e20ad4f7e5bf7ad5dcb08ba6475313e2b8b1f03) )
|
||||
ROM_LOAD( "raid4-9b.bin", 0x1000, 0x0800, CRC(fecfde80) SHA1(23ea63080b8292fb00a743743cdff1a7ad0a8c6d) )
|
||||
|
@ -469,17 +469,6 @@ static const gfx_layout charlayout =
|
||||
8*8
|
||||
};
|
||||
|
||||
static const gfx_layout s2636_character10 =
|
||||
{
|
||||
8,10,
|
||||
5,
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0,1,2,3,4,5,6,7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
static const gfx_layout sprites_layout =
|
||||
{
|
||||
32,32,
|
||||
@ -498,11 +487,11 @@ static const gfx_layout sprites_layout =
|
||||
};
|
||||
|
||||
static GFXDECODE_START( laserbat )
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 256 ) /* Rom chars */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1500, s2636_character10, 0, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1600, s2636_character10, 0, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1700, s2636_character10, 0, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, sprites_layout, 0, 8 ) /* Sprites */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 256 ) /* Rom chars */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1500, s2636_gfx_layout, 0, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1600, s2636_gfx_layout, 0, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x1700, s2636_gfx_layout, 0, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, sprites_layout, 0, 8 ) /* Sprites */
|
||||
GFXDECODE_END
|
||||
|
||||
static TILE_GET_INFO( get_tile_info )
|
||||
|
@ -324,17 +324,6 @@ static const gfx_layout charlayout =
|
||||
// 8*8
|
||||
};
|
||||
|
||||
static const gfx_layout s2636_character10 =
|
||||
{
|
||||
8,10,
|
||||
5,
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0,1,2,3,4,5,6,7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
static const gfx_layout saa5050_charlayout =
|
||||
{
|
||||
6, 10,
|
||||
@ -373,12 +362,12 @@ static const gfx_layout saa5050_lolayout =
|
||||
|
||||
//add s2636 decodes here (i.e. from zac2650) and maybe re-arrange them
|
||||
static GFXDECODE_START( malzak )
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 16 )
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x0000, s2636_character10, 0, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x0000, s2636_character10, 0, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_charlayout, 0, 128)
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_hilayout, 0, 128)
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_lolayout, 0, 128)
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 )
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x0000, s2636_gfx_layout, 0, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_CPU1, 0x0000, s2636_gfx_layout, 0, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_charlayout, 0, 128 )
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_hilayout, 0, 128 )
|
||||
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, saa5050_lolayout, 0, 128 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
|
@ -58,16 +58,17 @@ Sound Board 1b11107
|
||||
************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "cvs.h"
|
||||
#include "cpu/s2650/s2650.h"
|
||||
#include "cpu/i8039/i8039.h"
|
||||
#include "sound/dac.h"
|
||||
#include "video/s2636.h"
|
||||
|
||||
|
||||
PALETTE_INIT( quasar );
|
||||
VIDEO_UPDATE( quasar );
|
||||
VIDEO_START( quasar );
|
||||
|
||||
extern UINT8 *cvs_bullet_ram;
|
||||
|
||||
extern UINT8 *quasar_effectram;
|
||||
extern int quasar_effectcontrol;
|
||||
@ -76,23 +77,6 @@ static int page = 0;
|
||||
static int IOpage = 8;
|
||||
|
||||
|
||||
WRITE8_HANDLER( cvs_videoram_w );
|
||||
WRITE8_HANDLER( cvs_bullet_w );
|
||||
WRITE8_HANDLER( cvs_2636_1_w );
|
||||
WRITE8_HANDLER( cvs_2636_2_w );
|
||||
WRITE8_HANDLER( cvs_2636_3_w );
|
||||
WRITE8_HANDLER( cvs_scroll_w );
|
||||
WRITE8_HANDLER( cvs_video_fx_w );
|
||||
|
||||
READ8_HANDLER( cvs_collision_r );
|
||||
READ8_HANDLER( cvs_collision_clear );
|
||||
READ8_HANDLER( cvs_videoram_r );
|
||||
READ8_HANDLER( cvs_bullet_r );
|
||||
READ8_HANDLER( cvs_2636_1_r );
|
||||
READ8_HANDLER( cvs_2636_2_r );
|
||||
READ8_HANDLER( cvs_2636_3_r );
|
||||
READ8_HANDLER( cvs_character_mode_r );
|
||||
|
||||
/************************************************************************
|
||||
|
||||
Quasar memory layout
|
||||
@ -145,15 +129,12 @@ static WRITE8_HANDLER( page_B_w )
|
||||
|
||||
static WRITE8_HANDLER( quasar_video_w )
|
||||
{
|
||||
if (page == 0) videoram_w(offset,data);
|
||||
if (page == 1) colorram_w(offset,(data & 7)); // 3 bits of ram only - 3 x 2102
|
||||
if (page == 2)
|
||||
switch (page)
|
||||
{
|
||||
quasar_effectram[offset] = data;
|
||||
}
|
||||
if (page == 3)
|
||||
{
|
||||
quasar_effectcontrol = data;
|
||||
case 0: cvs_video_ram[offset] = data; break;
|
||||
case 1: cvs_color_ram[offset] = data & 7; break; // 3 bits of ram only - 3 x 2102
|
||||
case 2: quasar_effectram[offset] = data; break;
|
||||
case 3: quasar_effectcontrol = data; break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -216,11 +197,11 @@ static WRITE8_HANDLER( Quasar_DAC_w )
|
||||
|
||||
static ADDRESS_MAP_START( quasar, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x13ff) AM_ROM
|
||||
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_r, quasar_bullet_w) AM_BASE(&cvs_bullet_ram)
|
||||
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_1_r, cvs_2636_1_w) AM_BASE(&s2636_1_ram)
|
||||
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_2_r, cvs_2636_2_w) AM_BASE(&s2636_2_ram)
|
||||
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_2636_3_r, cvs_2636_3_w) AM_BASE(&s2636_3_ram)
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(MRA8_RAM /*quasar_video_r*/, quasar_video_w) AM_BASE(&videoram) AM_SIZE(&videoram_size) //0 = background, 1 = colour, 2 = effect, 3 = port blank
|
||||
AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_bullet_ram_or_palette_r, quasar_bullet_w) AM_BASE(&cvs_bullet_ram)
|
||||
AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_1_or_character_ram_r, cvs_s2636_1_or_character_ram_w) AM_BASE(&s2636_1_ram)
|
||||
AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_2_or_character_ram_r, cvs_s2636_2_or_character_ram_w) AM_BASE(&s2636_2_ram)
|
||||
AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_READWRITE(cvs_s2636_3_or_character_ram_r, cvs_s2636_3_or_character_ram_w) AM_BASE(&s2636_3_ram)
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_READWRITE(cvs_video_or_color_ram_r, quasar_video_w) AM_BASE(&cvs_video_ram)
|
||||
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
|
||||
AM_RANGE(0x2000, 0x33ff) AM_ROM
|
||||
AM_RANGE(0x4000, 0x53ff) AM_ROM
|
||||
@ -382,34 +363,11 @@ static const gfx_layout charlayout =
|
||||
|
||||
/* S2636 Mappings */
|
||||
|
||||
static const gfx_layout s2636_character10 =
|
||||
{
|
||||
8,10,
|
||||
5,
|
||||
1,
|
||||
{ 0 },
|
||||
{ 0,1,2,3,4,5,6,7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
static const gfx_layout charlayout8colour =
|
||||
{
|
||||
8,8, /* 8*8 characters */
|
||||
256, /* 256 characters */
|
||||
3, /* 3 bits per pixel */
|
||||
{ 0, 0x800*8, 0x1000*8 }, /* the bitplanes are separated */
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*8 /* every char takes 8 consecutive bytes */
|
||||
};
|
||||
|
||||
static GFXDECODE_START( quasar )
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 256) /* Rom chars */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout8colour, 0, 259 ) /* Ram chars (NOT USED) */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_character10, 2072, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 256 ) /* Rom chars */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #1 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #2 */
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, s2636_gfx_layout, 2072, 8 ) /* s2636 #3 */
|
||||
GFXDECODE_END
|
||||
|
||||
static INTERRUPT_GEN( quasar_interrupt )
|
||||
|
32
src/mame/includes/cvs.h
Normal file
32
src/mame/includes/cvs.h
Normal file
@ -0,0 +1,32 @@
|
||||
extern UINT8 *cvs_color_ram;
|
||||
extern UINT8 *cvs_video_ram;
|
||||
extern UINT8 *cvs_bullet_ram;
|
||||
extern mame_bitmap *cvs_collision_bitmap;
|
||||
extern mame_bitmap *cvs_collision_background;
|
||||
extern int cvs_collision_register;
|
||||
|
||||
|
||||
INTERRUPT_GEN( cvs_interrupt );
|
||||
PALETTE_INIT( cvs );
|
||||
VIDEO_UPDATE( cvs );
|
||||
VIDEO_START( cvs );
|
||||
|
||||
READ8_HANDLER( cvs_video_or_color_ram_r );
|
||||
WRITE8_HANDLER( cvs_video_or_color_ram_w );
|
||||
|
||||
READ8_HANDLER( cvs_bullet_ram_or_palette_r );
|
||||
WRITE8_HANDLER( cvs_bullet_ram_or_palette_w );
|
||||
|
||||
READ8_HANDLER( cvs_s2636_1_or_character_ram_r );
|
||||
WRITE8_HANDLER( cvs_s2636_1_or_character_ram_w );
|
||||
READ8_HANDLER( cvs_s2636_2_or_character_ram_r );
|
||||
WRITE8_HANDLER( cvs_s2636_2_or_character_ram_w );
|
||||
READ8_HANDLER( cvs_s2636_3_or_character_ram_r );
|
||||
WRITE8_HANDLER( cvs_s2636_3_or_character_ram_w );
|
||||
|
||||
WRITE8_HANDLER( cvs_scroll_w );
|
||||
WRITE8_HANDLER( cvs_video_fx_w );
|
||||
|
||||
READ8_HANDLER( cvs_collision_r );
|
||||
READ8_HANDLER( cvs_collision_clear );
|
||||
READ8_HANDLER( cvs_input_r );
|
@ -13,6 +13,7 @@
|
||||
#define MAX_STARS 250
|
||||
#define STARS_COLOR_BASE 16
|
||||
|
||||
|
||||
#ifdef LSB_FIRST
|
||||
#define BL0 0
|
||||
#define BL1 1
|
||||
@ -29,32 +30,35 @@
|
||||
#define WL1 0
|
||||
#endif
|
||||
|
||||
|
||||
struct star
|
||||
{
|
||||
int x,y,code;
|
||||
};
|
||||
|
||||
static struct star stars[MAX_STARS];
|
||||
static int total_stars;
|
||||
static int scroll[8];
|
||||
static int stars_on=0;
|
||||
static int character_mode=0;
|
||||
static int character_page=0;
|
||||
static int scroll_reg = 0;
|
||||
static int stars_scroll=0;
|
||||
|
||||
static UINT8 *character_1_ram;
|
||||
static UINT8 *character_2_ram;
|
||||
static UINT8 *character_3_ram;
|
||||
UINT8 *cvs_color_ram;
|
||||
UINT8 *cvs_video_ram;
|
||||
UINT8 *cvs_bullet_ram;
|
||||
|
||||
static UINT8 *palette_ram;
|
||||
static UINT8 *character_ram;
|
||||
|
||||
static struct star stars[MAX_STARS];
|
||||
static int total_stars;
|
||||
static int stars_on;
|
||||
static UINT8 character_mode;
|
||||
static UINT16 character_ram_page;
|
||||
static UINT8 scroll_reg;
|
||||
static int stars_scroll;
|
||||
|
||||
static mame_bitmap *background_bitmap;
|
||||
mame_bitmap *cvs_collision_bitmap;
|
||||
mame_bitmap *cvs_collision_background;
|
||||
static mame_bitmap *scrolled_background;
|
||||
|
||||
int cvs_collision_register=0;
|
||||
int cvs_collision_register;
|
||||
|
||||
static const int ModeOffset[4] = {223,191,255,127};
|
||||
|
||||
/******************************************************
|
||||
* Convert Colour prom to format for Mame Colour Map *
|
||||
@ -79,7 +83,7 @@ PALETTE_INIT( cvs )
|
||||
{
|
||||
map = color_prom[(col * 256) + attr];
|
||||
|
||||
/* bits 1 and 3 are swopped over */
|
||||
/* bits 0 and 2 are swapped */
|
||||
|
||||
COLOR(0,attr*8 + col) = ((map & 1) << 2) + (map & 2) + ((map & 4) >> 2);
|
||||
}
|
||||
@ -102,59 +106,56 @@ PALETTE_INIT( cvs )
|
||||
COLOR(0,map*2 + 2073) = 8 + map;
|
||||
}
|
||||
|
||||
/* Initialise Dirty Character Array */
|
||||
character_1_ram = auto_malloc(0x2000);
|
||||
character_2_ram = character_1_ram + 0x800;
|
||||
character_3_ram = character_2_ram + 0x800;
|
||||
|
||||
memset(character_1_ram, 0, 1024);
|
||||
memset(character_2_ram, 0, 1024);
|
||||
memset(character_3_ram, 0, 1024);
|
||||
|
||||
/* Set Sprite chip offsets */
|
||||
|
||||
/* set the sprite chip offsets */
|
||||
s2636_x_offset = -26;
|
||||
s2636_y_offset = 3;
|
||||
|
||||
/* Set Scroll fixed areas */
|
||||
|
||||
scroll[0]=0;
|
||||
scroll[6]=0;
|
||||
scroll[7]=0;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_HANDLER( cvs_video_fx_w )
|
||||
{
|
||||
logerror("%4x : Data Port = %2x\n",activecpu_get_pc(),data);
|
||||
if (data & 0xce)
|
||||
logerror("%4x : Unimplemented CVS video fx = %2x\n",activecpu_get_pc(),data);
|
||||
|
||||
/* Unimplemented */
|
||||
stars_on = data & 0x01;
|
||||
|
||||
if(data & 2) logerror(" SHADE BRIGHTER TO RIGHT\n");
|
||||
if(data & 4) logerror(" SCREEN ROTATE\n");
|
||||
if(data & 8) logerror(" SHADE BRIGHTER TO LEFT\n");
|
||||
if(data & 64) logerror(" SHADE BRIGHTER TO BOTTOM\n");
|
||||
if(data & 128) logerror(" SHADE BRIGHTER TO TOP\n");
|
||||
if (data & 0x02) logerror(" SHADE BRIGHTER TO RIGHT\n");
|
||||
if (data & 0x04) logerror(" SCREEN ROTATE\n");
|
||||
if (data & 0x08) logerror(" SHADE BRIGHTER TO LEFT\n");
|
||||
|
||||
/* Implemented */
|
||||
set_led_status(1, data & 0x10); /* lamp 1 */
|
||||
set_led_status(2, data & 0x20); /* lamp 2 */
|
||||
|
||||
stars_on = data & 1;
|
||||
set_led_status(1,data & 16); /* Lamp 1 */
|
||||
set_led_status(2,data & 32); /* Lamp 2 */
|
||||
if (data & 0x40) logerror(" SHADE BRIGHTER TO BOTTOM\n");
|
||||
if (data & 0x80) logerror(" SHADE BRIGHTER TO TOP\n");
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_character_mode_r )
|
||||
|
||||
|
||||
READ8_HANDLER( cvs_input_r )
|
||||
{
|
||||
/* Really a write - uses address info */
|
||||
UINT8 ret;
|
||||
|
||||
int value = offset + 0x10;
|
||||
int newmode = (value >> 4) & 3;
|
||||
/* the upper 4 bits of the address is used to select the tile banking attributes */
|
||||
character_mode = (offset >> 4) & 0x03;
|
||||
character_ram_page = (offset << 2) & 0x300;
|
||||
|
||||
character_mode = newmode;
|
||||
character_page = (value << 2) & 0x300;
|
||||
/* the lower 4 (or 3?) bits select the port to read */
|
||||
switch (offset & 0x0f) /* might be 0x07 */
|
||||
{
|
||||
case 0x00: ret = input_port_0_r(0); break;
|
||||
case 0x02: ret = input_port_1_r(0); break;
|
||||
case 0x03: ret = input_port_2_r(0); break;
|
||||
case 0x04: ret = input_port_3_r(0); break;
|
||||
case 0x06: ret = input_port_4_r(0); break;
|
||||
case 0x07: ret = input_port_5_r(0); break;
|
||||
default: ret = 0x00; break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
READ8_HANDLER( cvs_collision_r )
|
||||
{
|
||||
return cvs_collision_register;
|
||||
@ -162,190 +163,115 @@ READ8_HANDLER( cvs_collision_r )
|
||||
|
||||
READ8_HANDLER( cvs_collision_clear )
|
||||
{
|
||||
cvs_collision_register=0;
|
||||
cvs_collision_register = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_HANDLER( cvs_scroll_w )
|
||||
{
|
||||
scroll_reg = 255 - data;
|
||||
|
||||
scroll[1]=scroll_reg;
|
||||
scroll[2]=scroll_reg;
|
||||
scroll[3]=scroll_reg;
|
||||
scroll[4]=scroll_reg;
|
||||
scroll[5]=scroll_reg;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( cvs_videoram_w )
|
||||
|
||||
READ8_HANDLER( cvs_video_or_color_ram_r )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Colour Map
|
||||
|
||||
colorram_w(offset,data);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Data
|
||||
|
||||
videoram_w(offset,data);
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
return cvs_color_ram[offset];
|
||||
else
|
||||
return cvs_video_ram[offset];
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_videoram_r )
|
||||
WRITE8_HANDLER( cvs_video_or_color_ram_w )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Colour Map
|
||||
|
||||
return colorram[offset];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Data
|
||||
|
||||
return videoram[offset];
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
cvs_color_ram[offset] = data;
|
||||
else
|
||||
cvs_video_ram[offset] = data;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( cvs_bullet_w )
|
||||
|
||||
READ8_HANDLER( cvs_bullet_ram_or_palette_r )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Bullet Ram
|
||||
|
||||
cvs_bullet_ram[offset] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pallette Ram - Inverted ?
|
||||
offset &= 0x0f;
|
||||
data ^= 0xff;
|
||||
|
||||
paletteram[offset] = data;
|
||||
palette_set_color_rgb(Machine, offset, pal2bit(data >> 0), pal3bit(data >> 2), pal3bit(data >> 5));
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
return cvs_bullet_ram[offset];
|
||||
else
|
||||
return palette_ram[offset & 0x0f];
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_bullet_r )
|
||||
WRITE8_HANDLER( cvs_bullet_ram_or_palette_w )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Bullet Ram
|
||||
|
||||
return cvs_bullet_ram[offset];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pallette Ram
|
||||
|
||||
return (paletteram[offset] ^ 0xff);
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
cvs_bullet_ram[offset] = data;
|
||||
else
|
||||
palette_ram[offset & 0x0f] = data;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( cvs_2636_1_w )
|
||||
|
||||
READ8_HANDLER( cvs_s2636_1_or_character_ram_r )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// First 2636
|
||||
|
||||
s2636_1_ram[offset] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 1
|
||||
character_1_ram[character_page + offset] = data;
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
return s2636_1_ram[offset];
|
||||
else
|
||||
return character_ram[(0 * 0x800) | 0x400 | character_ram_page | offset];
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_2636_1_r )
|
||||
WRITE8_HANDLER( cvs_s2636_1_or_character_ram_w )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// First 2636
|
||||
|
||||
return s2636_1_ram[offset];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 1
|
||||
|
||||
return character_1_ram[character_page + offset];
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
s2636_1_ram[offset] = data;
|
||||
else
|
||||
character_ram[(0 * 0x800) | 0x400 | character_ram_page | offset] = data;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( cvs_2636_2_w )
|
||||
|
||||
READ8_HANDLER( cvs_s2636_2_or_character_ram_r )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Second 2636
|
||||
|
||||
s2636_2_ram[offset] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 2
|
||||
character_2_ram[character_page + offset] = data;
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
return s2636_2_ram[offset];
|
||||
else
|
||||
return character_ram[(1 * 0x800) | 0x400 | character_ram_page | offset];
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_2636_2_r )
|
||||
WRITE8_HANDLER( cvs_s2636_2_or_character_ram_w )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Second 2636
|
||||
|
||||
return s2636_2_ram[offset];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 2
|
||||
|
||||
return character_2_ram[character_page + offset];
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
s2636_2_ram[offset] = data;
|
||||
else
|
||||
character_ram[(1 * 0x800) | 0x400 | character_ram_page | offset] = data;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( cvs_2636_3_w )
|
||||
|
||||
READ8_HANDLER( cvs_s2636_3_or_character_ram_r )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Third 2636
|
||||
|
||||
s2636_3_ram[offset] = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 3
|
||||
character_3_ram[character_page + offset] = data;
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
return s2636_3_ram[offset];
|
||||
else
|
||||
return character_ram[(2 * 0x800) | 0x400 | character_ram_page | offset];
|
||||
}
|
||||
|
||||
READ8_HANDLER( cvs_2636_3_r )
|
||||
WRITE8_HANDLER( cvs_s2636_3_or_character_ram_w )
|
||||
{
|
||||
if(!activecpu_get_reg(S2650_FO))
|
||||
{
|
||||
// Third 2636
|
||||
|
||||
return s2636_3_ram[offset];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Character Ram 3
|
||||
|
||||
return character_3_ram[character_page + offset];
|
||||
}
|
||||
if (!activecpu_get_reg(S2650_FO))
|
||||
s2636_3_ram[offset] = data;
|
||||
else
|
||||
character_ram[(2 * 0x800) | 0x400 | character_ram_page | offset] = data;
|
||||
}
|
||||
|
||||
|
||||
VIDEO_START( cvs )
|
||||
{
|
||||
int generator = 0;
|
||||
int x,y;
|
||||
int y;
|
||||
|
||||
colorram = auto_malloc(0x400);
|
||||
paletteram = auto_malloc(0x100);
|
||||
|
||||
video_start_generic(machine);
|
||||
/* allocate memory */
|
||||
cvs_color_ram = auto_malloc(0x400);
|
||||
palette_ram = auto_malloc(0x10);
|
||||
character_ram = auto_malloc(3 * 0x800); /* only half is used, but
|
||||
by allocating twice the amount,
|
||||
we can use the same gfx_layout */
|
||||
|
||||
/* precalculate the star background */
|
||||
|
||||
@ -353,6 +279,8 @@ VIDEO_START( cvs )
|
||||
|
||||
for (y = 255;y >= 0;y--)
|
||||
{
|
||||
int x;
|
||||
|
||||
for (x = 511;x >= 0;x--)
|
||||
{
|
||||
int bit1,bit2;
|
||||
@ -380,19 +308,22 @@ VIDEO_START( cvs )
|
||||
}
|
||||
}
|
||||
|
||||
/* Need 3 bitmaps for 2636 chips */
|
||||
|
||||
s2636_1_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
s2636_2_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
s2636_3_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
/* create the bitmaps for the S2636 chips */
|
||||
s2636_1_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
s2636_2_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
s2636_3_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
|
||||
/* 3 bitmaps for collision detection */
|
||||
|
||||
cvs_collision_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
cvs_collision_background = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
scrolled_background = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,BITMAP_FORMAT_INDEXED8);
|
||||
/* create helper bitmaps */
|
||||
background_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
|
||||
cvs_collision_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
cvs_collision_background = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
scrolled_background = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, BITMAP_FORMAT_INDEXED8);
|
||||
}
|
||||
|
||||
|
||||
|
||||
INTERRUPT_GEN( cvs_interrupt )
|
||||
{
|
||||
stars_scroll++;
|
||||
@ -401,107 +332,106 @@ INTERRUPT_GEN( cvs_interrupt )
|
||||
cpunum_set_input_line(0,0,PULSE_LINE);
|
||||
}
|
||||
|
||||
INLINE void plot_star(running_machine* machine, mame_bitmap *bitmap, int x, int y)
|
||||
{
|
||||
if (flip_screen_x)
|
||||
{
|
||||
x = 255 - x;
|
||||
}
|
||||
if (flip_screen_y)
|
||||
{
|
||||
y = 255 - y;
|
||||
}
|
||||
|
||||
if (*BITMAP_ADDR16(bitmap, y, x) == machine->pens[0])
|
||||
{
|
||||
*BITMAP_ADDR16(bitmap, y, x) = machine->pens[7];
|
||||
}
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( cvs )
|
||||
{
|
||||
int offs;
|
||||
const int ram_based_char_start_indecies[] = { 0xe0, 0xc0, 0x100, 0x80 };
|
||||
int code;
|
||||
offs_t offs;
|
||||
int scroll[8];
|
||||
|
||||
/* for every character in the Video RAM, check if it has been modified */
|
||||
/* since last time and update it accordingly. */
|
||||
|
||||
for (offs = videoram_size - 1;offs >= 0;offs--)
|
||||
/* set the palette */
|
||||
for (offs = 0; offs < 0x10; offs++)
|
||||
{
|
||||
int character_bank;
|
||||
int forecolor;
|
||||
UINT8 data = palette_ram[offs];
|
||||
|
||||
int character = videoram[offs];
|
||||
palette_set_color_rgb(machine, offs, pal2bit(~data >> 0), pal3bit(~data >> 2), pal3bit(~data >> 5));
|
||||
}
|
||||
|
||||
int sx = (offs % 32) * 8;
|
||||
int sy = (offs / 32) * 8;
|
||||
|
||||
/* Decide if RAM or ROM based character */
|
||||
/* create our background character set, which is a software
|
||||
selectable mixture of RAM and ROM based tiles */
|
||||
|
||||
if(character > ModeOffset[character_mode])
|
||||
{
|
||||
decodechar(machine->gfx[1],character,character_1_ram-1024,machine->drv->gfxdecodeinfo[1].gfxlayout);
|
||||
/* ROM based tiles first */
|
||||
for (code = 0; code < ram_based_char_start_indecies[character_mode]; code++)
|
||||
decodechar(machine->gfx[0], code, memory_region(REGION_GFX1),
|
||||
machine->drv->gfxdecodeinfo[0].gfxlayout);
|
||||
|
||||
character_bank=1;
|
||||
}
|
||||
/* now the RAM based ones */
|
||||
for (; code < 0x100; code++)
|
||||
decodechar(machine->gfx[0], code, character_ram,
|
||||
machine->drv->gfxdecodeinfo[0].gfxlayout);
|
||||
|
||||
|
||||
/* draw the background */
|
||||
for (offs = 0; offs < 0x0400; offs++)
|
||||
{
|
||||
int collision_color = 0;
|
||||
|
||||
UINT8 code = cvs_video_ram[offs];
|
||||
UINT8 color = cvs_color_ram[offs];
|
||||
|
||||
UINT8 x = offs << 3;
|
||||
UINT8 y = offs >> 5 << 3;
|
||||
|
||||
drawgfx(background_bitmap, machine->gfx[0],
|
||||
code, color,
|
||||
0, 0,
|
||||
x, y,
|
||||
0, TRANSPARENCY_NONE, 0);
|
||||
|
||||
/* foreground for collision detection */
|
||||
if (color & 0x80)
|
||||
collision_color = 258;
|
||||
else
|
||||
{
|
||||
character_bank=0;
|
||||
if ((color & 0x03) == 3)
|
||||
collision_color = 256;
|
||||
else if((color & 0x01) == 0)
|
||||
collision_color = 257;
|
||||
}
|
||||
|
||||
/* Main Screen */
|
||||
|
||||
drawgfx(tmpbitmap,machine->gfx[character_bank],
|
||||
character,
|
||||
colorram[offs],
|
||||
0,0,
|
||||
sx,sy,
|
||||
0,TRANSPARENCY_NONE,0);
|
||||
|
||||
|
||||
/* Foreground for Collision Detection */
|
||||
|
||||
forecolor = 0;
|
||||
if(colorram[offs] & 0x80)
|
||||
{
|
||||
forecolor=258;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((colorram[offs] & 0x03) == 3) forecolor=256;
|
||||
else if((colorram[offs] & 0x01) == 0) forecolor=257;
|
||||
}
|
||||
|
||||
if(forecolor)
|
||||
drawgfx(cvs_collision_background,machine->gfx[character_bank],
|
||||
character,
|
||||
forecolor,
|
||||
0,0,
|
||||
sx,sy,
|
||||
0,TRANSPARENCY_NONE,0);
|
||||
if (collision_color)
|
||||
drawgfx(cvs_collision_background, machine->gfx[0],
|
||||
code, collision_color,
|
||||
0, 0,
|
||||
x, y,
|
||||
0, TRANSPARENCY_NONE, 0);
|
||||
}
|
||||
|
||||
|
||||
/* Update screen - 8 regions, fixed scrolling area */
|
||||
|
||||
copyscrollbitmap(bitmap,tmpbitmap,0,0,8,scroll,&machine->screen[0].visarea,TRANSPARENCY_NONE,0);
|
||||
scroll[0] = 0;
|
||||
scroll[1] = scroll_reg;
|
||||
scroll[2] = scroll_reg;
|
||||
scroll[3] = scroll_reg;
|
||||
scroll[4] = scroll_reg;
|
||||
scroll[5] = scroll_reg;
|
||||
scroll[6] = 0;
|
||||
scroll[7] = 0;
|
||||
|
||||
copyscrollbitmap(bitmap,background_bitmap,0,0,8,scroll,&machine->screen[0].visarea,TRANSPARENCY_NONE,0);
|
||||
copyscrollbitmap(scrolled_background,cvs_collision_background,0,0,8,scroll,&machine->screen[0].visarea,TRANSPARENCY_NONE,0);
|
||||
|
||||
/* 2636's */
|
||||
|
||||
fillbitmap(s2636_1_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_1_bitmap,s2636_1_ram,2,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_1_bitmap,s2636_1_ram,1,cvs_collision_bitmap);
|
||||
|
||||
fillbitmap(s2636_2_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_2_bitmap,s2636_2_ram,3,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_2_bitmap,s2636_2_ram,2,cvs_collision_bitmap);
|
||||
|
||||
fillbitmap(s2636_3_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_3_bitmap,s2636_3_ram,4,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_3_bitmap,s2636_3_ram,3,cvs_collision_bitmap);
|
||||
|
||||
/* Bullet Hardware */
|
||||
|
||||
for (offs = 8; offs < 256; offs++ )
|
||||
{
|
||||
if(cvs_bullet_ram[offs] != 0)
|
||||
if (cvs_bullet_ram[offs] != 0)
|
||||
{
|
||||
int ct;
|
||||
for(ct=0;ct<4;ct++)
|
||||
@ -534,16 +464,16 @@ VIDEO_UPDATE( cvs )
|
||||
/* Update 2636 images */
|
||||
|
||||
{
|
||||
int sx;
|
||||
int x;
|
||||
UINT32 S1,S2,S3,SB,pen;
|
||||
|
||||
for(sx=255;sx>7;sx--)
|
||||
for(x=255;x>7;x--)
|
||||
{
|
||||
UINT32 *sp1 = (UINT32 *)BITMAP_ADDR8(s2636_1_bitmap, sx, 0);
|
||||
UINT32 *sp2 = (UINT32 *)BITMAP_ADDR8(s2636_2_bitmap, sx, 0);
|
||||
UINT32 *sp3 = (UINT32 *)BITMAP_ADDR8(s2636_3_bitmap, sx, 0);
|
||||
UINT64 *dst = (UINT64 *)BITMAP_ADDR16(bitmap, sx, 0);
|
||||
UINT8 *spb = (UINT8 *)BITMAP_ADDR8(scrolled_background, sx, 0);
|
||||
UINT32 *sp1 = (UINT32 *)BITMAP_ADDR8(s2636_1_bitmap, x, 0);
|
||||
UINT32 *sp2 = (UINT32 *)BITMAP_ADDR8(s2636_2_bitmap, x, 0);
|
||||
UINT32 *sp3 = (UINT32 *)BITMAP_ADDR8(s2636_3_bitmap, x, 0);
|
||||
UINT64 *dst = (UINT64 *)BITMAP_ADDR16(bitmap, x, 0);
|
||||
UINT8 *spb = (UINT8 *)BITMAP_ADDR8(scrolled_background, x, 0);
|
||||
|
||||
for(offs=0;offs<62;offs++)
|
||||
{
|
||||
@ -587,28 +517,36 @@ VIDEO_UPDATE( cvs )
|
||||
}
|
||||
}
|
||||
|
||||
/* Stars */
|
||||
|
||||
if(stars_on)
|
||||
{
|
||||
/* stars circuit */
|
||||
|
||||
if (stars_on)
|
||||
{
|
||||
for (offs = 0;offs < total_stars;offs++)
|
||||
{
|
||||
int x,y;
|
||||
|
||||
|
||||
x = ((stars[offs].x + stars_scroll) % 512) / 2;
|
||||
y = (stars[offs].y + (stars_scroll + stars[offs].x) / 512) % 256;
|
||||
UINT8 x = (stars[offs].x + stars_scroll) >> 1;
|
||||
UINT8 y = stars[offs].y + ((stars_scroll + stars[offs].x) >> 9);
|
||||
|
||||
if (y >= machine->screen[0].visarea.min_y &&
|
||||
y <= machine->screen[0].visarea.max_y)
|
||||
{
|
||||
if ((y & 1) ^ ((x >> 4) & 1))
|
||||
{
|
||||
plot_star(machine, bitmap, x, y);
|
||||
if (flip_screen_x)
|
||||
x = ~x;
|
||||
|
||||
if (flip_screen_y)
|
||||
y = ~y;
|
||||
|
||||
if (*BITMAP_ADDR16(bitmap, y, x) == machine->pens[0])
|
||||
{
|
||||
*BITMAP_ADDR16(bitmap, y, x) = machine->pens[7];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "cvs.h"
|
||||
#include "video/s2636.h"
|
||||
#include "cpu/s2650/s2650.h"
|
||||
|
||||
@ -34,18 +35,6 @@
|
||||
#define WL1 0
|
||||
#endif
|
||||
|
||||
// All defined in video/cvs.c
|
||||
|
||||
VIDEO_START( cvs );
|
||||
|
||||
extern UINT8 *cvs_bullet_ram;
|
||||
|
||||
extern mame_bitmap *cvs_collision_bitmap;
|
||||
extern mame_bitmap *cvs_collision_background;
|
||||
|
||||
|
||||
extern int cvs_collision_register;
|
||||
|
||||
|
||||
// Used here
|
||||
//static int scroll[8];
|
||||
@ -55,6 +44,7 @@ UINT8 *quasar_effectram;
|
||||
int quasar_effectcontrol;
|
||||
|
||||
static mame_bitmap *effect_bitmap;
|
||||
static mame_bitmap *background_bitmap;
|
||||
|
||||
PALETTE_INIT( quasar )
|
||||
{
|
||||
@ -134,6 +124,7 @@ VIDEO_START( quasar )
|
||||
quasar_effectram = auto_malloc(0x400);
|
||||
|
||||
effect_bitmap = auto_bitmap_alloc(machine->screen[0].width,machine->screen[0].height,machine->screen[0].format);
|
||||
background_bitmap = auto_bitmap_alloc(machine->screen[0].width, machine->screen[0].height, machine->screen[0].format);
|
||||
|
||||
video_start_cvs(machine);
|
||||
}
|
||||
@ -147,9 +138,9 @@ VIDEO_UPDATE( quasar )
|
||||
/* for every character in the Video RAM, check if it has been modified */
|
||||
/* since last time and update it accordingly. */
|
||||
|
||||
for (offs = videoram_size - 1;offs >= 0;offs--)
|
||||
for (offs = 0; offs < 0x0400; offs++)
|
||||
{
|
||||
character = videoram[offs];
|
||||
character = cvs_video_ram[offs];
|
||||
|
||||
sx = (offs % 32) * 8;
|
||||
sy = (offs / 32) * 8;
|
||||
@ -168,9 +159,9 @@ VIDEO_UPDATE( quasar )
|
||||
|
||||
/* Main Screen */
|
||||
|
||||
drawgfx(tmpbitmap,machine->gfx[0],
|
||||
drawgfx(background_bitmap,machine->gfx[0],
|
||||
character,
|
||||
colorram[offs],
|
||||
cvs_color_ram[offs],
|
||||
0,0,
|
||||
sx,sy,
|
||||
0,TRANSPARENCY_NONE,0);
|
||||
@ -178,7 +169,7 @@ VIDEO_UPDATE( quasar )
|
||||
|
||||
/* background for Collision Detection (it can only hit certain items) */
|
||||
|
||||
if((colorram[offs] & 7) == 0)
|
||||
if((cvs_color_ram[offs] & 7) == 0)
|
||||
{
|
||||
drawgfx(cvs_collision_background,machine->gfx[0],
|
||||
character,
|
||||
@ -192,18 +183,18 @@ VIDEO_UPDATE( quasar )
|
||||
/* Update screen */
|
||||
|
||||
copybitmap(bitmap,effect_bitmap,0,0,0,0,&machine->screen[0].visarea,TRANSPARENCY_NONE,0);
|
||||
copybitmap(bitmap,tmpbitmap,0,0,0,0,&machine->screen[0].visarea,TRANSPARENCY_PEN,0);
|
||||
copybitmap(bitmap,background_bitmap,0,0,0,0,&machine->screen[0].visarea,TRANSPARENCY_PEN,0);
|
||||
|
||||
/* 2636's */
|
||||
|
||||
fillbitmap(s2636_1_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_1_bitmap,s2636_1_ram,2,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_1_bitmap,s2636_1_ram,1,cvs_collision_bitmap);
|
||||
|
||||
fillbitmap(s2636_2_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_2_bitmap,s2636_2_ram,3,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_2_bitmap,s2636_2_ram,2,cvs_collision_bitmap);
|
||||
|
||||
fillbitmap(s2636_3_bitmap,0,0);
|
||||
s2636_update_bitmap(machine,s2636_3_bitmap,s2636_3_ram,4,cvs_collision_bitmap);
|
||||
s2636_update_bitmap(machine,s2636_3_bitmap,s2636_3_ram,3,cvs_collision_bitmap);
|
||||
|
||||
/* Bullet Hardware */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user