gotya: change joystick to 4way

This commit is contained in:
hap 2022-10-12 20:05:17 +02:00
parent c9572566f8
commit b3fbd63ee7

View File

@ -7,20 +7,19 @@
TODO: Emulated sound TODO: Emulated sound
Hitachi HD38880BP Epson 7910 for the main melody
HD38882PA06 Hitachi HD38880BP and HD38882PA06 for voice
I think HD38880 is a CPU/MCU, because the game just sends it a sound command (0-0x1a) I think HD38880 is a CPU/MCU, because the game just sends it a sound command (0-0x1a)
couriersud: couriersud:
The chips above are speech synthesis chips. HD38880 is the main chip The chips above are speech synthesis chips. HD38880 is the main chip
whereas HD38882 is an eprom interface. PARCOR based. whereas HD38882 is an eprom interface. PARCOR based.
http://www.freepatentsonline.com/4435832.html http://www.freepatentsonline.com/4435832.html
Datasheet lists no parcor coefficients Datasheet lists no parcor coefficients
****************************************************************************/ *****************************************************************************
/****************************************************************************
About GotYa (from the board owner) About GotYa (from the board owner)
I believe it is a prototype for several reasons. I believe it is a prototype for several reasons.
@ -34,7 +33,8 @@ TODO: Emulated sound
so despite the fact that 'gotya' might look like it's a bootleg of thehand, so despite the fact that 'gotya' might look like it's a bootleg of thehand,
it's more likely just a prototype / alternate version, it's hard to tell it's more likely just a prototype / alternate version, it's hard to tell
---- ----
According to Andrew Welburn: According to Andrew Welburn:
'The Hand' is the original game, GAT licensed it for US manufacture. 'The Hand' is the original game, GAT licensed it for US manufacture.
@ -56,6 +56,7 @@ still there in Got-Ya but with the company name scrubbed out.
All in all, Got-Ya should NOT be marked as a prototype in MAME, it's a All in all, Got-Ya should NOT be marked as a prototype in MAME, it's a
US territory license hack of another game 'The Hand'. Nothing about it US territory license hack of another game 'The Hand'. Nothing about it
says prototype, and the original base game is 'The Hand'. says prototype, and the original base game is 'The Hand'.
****************************************************************************/ ****************************************************************************/
#include "emu.h" #include "emu.h"
@ -246,7 +247,6 @@ void gotya_state::draw_status_row(bitmap_ind16 &bitmap, const rectangle &cliprec
else else
sy = 31 - row; sy = 31 - row;
m_gfxdecode->gfx(0)->opaque(bitmap, cliprect, m_gfxdecode->gfx(0)->opaque(bitmap, cliprect,
m_videoram[1][row * 32 + col], m_videoram[1][row * 32 + col],
m_videoram[1][row * 32 + col + 0x10] & 0x0f, m_videoram[1][row * 32 + col + 0x10] & 0x0f,
@ -267,7 +267,6 @@ void gotya_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
if (flip_screen()) if (flip_screen())
sy = 240 - sy; sy = 240 - sy;
m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, m_gfxdecode->gfx(1)->transpen(bitmap, cliprect,
code, color, code, color,
flip_screen_x(), flip_screen_y(), flip_screen_x(), flip_screen_y(),
@ -297,16 +296,53 @@ uint32_t gotya_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// audio // audio
struct gotya_sample static const char *const sample_names[] =
{ { // Address triggered at
"*thehand",
"01", // game start tune // 075f
"02", // coin in // 0074
"03", // eat dot // 0e45
"05", // eat dollar sign // 0e45
"06", // door open // 19e1
"07", // door close // 1965
"08", // theme song // 0821
//"09" // 1569
// one of these two is played after eating the last dot
"0a", // piccolo // 17af
"0b", // tune // 17af
//"0f" // 08ee
"10", // 'We're even. Bye Bye!' // 162a
"11", // 'You got me!' // 1657
"12", // 'You have lost out' // 085e
"13", // 'Rock' // 14de
"14", // 'Scissors' // 14f3
"15", // 'Paper' // 1508
// one of these is played when going by the girl between levels
"16", // 'Very good!' // 194a
"17", // 'Wonderful!' // 194a
"18", // 'Come on!' // 194a
"19", // 'I love you!' // 194a
"1a", // 'See you again!' // 194a
nullptr
};
struct gotya_sample
{
int8_t sound_command; int8_t sound_command;
uint8_t channel; uint8_t channel;
uint8_t looping; uint8_t looping;
}; };
// all the speech can go to one channel?
static const struct gotya_sample gotya_samples[] = static const struct gotya_sample gotya_samples[] =
{ {
{ 0x01, 0, 0 }, { 0x01, 0, 0 },
{ 0x02, 1, 0 }, { 0x02, 1, 0 },
{ 0x03, 2, 0 }, { 0x03, 2, 0 },
@ -317,8 +353,6 @@ uint32_t gotya_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
{ 0x0a, 0, 0 }, { 0x0a, 0, 0 },
{ 0x0b, 0, 0 }, { 0x0b, 0, 0 },
// all the speech can go to one channel?
{ 0x10, 3, 0 }, { 0x10, 3, 0 },
{ 0x11, 3, 0 }, { 0x11, 3, 0 },
{ 0x12, 0, 0 }, // this should stop the main tune { 0x12, 0, 0 }, // this should stop the main tune
@ -331,7 +365,7 @@ uint32_t gotya_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
{ 0x19, 3, 0 }, { 0x19, 3, 0 },
{ 0x1a, 3, 0 }, { 0x1a, 3, 0 },
{ -1, 0, 0 } // end of array { -1, 0, 0 } // end of array
}; };
void gotya_state::soundlatch_w(uint8_t data) void gotya_state::soundlatch_w(uint8_t data)
{ {
@ -387,20 +421,20 @@ void gotya_state::prg_map(address_map &map)
static INPUT_PORTS_START( gotya ) static INPUT_PORTS_START( gotya )
PORT_START("P1") PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) PORT_SERVICE( 0x10, IP_ACTIVE_LOW )
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Paper") PORT_PLAYER(1) PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Paper") PORT_PLAYER(1)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Scissors") PORT_PLAYER(1) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Scissors") PORT_PLAYER(1)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Rock") PORT_PLAYER(1) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Rock") PORT_PLAYER(1)
PORT_START("P2") PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
PORT_DIPNAME( 0x10, 0x10, "Sound Test" ) PORT_DIPNAME( 0x10, 0x10, "Sound Test" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -460,42 +494,6 @@ static GFXDECODE_START( gfx_gotya )
GFXDECODE_END GFXDECODE_END
static const char *const sample_names[] =
{ // Address triggered at
"*thehand",
"01", // game start tune // 075f
"02", // coin in // 0074
"03", // eat dot // 0e45
"05", // eat dollar sign // 0e45
"06", // door open // 19e1
"07", // door close // 1965
"08", // theme song // 0821
//"09" // 1569
// one of these two is played after eating the last dot
"0a", // piccolo // 17af
"0b", // tune // 17af
//"0f" // 08ee
"10", // 'We're even. Bye Bye!' // 162a
"11", // 'You got me!' // 1657
"12", // 'You have lost out' // 085e
"13", // 'Rock' // 14de
"14", // 'Scissors' // 14f3
"15", // 'Paper' // 1508
// one of these is played when going by the girl between levels
"16", // 'Very good!' // 194a
"17", // 'Wonderful!' // 194a
"18", // 'Come on!' // 194a
"19", // 'I love you!' // 194a
"1a", // 'See you again!' // 194a
nullptr
};
void gotya_state::machine_start() void gotya_state::machine_start()
{ {
save_item(NAME(m_scroll_bit_8)); save_item(NAME(m_scroll_bit_8));
@ -604,4 +602,4 @@ ROM_END
GAME( 1981, thehand, 0, gotya, gotya, gotya_state, empty_init, ROT270, "T.I.C.", "The Hand", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, thehand, 0, gotya, gotya, gotya_state, empty_init, ROT270, "T.I.C.", "The Hand", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, gotya, thehand, gotya, gotya, gotya_state, empty_init, ROT270, "Game-A-Tron", "Got-Ya (12/24/1981)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, gotya, thehand, gotya, gotya, gotya_state, empty_init, ROT270, "T.I.C. (Game-A-Tron license)", "Got-Ya (12/24/1981)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )