mirror of
https://github.com/holub/mame
synced 2025-05-30 17:41:47 +03:00
Fixed colors, sound and identified spriteram in Go 2000 [Angelo Salese]
New games added or promoted from NOT_WORKING status --------------------------------------------------- Go 2000 [Angelo Salese] ==================================================== Also moved go2000.o to suna.a in the mame.mak, because I believe that should stay there. Now I'll try to fix the spriteram (even though it seems hard to RLE it, this game hardly uses it)...
This commit is contained in:
parent
cea86cdab1
commit
abe156f2a5
@ -19,33 +19,63 @@ P1, P2 & P3 4-pin connectors (unkown purpose)
|
||||
2008-08:
|
||||
Added Dips and Dip locations based on Service Mode.
|
||||
|
||||
Notes:
|
||||
- Maybe SA stands for SunA? The z80 memory map matches the one seen in Ultra Balloon,
|
||||
and the only difference stands in the DAC used.
|
||||
|
||||
*/
|
||||
|
||||
#include "driver.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/dac.h"
|
||||
|
||||
static UINT16* go2000_video;
|
||||
static UINT16* go2000_video2;
|
||||
|
||||
static WRITE16_HANDLER( sound_cmd_w )
|
||||
{
|
||||
soundlatch_w(space,offset,data & 0xff);
|
||||
cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( go2000_readmem, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
|
||||
AM_RANGE(0x200000, 0x203fff) AM_READ(SMH_RAM)
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_READ(SMH_RAM)
|
||||
AM_RANGE(0x610000, 0x61ffff) AM_READ(SMH_RAM)
|
||||
AM_RANGE(0x800000, 0x800fff) AM_READ(SMH_RAM)
|
||||
static ADDRESS_MAP_START( go2000_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
AM_RANGE(0x200000, 0x203fff) AM_RAM
|
||||
AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE(&go2000_video)
|
||||
AM_RANGE(0x610000, 0x61ffff) AM_RAM AM_BASE(&go2000_video2)
|
||||
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
|
||||
AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("INPUTS")
|
||||
AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW")
|
||||
AM_RANGE(0x620002, 0x620003) AM_WRITE(sound_cmd_w)
|
||||
// AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP
|
||||
// AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP
|
||||
// AM_RANGE(0xe00020, 0xe00021) AM_WRITENOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( go2000_writemem, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
|
||||
AM_RANGE(0x200000, 0x203fff) AM_WRITE(SMH_RAM)
|
||||
AM_RANGE(0x600000, 0x603fff) AM_WRITE(SMH_RAM) AM_BASE(&go2000_video)
|
||||
AM_RANGE(0x604000, 0x60ffff) AM_WRITE(SMH_RAM)
|
||||
AM_RANGE(0x610000, 0x613fff) AM_WRITE(SMH_RAM) AM_BASE(&go2000_video2)
|
||||
AM_RANGE(0x614000, 0x61ffff) AM_WRITE(SMH_RAM)
|
||||
AM_RANGE(0x800000, 0x800fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
|
||||
static WRITE8_HANDLER( go2000_dac_w )
|
||||
{
|
||||
dac_data_w( 0 , data & 0xff );
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( go2000_pcm_1_bankswitch_w )
|
||||
{
|
||||
UINT8 *RAM = memory_region(space->machine, "sound");
|
||||
int bank = data & 7;
|
||||
|
||||
memory_set_bankptr(space->machine, 1, &RAM[bank * 0x10000 + 0x400]);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( go2000_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
AM_RANGE(0x0000, 0x03ff) AM_ROM
|
||||
AM_RANGE(0x0400, 0xffff) AM_ROMBANK(1)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( go2000_sound_io, ADDRESS_SPACE_IO, 8 )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(go2000_dac_w)
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(go2000_pcm_1_bankswitch_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -55,8 +85,8 @@ static INPUT_PORTS_START( go2000 )
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) // korean symbol
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) // out
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("P1 High") // high
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("P1 Low") // low
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) // high
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) // low
|
||||
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
|
||||
@ -121,6 +151,10 @@ static const gfx_layout go2000_layout =
|
||||
8*32
|
||||
};
|
||||
|
||||
static GFXDECODE_START( go2000 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, go2000_layout, 0x0, 0x80 ) /* tiles */
|
||||
GFXDECODE_END
|
||||
|
||||
static VIDEO_START(go2000)
|
||||
{
|
||||
}
|
||||
@ -149,24 +183,49 @@ static VIDEO_UPDATE(go2000)
|
||||
{
|
||||
int tile = go2000_video[count];
|
||||
int attr = go2000_video2[count];
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile,attr,0,0,x*8,y*8,cliprect,TRANSPARENCY_PEN,0);
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile,attr,0,0,x*8,y*8,cliprect,TRANSPARENCY_PEN,0xf);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
/*Spriteram, TODO*/
|
||||
{
|
||||
int tile,offs;
|
||||
|
||||
for(offs=0;offs<(0x800/2);offs+=4)
|
||||
{
|
||||
x = go2000_video[(0xf800/2)+offs+1];
|
||||
y = go2000_video[(0xf800/2)+offs+2]-0x30;
|
||||
tile = go2000_video[(0xf800/2)+offs+0] & 0x1fff;
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile+0,0,0,0,x+0,y+0,cliprect,TRANSPARENCY_PEN,0xf);
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile+1,0,0,0,x+8,y+0,cliprect,TRANSPARENCY_PEN,0xf);
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile+2,0,0,0,x+0,y+8,cliprect,TRANSPARENCY_PEN,0xf);
|
||||
drawgfx(bitmap,screen->machine->gfx[0],tile+3,0,0,0,x+8,y+8,cliprect,TRANSPARENCY_PEN,0xf);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
static GFXDECODE_START( go2000 )
|
||||
GFXDECODE_ENTRY( "gfx1", 0, go2000_layout, 0x0, 0x80 ) /* tiles */
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
static MACHINE_RESET(go2000)
|
||||
{
|
||||
const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
|
||||
go2000_pcm_1_bankswitch_w(space, 0, 0);
|
||||
}
|
||||
|
||||
static MACHINE_DRIVER_START( go2000 )
|
||||
MDRV_CPU_ADD("main", M68000, 10000000)
|
||||
MDRV_CPU_PROGRAM_MAP(go2000_readmem,go2000_writemem)
|
||||
MDRV_CPU_PROGRAM_MAP(go2000_map,0)
|
||||
MDRV_CPU_VBLANK_INT("main", irq1_line_hold)
|
||||
|
||||
MDRV_GFXDECODE(go2000)
|
||||
MDRV_CPU_ADD("sound", Z80, 4000000)
|
||||
MDRV_CPU_PROGRAM_MAP(go2000_sound_map,0)
|
||||
MDRV_CPU_IO_MAP(go2000_sound_io,0)
|
||||
|
||||
MDRV_GFXDECODE(go2000)
|
||||
MDRV_MACHINE_RESET(go2000)
|
||||
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
MDRV_SCREEN_REFRESH_RATE(60)
|
||||
@ -181,6 +240,10 @@ static MACHINE_DRIVER_START( go2000 )
|
||||
MDRV_VIDEO_UPDATE(go2000)
|
||||
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("dac1", DAC, 0)
|
||||
MDRV_SOUND_ROUTE(0, "left", 0.50)
|
||||
MDRV_SOUND_ROUTE(1, "right", 0.50)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
ROM_START( go2000 )
|
||||
@ -188,13 +251,13 @@ ROM_START( go2000 )
|
||||
ROM_LOAD16_BYTE( "3.bin", 0x00000, 0x20000, CRC(fe1fb269) SHA1(266b8acddfcfd960b8e44f8606bf0873da42b9f8) )
|
||||
ROM_LOAD16_BYTE( "4.bin", 0x00001, 0x20000, CRC(d6246ae3) SHA1(f2618dcabaa0c0a6e377e4acd1cdec8bea90bea8) )
|
||||
|
||||
ROM_REGION( 0x080000, "cpu1", 0 ) /* Z80? */
|
||||
ROM_REGION( 0x080000, "sound", 0 ) /* Z80? */
|
||||
ROM_LOAD( "5.bin", 0x00000, 0x80000, CRC(a32676ee) SHA1(2dab73497c0818fce479be21ed589985db51560b) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx1", 0 )
|
||||
ROM_REGION( 0x40000, "gfx1", ROMREGION_INVERT )
|
||||
ROM_LOAD16_BYTE( "1.bin", 0x00000, 0x20000, CRC(96e50aba) SHA1(caa1aadab855c3a758378dc8c48eec859e8110a4) )
|
||||
ROM_LOAD16_BYTE( "2.bin", 0x00001, 0x20000, CRC(b0adf1cb) SHA1(2afb30691182dbf46be709f0d5b03b0f8ff52790) )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 2000, go2000, 0, go2000, go2000, 0, ROT0, "SA", "Go 2000", GAME_NO_SOUND|GAME_NOT_WORKING )
|
||||
GAME( 2000, go2000, 0, go2000, go2000, 0, ROT0, "SA", "Go 2000", GAME_IMPERFECT_GRAPHICS )
|
||||
|
@ -1309,6 +1309,7 @@ $(MAMEOBJ)/suna.a: \
|
||||
$(DRIVERS)/goindol.o $(VIDEO)/goindol.o \
|
||||
$(DRIVERS)/suna8.o $(AUDIO)/suna8.o $(VIDEO)/suna8.o \
|
||||
$(DRIVERS)/suna16.o $(VIDEO)/suna16.o \
|
||||
$(DRIVERS)/go2000.o \
|
||||
|
||||
$(MAMEOBJ)/taito.a: \
|
||||
$(DRIVERS)/40love.o $(VIDEO)/40love.o \
|
||||
@ -1586,7 +1587,6 @@ $(MAMEOBJ)/misc.a: \
|
||||
$(DRIVERS)/funworld.o $(VIDEO)/funworld.o \
|
||||
$(DRIVERS)/galaxi.o \
|
||||
$(DRIVERS)/gamecstl.o \
|
||||
$(DRIVERS)/go2000.o \
|
||||
$(DRIVERS)/good.o \
|
||||
$(DRIVERS)/goldnpkr.o \
|
||||
$(DRIVERS)/gotcha.o $(VIDEO)/gotcha.o \
|
||||
|
Loading…
Reference in New Issue
Block a user