This commit is contained in:
Risugami 2017-07-22 12:31:28 -05:00
commit 9bdbb3671e
23 changed files with 1032 additions and 491 deletions

View File

@ -1356,6 +1356,20 @@ Notes:
</software>
<!--Majin Eiyuu Den Wataru -->
<software name="wataru">
<description>Majin Eiyuu Den Wataru (Tourvision PCE bootleg)</description>
<year>1988</year>
<publisher>bootleg (Tourvision) / Hudson Soft</publisher>
<part name="cart" interface="tourvision_cart">
<dataarea name="rom" size="1048576">
<!-- 0x40000 matches PCE wataru -->
<rom name="mashin_eiyuden_wataru.tv" size="1048576" crc="13a96308" sha1="03b8bc737c9cc27ec8153ad997515fe211a17b7d" offset="000000" />
</dataarea>
</part>
</software>
<!--Winning Shot -->
<software name="winshot">
<description>Winning Shot (Tourvision PCE bootleg)</description>

View File

@ -86,7 +86,7 @@ if BASE_TARGETOS=="unix" then
"MACOSX_USE_LIBSDL",
}
buildoptions {
backtick(sdlconfigcmd() .. " --cflags | sed 's:/SDL::'"),
backtick(sdlconfigcmd() .. " --cflags | sed 's:/SDL2::'"),
}
end
end

View File

@ -76,7 +76,7 @@ enum e_ir
};
enum tlcs90_e_irq { INTSWI = 0, INTNMI, INTWD, INT0, INTT0, INTT1, INTT2, INTT3, INTT4, INT1, INTT5, INT2, INTRX, INTTX, INTMAX };
DECLARE_ENUM_OPERATORS(tlcs90_e_irq)
DECLARE_ENUM_INCDEC_OPERATORS(tlcs90_e_irq)
class tlcs90_device : public cpu_device
{

View File

@ -12,9 +12,9 @@
Custom programmed Mitsubishi M60016 Gate Array, 3608 gates, 148 Max I/O ports
The X1-010 is 16 Voices sound generator, each channel gets it's
waveform from RAM (128 bytes per waveform, 8 bit unsigned data)
or sampling PCM(8bit unsigned data).
The X1-010 is a 16-Voice sound generator, each channel gets its
waveform from RAM (128 bytes per waveform, 8 bit signed data)
or sampling PCM (8 bit signed data).
Registers:
8 registers per channel (mapped to the lower bytes of 16 words on the 68K)
@ -23,7 +23,7 @@ Registers:
0 7--- ---- Frequency divider flag (only downtown seems to set this)
-654 3---
---- -2-- PCM/Waveform repeat flag (0:Ones 1:Repeat) (*1)
---- -2-- PCM/Waveform repeat flag (0:Once 1:Repeat) (*1)
---- --1- Sound out select (0:PCM 1:Waveform)
---- ---0 Key on / off
@ -47,7 +47,7 @@ Registers:
offset 0x0000 - 0x0fff Wave form data
offset 0x1000 - 0x1fff Envelope data
*1 : when 0 is specified, hardware interrupt is caused(allways return soon)
*1 : when 0 is specified, hardware interrupt is caused (always return soon)
***************************************************************************/
@ -68,7 +68,7 @@ namespace {
#define FREQ_BASE_BITS 8 // Frequency fixed decimal shift bits
#define ENV_BASE_BITS 16 // wave form envelope fixed decimal shift bits
#define VOL_BASE (2*32*256/30) // Volume base
#define VOL_BASE (2*32*256/30) // Volume base
/* this structure defines the parameters for a channel */
struct X1_010_CHANNEL {
@ -84,10 +84,6 @@ struct X1_010_CHANNEL {
} // anonymous namespace
/* mixer tables and internal buffers */
//static short *mixer_buffer = nullptr;
DEFINE_DEVICE_TYPE(X1_010, x1_010_device, "x1_010", "Seta X1-010")
x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)

View File

@ -34,13 +34,13 @@ private:
// internal state
/* Variables only used here */
required_region_ptr<int8_t> m_region; // ROM
int m_rate; // Output sampling rate (Hz)
int m_adr; // address
sound_stream * m_stream; // Stream handle
int m_sound_enable; // sound output enable/disable
uint8_t m_reg[0x2000]; // X1-010 Register & wave form area
uint8_t m_HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work
required_region_ptr<int8_t> m_region; // ROM
int m_rate; // Output sampling rate (Hz)
int m_adr; // address
sound_stream * m_stream; // Stream handle
int m_sound_enable; // sound output enable/disable
uint8_t m_reg[0x2000]; // X1-010 Register & wave form area
uint8_t m_HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work
uint32_t m_smp_offset[NUM_CHANNELS];
uint32_t m_env_offset[NUM_CHANNELS];

View File

@ -188,13 +188,21 @@ const endianness_t ENDIANNESS_NATIVE = ENDIANNESS_BIG;
TYPE(const TYPE &) = delete; \
TYPE &operator=(const TYPE &) = delete
// macro for declaring enumerator operators that increment/decrement like plain old C
#define DECLARE_ENUM_OPERATORS(TYPE) \
// macro for declaring enumeration operators that increment/decrement like plain old C
#define DECLARE_ENUM_INCDEC_OPERATORS(TYPE) \
inline TYPE &operator++(TYPE &value) { return value = TYPE(std::underlying_type_t<TYPE>(value) + 1); } \
inline TYPE operator++(TYPE &value, int) { TYPE const old(value); ++value; return old; } \
inline TYPE &operator--(TYPE &value) { return value = TYPE(std::underlying_type_t<TYPE>(value) - 1); } \
inline TYPE operator++(TYPE &value, int) { TYPE const old(value); ++value; return old; } \
inline TYPE operator--(TYPE &value, int) { TYPE const old(value); --value; return old; }
// macro for declaring bitwise operators for an enumerated type
#define DECLARE_ENUM_BITWISE_OPERATORS(TYPE) \
constexpr TYPE operator~(TYPE value) { return TYPE(~std::underlying_type_t<TYPE>(value)); } \
constexpr TYPE operator&(TYPE a, TYPE b) { return TYPE(std::underlying_type_t<TYPE>(a) & std::underlying_type_t<TYPE>(b)); } \
constexpr TYPE operator|(TYPE a, TYPE b) { return TYPE(std::underlying_type_t<TYPE>(a) | std::underlying_type_t<TYPE>(b)); } \
inline TYPE &operator&=(TYPE &a, TYPE b) { return a = a & b; } \
inline TYPE &operator|=(TYPE &a, TYPE b) { return a = a | b; }
// this macro passes an item followed by a string version of itself as two consecutive parameters
#define NAME(x) x, #x

View File

@ -51,7 +51,7 @@ enum input_device_class
DEVICE_CLASS_INTERNAL,
DEVICE_CLASS_MAXIMUM
};
DECLARE_ENUM_OPERATORS(input_device_class)
DECLARE_ENUM_INCDEC_OPERATORS(input_device_class)
// device index
@ -338,7 +338,7 @@ enum input_item_id
// absolute maximum ID
ITEM_ID_ABSOLUTE_MAXIMUM = 0xfff
};
DECLARE_ENUM_OPERATORS(input_item_id)
DECLARE_ENUM_INCDEC_OPERATORS(input_item_id)

View File

@ -54,7 +54,7 @@ enum input_seq_type
SEQ_TYPE_DECREMENT,
SEQ_TYPE_TOTAL
};
DECLARE_ENUM_OPERATORS(input_seq_type)
DECLARE_ENUM_INCDEC_OPERATORS(input_seq_type)
// crosshair types
@ -402,7 +402,7 @@ enum ioport_type
IPT_COUNT
};
DECLARE_ENUM_OPERATORS(ioport_type)
DECLARE_ENUM_INCDEC_OPERATORS(ioport_type)
// aliases for some types
#define IPT_PADDLE_H IPT_PADDLE
#define IPT_PEDAL1 IPT_PEDAL
@ -874,7 +874,7 @@ private:
u8 m_current4way; // current 4-way value
u8 m_previous; // previous value
};
DECLARE_ENUM_OPERATORS(digital_joystick::direction_t)
DECLARE_ENUM_INCDEC_OPERATORS(digital_joystick::direction_t)
// ======================> ioport_condition

View File

@ -71,7 +71,7 @@ enum profile_type
PROFILER_IDLE,
PROFILER_TOTAL
};
DECLARE_ENUM_OPERATORS(profile_type)
DECLARE_ENUM_INCDEC_OPERATORS(profile_type)

View File

@ -614,7 +614,7 @@ enum item_layer
ITEM_LAYER_MARQUEE,
ITEM_LAYER_MAX
};
DECLARE_ENUM_OPERATORS(item_layer)
DECLARE_ENUM_INCDEC_OPERATORS(item_layer)

View File

@ -31,7 +31,7 @@ enum script_state
SCRIPT_STATE_CHANGE,
SCRIPT_STATE_COUNT
};
DECLARE_ENUM_OPERATORS(script_state)
DECLARE_ENUM_INCDEC_OPERATORS(script_state)

View File

@ -22,6 +22,7 @@
#include "cheat.h"
#include "mame.h"
#include "mameopts.h"
#include "drivenum.h"
#include "emuopts.h"
@ -179,8 +180,13 @@ menu_select_launch::software_parts::~software_parts()
void menu_select_launch::software_parts::populate(float &customtop, float &custombottom)
{
for (auto & elem : m_parts)
item_append(elem.first, elem.second, 0, (void *)&elem);
std::vector<s_parts::const_iterator> parts;
parts.reserve(m_parts.size());
for (s_parts::const_iterator it = m_parts.begin(); m_parts.end() != it; ++it)
parts.push_back(it);
std::sort(parts.begin(), parts.end(), [] (auto const &left, auto const &right) { return 0 > core_stricmp(left->first.c_str(), right->first.c_str()); });
for (auto const &elem : parts)
item_append(elem->first, elem->second, 0, (void *)&*elem);
item_append(menu_item_type::SEPARATOR);
customtop = ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
@ -502,19 +508,11 @@ void menu_select_launch::launch_system(mame_ui_manager &mui, game_driver const &
{
if (!swinfo->startempty)
{
moptions.set_value(OPTION_SOFTWARENAME, util::string_format("%s:%s", swinfo->listname, swinfo->shortname), OPTION_PRIORITY_CMDLINE);
if (part)
{
std::string const string_list(util::string_format("%s:%s:%s:%s", swinfo->listname, swinfo->shortname, *part, swinfo->instance));
moptions.set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE);
}
else
{
std::string const string_list(util::string_format("%s:%s", swinfo->listname, swinfo->shortname));
moptions.set_value(OPTION_SOFTWARENAME, string_list.c_str(), OPTION_PRIORITY_CMDLINE);
}
moptions.set_value(swinfo->instance, *part, OPTION_PRIORITY_SUBCMD);
std::string const snap_list(util::string_format("%s%s%s", swinfo->listname, PATH_SEPARATOR, swinfo->shortname));
moptions.set_value(OPTION_SNAPNAME, snap_list.c_str(), OPTION_PRIORITY_CMDLINE);
moptions.set_value(OPTION_SNAPNAME, util::string_format("%s%s%s", swinfo->listname, PATH_SEPARATOR, swinfo->shortname), OPTION_PRIORITY_CMDLINE);
}
reselect_last::set_software(driver, *swinfo);
}

View File

@ -44,6 +44,7 @@ public:
, m_bg_videoram(*this, "bg_videoram")
, m_maincpu(*this, "maincpu")
, m_gfxdecode(*this, "gfxdecode")
, m_ay(*this, "ay%u", 1)
{
}
@ -73,6 +74,7 @@ public:
inline void get_tile_info(tile_data &tileinfo, int tile_index, uint8_t *vidram, int gfx_code);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device_array<ay8912_device, 3> m_ay;
};
@ -128,20 +130,20 @@ WRITE8_MEMBER(ettrivia_state::b800_w)
/* special case to return the value written to 0xb000 */
/* does it reset the chips too ? */
case 0: break;
case 0xc4: m_b000_ret = machine().device<ay8910_device>("ay1")->data_r(space, 0); break;
case 0x94: m_b000_ret = machine().device<ay8910_device>("ay2")->data_r(space, 0); break;
case 0x86: m_b000_ret = machine().device<ay8910_device>("ay3")->data_r(space, 0); break;
case 0xc4: m_b000_ret = m_ay[0]->data_r(space, 0); break;
case 0x94: m_b000_ret = m_ay[1]->data_r(space, 0); break;
case 0x86: m_b000_ret = m_ay[2]->data_r(space, 0); break;
case 0x80:
switch(m_b800_prev)
{
case 0xe0: machine().device<ay8910_device>("ay1")->address_w(space,0,m_b000_val); break;
case 0x98: machine().device<ay8910_device>("ay2")->address_w(space,0,m_b000_val); break;
case 0x83: machine().device<ay8910_device>("ay3")->address_w(space,0,m_b000_val); break;
case 0xe0: m_ay[0]->address_w(space,0,m_b000_val); break;
case 0x98: m_ay[1]->address_w(space,0,m_b000_val); break;
case 0x83: m_ay[2]->address_w(space,0,m_b000_val); break;
case 0xa0: machine().device<ay8910_device>("ay1")->data_w(space,0,m_b000_val); break;
case 0x88: machine().device<ay8910_device>("ay2")->data_w(space,0,m_b000_val); break;
case 0x81: machine().device<ay8910_device>("ay3")->data_w(space,0,m_b000_val); break;
case 0xa0: m_ay[0]->data_w(space,0,m_b000_val); break;
case 0x88: m_ay[1]->data_w(space,0,m_b000_val); break;
case 0x81: m_ay[2]->data_w(space,0,m_b000_val); break;
}
break;
@ -311,14 +313,14 @@ static MACHINE_CONFIG_START( ettrivia )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ADD("ay1", AY8912, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_SOUND_ADD("ay2", AY8910, 1500000)
MCFG_SOUND_ADD("ay2", AY8912, 1500000)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("IN1"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_SOUND_ADD("ay3", AY8910, 1500000)
MCFG_SOUND_ADD("ay3", AY8912, 1500000)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("IN0"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END

View File

@ -104,4 +104,4 @@ ROM_START(fw700ger)
ROM_LOAD( "lh5370pd.ic7", 0x000000, 0x200000, CRC(29083e13) SHA1(7e1605f91b53580e75f638f9e6b0917305c35f84) )
ROM_END
GAME( 1994, fw700ger, 0, fontwriter, fontwriter, fontwriter_state, 0, ROT0, "Sharp", "FontWriter FW-700 (German)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
SYST( 1994, fw700ger, 0, 0, fontwriter, fontwriter, fontwriter_state, 0, "Sharp", "FontWriter FW-700 (German)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )

View File

@ -2727,9 +2727,13 @@ static MACHINE_CONFIG_START( naomi_base )
MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom")
MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
// clock was measured using GPIO (13.499Mhz) and UART (13.260MHz) access
// IO ports access may have latency so actual CPU core clock can be higher, possible OSC3 14.7456MHz
MCFG_MIE_ADD("mie", 13500000, "maple_dc", 0, nullptr, nullptr, nullptr, ":MIE.3", nullptr, ":MIE.5", nullptr, nullptr)
// high probable this MCU uses one of "fast Z80" cores, like ASCII R800, Kawasaki KC80 or similar, where clocks per instructions is much different from regular Z80.
// was made few attempts to measure CPU core clock using different methods (in term of "regular Z80" clock and cycles):
// - GPIO toggle in a loop - 13.499Mhz,
// - using UART as timer - 13.260MHz,
// - unrolled NOPs then GPIO toggle - 12.76MHz (or 3.19M NOP instructions per second)
// for now we use higher clock, otherwise earlier NAOMI BIOS revisions will not boot (see MT#06552).
MCFG_MIE_ADD("mie", 16000000, "maple_dc", 0, nullptr, nullptr, nullptr, ":MIE.3", nullptr, ":MIE.5", nullptr, nullptr)
MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT")
MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom")

File diff suppressed because it is too large Load Diff

View File

@ -224,20 +224,27 @@ WRITE16_MEMBER(splash_state::funystrp_sh_irqtrigger_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
WRITE8_MEMBER(splash_state::funystrp_eeprom_w)
{
m_eeprom->cs_write(BIT(data, 4));
m_eeprom->di_write(BIT(data, 6));
m_eeprom->clk_write(BIT(data, 5));
}
static ADDRESS_MAP_START( funystrp_map, AS_PROGRAM, 16, splash_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM /* ROM */
AM_RANGE(0x100000, 0x1fffff) AM_RAM /* protection? RAM */
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */
AM_RANGE(0x84000a, 0x84000b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */
AM_RANGE(0x84000e, 0x84000f) AM_WRITE(funystrp_sh_irqtrigger_w) /* Sound command */
AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
AM_RANGE(0x840008, 0x840009) AM_READ_PORT("SYSTEM")
AM_RANGE(0x84000a, 0x84000b) AM_WRITE8(funystrp_eeprom_w, 0xff00) AM_READNOP
AM_RANGE(0x84000e, 0x84000f) AM_WRITE(funystrp_sh_irqtrigger_w) /* Sound command */
AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */
AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */
AM_RANGE(0x881804, 0x881fff) AM_WRITENOP
AM_RANGE(0x881804, 0x881fff) AM_RAM
AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */
AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(spr_read, spr_write) AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0xfe0000, 0xfeffff) AM_RAM AM_MIRROR(0x10000) /* there's fe0000 <-> ff0000 compare */ /* Work RAM */
@ -442,9 +449,11 @@ static INPUT_PORTS_START( funystrp )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("SYSTEM")
PORT_DIPNAME( 0xffff, 0x0000, "Clear EEPROM" )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0xffff, DEF_STR( On ) )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
PORT_DIPNAME( 0x02, 0x02, "Clear EEPROM" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@ -639,6 +648,8 @@ static MACHINE_CONFIG_START( funystrp )
MCFG_CPU_PROGRAM_MAP(funystrp_sound_map)
MCFG_CPU_IO_MAP(funystrp_sound_io_map)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)

View File

@ -8,6 +8,8 @@
***************************************************************************/
#include "machine/gen_latch.h"
#include "machine/ticket.h"
#include "machine/upd4992.h"
#include "sound/x1_010.h"
#include "video/seta001.h"
@ -166,10 +168,6 @@ public:
DECLARE_READ16_MEMBER(keroppi_protection_init_r);
DECLARE_READ16_MEMBER(keroppi_coin_r);
DECLARE_WRITE16_MEMBER(keroppi_prize_w);
DECLARE_WRITE16_MEMBER(setaroul_spriteylow_w);
DECLARE_WRITE16_MEMBER(setaroul_spritectrl_w);
DECLARE_WRITE16_MEMBER(setaroul_spritecode_w);
DECLARE_READ16_MEMBER(setaroul_spritecode_r);
DECLARE_READ16_MEMBER(krzybowl_input_r);
DECLARE_WRITE16_MEMBER(msgundam_vregs_w);
DECLARE_READ16_MEMBER(kiwame_nvram_r);
@ -225,13 +223,11 @@ public:
DECLARE_VIDEO_START(seta_no_layers);
DECLARE_VIDEO_START(kyustrkr_no_layers);
DECLARE_VIDEO_START(twineagl_1_layer);
DECLARE_VIDEO_START(setaroul_1_layer);
DECLARE_VIDEO_START(seta_1_layer);
DECLARE_MACHINE_RESET(calibr50);
DECLARE_PALETTE_INIT(usclssic);
DECLARE_VIDEO_START(seta_2_layers);
DECLARE_PALETTE_INIT(blandia);
DECLARE_PALETTE_INIT(setaroul);
DECLARE_PALETTE_INIT(zingzip);
DECLARE_MACHINE_START(wrofaero);
DECLARE_PALETTE_INIT(gundhara);
@ -242,11 +238,9 @@ public:
uint32_t screen_update_seta_no_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_seta(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_usclssic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_setaroul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_inttoote(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_seta_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_seta_buffer_sprites);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_setaroul);
DECLARE_READ16_MEMBER(ipl0_ack_r);
DECLARE_WRITE16_MEMBER(ipl0_ack_w);
DECLARE_READ16_MEMBER(ipl1_ack_r);
@ -262,7 +256,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(seta_sub_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(tndrcade_sub_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(calibr50_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(setaroul_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(crazyfgt_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(inttoote_interrupt);
void seta_coin_lockout_w(int data);
@ -277,3 +270,61 @@ public:
DECLARE_WRITE_LINE_MEMBER(utoukond_ym3438_interrupt);
SETA001_SPRITE_GFXBANK_CB_MEMBER(setac_gfxbank_callback);
};
class setaroul_state : public seta_state
{
public:
setaroul_state(const machine_config &mconfig, device_type type, const char *tag) :
seta_state(mconfig, type, tag),
m_rtc(*this, "rtc"),
m_hopper(*this, "hopper"),
m_bet(*this, "BET.%02X", 0),
m_mux(0),
m_pay(0),
m_led(0),
m_coin_start_cycles(0)
{ }
DECLARE_WRITE16_MEMBER(rtc_w);
DECLARE_READ16_MEMBER(rtc_r);
DECLARE_READ16_MEMBER(inputs_r);
DECLARE_WRITE16_MEMBER(mux_w);
DECLARE_INPUT_CHANGED_MEMBER(coin_drop_start);
DECLARE_CUSTOM_INPUT_MEMBER(coin_sensors_r);
DECLARE_CUSTOM_INPUT_MEMBER(hopper_sensors_r);
DECLARE_WRITE8_MEMBER(pay_w);
DECLARE_WRITE8_MEMBER(led_w);
DECLARE_READ16_MEMBER(spritecode_r);
DECLARE_WRITE16_MEMBER(spritecode_w);
DECLARE_WRITE16_MEMBER(spriteylow_w);
DECLARE_WRITE16_MEMBER(spritectrl_w);
DECLARE_MACHINE_RESET(setaroul);
DECLARE_VIDEO_START(setaroul_1_layer);
DECLARE_PALETTE_INIT(setaroul);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
private:
required_device<upd4992_device> m_rtc; // ! Actually D4911C !
required_device<ticket_dispenser_device> m_hopper;
required_ioport_array<26> m_bet;
uint8_t m_mux;
uint8_t m_pay;
uint8_t m_led;
uint64_t m_coin_start_cycles;
void show_outputs();
};

View File

@ -1,6 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Manuel Abadia, David Haywood
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "sound/msm5205.h"
@ -17,6 +18,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_eeprom(*this, "eeprom"),
m_pixelram(*this, "pixelram"),
m_videoram(*this, "videoram"),
m_vregs(*this, "vregs"),
@ -37,6 +39,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
optional_device<eeprom_serial_93cxx_device> m_eeprom;
required_shared_ptr<uint16_t> m_pixelram;
required_shared_ptr<uint16_t> m_videoram;
@ -100,6 +103,7 @@ public:
DECLARE_WRITE16_MEMBER(funystrp_protection_w);
DECLARE_READ16_MEMBER(funystrp_protection_r);
DECLARE_WRITE16_MEMBER(funystrp_sh_irqtrigger_w);
DECLARE_WRITE8_MEMBER(funystrp_eeprom_w);
//roldfrog and funystrp specific
DECLARE_WRITE8_MEMBER(sound_bank_w);

View File

@ -0,0 +1,399 @@
<?xml version="1.0" ?>
<mamelayout version="2">
<!-- Straight up bets -->
<element name="Bet 0"> <disk> <color red="1.00" green="0.91" blue="0.52"/> </disk>
<text string="0"> <color red="0.06" green="0.39" blue="0.00"/> </text> </element>
<element name="Bet 1"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="1"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 2"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="2"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 3"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="3"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 4"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="4"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 5"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="5"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 6"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="6"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 7"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="7"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 8"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="8"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 9"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="9"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 10"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="10"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<!-- 11 is black like 10 -->
<element name="Bet 11"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="11"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 12"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="12"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 13"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="13"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 14"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="14"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 15"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="15"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 16"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="16"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 17"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="17"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 18"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="18"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<!-- 19 is red like 18 -->
<element name="Bet 19"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="19"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 20"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="20"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 21"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="21"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 22"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="22"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 23"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="23"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 24"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="24"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 25"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="25"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 26"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="26"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 27"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="27"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 28"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="28"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<!-- 29 is black like 28 -->
<element name="Bet 29"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="29"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 30"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="30"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 31"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="31"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 32"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="32"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 33"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="33"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 34"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="34"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 35"> <disk> <color red="0.06" green="0.06" blue="0.06"/> </disk>
<text string="35"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<element name="Bet 36"> <disk> <color red="0.71" green="0.00" blue="0.00"/> </disk>
<text string="36"> <color red="1.00" green="0.91" blue="0.52"/> </text> </element>
<!-- Corner/Split bets -->
<element name="Bet">
<disk> <color red="0.00" green="0.16" blue="0.00"/> </disk>
</element>
<!-- Outside bets -->
<element name="Bet 19-36">
<text string="19-36"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet 1-12">
<text string="1-12"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet 1-18">
<text string="1-18"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet Odd">
<text string="ODD"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet 13-24">
<text string="13-24"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet Even">
<text string="EVEN"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet Red">
<rect> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.71" green="0.00" blue="0.00"/> </rect>
<text string="RED"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<element name="Bet 25-36">
<text string="25-36"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.00" green="0.00" blue="0.00"/> </text>
</element>
<element name="Bet Black">
<rect> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.06" green="0.06" blue="0.06"/> </rect>
<text string="BLACK"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<!-- Special Keys -->
<element name="Pay">
<text string="PAY"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<element name="Bet All">
<text string="ALL"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<element name="Bet Cancel">
<text string="CANCEL"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<element name="Bet Repeat">
<text string="REPEAT"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="1.00" green="0.91" blue="0.52"/> </text>
</element>
<!-- Debug Keys -->
<element name="Unknown">
<text string="UNK"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.80" green="0.80" blue="0.80"/> </text>
</element>
<element name="Debug">
<text string="DBG"> <bounds x="0.00" y="0.00" width="2.25" height="0.65"/> <color red="0.80" green="0.80" blue="0.80"/> </text>
</element>
<!-- Board background -->
<element name="Board">
<rect> <bounds x="0.00" y="0.00" width="240" height="112"/> <color red="0.06" green="0.39" blue="0.00"/> </rect>
</element>
<view name="Standard Screen (3:4) and Board">
<!-- Screen (Top) -->
<screen index="0">
<bounds x="0" y="0" width="240" height="320"/>
</screen>
<!-- Board (Bottom) -->
<bezel element="Board"> <bounds x="0.0" y="330.0" width="240.0" height="112.0"/> </bezel>
<!-- Top Row -->
<bezel element="Pay" inputtag="BET.00" inputmask="0x01"> <bounds x="-2.0" y="340.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet 19-36" inputtag="BET.04" inputmask="0x01"> <bounds x="38.0" y="340.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Odd" inputtag="BET.0C" inputmask="0x01"> <bounds x="102.0" y="340.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Red" inputtag="BET.14" inputmask="0x01"> <bounds x="166.0" y="340.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet All" inputtag="BET.19" inputmask="0x01"> <bounds x="206.0" y="340.0" width="36.0" height="11.0"/> </bezel>
<!-- Bottom Row 1 -->
<bezel element="Unknown" inputtag="BET.00" inputmask="0x80"> <bounds x="7.0" y="402.3" width="18.0" height="10.5"/> </bezel>
<bezel element="Bet 1-12" inputtag="BET.04" inputmask="0x80"> <bounds x="38.0" y="404.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet 13-24" inputtag="BET.0C" inputmask="0x80"> <bounds x="102.0" y="404.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet 25-36" inputtag="BET.14" inputmask="0x80"> <bounds x="166.0" y="404.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Cancel" inputtag="BET.18" inputmask="0x80"> <bounds x="206.0" y="404.0" width="36.0" height="11.0"/> </bezel>
<!-- Bottom Row 2 -->
<bezel element="Debug" inputtag="BET.01" inputmask="0x80"> <bounds x="7.0" y="420.3" width="18.0" height="10.5"/> </bezel>
<bezel element="Bet 1-18" inputtag="BET.05" inputmask="0x80"> <bounds x="38.0" y="420.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Even" inputtag="BET.0D" inputmask="0x80"> <bounds x="102.0" y="420.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Black" inputtag="BET.15" inputmask="0x80"> <bounds x="166.0" y="420.0" width="36.0" height="11.0"/> </bezel>
<bezel element="Bet Repeat" inputtag="BET.19" inputmask="0x80"> <bounds x="206.0" y="420.0" width="36.0" height="11.0"/> </bezel>
<!-- Column 0 -->
<bezel element="Bet 0" inputtag="BET.00" inputmask="0x08"> <bounds x="11.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<!-- Column between 0 and 1-3 -->
<bezel element="Bet" inputtag="BET.01" inputmask="0x02"> <bounds x="22.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.01" inputmask="0x04"> <bounds x="22.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.01" inputmask="0x08"> <bounds x="22.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.01" inputmask="0x10"> <bounds x="22.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.01" inputmask="0x20"> <bounds x="22.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.01" inputmask="0x40"> <bounds x="22.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 1-3 -->
<bezel element="Bet 3" inputtag="BET.02" inputmask="0x02"> <bounds x="27.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.02" inputmask="0x04"> <bounds x="30.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 2" inputtag="BET.02" inputmask="0x08"> <bounds x="27.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.02" inputmask="0x10"> <bounds x="30.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 1" inputtag="BET.02" inputmask="0x20"> <bounds x="27.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.02" inputmask="0x40"> <bounds x="30.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 1-3 and 4-6 -->
<bezel element="Bet" inputtag="BET.03" inputmask="0x02"> <bounds x="38.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.03" inputmask="0x04"> <bounds x="38.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.03" inputmask="0x08"> <bounds x="38.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.03" inputmask="0x10"> <bounds x="38.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.03" inputmask="0x20"> <bounds x="38.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.03" inputmask="0x40"> <bounds x="38.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 4-6 -->
<bezel element="Bet 6" inputtag="BET.04" inputmask="0x02"> <bounds x="43.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.04" inputmask="0x04"> <bounds x="46.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 5" inputtag="BET.04" inputmask="0x08"> <bounds x="43.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.04" inputmask="0x10"> <bounds x="46.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 4" inputtag="BET.04" inputmask="0x20"> <bounds x="43.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.04" inputmask="0x40"> <bounds x="46.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 4-6 and 7-9 -->
<bezel element="Bet" inputtag="BET.05" inputmask="0x02"> <bounds x="54.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.05" inputmask="0x04"> <bounds x="54.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.05" inputmask="0x08"> <bounds x="54.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.05" inputmask="0x10"> <bounds x="54.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.05" inputmask="0x20"> <bounds x="54.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.05" inputmask="0x40"> <bounds x="54.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 7-9 -->
<bezel element="Bet 9" inputtag="BET.06" inputmask="0x02"> <bounds x="59.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.06" inputmask="0x04"> <bounds x="62.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 8" inputtag="BET.06" inputmask="0x08"> <bounds x="59.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.06" inputmask="0x10"> <bounds x="62.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 7" inputtag="BET.06" inputmask="0x20"> <bounds x="59.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.06" inputmask="0x40"> <bounds x="62.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 7-9 and 10-12 -->
<bezel element="Bet" inputtag="BET.07" inputmask="0x02"> <bounds x="70.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.07" inputmask="0x04"> <bounds x="70.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.07" inputmask="0x08"> <bounds x="70.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.07" inputmask="0x10"> <bounds x="70.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.07" inputmask="0x20"> <bounds x="70.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.07" inputmask="0x40"> <bounds x="70.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 10-12 -->
<bezel element="Bet 12" inputtag="BET.08" inputmask="0x02"> <bounds x="75.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.08" inputmask="0x04"> <bounds x="78.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 11" inputtag="BET.08" inputmask="0x08"> <bounds x="75.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.08" inputmask="0x10"> <bounds x="78.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 10" inputtag="BET.08" inputmask="0x20"> <bounds x="75.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.08" inputmask="0x40"> <bounds x="78.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 10-12 and 13-15 -->
<bezel element="Bet" inputtag="BET.09" inputmask="0x02"> <bounds x="86.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.09" inputmask="0x04"> <bounds x="86.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.09" inputmask="0x08"> <bounds x="86.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.09" inputmask="0x10"> <bounds x="86.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.09" inputmask="0x20"> <bounds x="86.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.09" inputmask="0x40"> <bounds x="86.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 13-15 -->
<bezel element="Bet 15" inputtag="BET.0A" inputmask="0x02"> <bounds x="91.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0A" inputmask="0x04"> <bounds x="94.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 14" inputtag="BET.0A" inputmask="0x08"> <bounds x="91.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0A" inputmask="0x10"> <bounds x="94.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 13" inputtag="BET.0A" inputmask="0x20"> <bounds x="91.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0A" inputmask="0x40"> <bounds x="94.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 13-15 and 16-18 -->
<bezel element="Bet" inputtag="BET.0B" inputmask="0x02"> <bounds x="102.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0B" inputmask="0x04"> <bounds x="102.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0B" inputmask="0x08"> <bounds x="102.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0B" inputmask="0x10"> <bounds x="102.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0B" inputmask="0x20"> <bounds x="102.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0B" inputmask="0x40"> <bounds x="102.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 16-18 -->
<bezel element="Bet 18" inputtag="BET.0C" inputmask="0x02"> <bounds x="107.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0C" inputmask="0x04"> <bounds x="110.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 17" inputtag="BET.0C" inputmask="0x08"> <bounds x="107.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0C" inputmask="0x10"> <bounds x="110.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 16" inputtag="BET.0C" inputmask="0x20"> <bounds x="107.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0C" inputmask="0x40"> <bounds x="110.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 16-18 and 19-21 -->
<bezel element="Bet" inputtag="BET.0D" inputmask="0x02"> <bounds x="118.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0D" inputmask="0x04"> <bounds x="118.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0D" inputmask="0x08"> <bounds x="118.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0D" inputmask="0x10"> <bounds x="118.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0D" inputmask="0x20"> <bounds x="118.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0D" inputmask="0x40"> <bounds x="118.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 19-21 -->
<bezel element="Bet 21" inputtag="BET.0E" inputmask="0x02"> <bounds x="123.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0E" inputmask="0x04"> <bounds x="126.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 20" inputtag="BET.0E" inputmask="0x08"> <bounds x="123.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0E" inputmask="0x10"> <bounds x="126.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 19" inputtag="BET.0E" inputmask="0x20"> <bounds x="123.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0E" inputmask="0x40"> <bounds x="126.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 19-21 and 22-24 -->
<bezel element="Bet" inputtag="BET.0F" inputmask="0x02"> <bounds x="134.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0F" inputmask="0x04"> <bounds x="134.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0F" inputmask="0x08"> <bounds x="134.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0F" inputmask="0x10"> <bounds x="134.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0F" inputmask="0x20"> <bounds x="134.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.0F" inputmask="0x40"> <bounds x="134.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 22-24 -->
<bezel element="Bet 24" inputtag="BET.10" inputmask="0x02"> <bounds x="139.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.10" inputmask="0x04"> <bounds x="142.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 23" inputtag="BET.10" inputmask="0x08"> <bounds x="139.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.10" inputmask="0x10"> <bounds x="142.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 22" inputtag="BET.10" inputmask="0x20"> <bounds x="139.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.10" inputmask="0x40"> <bounds x="142.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 22-24 and 25-27 -->
<bezel element="Bet" inputtag="BET.11" inputmask="0x02"> <bounds x="150.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.11" inputmask="0x04"> <bounds x="150.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.11" inputmask="0x08"> <bounds x="150.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.11" inputmask="0x10"> <bounds x="150.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.11" inputmask="0x20"> <bounds x="150.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.11" inputmask="0x40"> <bounds x="150.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 25-27 -->
<bezel element="Bet 27" inputtag="BET.12" inputmask="0x02"> <bounds x="155.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.12" inputmask="0x04"> <bounds x="158.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 26" inputtag="BET.12" inputmask="0x08"> <bounds x="155.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.12" inputmask="0x10"> <bounds x="158.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 25" inputtag="BET.12" inputmask="0x20"> <bounds x="155.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.12" inputmask="0x40"> <bounds x="158.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 25-27 and 28-30 -->
<bezel element="Bet" inputtag="BET.13" inputmask="0x02"> <bounds x="166.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.13" inputmask="0x04"> <bounds x="166.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.13" inputmask="0x08"> <bounds x="166.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.13" inputmask="0x10"> <bounds x="166.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.13" inputmask="0x20"> <bounds x="166.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.13" inputmask="0x40"> <bounds x="166.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 28-30 -->
<bezel element="Bet 30" inputtag="BET.14" inputmask="0x02"> <bounds x="171.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.14" inputmask="0x04"> <bounds x="174.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 29" inputtag="BET.14" inputmask="0x08"> <bounds x="171.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.14" inputmask="0x10"> <bounds x="174.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 28" inputtag="BET.14" inputmask="0x20"> <bounds x="171.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.14" inputmask="0x40"> <bounds x="174.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 28-30 and 31-33 -->
<bezel element="Bet" inputtag="BET.15" inputmask="0x02"> <bounds x="182.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.15" inputmask="0x04"> <bounds x="182.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.15" inputmask="0x08"> <bounds x="182.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.15" inputmask="0x10"> <bounds x="182.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.15" inputmask="0x20"> <bounds x="182.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.15" inputmask="0x40"> <bounds x="182.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 31-33 -->
<bezel element="Bet 33" inputtag="BET.16" inputmask="0x02"> <bounds x="187.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.16" inputmask="0x04"> <bounds x="190.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 32" inputtag="BET.16" inputmask="0x08"> <bounds x="187.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.16" inputmask="0x10"> <bounds x="190.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 31" inputtag="BET.16" inputmask="0x20"> <bounds x="187.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.16" inputmask="0x40"> <bounds x="190.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column between 31-33 and 34-36 -->
<bezel element="Bet" inputtag="BET.17" inputmask="0x02"> <bounds x="198.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.17" inputmask="0x04"> <bounds x="198.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.17" inputmask="0x08"> <bounds x="198.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.17" inputmask="0x10"> <bounds x="198.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.17" inputmask="0x20"> <bounds x="198.0" y="391.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.17" inputmask="0x40"> <bounds x="198.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Column 34-36 -->
<bezel element="Bet 36" inputtag="BET.18" inputmask="0x02"> <bounds x="203.0" y="356.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.18" inputmask="0x04"> <bounds x="206.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 35" inputtag="BET.18" inputmask="0x08"> <bounds x="203.0" y="372.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.18" inputmask="0x10"> <bounds x="206.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet 34" inputtag="BET.18" inputmask="0x20"> <bounds x="203.0" y="388.0" width="10.0" height="10.0"/> </bezel>
<bezel element="Bet" inputtag="BET.18" inputmask="0x40"> <bounds x="206.0" y="399.0" width="4.0" height="4.0"/> </bezel>
<!-- Rightmost column -->
<bezel element="Bet" inputtag="BET.19" inputmask="0x02"> <bounds x="222.0" y="359.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.19" inputmask="0x04"> <bounds x="222.0" y="367.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.19" inputmask="0x08"> <bounds x="222.0" y="375.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.19" inputmask="0x10"> <bounds x="222.0" y="383.0" width="4.0" height="4.0"/> </bezel>
<bezel element="Bet" inputtag="BET.19" inputmask="0x20"> <bounds x="222.0" y="391.0" width="4.0" height="4.0"/> </bezel>
</view>
</mamelayout>

View File

@ -33695,7 +33695,7 @@ qzkklgy2 // (c) 1993 Tecmo
qzkklogy // (c) 1992 Tecmo
rezon // (c) 1991 Allumer
rezont // (c) 1991 Allumer / Taito
setaroul // UF (c) 19?? Seta / Visco
setaroul // UF (c) 1989? Visco
simpsonjr // bootleg of J. J. Squawkers by Daigom
sokonuke // (c) 1995 Sammy Industries
stg // (c) 1991 Athena / Tecmo

View File

@ -204,6 +204,7 @@ fidelz80.cpp
fk1.cpp
fm7.cpp
fmtowns.cpp
fontwriter.cpp
force68k.cpp
fp1100.cpp
fp200.cpp

View File

@ -144,6 +144,9 @@ Note: if MAME_DEBUG is defined, pressing Z with:
/* note that drgnunit, stg and qzkklogy run on the same board, yet they need different alignment */
static const game_offset game_offsets[] =
{
// x offsets
// "game", {spr, spr_flip}, {tmap, tmap_flip}
/* only sprites */
{ "tndrcade", { 0, 0 } }, // correct (start grid, wall at beginning of game)
{ "tndrcadej",{ 0, 0 } }, // "
@ -171,7 +174,7 @@ static const game_offset game_offsets[] =
{ "calibr50", { -1, 2 }, { -3, -2 } }, // correct (test grid and roof in animation at beginning of game)
{ "arbalest", { 0, 1 }, { -2, -1 } }, // correct (test grid and landing pad at beginning of game)
{ "metafox", { 0, 0 }, { 16,-19 } }, // sprites unknown, tilemap correct (test grid)
{ "setaroul", { 0, 0 }, { 0, 0 } }, // unknown
{ "setaroul", { 7, 0 }, { 5, 0 } }, // unknown (flipped offsets are unused: game handles flipping manually without setting the flip bit)
{ "drgnunit", { 2, 2 }, { -2, -2 } }, // correct (test grid and I/O test)
{ "jockeyc", { 0, 0 }, { -2, 0 } }, // sprites unknown, tilemap correct (test grid)
{ "inttoote", { 0, 0 }, { -2, 0 } }, // "
@ -360,7 +363,7 @@ Offset + 0x1000:
Offset + 0x0: Scroll X
Offset + 0x2: Scroll Y
Offset + 0x4:
fedc ba98 7654 3210 -
fedc ba98 765- ---- -
---- ---- ---4 ---- Tilemap color mode switch (used in blandia and the other games using 6bpp graphics)
---- ---- ---- 3--- Tilemap Select (There Are 2 Tilemaps Per Layer)
---- ---- ---- -21- 0 (1 only in eightfrc, when flip is on!)
@ -510,13 +513,13 @@ VIDEO_START_MEMBER(seta_state,seta_1_layer)
m_tilemap_1->set_transparent_pen(0);
}
VIDEO_START_MEMBER(seta_state,setaroul_1_layer)
VIDEO_START_MEMBER(setaroul_state,setaroul_1_layer)
{
VIDEO_START_CALL_MEMBER(seta_1_layer);
// position kludges
m_seta001->set_fg_yoffsets( -0x12, 0x0e );
m_seta001->set_bg_yoffsets( 0x1, -0x1 );
m_seta001->set_bg_yoffsets( 0, -0x1 );
m_seta001->set_bg_xoffsets( 0, 0x2 );
}
VIDEO_START_MEMBER(seta_state,twineagl_1_layer)
@ -682,7 +685,7 @@ PALETTE_INIT_MEMBER(seta_state,inttoote)
}
}
PALETTE_INIT_MEMBER(seta_state,setaroul)
PALETTE_INIT_MEMBER(setaroul_state,setaroul)
{
m_gfxdecode->gfx(0)->set_granularity(16);
m_gfxdecode->gfx(1)->set_granularity(16);
@ -1053,16 +1056,17 @@ uint32_t seta_state::screen_update_seta_layers(screen_device &screen, bitmap_ind
}
uint32_t seta_state::screen_update_setaroul(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t setaroul_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(0x0, cliprect);
seta_layers_update(screen, bitmap, cliprect, 0x800, 1 );
if (m_led & 0x80)
seta_layers_update(screen, bitmap, cliprect, 0x800, 1 );
return 0;
}
WRITE_LINE_MEMBER(seta_state::screen_vblank_setaroul)
WRITE_LINE_MEMBER(setaroul_state::screen_vblank)
{
// rising edge
if (state)