New working clones

------------------
Nostromo [anonymous]
Samurai (World) [anonymous, SNESNESCUBE64]
Super Ship [anonymous]

- gotya.cpp: minor cleanups

- hyprduel.cpp: used standard ROM loading macros
This commit is contained in:
Ivan Vangelista 2022-05-27 22:29:03 +02:00
parent f0cf972136
commit 899966bca0
9 changed files with 454 additions and 405 deletions

View File

@ -2085,9 +2085,6 @@ files {
MAME_DIR .. "src/mame/includes/gatron.h", MAME_DIR .. "src/mame/includes/gatron.h",
MAME_DIR .. "src/mame/video/gatron.cpp", MAME_DIR .. "src/mame/video/gatron.cpp",
MAME_DIR .. "src/mame/drivers/gotya.cpp", MAME_DIR .. "src/mame/drivers/gotya.cpp",
MAME_DIR .. "src/mame/includes/gotya.h",
MAME_DIR .. "src/mame/audio/gotya.cpp",
MAME_DIR .. "src/mame/video/gotya.cpp",
MAME_DIR .. "src/mame/drivers/sbugger.cpp", MAME_DIR .. "src/mame/drivers/sbugger.cpp",
MAME_DIR .. "src/mame/includes/sbugger.h", MAME_DIR .. "src/mame/includes/sbugger.h",
MAME_DIR .. "src/mame/video/sbugger.cpp", MAME_DIR .. "src/mame/video/sbugger.cpp",

View File

@ -1,75 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Zsolt Vasvari
#include "emu.h"
#include "sound/samples.h"
#include "includes/gotya.h"
struct gotya_sample
{
int sound_command;
int channel;
int looping;
};
static const struct gotya_sample gotya_samples[] =
{
{ 0x01, 0, 0 },
{ 0x02, 1, 0 },
{ 0x03, 2, 0 },
{ 0x05, 2, 0 },
{ 0x06, 3, 0 },
{ 0x07, 3, 0 },
{ 0x08, 0, 1 },
{ 0x0a, 0, 0 },
{ 0x0b, 0, 0 },
/* all the speech can go to one channel? */
{ 0x10, 3, 0 },
{ 0x11, 3, 0 },
{ 0x12, 0, 0 }, /* this should stop the main tune */
{ 0x13, 3, 0 },
{ 0x14, 3, 0 },
{ 0x15, 3, 0 },
{ 0x16, 3, 0 },
{ 0x17, 3, 0 },
{ 0x18, 3, 0 },
{ 0x19, 3, 0 },
{ 0x1a, 3, 0 },
{ -1, 0, 0 } /* end of array */
};
void gotya_state::gotya_soundlatch_w(uint8_t data)
{
int sample_number;
if (data == 0)
{
m_samples->stop(0);
m_theme_playing = 0;
return;
}
/* search for sample to play */
for (sample_number = 0; gotya_samples[sample_number].sound_command != -1; sample_number++)
{
if (gotya_samples[sample_number].sound_command == data)
{
if (gotya_samples[sample_number].looping && m_theme_playing)
{
/* don't restart main theme */
return;
}
m_samples->start(gotya_samples[sample_number].channel, sample_number, gotya_samples[sample_number].looping);
if (gotya_samples[sample_number].channel == 0)
{
m_theme_playing = gotya_samples[sample_number].looping;
}
return;
}
}
}

View File

@ -10559,6 +10559,20 @@ ROM_START( omni )
ROM_LOAD( "colour.bin", 0x0000, 0x0020, CRC(57a45057) SHA1(d4ec6a54f72640e5b485aa59e206c090e67ff640) ) ROM_LOAD( "colour.bin", 0x0000, 0x0020, CRC(57a45057) SHA1(d4ec6a54f72640e5b485aa59e206c090e67ff640) )
ROM_END ROM_END
ROM_START( supershp ) // closest to omni
ROM_REGION( 0x4000, "maincpu", 0 ) // on a riser board
ROM_LOAD( "ss_1.bin", 0x0000, 0x1000, CRC(55bd4e46) SHA1(1ee111d3840f415f10eaf3e57464572887de73c6) )
ROM_LOAD( "ss_2.bin", 0x1000, 0x1000, CRC(1e08cba8) SHA1(827c93081aa0723b67e94a75bb4220abd673f4e9) )
ROM_LOAD( "ss_3.bin", 0x2000, 0x1000, CRC(bab514fa) SHA1(9cd8ac4407c1875691c1feaec760cd317e464a8f) )
ROM_REGION( 0x2000, "gfx1", 0 )
ROM_LOAD( "ss_j.j1", 0x0000, 0x1000, CRC(2dba9e0e) SHA1(edfb974766b57327ac846426a3a9583b33a4b7c9) )
ROM_LOAD( "ss_k.k1", 0x1000, 0x1000, CRC(cdc5aa26) SHA1(72a396d142a775bb39231d700308b8bd7aff7f75) )
ROM_REGION( 0x0020, "proms", 0 ) // not dumped for this set, probably the same given how close this is
ROM_LOAD( "colour.bin", 0x0000, 0x0020, BAD_DUMP CRC(57a45057) SHA1(d4ec6a54f72640e5b485aa59e206c090e67ff640) )
ROM_END
ROM_START( uniwars ) ROM_START( uniwars )
ROM_REGION( 0x4000, "maincpu", 0 ) ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "f07_1a.bin", 0x0000, 0x0800, CRC(d975af10) SHA1(a2e2a36a75db8fd09441308b08b6ae073c68b8cf) ) ROM_LOAD( "f07_1a.bin", 0x0000, 0x0800, CRC(d975af10) SHA1(a2e2a36a75db8fd09441308b08b6ae073c68b8cf) )
@ -15806,7 +15820,8 @@ GAME( 1982, azurian, 0, galaxian, azurian, galaxian_state, init_
// Extra characters controlled via bank at $6002 // Extra characters controlled via bank at $6002
GAME( 19??, pisces, 0, pisces, pisces, pisces_state, init_pisces, ROT90, "Subelectro", "Pisces", MACHINE_SUPPORTS_SAVE ) GAME( 19??, pisces, 0, pisces, pisces, pisces_state, init_pisces, ROT90, "Subelectro", "Pisces", MACHINE_SUPPORTS_SAVE )
GAME( 19??, piscesb, pisces, pisces, piscesb, pisces_state, init_pisces, ROT90, "bootleg", "Pisces (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 19??, piscesb, pisces, pisces, piscesb, pisces_state, init_pisces, ROT90, "bootleg", "Pisces (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 19??, omni, pisces, pisces, piscesb, pisces_state, init_pisces, ROT90, "bootleg", "Omni", MACHINE_SUPPORTS_SAVE ) GAME( 19??, omni, pisces, pisces, piscesb, pisces_state, init_pisces, ROT90, "bootleg (Videa System)", "Omni", MACHINE_SUPPORTS_SAVE )
GAME( 19??, supershp, pisces, pisces, piscesb, pisces_state, init_pisces, ROT90, "bootleg", "Super Ship", MACHINE_SUPPORTS_SAVE )
GAME( 1980, uniwars, 0, pisces, superg, pisces_state, init_pisces, ROT90, "Irem", "UniWar S", MACHINE_SUPPORTS_SAVE ) GAME( 1980, uniwars, 0, pisces, superg, pisces_state, init_pisces, ROT90, "Irem", "UniWar S", MACHINE_SUPPORTS_SAVE )
GAME( 1980, uniwarsa, uniwars, pisces, superg, pisces_state, init_pisces, ROT90, "bootleg (Karateco)", "UniWar S (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, uniwarsa, uniwars, pisces, superg, pisces_state, init_pisces, ROT90, "bootleg (Karateco)", "UniWar S (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, mltiwars, uniwars, pisces, superg, pisces_state, init_pisces, ROT90, "bootleg (Gayton Games)", "Multi Wars (bootleg of UniWar S)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, mltiwars, uniwars, pisces, superg, pisces_state, init_pisces, ROT90, "bootleg (Gayton Games)", "Multi Wars (bootleg of UniWar S)", MACHINE_SUPPORTS_SAVE )

View File

@ -31,8 +31,8 @@ TODO: Emulated sound
---- ----
so despite the fact that 'gotya' might look like its a bootleg of thehand, so despite the fact that 'gotya' might look like it's a bootleg of thehand,
its more likely just a prototype / alternate version, its 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:
@ -53,36 +53,335 @@ at the top of the screen for 'The hand' with the 'hi-score' is replaced
with 'Got-Ya' in text, a fairly minor hack. The Copyright symbol is with 'Got-Ya' in text, a fairly minor hack. The Copyright symbol is
still there in Got-Ya but with the company name scrubbed out. 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, its 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"
#include "includes/gotya.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/samples.h" #include "sound/samples.h"
#include "emupal.h"
#include "screen.h" #include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "tilemap.h"
#include "video/resnet.h"
void gotya_state::gotya_map(address_map &map) namespace {
class gotya_state : public driver_device
{
public:
gotya_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_scroll(*this, "scroll"),
m_videoram(*this, "videoram%u", 1U),
m_colorram(*this, "colorram"),
m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_samples(*this, "samples")
{ }
void gotya(machine_config &config);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private:
// memory pointers
required_shared_ptr<uint8_t> m_scroll;
required_shared_ptr_array<uint8_t, 2> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_spriteram;
// devices
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<samples_device> m_samples;
// video-related
tilemap_t *m_bg_tilemap = nullptr;
uint8_t m_scroll_bit_8 = 0;
// sound-related
uint8_t m_theme_playing = 0;
void videoram_w(offs_t offset, uint8_t data);
void colorram_w(offs_t offset, uint8_t data);
void video_control_w(uint8_t data);
void soundlatch_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILEMAP_MAPPER_MEMBER(tilemap_scan_rows);
void palette(palette_device &palette) const;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_status_row(bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_status(bitmap_ind16 &bitmap, const rectangle &cliprect);
void prg_map(address_map &map);
};
// video
/***************************************************************************
Convert the color PROMs into a more useable format.
***************************************************************************/
void gotya_state::palette(palette_device &palette) const
{
uint8_t const *color_prom = memregion("proms")->base();
static constexpr int resistances_rg[3] = { 1000, 470, 220 };
static constexpr int resistances_b [2] = { 470, 220 };
// compute the color output resistor weights
double rweights[3], gweights[3], bweights[2];
compute_resistor_weights(0, 255, -1.0,
3, &resistances_rg[0], rweights, 0, 0,
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
// create a lookup table for the palette
for (int i = 0; i < 0x20; i++)
{
// red component
int bit0 = BIT(color_prom[i], 0);
int bit1 = BIT(color_prom[i], 1);
int bit2 = BIT(color_prom[i], 2);
int const r = combine_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
int const g = combine_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
int const b = combine_weights(bweights, bit0, bit1);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
// color_prom now points to the beginning of the lookup table
color_prom += 32;
for (int i = 0; i < 0x40; i++)
{
uint8_t const ctabentry = color_prom[i] & 0x07;
palette.set_pen_indirect(i, ctabentry);
}
}
void gotya_state::videoram_w(offs_t offset, uint8_t data)
{
m_videoram[0][offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
void gotya_state::colorram_w(offs_t offset, uint8_t data)
{
m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
void gotya_state::video_control_w(uint8_t data)
{
/* bit 0 - scroll bit 8
bit 1 - flip screen
bit 2 - sound disable ??? */
m_scroll_bit_8 = data & 0x01;
if (flip_screen() != (data & 0x02))
{
flip_screen_set(data & 0x02);
machine().tilemap().mark_all_dirty();
}
}
TILE_GET_INFO_MEMBER(gotya_state::get_bg_tile_info)
{
int code = m_videoram[0][tile_index];
int color = m_colorram[tile_index] & 0x0f;
tileinfo.set(0, code, color, 0);
}
TILEMAP_MAPPER_MEMBER(gotya_state::tilemap_scan_rows)
{
// logical (col,row) -> memory offset
row = 31 - row;
col = 63 - col;
return ((row) * (num_cols >> 1)) + (col & 31) + ((col >> 5) * 0x400);
}
void gotya_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gotya_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(gotya_state::tilemap_scan_rows)), 8, 8, 64, 32);
}
void gotya_state::draw_status_row(bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col)
{
if (flip_screen())
sx = 35 - sx;
for (int row = 29; row >= 0; row--)
{
int sy;
if (flip_screen())
sy = row;
else
sy = 31 - row;
m_gfxdecode->gfx(0)->opaque(bitmap, cliprect,
m_videoram[1][row * 32 + col],
m_videoram[1][row * 32 + col + 0x10] & 0x0f,
flip_screen_x(), flip_screen_y(),
8 * sx, 8 * sy);
}
}
void gotya_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
for (int offs = 2; offs < 0x0e; offs += 2)
{
int code = m_spriteram[offs + 0x01] >> 2;
int color = m_spriteram[offs + 0x11] & 0x0f;
int sx = 256 - m_spriteram[offs + 0x10] + (m_spriteram[offs + 0x01] & 0x01) * 256;
int sy = m_spriteram[offs + 0x00];
if (flip_screen())
sy = 240 - sy;
m_gfxdecode->gfx(1)->transpen(bitmap, cliprect,
code, color,
flip_screen_x(), flip_screen_y(),
sx, sy, 0);
}
}
void gotya_state::draw_status(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
draw_status_row(bitmap, cliprect, 0, 1);
draw_status_row(bitmap, cliprect, 1, 0);
draw_status_row(bitmap, cliprect, 2, 2); // these two are blank, but I dont' know if the data comes
draw_status_row(bitmap, cliprect, 33, 13); // from RAM or 'hardcoded' into the hardware. Likely the latter
draw_status_row(bitmap, cliprect, 35, 14);
draw_status_row(bitmap, cliprect, 34, 15);
}
uint32_t gotya_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, -(*m_scroll + (m_scroll_bit_8 * 256)) - 2 * 8);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
draw_status(bitmap, cliprect);
return 0;
}
// audio
struct gotya_sample
{
int8_t sound_command;
uint8_t channel;
uint8_t looping;
};
static const struct gotya_sample gotya_samples[] =
{
{ 0x01, 0, 0 },
{ 0x02, 1, 0 },
{ 0x03, 2, 0 },
{ 0x05, 2, 0 },
{ 0x06, 3, 0 },
{ 0x07, 3, 0 },
{ 0x08, 0, 1 },
{ 0x0a, 0, 0 },
{ 0x0b, 0, 0 },
// all the speech can go to one channel?
{ 0x10, 3, 0 },
{ 0x11, 3, 0 },
{ 0x12, 0, 0 }, // this should stop the main tune
{ 0x13, 3, 0 },
{ 0x14, 3, 0 },
{ 0x15, 3, 0 },
{ 0x16, 3, 0 },
{ 0x17, 3, 0 },
{ 0x18, 3, 0 },
{ 0x19, 3, 0 },
{ 0x1a, 3, 0 },
{ -1, 0, 0 } // end of array
};
void gotya_state::soundlatch_w(uint8_t data)
{
if (data == 0)
{
m_samples->stop(0);
m_theme_playing = 0;
return;
}
// search for sample to play
for (int sample_number = 0; gotya_samples[sample_number].sound_command != -1; sample_number++)
{
if (gotya_samples[sample_number].sound_command == data)
{
if (gotya_samples[sample_number].looping && m_theme_playing)
{
// don't restart main theme
return;
}
m_samples->start(gotya_samples[sample_number].channel, sample_number, gotya_samples[sample_number].looping);
if (gotya_samples[sample_number].channel == 0)
{
m_theme_playing = gotya_samples[sample_number].looping;
}
return;
}
}
}
// machine
void gotya_state::prg_map(address_map &map)
{ {
map(0x0000, 0x3fff).rom(); map(0x0000, 0x3fff).rom();
map(0x5000, 0x5fff).ram(); map(0x5000, 0x5fff).ram();
map(0x6000, 0x6000).portr("P1"); map(0x6000, 0x6000).portr("P1");
map(0x6001, 0x6001).portr("P2"); map(0x6001, 0x6001).portr("P2");
map(0x6002, 0x6002).portr("DSW"); map(0x6002, 0x6002).portr("DSW");
map(0x6004, 0x6004).w(FUNC(gotya_state::gotya_video_control_w)); map(0x6004, 0x6004).w(FUNC(gotya_state::video_control_w));
map(0x6005, 0x6005).w(FUNC(gotya_state::gotya_soundlatch_w)); map(0x6005, 0x6005).w(FUNC(gotya_state::soundlatch_w));
map(0x6006, 0x6006).writeonly().share("scroll"); map(0x6006, 0x6006).writeonly().share(m_scroll);
map(0x6007, 0x6007).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0x6007, 0x6007).w("watchdog", FUNC(watchdog_timer_device::reset_w));
map(0xc000, 0xc7ff).ram().w(FUNC(gotya_state::gotya_videoram_w)).share("videoram"); map(0xc000, 0xc7ff).ram().w(FUNC(gotya_state::videoram_w)).share(m_videoram[0]);
map(0xc800, 0xcfff).ram().w(FUNC(gotya_state::gotya_colorram_w)).share("colorram"); map(0xc800, 0xcfff).ram().w(FUNC(gotya_state::colorram_w)).share(m_colorram);
map(0xd000, 0xd3df).ram().share("videoram2"); map(0xd000, 0xd3df).ram().share(m_videoram[1]);
map(0xd3e0, 0xd3ff).ram().share("spriteram"); map(0xd3e0, 0xd3ff).ram().share(m_spriteram);
} }
@ -133,67 +432,67 @@ INPUT_PORTS_END
static const gfx_layout charlayout = static const gfx_layout charlayout =
{ {
8,8, /* 8*8 characters */ 8,8, // 8*8 characters
256, /* 256 characters */ 256, // 256 characters
2, /* 2 bits per pixel */ 2, // 2 bits per pixel
{ 0, 4 }, /* the bitplanes are packed in one byte */ { 0, 4 }, // the bitplanes are packed in one byte
{ 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 }, { 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 },
{ 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 }, { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
16*8 /* every char takes 16 consecutive bytes */ 16*8 // every char takes 16 consecutive bytes
}; };
static const gfx_layout spritelayout = static const gfx_layout spritelayout =
{ {
16,16, /* 16*16 characters */ 16,16, // 16*16 characters
64, /* 64 characters */ 64, // 64 characters
2, /* 2 bits per pixel */ 2, // 2 bits per pixel
{ 0, 4 }, /* the bitplanes are packed in one byte */ { 0, 4 }, // the bitplanes are packed in one byte
{ 0, 1, 2, 3, 24*8+0, 24*8+1, 24*8+2, 24*8+3, { 0, 1, 2, 3, 24*8+0, 24*8+1, 24*8+2, 24*8+3,
16*8+0, 16*8+1, 16*8+2, 16*8+3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 }, 16*8+0, 16*8+1, 16*8+2, 16*8+3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 },
{ 39*8, 38*8, 37*8, 36*8, 35*8, 34*8, 33*8, 32*8, { 39*8, 38*8, 37*8, 36*8, 35*8, 34*8, 33*8, 32*8,
7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 }, 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
64*8 /* every char takes 64 consecutive bytes */ 64*8 // every char takes 64 consecutive bytes
}; };
static GFXDECODE_START( gfx_gotya ) static GFXDECODE_START( gfx_gotya )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) GFXDECODE_ENTRY( "chars", 0, charlayout, 0, 16 )
GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) GFXDECODE_ENTRY( "sprites", 0, spritelayout, 0, 16 )
GFXDECODE_END GFXDECODE_END
static const char *const sample_names[] = static const char *const sample_names[] =
{ // Address triggered at { // Address triggered at
"*thehand", "*thehand",
"01", /* game start tune */ // 075f "01", // game start tune // 075f
"02", /* coin in */ // 0074 "02", // coin in // 0074
"03", /* eat dot */ // 0e45 "03", // eat dot // 0e45
"05", /* eat dollar sign */ // 0e45 "05", // eat dollar sign // 0e45
"06", /* door open */ // 19e1 "06", // door open // 19e1
"07", /* door close */ // 1965 "07", // door close // 1965
"08", /* theme song */ // 0821 "08", // theme song // 0821
//"09" // 1569 //"09" // 1569
/* one of these two is played after eating the last dot */ // one of these two is played after eating the last dot
"0a", /* piccolo */ // 17af "0a", // piccolo // 17af
"0b", /* tune */ // 17af "0b", // tune // 17af
//"0f" // 08ee //"0f" // 08ee
"10", /* 'We're even. Bye Bye!' */ // 162a "10", // 'We're even. Bye Bye!' // 162a
"11", /* 'You got me!' */ // 1657 "11", // 'You got me!' // 1657
"12", /* 'You have lost out' */ // 085e "12", // 'You have lost out' // 085e
"13", /* 'Rock' */ // 14de "13", // 'Rock' // 14de
"14", /* 'Scissors' */ // 14f3 "14", // 'Scissors' // 14f3
"15", /* 'Paper' */ // 1508 "15", // 'Paper' // 1508
/* one of these is played when going by the girl between levels */ // one of these is played when going by the girl between levels
"16", /* 'Very good!' */ // 194a "16", // 'Very good!' // 194a
"17", /* 'Wonderful!' */ // 194a "17", // 'Wonderful!' // 194a
"18", /* 'Come on!' */ // 194a "18", // 'Come on!' // 194a
"19", /* 'I love you!' */ // 194a "19", // 'I love you!' // 194a
"1a", /* 'See you again!' */ // 194a "1a", // 'See you again!' // 194a
nullptr nullptr
}; };
@ -211,26 +510,26 @@ void gotya_state::machine_reset()
void gotya_state::gotya(machine_config &config) void gotya_state::gotya(machine_config &config)
{ {
/* basic machine hardware */ // basic machine hardware
Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz ??? */ Z80(config, m_maincpu, 18432000 / 6); // 3.072 MHz ???
m_maincpu->set_addrmap(AS_PROGRAM, &gotya_state::gotya_map); m_maincpu->set_addrmap(AS_PROGRAM, &gotya_state::prg_map);
m_maincpu->set_vblank_int("screen", FUNC(gotya_state::irq0_line_hold)); m_maincpu->set_vblank_int("screen", FUNC(gotya_state::irq0_line_hold));
WATCHDOG_TIMER(config, "watchdog"); WATCHDOG_TIMER(config, "watchdog");
/* video hardware */ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60); screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
screen.set_size(36*8, 32*8); screen.set_size(36*8, 32*8);
screen.set_visarea(0, 36*8-1, 2*8, 30*8-1); screen.set_visarea(0, 36*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(gotya_state::screen_update_gotya)); screen.set_screen_update(FUNC(gotya_state::screen_update));
screen.set_palette(m_palette); screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_gotya); GFXDECODE(config, m_gfxdecode, m_palette, gfx_gotya);
PALETTE(config, m_palette, FUNC(gotya_state::gotya_palette), 16*4, 32); PALETTE(config, m_palette, FUNC(gotya_state::palette), 16*4, 32);
/* sound hardware */ // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
SAMPLES(config, m_samples); SAMPLES(config, m_samples);
@ -252,21 +551,21 @@ ROM_START( thehand )
ROM_LOAD( "hand4.bin", 0x2000, 0x1000, CRC(c6844a83) SHA1(84e220dce3f5ddee9dd0377f3bebdd4027fc9108) ) ROM_LOAD( "hand4.bin", 0x2000, 0x1000, CRC(c6844a83) SHA1(84e220dce3f5ddee9dd0377f3bebdd4027fc9108) )
ROM_LOAD( "gb-03.bin", 0x3000, 0x1000, CRC(f34d90ab) SHA1(bec5f6a34a273f308083a280f2b425d9c273c69b) ) ROM_LOAD( "gb-03.bin", 0x3000, 0x1000, CRC(f34d90ab) SHA1(bec5f6a34a273f308083a280f2b425d9c273c69b) )
ROM_REGION( 0x1000, "gfx1", 0 ) /* characters */ ROM_REGION( 0x1000, "chars", 0 )
ROM_LOAD( "hand12.bin", 0x0000, 0x1000, CRC(95773b46) SHA1(db8d7ace4eafd4c72edfeff6003ca6e96e0239b5) ) ROM_LOAD( "hand12.bin", 0x0000, 0x1000, CRC(95773b46) SHA1(db8d7ace4eafd4c72edfeff6003ca6e96e0239b5) )
ROM_REGION( 0x1000, "gfx2", 0 ) /* sprites */ ROM_REGION( 0x1000, "sprites", 0 )
ROM_LOAD( "gb-11.bin", 0x0000, 0x1000, CRC(5d5eca1b) SHA1(d7c6b5f4d398d5e33cc411ed593d6f53a9979493) ) ROM_LOAD( "gb-11.bin", 0x0000, 0x1000, CRC(5d5eca1b) SHA1(d7c6b5f4d398d5e33cc411ed593d6f53a9979493) )
ROM_REGION( 0x0120, "proms", 0 ) ROM_REGION( 0x0120, "proms", 0 )
ROM_LOAD( "prom.1a", 0x0000, 0x0020, CRC(4864a5a0) SHA1(5b49f60b085fa026d4e8d4a5ad28ee7037a8ff9c) ) /* color PROM */ ROM_LOAD( "prom.1a", 0x0000, 0x0020, CRC(4864a5a0) SHA1(5b49f60b085fa026d4e8d4a5ad28ee7037a8ff9c) ) // color PROM
ROM_LOAD( "prom.4c", 0x0020, 0x0100, CRC(4745b5f6) SHA1(02a7f759e9bc8089cbd9213a71bbe671f9641638) ) /* lookup table */ ROM_LOAD( "prom.4c", 0x0020, 0x0100, CRC(4745b5f6) SHA1(02a7f759e9bc8089cbd9213a71bbe671f9641638) ) // lookup table
ROM_REGION( 0x1000, "user1", 0 ) /* no idea what these are */ ROM_REGION( 0x1000, "user1", 0 ) // no idea what these are
ROM_LOAD( "hand1.bin", 0x0000, 0x0800, CRC(ccc537e0) SHA1(471fd49225aa14b91d085178e1b58b6c4ae76481) ) ROM_LOAD( "hand1.bin", 0x0000, 0x0800, CRC(ccc537e0) SHA1(471fd49225aa14b91d085178e1b58b6c4ae76481) )
ROM_LOAD( "gb-02.bin", 0x0800, 0x0800, CRC(65a7e284) SHA1(91e9c34dcf20608863ad5475dc0c4309971c8eee) ) ROM_LOAD( "gb-02.bin", 0x0800, 0x0800, CRC(65a7e284) SHA1(91e9c34dcf20608863ad5475dc0c4309971c8eee) )
ROM_REGION( 0x8000, "user2", 0 ) /* HD38880 code/samples? */ ROM_REGION( 0x8000, "user2", 0 ) // HD38880 code/samples?
ROM_LOAD( "gb-10.bin", 0x4000, 0x1000, CRC(8101915f) SHA1(c4d21b1938ea7e0d47c48e74037f005280ac101b) ) ROM_LOAD( "gb-10.bin", 0x4000, 0x1000, CRC(8101915f) SHA1(c4d21b1938ea7e0d47c48e74037f005280ac101b) )
ROM_LOAD( "gb-09.bin", 0x5000, 0x1000, CRC(619bba76) SHA1(2a2deffe6f058fc840329fbfffbc0c70a0147c14) ) ROM_LOAD( "gb-09.bin", 0x5000, 0x1000, CRC(619bba76) SHA1(2a2deffe6f058fc840329fbfffbc0c70a0147c14) )
ROM_LOAD( "gb-08.bin", 0x6000, 0x1000, CRC(82f59528) SHA1(6bfa2329eb291040bfc229c56420865253b0132a) ) ROM_LOAD( "gb-08.bin", 0x6000, 0x1000, CRC(82f59528) SHA1(6bfa2329eb291040bfc229c56420865253b0132a) )
@ -278,28 +577,31 @@ ROM_START( gotya )
ROM_LOAD( "gb-06.bin", 0x0000, 0x1000, CRC(7793985a) SHA1(23aa8bd161e700bea59b92075423cdf55e9a26c3) ) ROM_LOAD( "gb-06.bin", 0x0000, 0x1000, CRC(7793985a) SHA1(23aa8bd161e700bea59b92075423cdf55e9a26c3) )
ROM_LOAD( "gb-05.bin", 0x1000, 0x1000, CRC(683d188b) SHA1(5341c62f5cf384c73be0d7a0a230bb8cebfbe709) ) ROM_LOAD( "gb-05.bin", 0x1000, 0x1000, CRC(683d188b) SHA1(5341c62f5cf384c73be0d7a0a230bb8cebfbe709) )
ROM_LOAD( "gb-04.bin", 0x2000, 0x1000, CRC(15b72f09) SHA1(bd941722ed1310d5c8ca8a44899368cba3815f3b) ) ROM_LOAD( "gb-04.bin", 0x2000, 0x1000, CRC(15b72f09) SHA1(bd941722ed1310d5c8ca8a44899368cba3815f3b) )
ROM_LOAD( "gb-03.bin", 0x3000, 0x1000, CRC(f34d90ab) SHA1(bec5f6a34a273f308083a280f2b425d9c273c69b) ) /* this is the only ROM that passes the ROM test */ ROM_LOAD( "gb-03.bin", 0x3000, 0x1000, CRC(f34d90ab) SHA1(bec5f6a34a273f308083a280f2b425d9c273c69b) ) // this is the only ROM that passes the ROM test
ROM_REGION( 0x1000, "gfx1", 0 ) /* characters */ ROM_REGION( 0x1000, "chars", 0 )
ROM_LOAD( "gb-12.bin", 0x0000, 0x1000, CRC(4993d735) SHA1(9e47876238a8af3659721191a5f75c33507ed1a5) ) ROM_LOAD( "gb-12.bin", 0x0000, 0x1000, CRC(4993d735) SHA1(9e47876238a8af3659721191a5f75c33507ed1a5) )
ROM_REGION( 0x1000, "gfx2", 0 ) /* sprites */ ROM_REGION( 0x1000, "sprites", 0 )
ROM_LOAD( "gb-11.bin", 0x0000, 0x1000, CRC(5d5eca1b) SHA1(d7c6b5f4d398d5e33cc411ed593d6f53a9979493) ) ROM_LOAD( "gb-11.bin", 0x0000, 0x1000, CRC(5d5eca1b) SHA1(d7c6b5f4d398d5e33cc411ed593d6f53a9979493) )
ROM_REGION( 0x0120, "proms", 0 ) ROM_REGION( 0x0120, "proms", 0 )
ROM_LOAD( "prom.1a", 0x0000, 0x0020, CRC(4864a5a0) SHA1(5b49f60b085fa026d4e8d4a5ad28ee7037a8ff9c) ) /* color PROM */ ROM_LOAD( "prom.1a", 0x0000, 0x0020, CRC(4864a5a0) SHA1(5b49f60b085fa026d4e8d4a5ad28ee7037a8ff9c) ) // color PROM
ROM_LOAD( "prom.4c", 0x0020, 0x0100, CRC(4745b5f6) SHA1(02a7f759e9bc8089cbd9213a71bbe671f9641638) ) /* lookup table */ ROM_LOAD( "prom.4c", 0x0020, 0x0100, CRC(4745b5f6) SHA1(02a7f759e9bc8089cbd9213a71bbe671f9641638) ) // lookup table
ROM_REGION( 0x1000, "user1", 0 ) /* no idea what these are */ ROM_REGION( 0x1000, "user1", 0 ) // no idea what these are
ROM_LOAD( "gb-01.bin", 0x0000, 0x0800, CRC(c31dba64) SHA1(15ae54b7d475ca3f0a3acc45cd8da2916c5fdef2) ) ROM_LOAD( "gb-01.bin", 0x0000, 0x0800, CRC(c31dba64) SHA1(15ae54b7d475ca3f0a3acc45cd8da2916c5fdef2) )
ROM_LOAD( "gb-02.bin", 0x0800, 0x0800, CRC(65a7e284) SHA1(91e9c34dcf20608863ad5475dc0c4309971c8eee) ) ROM_LOAD( "gb-02.bin", 0x0800, 0x0800, CRC(65a7e284) SHA1(91e9c34dcf20608863ad5475dc0c4309971c8eee) )
ROM_REGION( 0x8000, "user2", 0 ) /* HD38880 code/samples? */ ROM_REGION( 0x8000, "user2", 0 ) // HD38880 code/samples?
ROM_LOAD( "gb-10.bin", 0x4000, 0x1000, CRC(8101915f) SHA1(c4d21b1938ea7e0d47c48e74037f005280ac101b) ) ROM_LOAD( "gb-10.bin", 0x4000, 0x1000, CRC(8101915f) SHA1(c4d21b1938ea7e0d47c48e74037f005280ac101b) )
ROM_LOAD( "gb-09.bin", 0x5000, 0x1000, CRC(619bba76) SHA1(2a2deffe6f058fc840329fbfffbc0c70a0147c14) ) ROM_LOAD( "gb-09.bin", 0x5000, 0x1000, CRC(619bba76) SHA1(2a2deffe6f058fc840329fbfffbc0c70a0147c14) )
ROM_LOAD( "gb-08.bin", 0x6000, 0x1000, CRC(82f59528) SHA1(6bfa2329eb291040bfc229c56420865253b0132a) ) ROM_LOAD( "gb-08.bin", 0x6000, 0x1000, CRC(82f59528) SHA1(6bfa2329eb291040bfc229c56420865253b0132a) )
ROM_LOAD( "gb-07.bin", 0x7000, 0x1000, CRC(92a9f8bf) SHA1(9231cd86f24f1e6a585c3a919add50c1f8e42a4c) ) ROM_LOAD( "gb-07.bin", 0x7000, 0x1000, CRC(92a9f8bf) SHA1(9231cd86f24f1e6a585c3a919add50c1f8e42a4c) )
ROM_END ROM_END
} // anonymous namespace
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, "Game-A-Tron", "Got-Ya (12/24/1981)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -477,10 +477,10 @@ ROM_START( hyprduel )
ROM_LOAD16_BYTE( "23.u23", 0x000001, 0x40000, CRC(d8297c2b) SHA1(2e23c5b1784d0a465c0c0dc3ca28505689a8b16c) ) /* Also silk screened as position 9 */ ROM_LOAD16_BYTE( "23.u23", 0x000001, 0x40000, CRC(d8297c2b) SHA1(2e23c5b1784d0a465c0c0dc3ca28505689a8b16c) ) /* Also silk screened as position 9 */
ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */ ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */
ROMX_LOAD( "ts_hyper-1.u74", 0x000000, 0x100000, CRC(4b3b2d3c) SHA1(5e9e8ec853f71aeff3910b93dadbaeae2b61717b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-1.u74", 0x000000, 0x100000, CRC(4b3b2d3c) SHA1(5e9e8ec853f71aeff3910b93dadbaeae2b61717b) )
ROMX_LOAD( "ts_hyper-2.u75", 0x000002, 0x100000, CRC(dc230116) SHA1(a3c447657d8499764f52c81382961f425c56037b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-2.u75", 0x000002, 0x100000, CRC(dc230116) SHA1(a3c447657d8499764f52c81382961f425c56037b) )
ROMX_LOAD( "ts_hyper-3.u76", 0x000004, 0x100000, CRC(2d770dd0) SHA1(27f9e7f67e96210d3710ab4f940c5d7ae13f8bbf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-3.u76", 0x000004, 0x100000, CRC(2d770dd0) SHA1(27f9e7f67e96210d3710ab4f940c5d7ae13f8bbf) )
ROMX_LOAD( "ts_hyper-4.u77", 0x000006, 0x100000, CRC(f88c6d33) SHA1(277b56df40a17d7dd9f1071b0d498635a5b783cd) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-4.u77", 0x000006, 0x100000, CRC(f88c6d33) SHA1(277b56df40a17d7dd9f1071b0d498635a5b783cd) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(bf3f8574) SHA1(9e743f05e53256c886d43e1f0c43d7417134b9b3) ) /* Also silk screened as position 11 */ ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(bf3f8574) SHA1(9e743f05e53256c886d43e1f0c43d7417134b9b3) ) /* Also silk screened as position 11 */
@ -492,10 +492,10 @@ ROM_START( hyprduel2 )
ROM_LOAD16_BYTE( "23a.u23", 0x000001, 0x40000, CRC(98aedfca) SHA1(42028e57ac79473cde683be2100b953ff3b2b345) ) /* Also silk screened as position 9 */ ROM_LOAD16_BYTE( "23a.u23", 0x000001, 0x40000, CRC(98aedfca) SHA1(42028e57ac79473cde683be2100b953ff3b2b345) ) /* Also silk screened as position 9 */
ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */ ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */
ROMX_LOAD( "ts_hyper-1.u74", 0x000000, 0x100000, CRC(4b3b2d3c) SHA1(5e9e8ec853f71aeff3910b93dadbaeae2b61717b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-1.u74", 0x000000, 0x100000, CRC(4b3b2d3c) SHA1(5e9e8ec853f71aeff3910b93dadbaeae2b61717b) )
ROMX_LOAD( "ts_hyper-2.u75", 0x000002, 0x100000, CRC(dc230116) SHA1(a3c447657d8499764f52c81382961f425c56037b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-2.u75", 0x000002, 0x100000, CRC(dc230116) SHA1(a3c447657d8499764f52c81382961f425c56037b) )
ROMX_LOAD( "ts_hyper-3.u76", 0x000004, 0x100000, CRC(2d770dd0) SHA1(27f9e7f67e96210d3710ab4f940c5d7ae13f8bbf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-3.u76", 0x000004, 0x100000, CRC(2d770dd0) SHA1(27f9e7f67e96210d3710ab4f940c5d7ae13f8bbf) )
ROMX_LOAD( "ts_hyper-4.u77", 0x000006, 0x100000, CRC(f88c6d33) SHA1(277b56df40a17d7dd9f1071b0d498635a5b783cd) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "ts_hyper-4.u77", 0x000006, 0x100000, CRC(f88c6d33) SHA1(277b56df40a17d7dd9f1071b0d498635a5b783cd) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(bf3f8574) SHA1(9e743f05e53256c886d43e1f0c43d7417134b9b3) ) /* Also silk screened as position 11 */ ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(bf3f8574) SHA1(9e743f05e53256c886d43e1f0c43d7417134b9b3) ) /* Also silk screened as position 11 */
@ -507,10 +507,10 @@ ROM_START( magerror )
ROM_LOAD16_BYTE( "23.u23", 0x000001, 0x40000, CRC(7271ec70) SHA1(bd7666390b70821f90ba976a3afe3194fb119478) ) /* Also silk screened as position 9 */ ROM_LOAD16_BYTE( "23.u23", 0x000001, 0x40000, CRC(7271ec70) SHA1(bd7666390b70821f90ba976a3afe3194fb119478) ) /* Also silk screened as position 9 */
ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */ ROM_REGION( 0x400000, "vdp", 0 ) /* Gfx + Prg + Data (Addressable by CPU & Blitter) */
ROMX_LOAD( "mr93046-02.u74", 0x000000, 0x100000, CRC(f7ba06fb) SHA1(e1407b0d03863f434b68183c01e8547612e5c5fd) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "mr93046-02.u74", 0x000000, 0x100000, CRC(f7ba06fb) SHA1(e1407b0d03863f434b68183c01e8547612e5c5fd) )
ROMX_LOAD( "mr93046-04.u75", 0x000002, 0x100000, CRC(8c114d15) SHA1(4eb1f82e7992deb126633287cb4fd2a6d215346c) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "mr93046-04.u75", 0x000002, 0x100000, CRC(8c114d15) SHA1(4eb1f82e7992deb126633287cb4fd2a6d215346c) )
ROMX_LOAD( "mr93046-01.u76", 0x000004, 0x100000, CRC(6cc3b928) SHA1(f19d0add314867bfb7dcefe8e7a2d50a84530df7) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "mr93046-01.u76", 0x000004, 0x100000, CRC(6cc3b928) SHA1(f19d0add314867bfb7dcefe8e7a2d50a84530df7) )
ROMX_LOAD( "mr93046-03.u77", 0x000006, 0x100000, CRC(6b1eb0ea) SHA1(6167a61562ef28147a7917c692f181f3fc2d5be6) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_LOAD64_WORD( "mr93046-03.u77", 0x000006, 0x100000, CRC(6b1eb0ea) SHA1(6167a61562ef28147a7917c692f181f3fc2d5be6) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(2e62bca8) SHA1(191fff11186dbbc1d9d9f3ba1b6e17c38a7d2d1d) ) /* Also silk screened as position 11 */ ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(2e62bca8) SHA1(191fff11186dbbc1d9d9f3ba1b6e17c38a7d2d1d) ) /* Also silk screened as position 11 */

View File

@ -716,6 +716,17 @@ static INPUT_PORTS_START( headons )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* no color/bw option */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* no color/bw option */
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( startrks )
PORT_INCLUDE( headons )
PORT_MODIFY("IN0")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x02, "4" )
PORT_DIPSETTING( 0x03, "5" )
INPUT_PORTS_END
static INPUT_PORTS_START( hocrash ) static INPUT_PORTS_START( hocrash )
PORT_INCLUDE( headons ) PORT_INCLUDE( headons )
@ -3470,7 +3481,30 @@ ROM_START( sspacaho )
ROM_LOAD( "316-0206.u14", 0x0000, 0x0020, CRC(9617d796) SHA1(7cff2741866095ff42eadd8022bea349ec8d2f39) ) /* control PROM */ ROM_LOAD( "316-0206.u14", 0x0000, 0x0020, CRC(9617d796) SHA1(7cff2741866095ff42eadd8022bea349ec8d2f39) ) /* control PROM */
ROM_END ROM_END
// Found on a Gremlin 'EXTENDED ROM VIDEO LOGIC ASSY NO 800-003' PCB with a '834-0118' sticker and a Sega 96718-P-A riser board.
// Everything on the board is dated 1979, but possibly the PCB was converted from something else, given the epr numbers are way bigger than the Japanese version ones
ROM_START( samurai ) ROM_START( samurai )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "epr-1217.u33", 0x0000, 0x0400, CRC(a1a9cb03) SHA1(1875a86ad5938295dd5db6bb045be46eba8638ba) )
ROM_LOAD( "epr-1218.u32", 0x0400, 0x0400, CRC(4b45d07d) SHA1(ff8cb6bae5ed239a0245265ca36305e4fadc7695) )
ROM_LOAD( "epr-1219.u31", 0x0800, 0x0400, CRC(9fd4b195) SHA1(001e3952927dac36993b20f6deae343fdb95e2cd) )
ROM_LOAD( "epr-1220.u30", 0x0c00, 0x0400, CRC(90370e13) SHA1(6a7419a52299a78aff16689775ce0533ac8aa443) )
ROM_LOAD( "epr-1221.u29", 0x1000, 0x0400, CRC(dcc47158) SHA1(801a16aa100fee3f13b4acd426612dde9c906f5d) )
ROM_LOAD( "epr-1222.u28", 0x1400, 0x0400, CRC(d2fab27a) SHA1(d289f0451859d87665f8047aabb43494a22fae28) )
ROM_LOAD( "epr-1223.u27", 0x1800, 0x0400, CRC(f7e2ad95) SHA1(078055961fc09ee91734e86b30a7b48a03a67f4a) )
ROM_LOAD( "epr-1224.u26", 0x1c00, 0x0400, CRC(d46e306b) SHA1(51532a054fc334a04d3e5cad3b41aa3508318bc5) )
ROM_LOAD( "epr-1225.u8", 0x2000, 0x0400, CRC(3dd5c41f) SHA1(de400d30b732edd94ad5388e82cdae27d92f0e7f) )
ROM_LOAD( "epr-1226.u7", 0x2400, 0x0400, CRC(7c3561b1) SHA1(9f14924dbd753f9389b0516eb5af6241e897e9a1) )
ROM_LOAD( "epr-1227.u6", 0x2800, 0x0400, CRC(e72c71a4) SHA1(52b6ea96897f2b5b1ee5aab7c1737e35d986b75e) )
ROM_LOAD( "epr-1228.u5", 0x2c00, 0x0400, CRC(d76f4a56) SHA1(77746f6e73c48fa5ca27a097e9b13a36363f3aa8) )
ROM_LOAD( "epr-1229.u4", 0x3000, 0x0400, CRC(e0d40395) SHA1(343addf9148c26c3f3e7fbf3005ad6c9b33e3899) )
ROM_LOAD( "epr-1230.u3", 0x3400, 0x0400, CRC(55e9a5c4) SHA1(022430a842ec2a38a64d9ede53dc1e1ac0c66efd) )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "pr55.clr", 0x0000, 0x0020, CRC(975f5fb0) SHA1(d5917d68ad5549fe5cc997521c3b0a5a279d2231) )
ROM_END
ROM_START( samuraij )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "epr-289.u33", 0x0000, 0x0400, CRC(a1a9cb03) SHA1(1875a86ad5938295dd5db6bb045be46eba8638ba) ) ROM_LOAD( "epr-289.u33", 0x0000, 0x0400, CRC(a1a9cb03) SHA1(1875a86ad5938295dd5db6bb045be46eba8638ba) )
ROM_LOAD( "epr-290.u32", 0x0400, 0x0400, CRC(49fede51) SHA1(58ab1779d555281ec436ae90dcdf4ada42625892) ) ROM_LOAD( "epr-290.u32", 0x0400, 0x0400, CRC(49fede51) SHA1(58ab1779d555281ec436ae90dcdf4ada42625892) )
@ -4075,6 +4109,21 @@ ROM_START( startrks )
ROM_LOAD( "82s123.14c", 0x0020, 0x0020, CRC(a1506b9d) SHA1(037c3db2ea40eca459e8acba9d1506dd28d72d10) ) /* sequence PROM */ ROM_LOAD( "82s123.14c", 0x0020, 0x0020, CRC(a1506b9d) SHA1(037c3db2ea40eca459e8acba9d1506dd28d72d10) ) /* sequence PROM */
ROM_END ROM_END
ROM_START( nostromo )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ns_1.bin", 0x0000, 0x0400, CRC(2ba4202a) SHA1(1e46e36c37c9f1cecb505a1fe393c24d0e271168) )
ROM_LOAD( "ns_2.bin", 0x0400, 0x0400, CRC(cf6081b8) SHA1(2294cf6849a8191928f268ba1dbef21659a1475f) )
ROM_LOAD( "ns_3.bin", 0x0800, 0x0400, CRC(fd983c0c) SHA1(a4aea8707878dcac8b4e3d9acad94f60eee956c6) )
ROM_LOAD( "ns_4.bin", 0x0c00, 0x0400, CRC(79e1dc92) SHA1(53fcf9b7b7e894122419b43adccb1aaf7dab8bf9) )
ROM_LOAD( "ns_5.bin", 0x1000, 0x0400, CRC(4deb2ce3) SHA1(2935a4ab4be0190e8efa560e30fa7349d83d3e69) )
ROM_LOAD( "ns_6.bin", 0x1400, 0x0400, CRC(e4ddf052) SHA1(8734c87742a1d0b68e679e1650806d0738c432c6) )
ROM_LOAD( "ns_7.bin", 0x1800, 0x0400, CRC(a5315dc8) SHA1(ba6d27d03c9f0100fe89ebbf4b58d166bf259fa8) )
ROM_REGION( 0x0040, "user1", 0 ) // timing PROMs, not dumped for this set but probably same as startrks given how close they are
ROM_LOAD( "82s123.15c", 0x0000, 0x0020, BAD_DUMP CRC(e60a7960) SHA1(b8b8716e859c57c35310efc4594262afedb84823) ) // control PROM
ROM_LOAD( "82s123.14c", 0x0020, 0x0020, BAD_DUMP CRC(a1506b9d) SHA1(037c3db2ea40eca459e8acba9d1506dd28d72d10) ) // sequence PROM
ROM_END
ROM_START( digger ) ROM_START( digger )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "684.u27", 0x0000, 0x0400, CRC(bba0d7c2) SHA1(1e55dd95b07b562dcc1e52ecf9460d302b14ee60) ) ROM_LOAD( "684.u27", 0x0000, 0x0400, CRC(bba0d7c2) SHA1(1e55dd95b07b562dcc1e52ecf9460d302b14ee60) )
@ -4259,7 +4308,8 @@ GAME( 1979, car2, headon2, headon2bw, car2, vicdual_state, empty_i
GAME( 1979, invho2, 0, invho2, invho2, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Head On 2 (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, invho2, 0, invho2, invho2, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Head On 2 (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, invho2a, invho2, invho2, invho2, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Head On 2 (set 2)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // wrong colors make Head On 2 unplayable (all black) GAME( 1979, invho2a, invho2, invho2, invho2, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Head On 2 (set 2)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // wrong colors make Head On 2 unplayable (all black)
GAME( 1980, nsub, 0, nsub, nsub, nsub_state, empty_init, ROT270, "Sega", "N-Sub (upright)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // this is the upright set. cocktail set still needs to be dumped GAME( 1980, nsub, 0, nsub, nsub, nsub_state, empty_init, ROT270, "Sega", "N-Sub (upright)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // this is the upright set. cocktail set still needs to be dumped
GAME( 1980, samurai, 0, samurai, samurai, vicdual_state, empty_init, ROT270, "Sega", "Samurai", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, samurai, 0, samurai, samurai, vicdual_state, empty_init, ROT270, "Sega", "Samurai (World)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1980, samuraij, samurai, samurai, samurai, vicdual_state, empty_init, ROT270, "Sega", "Samurai (Japan)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, invinco, 0, invinco, invinco, vicdual_state, empty_init, ROT270, "Sega", "Invinco", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, invinco, 0, invinco, invinco, vicdual_state, empty_init, ROT270, "Sega", "Invinco", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, invcarht, 0, carhntds, carhntds, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Car Hunt (Germany)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, invcarht, 0, carhntds, carhntds, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Car Hunt (Germany)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, invds, 0, invds, invds, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Deep Scan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, invds, 0, invds, invds, vicdual_state, empty_init, ROT270, "Sega", "Invinco / Deep Scan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
@ -4279,7 +4329,8 @@ GAME( 1981, starrkr, brdrline, brdrline, starrkr, vicdual_state, empty_i
GAME( 1981, brdrlins, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, brdrlins, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Sidam)", "Borderline (Sidam bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, brdrlinb, brdrline, brdrline, brdrline, vicdual_state, empty_init, ROT270, "bootleg (Karateco)", "Borderline (Karateco bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, tranqgun_state, empty_init, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // official factory conversion GAME( 1981, brdrlinet, brdrline, tranqgun, tranqgun, tranqgun_state, empty_init, ROT270, "Sega", "Borderline (Tranquillizer Gun conversion)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // official factory conversion
GAME( 198?, startrks, 0, headons, headons, vicdual_state, empty_init, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 198?, startrks, 0, headons, startrks, vicdual_state, empty_init, ROT0, "bootleg (Sidam)", "Star Trek (Head On hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 198?, nostromo, 0, headons, startrks, vicdual_state, empty_init, ROT0, "bootleg", "Nostromo", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // sound board probably differs
GAME( 1980, digger, 0, digger, digger, vicdual_state, empty_init, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, digger, 0, digger, digger, vicdual_state, empty_init, ROT270, "Sega", "Digger", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1981, pulsar, 0, pulsar, pulsar, vicdual_state, empty_init, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1981, pulsar, 0, pulsar, pulsar, vicdual_state, empty_init, ROT270, "Sega", "Pulsar", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 1979, heiankyo, 0, heiankyo, heiankyo, vicdual_state, empty_init, ROT270, "Denki Onkyo", "Heiankyo Alien", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, heiankyo, 0, heiankyo, heiankyo, vicdual_state, empty_init, ROT270, "Denki Onkyo", "Heiankyo Alien", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -1,67 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Zsolt Vasvari
#ifndef MAME_INCLUDES_GOTYA_H
#define MAME_INCLUDES_GOTYA_H
#pragma once
#include "sound/samples.h"
#include "emupal.h"
#include "tilemap.h"
class gotya_state : public driver_device
{
public:
gotya_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_scroll(*this, "scroll"),
m_videoram(*this, "videoram"),
m_colorram(*this, "colorram"),
m_videoram2(*this, "videoram2"),
m_spriteram(*this, "spriteram"),
m_samples(*this, "samples"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
void gotya(machine_config &config);
private:
/* memory pointers */
required_shared_ptr<uint8_t> m_scroll;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
required_shared_ptr<uint8_t> m_videoram2;
required_shared_ptr<uint8_t> m_spriteram;
/* video-related */
tilemap_t *m_bg_tilemap = nullptr;
int m_scroll_bit_8 = 0;
/* sound-related */
int m_theme_playing = 0;
/* devices */
required_device<samples_device> m_samples;
void gotya_videoram_w(offs_t offset, uint8_t data);
void gotya_colorram_w(offs_t offset, uint8_t data);
void gotya_video_control_w(uint8_t data);
void gotya_soundlatch_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILEMAP_MAPPER_MEMBER(tilemap_scan_rows_thehand);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
void gotya_palette(palette_device &palette) const;
uint32_t screen_update_gotya(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_status_row( bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col );
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void draw_status( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
void gotya_map(address_map &map);
};
#endif // MAME_INCLUDES_GOTYA_H

View File

@ -14816,6 +14816,7 @@ superbon // bootleg
superg // hack superg // hack
supergs // Silver Systems hack supergs // Silver Systems hack
supergx // [1980] Nichibutsu supergx // [1980] Nichibutsu
supershp // bootleg
suprheli // bootleg suprheli // bootleg
swarm // hack swarm // hack
tazmania // (c) 1982 Stern tazmania // (c) 1982 Stern
@ -42672,11 +42673,13 @@ invds // 367-382 (c) 1979 Sega
invho2 // 271-286 (c) 1979 Sega invho2 // 271-286 (c) 1979 Sega
invho2a // 326-341 (c) 1979 Sega invho2a // 326-341 (c) 1979 Sega
invinco // 310-318 (c) 1979 Sega invinco // 310-318 (c) 1979 Sega
nostromo // bootleg
nsub // 268-275 (c) 1980 Sega nsub // 268-275 (c) 1980 Sega
pulsar // 790-805 (c) 1981 Sega pulsar // 790-805 (c) 1981 Sega
safari // 57-66 [1977 Gremlin?] safari // 57-66 [1977 Gremlin?]
safaria // bootleg? safaria // bootleg?
samurai // 289-302 + upgrades (c) 1980 Sega samurai // 1217-1230 (c) Sega
samuraij // 289-302 + upgrades (c) 1980 Sega
spacetrk // 630-645 (c) 1980 Sega spacetrk // 630-645 (c) 1980 Sega
spacetrkc // (c) 1980 Sega spacetrkc // (c) 1980 Sega
sspacaho // ? epr00001.bin - epr00008.bin sspacaho // ? epr00001.bin - epr00008.bin

View File

@ -1,177 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Zsolt Vasvari
#include "emu.h"
#include "video/resnet.h"
#include "includes/gotya.h"
/***************************************************************************
Convert the color PROMs into a more useable format.
***************************************************************************/
void gotya_state::gotya_palette(palette_device &palette) const
{
uint8_t const *color_prom = memregion("proms")->base();
static constexpr int resistances_rg[3] = { 1000, 470, 220 };
static constexpr int resistances_b [2] = { 470, 220 };
// compute the color output resistor weights
double rweights[3], gweights[3], bweights[2];
compute_resistor_weights(0, 255, -1.0,
3, &resistances_rg[0], rweights, 0, 0,
3, &resistances_rg[0], gweights, 0, 0,
2, &resistances_b[0], bweights, 0, 0);
// create a lookup table for the palette
for (int i = 0; i < 0x20; i++)
{
int bit0, bit1, bit2;
// red component
bit0 = BIT(color_prom[i], 0);
bit1 = BIT(color_prom[i], 1);
bit2 = BIT(color_prom[i], 2);
int const r = combine_weights(rweights, bit0, bit1, bit2);
// green component
bit0 = BIT(color_prom[i], 3);
bit1 = BIT(color_prom[i], 4);
bit2 = BIT(color_prom[i], 5);
int const g = combine_weights(gweights, bit0, bit1, bit2);
// blue component
bit0 = BIT(color_prom[i], 6);
bit1 = BIT(color_prom[i], 7);
int const b = combine_weights(bweights, bit0, bit1);
palette.set_indirect_color(i, rgb_t(r, g, b));
}
// color_prom now points to the beginning of the lookup table
color_prom += 32;
for (int i = 0; i < 0x40; i++)
{
uint8_t const ctabentry = color_prom[i] & 0x07;
palette.set_pen_indirect(i, ctabentry);
}
}
void gotya_state::gotya_videoram_w(offs_t offset, uint8_t data)
{
m_videoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
void gotya_state::gotya_colorram_w(offs_t offset, uint8_t data)
{
m_colorram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
void gotya_state::gotya_video_control_w(uint8_t data)
{
/* bit 0 - scroll bit 8
bit 1 - flip screen
bit 2 - sound disable ??? */
m_scroll_bit_8 = data & 0x01;
if (flip_screen() != (data & 0x02))
{
flip_screen_set(data & 0x02);
machine().tilemap().mark_all_dirty();
}
}
TILE_GET_INFO_MEMBER(gotya_state::get_bg_tile_info)
{
int code = m_videoram[tile_index];
int color = m_colorram[tile_index] & 0x0f;
tileinfo.set(0, code, color, 0);
}
TILEMAP_MAPPER_MEMBER(gotya_state::tilemap_scan_rows_thehand)
{
/* logical (col,row) -> memory offset */
row = 31 - row;
col = 63 - col;
return ((row) * (num_cols >> 1)) + (col & 31) + ((col >> 5) * 0x400);
}
void gotya_state::video_start()
{
m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gotya_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(gotya_state::tilemap_scan_rows_thehand)), 8, 8, 64, 32);
}
void gotya_state::draw_status_row( bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col )
{
int row;
if (flip_screen())
{
sx = 35 - sx;
}
for (row = 29; row >= 0; row--)
{
int sy;
if (flip_screen())
sy = row;
else
sy = 31 - row;
m_gfxdecode->gfx(0)->opaque(bitmap,cliprect,
m_videoram2[row * 32 + col],
m_videoram2[row * 32 + col + 0x10] & 0x0f,
flip_screen_x(), flip_screen_y(),
8 * sx, 8 * sy);
}
}
void gotya_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
uint8_t *spriteram = m_spriteram;
int offs;
for (offs = 2; offs < 0x0e; offs += 2)
{
int code = spriteram[offs + 0x01] >> 2;
int color = spriteram[offs + 0x11] & 0x0f;
int sx = 256 - spriteram[offs + 0x10] + (spriteram[offs + 0x01] & 0x01) * 256;
int sy = spriteram[offs + 0x00];
if (flip_screen())
sy = 240 - sy;
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
code, color,
flip_screen_x(), flip_screen_y(),
sx, sy, 0);
}
}
void gotya_state::draw_status( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
draw_status_row(bitmap, cliprect, 0, 1);
draw_status_row(bitmap, cliprect, 1, 0);
draw_status_row(bitmap, cliprect, 2, 2); /* these two are blank, but I dont' know if the data comes */
draw_status_row(bitmap, cliprect, 33, 13); /* from RAM or 'hardcoded' into the hardware. Likely the latter */
draw_status_row(bitmap, cliprect, 35, 14);
draw_status_row(bitmap, cliprect, 34, 15);
}
uint32_t gotya_state::screen_update_gotya(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, -(*m_scroll + (m_scroll_bit_8 * 256)) - 2 * 8);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
draw_sprites(bitmap, cliprect);
draw_status(bitmap, cliprect);
return 0;
}