mirror of
https://github.com/holub/mame
synced 2025-06-28 07:04:35 +03:00
Merge branch 'master' of https://github.com/mamedev/mame
This commit is contained in:
commit
1da83d27a7
@ -29,6 +29,7 @@ mov sreg, doesnot disable until next operation is executed
|
||||
8086/8088
|
||||
---------
|
||||
"mov cs, " causes unconditional jump!
|
||||
0xd6 is salc (sbb al,al) as all other intel x86-16 and -32 cpus
|
||||
|
||||
80C86/80C88
|
||||
-----------
|
||||
@ -36,9 +37,10 @@ mov sreg, doesnot disable until next operation is executed
|
||||
|
||||
80186/80188
|
||||
-----------
|
||||
integrated pic8259, pit8253, dma8253 (but not at standard pc addresses)
|
||||
integrated pic, timer and dmac entirely incompatible with 8259, 825[3,4] and 82[3,5]7
|
||||
additional instructions
|
||||
"mov cs, " ?
|
||||
#BR/bound/int 5, #UD/illegal instruction/int 6, #NM/coprocessor unavailable/int 7 support
|
||||
"mov cs, " ignored (likely causes int 6)
|
||||
shift count anded with 0x1f
|
||||
|
||||
80188
|
||||
@ -52,6 +54,7 @@ although it is based on 80186 instruction set, some behaviours follow 8086
|
||||
8080 emulation mode
|
||||
"mov cs, " ignored
|
||||
shift count not anded (acts like 8086)
|
||||
0xd6 is xlat alias
|
||||
|
||||
NEC 70116 (V30)
|
||||
---------------
|
||||
@ -69,11 +72,11 @@ no 8080 emulation mode
|
||||
|
||||
NEC V40
|
||||
-------
|
||||
pinout, integrated peripherals as 80186
|
||||
pinout, integrated peripherals 8259,54,37 clones at nonpc compatible addresses
|
||||
|
||||
NEC V50
|
||||
-------
|
||||
pinout, integrated peripherals as 80188
|
||||
pinout, integrated peripherals as v40
|
||||
|
||||
NEC V33?
|
||||
--------
|
||||
@ -92,9 +95,9 @@ v30? emulation mode (without 8080 emulation mode)
|
||||
|
||||
80286
|
||||
-----
|
||||
80186 with additional instructions
|
||||
80186 with additional instructions but no peripherals
|
||||
24 bit address bus,
|
||||
protected mode
|
||||
protected mode selector/descriptor
|
||||
|
||||
80386 and later
|
||||
---------------
|
||||
|
@ -2381,11 +2381,12 @@ static void execute_find(running_machine &machine, int ref, int params, const ch
|
||||
for (int i = 2; i < params; i++)
|
||||
{
|
||||
const char *pdata = param[i];
|
||||
size_t pdatalen = strlen(pdata) - 1;
|
||||
|
||||
/* check for a string */
|
||||
if (pdata[0] == '"' && pdata[strlen(pdata) - 1] == '"')
|
||||
if (pdata[0] == '"' && pdata[pdatalen] == '"')
|
||||
{
|
||||
for (j = 1; j < strlen(pdata) - 1; j++)
|
||||
for (j = 1; j < pdatalen; j++)
|
||||
{
|
||||
data_to_find[data_count] = pdata[j];
|
||||
data_size[data_count++] = 1;
|
||||
|
@ -86,12 +86,12 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
|
||||
text_buffer *text;
|
||||
|
||||
/* allocate memory for the text buffer object */
|
||||
text = (text_buffer *)global_alloc(text_buffer);
|
||||
text = global_alloc_nothrow(text_buffer);
|
||||
if (!text)
|
||||
return nullptr;
|
||||
|
||||
/* allocate memory for the buffer itself */
|
||||
text->buffer = (char *)global_alloc_array(char, bytes);
|
||||
text->buffer = global_alloc_array_nothrow(char, bytes);
|
||||
if (!text->buffer)
|
||||
{
|
||||
global_free(text);
|
||||
@ -99,7 +99,7 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
|
||||
}
|
||||
|
||||
/* allocate memory for the lines array */
|
||||
text->lineoffs = (INT32 *)global_alloc_array(INT32, lines);
|
||||
text->lineoffs = global_alloc_array_nothrow(INT32, lines);
|
||||
if (!text->lineoffs)
|
||||
{
|
||||
global_free_array(text->buffer);
|
||||
|
@ -161,29 +161,27 @@ image_error_t device_image_interface::set_image_filename(const char *filename)
|
||||
zippath_parent(m_working_directory, filename);
|
||||
m_basename.assign(m_image_name);
|
||||
|
||||
int loc1 = m_image_name.find_last_of('\\');
|
||||
int loc2 = m_image_name.find_last_of('/');
|
||||
int loc3 = m_image_name.find_last_of(':');
|
||||
int loc = MAX(loc1,MAX(loc2,loc3));
|
||||
if (loc!=-1) {
|
||||
size_t loc1 = m_image_name.find_last_of('\\');
|
||||
size_t loc2 = m_image_name.find_last_of('/');
|
||||
size_t loc3 = m_image_name.find_last_of(':');
|
||||
size_t loc = MAX(loc1,MAX(loc2, loc3));
|
||||
if (loc != -1) {
|
||||
if (loc == loc3)
|
||||
{
|
||||
// temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart)
|
||||
m_basename = m_basename.substr(0, loc);
|
||||
std::string tmpstr = std::string(m_basename);
|
||||
int tmploc = tmpstr.find_last_of(':');
|
||||
m_basename = m_basename.substr(tmploc + 1,loc-tmploc);
|
||||
size_t tmploc = m_basename.find_last_of(':');
|
||||
m_basename = m_basename.substr(tmploc + 1, loc - tmploc);
|
||||
}
|
||||
else
|
||||
m_basename = m_basename.substr(loc + 1, m_basename.length() - loc);
|
||||
m_basename = m_basename.substr(loc + 1);
|
||||
}
|
||||
m_basename_noext = m_basename.assign(m_basename);
|
||||
m_basename_noext = m_basename;
|
||||
m_filetype = "";
|
||||
loc = m_basename_noext.find_last_of('.');
|
||||
if (loc!=-1) {
|
||||
m_basename_noext = m_basename_noext.substr(0,loc);
|
||||
m_filetype = m_basename.assign(m_basename);
|
||||
m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc);
|
||||
if (loc != -1) {
|
||||
m_basename_noext = m_basename_noext.substr(0, loc);
|
||||
m_filetype = m_basename.substr(loc + 1);
|
||||
}
|
||||
|
||||
return IMAGE_ERROR_SUCCESS;
|
||||
|
@ -1049,7 +1049,7 @@ void lua_engine::periodic_check()
|
||||
osd_lock_acquire(lock);
|
||||
if (msg.ready == 1) {
|
||||
lua_settop(m_lua_state, 0);
|
||||
int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), strlen(msg.text.c_str()), "=stdin");
|
||||
int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), msg.text.length(), "=stdin");
|
||||
if (incomplete(status)==0) /* cannot try to add lines? */
|
||||
{
|
||||
if (status == LUA_OK) status = docall(0, LUA_MULTRET);
|
||||
|
@ -1055,8 +1055,9 @@ int render_target::configured_view(const char *viewname, int targetindex, int nu
|
||||
if (strcmp(viewname, "auto") != 0)
|
||||
{
|
||||
// scan for a matching view name
|
||||
size_t viewlen = strlen(viewname);
|
||||
for (view = view_by_index(viewindex = 0); view != nullptr; view = view_by_index(++viewindex))
|
||||
if (core_strnicmp(view->name(), viewname, strlen(viewname)) == 0)
|
||||
if (core_strnicmp(view->name(), viewname, viewlen) == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ wav_file *wav_open(const char *filename, int sample_rate, int channels)
|
||||
UINT16 align, temp16;
|
||||
|
||||
/* allocate memory for the wav struct */
|
||||
wav = (wav_file *) global_alloc(wav_file);
|
||||
wav = global_alloc_nothrow(wav_file);
|
||||
if (!wav)
|
||||
return nullptr;
|
||||
|
||||
|
@ -434,9 +434,9 @@ void ui_menu_crosshair::populate()
|
||||
file_enumerator path(machine().options().crosshair_path());
|
||||
const osd_directory_entry *dir;
|
||||
/* reset search flags */
|
||||
int using_default = false;
|
||||
int finished = false;
|
||||
int found = false;
|
||||
bool using_default = false;
|
||||
bool finished = false;
|
||||
bool found = false;
|
||||
|
||||
/* if we are using the default, then we just need to find the first in the list */
|
||||
if (*(settings.name) == 0)
|
||||
|
@ -31,7 +31,7 @@ private:
|
||||
// internal state
|
||||
enum { VISIBLE_GAMES_IN_LIST = 15 };
|
||||
UINT8 m_error;
|
||||
UINT8 m_rerandomize;
|
||||
bool m_rerandomize;
|
||||
char m_search[40];
|
||||
int m_matchlist[VISIBLE_GAMES_IN_LIST];
|
||||
std::vector<const game_driver *> m_driverlist;
|
||||
|
@ -183,7 +183,8 @@ static inline int is_breakable_char(unicode_char ch)
|
||||
CORE IMPLEMENTATION
|
||||
***************************************************************************/
|
||||
|
||||
static const UINT32 mouse_bitmap[] = {
|
||||
static const UINT32 mouse_bitmap[32*32] =
|
||||
{
|
||||
0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
|
||||
0x09a46f30,0x81ac7c43,0x24af8049,0x00ad7d45,0x00a8753a,0x00a46f30,0x009f6725,0x009b611c,0x00985b14,0x0095560d,0x00935308,0x00915004,0x00904e02,0x008f4e01,0x008f4d00,0x008f4d00,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
|
||||
0x00a16a29,0xa2aa783d,0xffbb864a,0xc0b0824c,0x5aaf7f48,0x09ac7b42,0x00a9773c,0x00a67134,0x00a26b2b,0x009e6522,0x009a5e19,0x00965911,0x0094550b,0x00925207,0x00915004,0x008f4e01,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,
|
||||
@ -236,7 +237,7 @@ ui_manager::ui_manager(running_machine &machine)
|
||||
m_handler_param = 0;
|
||||
m_single_step = false;
|
||||
m_showfps = false;
|
||||
m_showfps_end = false;
|
||||
m_showfps_end = 0;
|
||||
m_show_profiler = false;
|
||||
m_popup_text_end = 0;
|
||||
m_use_natural_keyboard = false;
|
||||
@ -457,7 +458,7 @@ void ui_manager::update_and_render(render_container *container)
|
||||
{
|
||||
float mouse_y=-1,mouse_x=-1;
|
||||
if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) {
|
||||
container->add_quad(mouse_x,mouse_y,mouse_x + 0.05f*container->manager().ui_aspect(container),mouse_y + 0.05f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
|
||||
container->add_quad(mouse_x,mouse_y,mouse_x + 0.02f*container->manager().ui_aspect(container),mouse_y + 0.02f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_ANTIALIAS(1)|PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1503,7 +1504,6 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co
|
||||
// first draw the FPS counter
|
||||
if (machine.ui().show_fps_counter())
|
||||
{
|
||||
std::string tempstring;
|
||||
machine.ui().draw_text_full(container, machine.video().speed_text().c_str(), 0.0f, 0.0f, 1.0f,
|
||||
JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr);
|
||||
}
|
||||
|
@ -584,7 +584,7 @@ void video_manager::postload()
|
||||
// forward
|
||||
//-------------------------------------------------
|
||||
|
||||
inline int video_manager::effective_autoframeskip() const
|
||||
inline bool video_manager::effective_autoframeskip() const
|
||||
{
|
||||
// if we're fast forwarding or paused, autoframeskip is disabled
|
||||
if (m_fastforward || machine().paused())
|
||||
|
@ -100,7 +100,7 @@ private:
|
||||
void postload();
|
||||
|
||||
// effective value helpers
|
||||
int effective_autoframeskip() const;
|
||||
bool effective_autoframeskip() const;
|
||||
int effective_frameskip() const;
|
||||
bool effective_throttle() const;
|
||||
|
||||
|
@ -27,7 +27,9 @@
|
||||
|
||||
// global allocation helpers -- use these instead of new and delete
|
||||
#define global_alloc(_type) new _type
|
||||
#define global_alloc_nothrow(_type) new (std::nothrow) _type
|
||||
#define global_alloc_array(_type, _num) new _type[_num]
|
||||
#define global_alloc_array_nothrow(_type, _num) new (std::nothrow) _type[_num]
|
||||
#define global_free(_ptr) do { delete _ptr; } while (0)
|
||||
#define global_free_array(_ptr) do { delete[] _ptr; } while (0)
|
||||
|
||||
|
@ -36,16 +36,17 @@ public:
|
||||
: fidelz80base_state(mconfig, type, tag),
|
||||
m_6821pia(*this, "6821pia"),
|
||||
m_cart(*this, "cartslot"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_irq_off(*this, "irq_off")
|
||||
m_speaker(*this, "speaker")
|
||||
{ }
|
||||
|
||||
// devices/pointers
|
||||
optional_device<pia6821_device> m_6821pia;
|
||||
optional_device<generic_slot_device> m_cart;
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
optional_device<timer_device> m_irq_off;
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); }
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); }
|
||||
|
||||
// model CSC
|
||||
void csc_update_7442();
|
||||
void csc_prepare_display();
|
||||
@ -65,8 +66,6 @@ public:
|
||||
// model SC12
|
||||
DECLARE_MACHINE_START(sc12);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(irq_off);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(sc12_irq);
|
||||
DECLARE_WRITE8_MEMBER(sc12_control_w);
|
||||
DECLARE_READ8_MEMBER(sc12_input_r);
|
||||
};
|
||||
@ -247,20 +246,6 @@ MACHINE_START_MEMBER(fidel6502_state, sc12)
|
||||
}
|
||||
|
||||
|
||||
// interrupt handling
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::irq_off)
|
||||
{
|
||||
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::sc12_irq)
|
||||
{
|
||||
m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
|
||||
m_irq_off->adjust(attotime::from_nsec(15250)); // active low for 15.25us
|
||||
}
|
||||
|
||||
|
||||
// TTL
|
||||
|
||||
WRITE8_MEMBER(fidel6502_state::sc12_control_w)
|
||||
@ -571,8 +556,9 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(sc12_map)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("sc12_irq", fidel6502_state, sc12_irq, attotime::from_hz(780)) // from 556 timer
|
||||
MCFG_TIMER_DRIVER_ADD("irq_off", fidel6502_state, irq_off)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(780) - attotime::from_nsec(15250)) // active for 15.25us
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(780))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_fidel_sc12)
|
||||
@ -595,7 +581,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_START( fev, fidel6502_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M65SC02, XTAL_3MHz) // M65SC102 (CMD)
|
||||
MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102
|
||||
MCFG_CPU_PROGRAM_MAP(fev_map)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
|
||||
@ -649,6 +635,6 @@ ROM_END
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING )
|
||||
COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING )
|
||||
COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -598,7 +598,7 @@ PB.3 - violet wire
|
||||
PB.4 - white wire (and TSI BUSY line)
|
||||
PB.5 - selection jumper input (see below)
|
||||
PB.6 - TSI start line
|
||||
PB.7 - TSI ROM D0 line
|
||||
PB.7 - TSI ROM A12 line
|
||||
|
||||
|
||||
selection jumpers:
|
||||
@ -1070,7 +1070,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
|
||||
{
|
||||
// d0-d3: select digits
|
||||
// d0-d7: select leds, input mux low bits
|
||||
m_inp_mux = (m_inp_mux & 0x300) | data;
|
||||
m_inp_mux = (m_inp_mux & ~0xff) | data;
|
||||
m_led_select = data;
|
||||
vsc_prepare_display();
|
||||
}
|
||||
@ -1081,7 +1081,8 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
|
||||
READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
|
||||
{
|
||||
// d0-d7: multiplexed inputs
|
||||
return read_inputs(10);
|
||||
return read_inputs(11);
|
||||
|
||||
}
|
||||
|
||||
READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
|
||||
@ -1090,18 +1091,26 @@ READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
|
||||
|
||||
// d4: TSI BUSY line
|
||||
ret |= (m_speech->busy_r()) ? 0 : 0x10;
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
|
||||
{
|
||||
// d0,d1: input mux highest bits
|
||||
m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300);
|
||||
|
||||
// d5: enable language switch
|
||||
m_inp_mux = (m_inp_mux & ~0x700) | (data << 8 & 0x300) | (data << 5 & 0x400);
|
||||
|
||||
//if (m_inp_mux & 0x400) debugger_break(machine());
|
||||
|
||||
// d7: TSI ROM A12
|
||||
|
||||
m_speech->force_update(); // update stream to now
|
||||
m_speech_bank = data >> 7 & 1;
|
||||
|
||||
// d6: TSI START line
|
||||
m_speech->start_w(data >> 6 & 1);
|
||||
|
||||
|
||||
// d2: lower TSI volume
|
||||
m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0);
|
||||
}
|
||||
@ -1298,26 +1307,26 @@ static INPUT_PORTS_START( cc10 )
|
||||
PORT_START("IN.4")
|
||||
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("LEVEL") // factory setting
|
||||
PORT_CONFNAME( 0x80, 0x00, "PPI.B.7: Maximum Levels" )
|
||||
PORT_CONFSETTING( 0x00, "10" )
|
||||
PORT_START("LEVEL") // hardwired (VCC/GND?)
|
||||
PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
|
||||
PORT_CONFSETTING( 0x00, "10" ) // factory setting
|
||||
PORT_CONFSETTING( 0x80, "3" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( vcc )
|
||||
PORT_INCLUDE( vcc_base )
|
||||
|
||||
PORT_START("IN.4") // not consumer accessible
|
||||
PORT_CONFNAME( 0x01, 0x00, "PCB Jumper: French" )
|
||||
PORT_START("IN.4") // PCB jumpers, not consumer accessible
|
||||
PORT_CONFNAME( 0x01, 0x00, "Language: French" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x02, 0x00, "PCB Jumper: Spanish" )
|
||||
PORT_CONFNAME( 0x02, 0x00, "Language: Spanish" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x04, 0x00, "PCB Jumper: German" )
|
||||
PORT_CONFNAME( 0x04, 0x00, "Language: German" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_CONFNAME( 0x08, 0x00, "PCB Jumper: Special" )
|
||||
PORT_CONFNAME( 0x08, 0x00, "Language: Special" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x08, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -1326,7 +1335,7 @@ static INPUT_PORTS_START( vccfr )
|
||||
PORT_INCLUDE( vcc )
|
||||
|
||||
PORT_MODIFY("IN.4")
|
||||
PORT_CONFNAME( 0x01, 0x01, "PCB Jumper: French" )
|
||||
PORT_CONFNAME( 0x01, 0x01, "Language: French" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -1335,7 +1344,7 @@ static INPUT_PORTS_START( vccsp )
|
||||
PORT_INCLUDE( vcc )
|
||||
|
||||
PORT_MODIFY("IN.4")
|
||||
PORT_CONFNAME( 0x02, 0x02, "PCB Jumper: Spanish" )
|
||||
PORT_CONFNAME( 0x02, 0x02, "Language: Spanish" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x02, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -1344,7 +1353,7 @@ static INPUT_PORTS_START( vccg )
|
||||
PORT_INCLUDE( vcc )
|
||||
|
||||
PORT_MODIFY("IN.4")
|
||||
PORT_CONFNAME( 0x04, 0x04, "PCB Jumper: German" )
|
||||
PORT_CONFNAME( 0x04, 0x04, "Language: German" )
|
||||
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_CONFSETTING( 0x04, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -1449,6 +1458,13 @@ static INPUT_PORTS_START( vsc )
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("IN.10") // hardwired (2 diodes)
|
||||
PORT_CONFNAME( 0x03, 0x00, "Language" )
|
||||
PORT_CONFSETTING( 0x00, "English" )
|
||||
PORT_CONFSETTING( 0x01, "1" ) // todo: game dasm says it checks against 0/not0, 2, 3.. which language is which?
|
||||
PORT_CONFSETTING( 0x02, "2" )
|
||||
PORT_CONFSETTING( 0x03, "3" )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( vbrc )
|
||||
@ -1582,6 +1598,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz
|
||||
MCFG_S14001A_EXT_READ_HANDLER(READ8(fidelz80_state, vcc_speech_r))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1705,8 +1722,39 @@ ROM_START( vsc )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
||||
|
||||
ROM_REGION( 0x1000, "speech", 0 )
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) )
|
||||
ROM_RELOAD( 0x1000, 0x1000)
|
||||
ROM_END
|
||||
|
||||
ROM_START( vscsp )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
ROM_START( vscg )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
ROM_START( vscfr )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) )
|
||||
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
|
||||
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) )
|
||||
|
||||
ROM_REGION( 0x2000, "speech", 0 )
|
||||
ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -1757,7 +1805,10 @@ COMP( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fideli
|
||||
COMP( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
COMP( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
||||
COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1980, vscsp, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1980, vscg, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
COMP( 1980, vscfr, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
COMP( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
COMP( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
@ -824,4 +824,4 @@ CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mat
|
||||
CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
@ -4909,19 +4909,19 @@ COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kos
|
||||
CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE ) // ***
|
||||
|
||||
CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
|
||||
CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // ***
|
||||
|
||||
CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) // ***
|
||||
CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // ***
|
||||
CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE ) // some of the minigames: ***
|
||||
CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: ***
|
||||
|
||||
CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
|
||||
CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
|
||||
|
@ -179,7 +179,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( gtfore01, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000401, 0x0b0b0b)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x00000401, 0x0b0b0b)
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7)
|
||||
MACHINE_CONFIG_END
|
||||
@ -187,7 +187,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_DERIVED( gtfore02, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201)
|
||||
MCFG_DEVICE_MODIFY(":pci:0a.0")
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -215,28 +215,28 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_DERIVED( gtfore06, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d)
|
||||
MCFG_DEVICE_MODIFY(":pci:0a.0")
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9);
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( carnking, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000603, 0x0c0b0d)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000a01, 0x0e0a0a)
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0a01, 0x9)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( bbhsc, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x01000600, 0x0c0a0a)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x02000600, 0x0c0a0a)
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0600, 0x9)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0000, 0x7)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle )
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
|
||||
MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704)
|
||||
MCFG_DEVICE_MODIFY(":pci:0a.0")
|
||||
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
|
||||
MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -331,7 +331,7 @@ static INPUT_PORTS_START( virtpool )
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( bbhcotw )
|
||||
static INPUT_PORTS_START( bbh )
|
||||
PORT_INCLUDE( iteagle )
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
@ -557,7 +557,7 @@ ROM_END
|
||||
|
||||
GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT )
|
||||
GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING ) // random lockups on loading screens
|
||||
GAME( 2002, carnking, iteagle, carnking, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING )
|
||||
GAME( 2002, carnking, iteagle, carnking, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", 0 )
|
||||
GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 )
|
||||
GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 )
|
||||
GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 )
|
||||
@ -569,5 +569,5 @@ GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "I
|
||||
GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 )
|
||||
GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 )
|
||||
GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 )
|
||||
GAME( 2002, bbhsc, iteagle, bbhsc, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot
|
||||
GAME( 2006, bbhcotw, iteagle, bbhcotw, bbhcotw, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups
|
||||
GAME( 2002, bbhsc, iteagle, bbhsc, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot
|
||||
GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups
|
||||
|
@ -15,7 +15,6 @@
|
||||
Vancouver 68020 12Mhz
|
||||
Genius 68030 V4.00 33.333 Mhz
|
||||
Genius 68030 V4.01 33.333 Mhz
|
||||
Genius 68030 V4.01 33.333x2 Mhz (custom MESS overclocked version for higher ELO)
|
||||
Berlin Pro 68020 24.576 Mhz (not modular board, but otherwise close to milano)
|
||||
Berlin Pro (London) 68020 24.576 Mhz (not modular board, but otherwise close to milano)
|
||||
London 68030 V5.00k 33.333 Mhz (probably the Genius 3/4 update ROM)
|
||||
@ -998,16 +997,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq_academy)
|
||||
MACHINE_START_MEMBER(polgar_state,van32)
|
||||
{
|
||||
// patch LCD delay loop on the 68030 machines until waitstates and/or opcode timings are fixed in MAME core
|
||||
// patches gen32 gen32_41 gen32_oc lond030
|
||||
// patches gen32 gen32_41 lond030
|
||||
|
||||
UINT8 *rom = memregion("maincpu")->base();
|
||||
|
||||
if(rom[0x870] == 0x0c && rom[0x871] == 0x78) {
|
||||
if (!strcmp(machine().system().name,"gen32_oc")) {
|
||||
rom[0x870] = 0x6c;
|
||||
} else {
|
||||
rom[0x870] = 0x38;
|
||||
}
|
||||
rom[0x870] = 0x38;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1692,15 +1687,6 @@ static MACHINE_CONFIG_START( gen32, polgar_state )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( gen32_oc, gen32 )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_CLOCK( XTAL_33_333MHz * 2 )
|
||||
MCFG_DEVICE_REMOVE("int_timer")
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(500))
|
||||
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( bpl32, polgar_state )
|
||||
@ -1851,11 +1837,6 @@ ROM_START( gen32_41 )
|
||||
ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c))
|
||||
ROM_END
|
||||
|
||||
ROM_START( gen32_oc )
|
||||
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
|
||||
ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c))
|
||||
ROM_END
|
||||
|
||||
ROM_START( berlinp )
|
||||
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
|
||||
ROM_LOAD("berlinp.bin", 0x00000, 0x40000,CRC(82FBAF6E) SHA1(729B7CEF3DFAECC4594A6178FC4BA6015AFA6202))
|
||||
@ -1904,7 +1885,6 @@ DRIVER_INIT_MEMBER(polgar_state,polgar)
|
||||
CONS( 1992, risc, 0, 0, risc, van16, driver_device, 0, "Saitek", "RISC2500", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1993, gen32, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1993, gen32_41, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1993, gen32_oc, van16, 0, gen32_oc, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01OC", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_UNOFFICIAL | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1994, berlinp, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1996, bpl32, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro London Upgrade V5.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1996, lond020, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto London 68020 32 Bit", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
@ -70,21 +70,32 @@ WRITE16_MEMBER(overdriv_state::eeprom_w)
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline)
|
||||
{
|
||||
const int timer_threshold = 168; // fwiw matches 0 on mask ROM check, so IF it's a timer irq then should be close ...
|
||||
int scanline = param;
|
||||
|
||||
/* TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) */
|
||||
/* this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow */
|
||||
if(scanline == 256 && m_screen->frame_number() & 1) // vblank-out irq
|
||||
|
||||
m_fake_timer ++;
|
||||
|
||||
// TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?)
|
||||
// this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow.
|
||||
// Update: gameplay is actually too fast compared to timer, first attract mode shouldn't even surpass first blue car on right.
|
||||
if(scanline == 256) // vblank-out irq
|
||||
{
|
||||
// m_screen->frame_number() & 1
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
else if((scanline % 128) == 0) // timer irq
|
||||
m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong
|
||||
}
|
||||
else if(m_fake_timer >= timer_threshold) // timer irq
|
||||
{
|
||||
m_fake_timer -= timer_threshold;
|
||||
m_maincpu->set_input_line(5, HOLD_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt)
|
||||
{
|
||||
// this doesn't get turned on until the irq has happened? wrong irq?
|
||||
// if (m_k053246->k053246_is_irq_enabled())
|
||||
m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong
|
||||
if (m_k053246->k053246_is_irq_enabled())
|
||||
m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong
|
||||
}
|
||||
|
||||
|
||||
@ -127,9 +138,10 @@ WRITE16_MEMBER(overdriv_state::cpuB_ctrl_w)
|
||||
|
||||
WRITE16_MEMBER(overdriv_state::overdriv_soundirq_w)
|
||||
{
|
||||
m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
|
||||
m_audiocpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w)
|
||||
{
|
||||
m_subcpu->set_input_line(5, HOLD_LINE); // likely wrong
|
||||
@ -137,7 +149,6 @@ WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w)
|
||||
|
||||
WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_y_w)
|
||||
{
|
||||
m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state )
|
||||
@ -167,7 +178,7 @@ static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state )
|
||||
AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
// HACK ALERT
|
||||
#ifdef UNUSED_FUNCTION
|
||||
WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
|
||||
{
|
||||
m_k053246->k053246_word_w(space,offset,data,mem_mask);
|
||||
@ -190,6 +201,7 @@ WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
|
||||
//printf("%02x %04x %04x\n", offset, data, mem_mask);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||
@ -197,17 +209,26 @@ static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
|
||||
AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w)
|
||||
AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
|
||||
AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w)
|
||||
AM_RANGE(0x118000, 0x118fff) AM_RAM AM_SHARE("sprram") //AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA..
|
||||
AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA..
|
||||
AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r)
|
||||
AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */
|
||||
AM_RANGE(0x130000, 0x130007) AM_WRITE(overdriv_k053246_word_w) // AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
|
||||
AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff)
|
||||
//AM_RANGE(0x140000, 0x140001) used in later stages
|
||||
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0x208000, 0x20bfff) AM_RAM
|
||||
AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
|
||||
AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
WRITE8_MEMBER(overdriv_state::sound_ack_w)
|
||||
{
|
||||
m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state )
|
||||
AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w)
|
||||
// 0x012 read during explosions
|
||||
// 0x180
|
||||
AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
|
||||
AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write)
|
||||
AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write)
|
||||
@ -222,7 +243,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( overdriv )
|
||||
PORT_START("INPUTS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_TOGGLE
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -297,10 +318,7 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(59)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_SIZE(64*8, 40*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 )
|
||||
MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4,384,0,305,264,0,224)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
@ -475,6 +493,6 @@ ROM_START( overdrivb )
|
||||
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
|
||||
ROM_END
|
||||
|
||||
GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
|
||||
GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
|
||||
GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv )
|
||||
GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version
|
||||
GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
||||
GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas?
|
||||
|
@ -254,7 +254,10 @@ MACHINE_CONFIG_END
|
||||
/* ROM definition */
|
||||
ROM_START( pulsarlb )
|
||||
ROM_REGION( 0x10800, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113) )
|
||||
ROM_SYSTEM_BIOS(0, "mon7", "MP7A")
|
||||
ROMX_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(1, "mon6", "LBOOT6") // Blank screen until floppy boots
|
||||
ROMX_LOAD( "lboot6.rom", 0x10000, 0x800, CRC(3bca9096) SHA1(ff99288e51a9e832785ce8e3ab5a9452b1064231), ROM_BIOS(2))
|
||||
ROM_END
|
||||
|
||||
/* Driver */
|
||||
|
@ -1558,9 +1558,9 @@ COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, sn
|
||||
|
||||
COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
|
||||
COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU
|
||||
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
|
||||
COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU
|
||||
COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
|
||||
COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
|
||||
COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK )
|
||||
|
||||
COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )
|
||||
|
@ -25,7 +25,7 @@ public:
|
||||
|
||||
// devices/pointers
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_ioport_array<10> m_inp_matrix; // max 10
|
||||
optional_ioport_array<11> m_inp_matrix; // max 11
|
||||
optional_device<s14001a_device> m_speech;
|
||||
optional_region_ptr<UINT8> m_speech_rom;
|
||||
|
||||
|
@ -24,7 +24,6 @@ public:
|
||||
m_k053246(*this, "k053246"),
|
||||
m_k053251(*this, "k053251"),
|
||||
m_k053252(*this, "k053252"),
|
||||
m_sprram(*this, "sprram"),
|
||||
m_screen(*this, "screen")
|
||||
{ }
|
||||
|
||||
@ -45,13 +44,13 @@ public:
|
||||
required_device<k053247_device> m_k053246;
|
||||
required_device<k053251_device> m_k053251;
|
||||
required_device<k053252_device> m_k053252;
|
||||
required_shared_ptr<UINT16> m_sprram;
|
||||
required_device<screen_device> m_screen;
|
||||
DECLARE_WRITE16_MEMBER(eeprom_w);
|
||||
DECLARE_WRITE16_MEMBER(cpuA_ctrl_w);
|
||||
DECLARE_READ16_MEMBER(cpuB_ctrl_r);
|
||||
DECLARE_WRITE16_MEMBER(cpuB_ctrl_w);
|
||||
DECLARE_WRITE16_MEMBER(overdriv_soundirq_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_ack_w);
|
||||
DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_x_w);
|
||||
DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w);
|
||||
virtual void machine_start() override;
|
||||
@ -59,8 +58,8 @@ public:
|
||||
UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(cpuB_interrupt);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline);
|
||||
|
||||
DECLARE_WRITE16_MEMBER( overdriv_k053246_word_w );
|
||||
int m_fake_timer;
|
||||
|
||||
K051316_CB_MEMBER(zoom_callback_1);
|
||||
K051316_CB_MEMBER(zoom_callback_2);
|
||||
K053246_CB_MEMBER(sprite_callback);
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "coreutil.h"
|
||||
|
||||
#define LOG_FPGA (0)
|
||||
#define LOG_SERIAL (0)
|
||||
#define LOG_RTC (0)
|
||||
#define LOG_RAM (0)
|
||||
#define LOG_EEPROM (0)
|
||||
@ -80,14 +81,14 @@ void iteagle_fpga_device::device_reset()
|
||||
m_serial_str.clear();
|
||||
m_serial_idx = 0;
|
||||
m_serial_data = false;
|
||||
memset(m_serial_com0, 0, sizeof(m_serial_com0));
|
||||
memset(m_serial_com1, 0, sizeof(m_serial_com1));
|
||||
memset(m_serial_com2, 0, sizeof(m_serial_com2));
|
||||
memset(m_serial_com3, 0, sizeof(m_serial_com3));
|
||||
memset(m_serial_com4, 0, sizeof(m_serial_com4));
|
||||
m_serial_com0[0] = 0x2c;
|
||||
m_serial_com1[0] = 0x2c;
|
||||
m_serial_com2[0] = 0x2c;
|
||||
m_serial_com3[0] = 0x2c;
|
||||
m_serial_com4[0] = 0x2c;
|
||||
}
|
||||
|
||||
void iteagle_fpga_device::update_sequence(UINT32 data)
|
||||
@ -130,12 +131,10 @@ void iteagle_fpga_device::update_sequence_eg1(UINT32 data)
|
||||
val1 = ((m_seq & 0x2)<<6) | ((m_seq & 0x4)<<4) | ((m_seq & 0x8)<<2) | ((m_seq & 0x10)<<0)
|
||||
| ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4) | ((m_seq & 0x80)>>6) | ((m_seq & 0x100)>>8);
|
||||
m_seq = (m_seq>>8) | ((feed&0xff)<<16);
|
||||
//m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1)&0xFF);
|
||||
m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
|
||||
} else if (data & 0x2) {
|
||||
val1 = ((m_seq & 0x2)<<1) | ((m_seq & 0x4)>>1) | ((m_seq & 0x8)>>3);
|
||||
m_seq_rem1 = ((m_seq & 0x10)) | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4);
|
||||
//m_seq_rem2 = ((m_seq & 0x80)>>1) | ((m_seq & 0x100)>>3) | ((m_seq & 0x200)>>5);
|
||||
m_seq = (m_seq>>6) | ((feed&0x3f)<<18);
|
||||
m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
|
||||
} else {
|
||||
@ -197,16 +196,16 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r )
|
||||
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
break;
|
||||
case 0x0c/4: // 1d = modem byte
|
||||
result = (result & 0xFFFF0000) | ((m_serial_com2[m_serial_idx]&0xff)<<8) | (m_serial_com1[m_serial_idx]&0xff);
|
||||
result = (result & 0xFFFF0000) | ((m_serial_com1[m_serial_idx]&0xff)<<8) | (m_serial_com0[m_serial_idx]&0xff);
|
||||
if (ACCESSING_BITS_0_15) {
|
||||
m_serial_data = false;
|
||||
m_serial_idx = 0;
|
||||
}
|
||||
if (LOG_FPGA)
|
||||
if (0 && LOG_FPGA)
|
||||
logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
|
||||
break;
|
||||
case 0x1c/4: // 1d = modem byte
|
||||
result = (result & 0xFFFF0000) | ((m_serial_com4[m_serial_idx]&0xff)<<8) | (m_serial_com3[m_serial_idx]&0xff);
|
||||
result = (result & 0xFFFF0000) | ((m_serial_com3[m_serial_idx]&0xff)<<8) | (m_serial_com2[m_serial_idx]&0xff);
|
||||
if (ACCESSING_BITS_0_15) {
|
||||
m_serial_data = false;
|
||||
m_serial_idx = 0;
|
||||
@ -233,8 +232,8 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if ((m_version & 0xff00) == 0x0200)
|
||||
update_sequence_eg1(data & 0xff);
|
||||
else
|
||||
// ATMEL Chip access. Returns version id's when bit 7 is set.
|
||||
update_sequence(data & 0xff);
|
||||
// ATMEL Chip access. Returns version id's when bit 7 is set.
|
||||
update_sequence(data & 0xff);
|
||||
if (0 && LOG_FPGA)
|
||||
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
|
||||
}
|
||||
@ -242,7 +241,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (ACCESSING_BITS_24_31 && (data & 0x01000000)) {
|
||||
m_cpu->set_input_line(m_irq_num, CLEAR_LINE);
|
||||
// Not sure what value to use here, needed for lightgun
|
||||
m_timer->adjust(attotime::from_hz(25));
|
||||
m_timer->adjust(attotime::from_hz(59));
|
||||
if (LOG_FPGA)
|
||||
logerror("%s:fpga_w offset %04X = %08X & %08X Clearing interrupt(%i)\n", machine().describe_context(), offset*4, data, mem_mask, m_irq_num);
|
||||
} else {
|
||||
@ -269,7 +268,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (!m_serial_data) {
|
||||
m_serial_idx = data&0xf;
|
||||
} else {
|
||||
m_serial_com1[m_serial_idx] = data&0xff;
|
||||
m_serial_com0[m_serial_idx] = data&0xff;
|
||||
m_serial_idx = 0;
|
||||
}
|
||||
m_serial_data = !m_serial_data;
|
||||
@ -278,29 +277,31 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (!m_serial_data) {
|
||||
m_serial_idx = (data&0x0f00)>>8;
|
||||
} else {
|
||||
m_serial_com2[m_serial_idx] = (data&0xff00)>>8;
|
||||
m_serial_com1[m_serial_idx] = (data&0xff00)>>8;
|
||||
}
|
||||
m_serial_data = !m_serial_data;
|
||||
}
|
||||
if (ACCESSING_BITS_16_23) {
|
||||
if (m_serial_str.size()==0)
|
||||
m_serial_str = "com1: ";
|
||||
m_serial_str = "com0: ";
|
||||
m_serial_str += (data>>16)&0xff;
|
||||
if (((data>>16)&0xff)==0xd) {
|
||||
if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
|
||||
osd_printf_debug("%s\n", m_serial_str.c_str());
|
||||
m_serial_str.clear();
|
||||
}
|
||||
}
|
||||
if (ACCESSING_BITS_24_31) {
|
||||
if (m_serial_str.size()==0)
|
||||
m_serial_str = "com2: ";
|
||||
m_serial_str = "com1: ";
|
||||
m_serial_str += (data>>24)&0xff;
|
||||
if (1 || ((data>>24)&0xff)==0xd) {
|
||||
if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
|
||||
osd_printf_debug("%s\n", m_serial_str.c_str());
|
||||
m_serial_str.clear();
|
||||
}
|
||||
}
|
||||
if (LOG_FPGA)
|
||||
if (0 && LOG_FPGA)
|
||||
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
|
||||
break;
|
||||
case 0x1c/4:
|
||||
@ -308,7 +309,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (!m_serial_data) {
|
||||
m_serial_idx = data&0xf;
|
||||
} else {
|
||||
m_serial_com3[m_serial_idx] = data&0xff;
|
||||
m_serial_com2[m_serial_idx] = data&0xff;
|
||||
m_serial_idx = 0;
|
||||
}
|
||||
m_serial_data = !m_serial_data;
|
||||
@ -317,24 +318,26 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
|
||||
if (!m_serial_data) {
|
||||
m_serial_idx = (data&0x0f00)>>8;
|
||||
} else {
|
||||
m_serial_com4[m_serial_idx] = (data&0xff00)>>8;
|
||||
m_serial_com3[m_serial_idx] = (data&0xff00)>>8;
|
||||
}
|
||||
m_serial_data = !m_serial_data;
|
||||
}
|
||||
if (ACCESSING_BITS_16_23) {
|
||||
if (m_serial_str.size()==0)
|
||||
m_serial_str = "com3: ";
|
||||
m_serial_str = "com2: ";
|
||||
m_serial_str += (data>>16)&0xff;
|
||||
if (1 || ((data>>16)&0xff)==0xd) {
|
||||
if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
|
||||
osd_printf_debug("%s\n", m_serial_str.c_str());
|
||||
m_serial_str.clear();
|
||||
}
|
||||
}
|
||||
if (ACCESSING_BITS_24_31) {
|
||||
if (m_serial_str.size()==0)
|
||||
m_serial_str = "com4: ";
|
||||
m_serial_str = "com3: ";
|
||||
m_serial_str += (data>>24)&0xff;
|
||||
if (((data>>24)&0xff)==0xd) {
|
||||
if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
|
||||
osd_printf_debug("%s\n", m_serial_str.c_str());
|
||||
m_serial_str.clear();
|
||||
}
|
||||
@ -649,7 +652,7 @@ void iteagle_ide_device::device_reset()
|
||||
{
|
||||
pci_device::device_reset();
|
||||
memset(m_ctrl_regs, 0, sizeof(m_ctrl_regs));
|
||||
m_ctrl_regs[0x10/4] = 0x00000000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM . Top 16 bits are compared to 0x3.
|
||||
m_ctrl_regs[0x10/4] = 0x00070000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM . Top 16 bits are compared to 0x3. Bit 0 might be lan chip present.
|
||||
memset(m_rtc_regs, 0, sizeof(m_rtc_regs));
|
||||
m_rtc_regs[0xa] = 0x20; // 32.768 MHz
|
||||
m_rtc_regs[0xb] = 0x02; // 24-hour format
|
||||
|
@ -63,10 +63,10 @@ private:
|
||||
std::string m_serial_str;
|
||||
UINT8 m_serial_idx;
|
||||
bool m_serial_data;
|
||||
UINT8 m_serial_com0[0x10];
|
||||
UINT8 m_serial_com1[0x10];
|
||||
UINT8 m_serial_com2[0x10];
|
||||
UINT8 m_serial_com3[0x10];
|
||||
UINT8 m_serial_com4[0x10];
|
||||
|
||||
UINT32 m_version;
|
||||
UINT32 m_seq_init;
|
||||
|
@ -2153,6 +2153,9 @@ uvcsp
|
||||
bridgec3
|
||||
vbrc
|
||||
vsc
|
||||
vscg
|
||||
vscfr
|
||||
vscsp
|
||||
csc
|
||||
fscc12
|
||||
fexcelv
|
||||
@ -2187,7 +2190,6 @@ van16 // 1991 Mephisto Vancouver 68000
|
||||
van32 // 1991 Mephisto Vancouver 68020
|
||||
gen32 // 1993 Mephisto Genius030 V4.00
|
||||
gen32_41 // 1993 Mephisto Genius030 V4.01
|
||||
gen32_oc // 1993 Mephisto Genius030 V4.01OC
|
||||
berlinp // 1994 Mephisto Berlin Pro 68020
|
||||
bpl32 // 1996 Mephisto Berlin Pro London Upgrade V5.00
|
||||
lond020 // 1996 Mephisto London 68020 32 Bit
|
||||
|
@ -134,6 +134,8 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
|
||||
{
|
||||
(*file)->type = SDLFILE_SOCKET;
|
||||
filerr = sdl_open_socket(path, openflags, file, filesize);
|
||||
if(filerr != FILERR_NONE && (*file)->socket != -1)
|
||||
close((*file)->socket);
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user