Implemented inputs and sound in Gunpey [Luca Elia]

This commit is contained in:
Angelo Salese 2010-01-11 17:45:36 +00:00
parent 968ef7b835
commit 2441940e7a

View File

@ -47,9 +47,9 @@ Notes:
#include "emu.h"
#include "cpu/nec/nec.h"
#include "sound/okim6295.h"
#include "sound/ymz280b.h"
static UINT16 *unkram;
static UINT16 *mainram;
static VIDEO_START( gunpey )
{
@ -57,58 +57,171 @@ static VIDEO_START( gunpey )
static VIDEO_UPDATE( gunpey )
{
return 0;
}
static WRITE16_HANDLER(unk_w)
static WRITE8_HANDLER( gunpey_status_w )
{
COMBINE_DATA(&unkram[offset]);
}
static READ16_HANDLER(unk_r)
static READ8_HANDLER( gunpey_status_r )
{
// c9 = status ? //40 10 04=start ?
// 40,41,44 = ?
// 4a = flags?
if(offset==0xc9/2 )//|| offset==0x40 || offset==0x41 || offset==0x44)
return mame_rand(space->machine);
return unkram[offset];
if(offset == 1)
return 0x54;
return 0x00;
}
static WRITE16_HANDLER(main_w)
static READ8_HANDLER( gunpey_inputs_r )
{
COMBINE_DATA(&mainram[offset]);
switch(offset+0x7f40)
{
case 0x7f40: return input_port_read(space->machine, "DSW1");
case 0x7f41: return input_port_read(space->machine, "DSW2");
case 0x7f42: return input_port_read(space->machine, "P1");
case 0x7f43: return input_port_read(space->machine, "P2");
case 0x7f44: return input_port_read(space->machine, "SYSTEM");
}
return 0xff;
}
static READ16_HANDLER(main_r)
static WRITE8_HANDLER( gunpey_blitter_w )
{
if(offset>0x502d/2 && offset<0x56c0/2)
logerror("R %x @%x\n",offset*2,cpu_get_pc(space->cpu));
return mainram[offset];
}
static UINT16 blit_ram[0x10];
blit_ram[offset] = data;
if(offset == 0 && data) // blitter trigger
{
// ...
printf("%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x|%02x %02x %02x %02x\n"
,blit_ram[0],blit_ram[1],blit_ram[2],blit_ram[3]
,blit_ram[4],blit_ram[5],blit_ram[6],blit_ram[7]
,blit_ram[8],blit_ram[9],blit_ram[0xa],blit_ram[0xb]
,blit_ram[0xc],blit_ram[0xd],blit_ram[0xe],blit_ram[0xf]);
}
}
/***************************************************************************************/
static ADDRESS_MAP_START( mem_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x00000, 0x0ffff) AM_READWRITE(main_r, main_w) AM_BASE(&mainram)
AM_RANGE(0x50000, 0x500ff) AM_RAM AM_BASE(&unkram)
AM_RANGE(0x50100, 0x502ff) AM_NOP
AM_RANGE(0x00000, 0x0ffff) AM_RAM
// AM_RANGE(0x50000, 0x500ff) AM_RAM
// AM_RANGE(0x50100, 0x502ff) AM_NOP
AM_RANGE(0x80000, 0xfffff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 16 )
AM_RANGE(0x7f00, 0x7fff) AM_READWRITE(unk_r, unk_w)
AM_RANGE(0x7f40, 0x7f45) AM_READ8(gunpey_inputs_r,0xffff)
// AM_RANGE(0x7f48, 0x7f48) AM_WRITE(output_w)
AM_RANGE(0x7f80, 0x7f81) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0xffff)
AM_RANGE(0x7f88, 0x7f89) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0xff00)
AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8( gunpey_status_r, gunpey_status_w, 0xffff )
AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8( gunpey_blitter_w, 0xffff )
ADDRESS_MAP_END
/***************************************************************************************/
static void sound_irq_gen(const device_config *device, int state)
{
logerror("sound irq\n");
}
static const ymz280b_interface ymz280b_intf =
{
sound_irq_gen
};
/***************************************************************************************/
static INPUT_PORTS_START( gunpey )
PORT_START("DSW1") // IN0 - 7f40
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x01, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x03, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c, 0x00, "Difficulty (vs. mode)" )
PORT_DIPSETTING( 0x04, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0c, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x30, 0x00, "Matches (vs. mode)?" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x20, "3" )
PORT_DIPSETTING( 0x30, "5" )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW2") // IN1 - 7f41
PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 3C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x38, 0x00, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x38, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x28, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x30, DEF_STR( 3C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Allow_Continue ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("P1") // IN2 - 7f42
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("P2") // IN3 - 7f43
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("SYSTEM") // IN4 - 7f44
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_IMPULSE(1) // TEST!!
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END
/***************************************************************************************/
@ -129,7 +242,7 @@ static MACHINE_DRIVER_START( gunpey )
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(32*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
@ -139,14 +252,17 @@ static MACHINE_DRIVER_START( gunpey )
MDRV_VIDEO_START(gunpey)
MDRV_VIDEO_UPDATE(gunpey)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("oki", OKIM6295, XTAL_16_9344MHz / 8 / 165)
MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MDRV_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MDRV_SOUND_CONFIG(ymz280b_intf)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END
/***************************************************************************************/
static INPUT_PORTS_START( gunpey )
INPUT_PORTS_END
/***************************************************************************************/
@ -156,14 +272,14 @@ ROM_START( gunpey )
ROM_LOAD16_BYTE( "gp_rom1.021", 0x00000, 0x80000, CRC(07a589a7) SHA1(06c4140ffd5f74b3d3ddfc424f43fcd08d903490) )
ROM_LOAD16_BYTE( "gp_rom2.022", 0x00001, 0x80000, CRC(f66bc4cf) SHA1(54931d878d228c535b9e2bf22a0a3e41756f0fe5) )
ROM_REGION( 0x400000*2, "gfx1", 0 )
ROM_REGION( 0x400000, "gfx1", 0 )
ROM_LOAD( "gp_rom3.025", 0x00000, 0x400000, CRC(f2d1f9f0) SHA1(0d20301fd33892074508b9d127456eae80cc3a1c) )
ROM_LOAD( "gp_rom4.525", 0x400000, 0x400000, CRC(78dd1521) SHA1(91d2046c60e3db348f29f776def02e3ef889f2c1) )
ROM_REGION( 0x400000, "ymz", 0 )
ROM_LOAD( "gp_rom4.525", 0x000000, 0x400000, CRC(78dd1521) SHA1(91d2046c60e3db348f29f776def02e3ef889f2c1) ) // 11xxxxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x400000, "unknown", 0 )
ROM_LOAD( "gp_rom5.622", 0x00000, 0x400000, CRC(f79903e0) SHA1(4fd50b4138e64a48ec1504eb8cd172a229e0e965))
ROM_REGION( 0x400000, "oki", 0 )
ROM_LOAD( "gp_rom5.622", 0x000000, 0x400000, CRC(f79903e0) SHA1(4fd50b4138e64a48ec1504eb8cd172a229e0e965)) // 1xxxxxxxxxxxxxxxxxxxxx = 0xFF
ROM_END
GAME( 2000, gunpey, 0, gunpey, gunpey, 0, ROT0, "Banpresto", "Gunpey",GAME_NO_SOUND|GAME_NOT_WORKING)
GAME( 2000, gunpey, 0, gunpey, gunpey, 0, ROT0, "Banpresto", "Gunpey",GAME_NOT_WORKING)