This commit is contained in:
Miodrag Milanovic 2016-01-29 11:49:45 +01:00
commit 1da83d27a7
28 changed files with 223 additions and 174 deletions

View File

@ -29,6 +29,7 @@ mov sreg, doesnot disable until next operation is executed
8086/8088 8086/8088
--------- ---------
"mov cs, " causes unconditional jump! "mov cs, " causes unconditional jump!
0xd6 is salc (sbb al,al) as all other intel x86-16 and -32 cpus
80C86/80C88 80C86/80C88
----------- -----------
@ -36,9 +37,10 @@ mov sreg, doesnot disable until next operation is executed
80186/80188 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 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 shift count anded with 0x1f
80188 80188
@ -52,6 +54,7 @@ although it is based on 80186 instruction set, some behaviours follow 8086
8080 emulation mode 8080 emulation mode
"mov cs, " ignored "mov cs, " ignored
shift count not anded (acts like 8086) shift count not anded (acts like 8086)
0xd6 is xlat alias
NEC 70116 (V30) NEC 70116 (V30)
--------------- ---------------
@ -69,11 +72,11 @@ no 8080 emulation mode
NEC V40 NEC V40
------- -------
pinout, integrated peripherals as 80186 pinout, integrated peripherals 8259,54,37 clones at nonpc compatible addresses
NEC V50 NEC V50
------- -------
pinout, integrated peripherals as 80188 pinout, integrated peripherals as v40
NEC V33? NEC V33?
-------- --------
@ -92,9 +95,9 @@ v30? emulation mode (without 8080 emulation mode)
80286 80286
----- -----
80186 with additional instructions 80186 with additional instructions but no peripherals
24 bit address bus, 24 bit address bus,
protected mode protected mode selector/descriptor
80386 and later 80386 and later
--------------- ---------------

View File

@ -2381,11 +2381,12 @@ static void execute_find(running_machine &machine, int ref, int params, const ch
for (int i = 2; i < params; i++) for (int i = 2; i < params; i++)
{ {
const char *pdata = param[i]; const char *pdata = param[i];
size_t pdatalen = strlen(pdata) - 1;
/* check for a string */ /* 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_to_find[data_count] = pdata[j];
data_size[data_count++] = 1; data_size[data_count++] = 1;

View File

@ -86,12 +86,12 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
text_buffer *text; text_buffer *text;
/* allocate memory for the text buffer object */ /* allocate memory for the text buffer object */
text = (text_buffer *)global_alloc(text_buffer); text = global_alloc_nothrow(text_buffer);
if (!text) if (!text)
return nullptr; return nullptr;
/* allocate memory for the buffer itself */ /* 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) if (!text->buffer)
{ {
global_free(text); global_free(text);
@ -99,7 +99,7 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines)
} }
/* allocate memory for the lines array */ /* 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) if (!text->lineoffs)
{ {
global_free_array(text->buffer); global_free_array(text->buffer);

View File

@ -161,29 +161,27 @@ image_error_t device_image_interface::set_image_filename(const char *filename)
zippath_parent(m_working_directory, filename); zippath_parent(m_working_directory, filename);
m_basename.assign(m_image_name); m_basename.assign(m_image_name);
int loc1 = m_image_name.find_last_of('\\'); size_t loc1 = m_image_name.find_last_of('\\');
int loc2 = m_image_name.find_last_of('/'); size_t loc2 = m_image_name.find_last_of('/');
int loc3 = m_image_name.find_last_of(':'); size_t loc3 = m_image_name.find_last_of(':');
int loc = MAX(loc1,MAX(loc2,loc3)); size_t loc = MAX(loc1,MAX(loc2, loc3));
if (loc!=-1) { if (loc != -1) {
if (loc == loc3) if (loc == loc3)
{ {
// temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart) // 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); m_basename = m_basename.substr(0, loc);
std::string tmpstr = std::string(m_basename); size_t tmploc = m_basename.find_last_of(':');
int tmploc = tmpstr.find_last_of(':'); m_basename = m_basename.substr(tmploc + 1, loc - tmploc);
m_basename = m_basename.substr(tmploc + 1,loc-tmploc);
} }
else 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 = ""; m_filetype = "";
loc = m_basename_noext.find_last_of('.'); loc = m_basename_noext.find_last_of('.');
if (loc!=-1) { if (loc != -1) {
m_basename_noext = m_basename_noext.substr(0,loc); m_basename_noext = m_basename_noext.substr(0, loc);
m_filetype = m_basename.assign(m_basename); m_filetype = m_basename.substr(loc + 1);
m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc);
} }
return IMAGE_ERROR_SUCCESS; return IMAGE_ERROR_SUCCESS;

View File

@ -1049,7 +1049,7 @@ void lua_engine::periodic_check()
osd_lock_acquire(lock); osd_lock_acquire(lock);
if (msg.ready == 1) { if (msg.ready == 1) {
lua_settop(m_lua_state, 0); 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 (incomplete(status)==0) /* cannot try to add lines? */
{ {
if (status == LUA_OK) status = docall(0, LUA_MULTRET); if (status == LUA_OK) status = docall(0, LUA_MULTRET);

View File

@ -1055,8 +1055,9 @@ int render_target::configured_view(const char *viewname, int targetindex, int nu
if (strcmp(viewname, "auto") != 0) if (strcmp(viewname, "auto") != 0)
{ {
// scan for a matching view name // 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)) 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; break;
} }

View File

@ -18,7 +18,7 @@ wav_file *wav_open(const char *filename, int sample_rate, int channels)
UINT16 align, temp16; UINT16 align, temp16;
/* allocate memory for the wav struct */ /* allocate memory for the wav struct */
wav = (wav_file *) global_alloc(wav_file); wav = global_alloc_nothrow(wav_file);
if (!wav) if (!wav)
return nullptr; return nullptr;

View File

@ -434,9 +434,9 @@ void ui_menu_crosshair::populate()
file_enumerator path(machine().options().crosshair_path()); file_enumerator path(machine().options().crosshair_path());
const osd_directory_entry *dir; const osd_directory_entry *dir;
/* reset search flags */ /* reset search flags */
int using_default = false; bool using_default = false;
int finished = false; bool finished = false;
int found = false; bool found = false;
/* if we are using the default, then we just need to find the first in the list */ /* if we are using the default, then we just need to find the first in the list */
if (*(settings.name) == 0) if (*(settings.name) == 0)

View File

@ -31,7 +31,7 @@ private:
// internal state // internal state
enum { VISIBLE_GAMES_IN_LIST = 15 }; enum { VISIBLE_GAMES_IN_LIST = 15 };
UINT8 m_error; UINT8 m_error;
UINT8 m_rerandomize; bool m_rerandomize;
char m_search[40]; char m_search[40];
int m_matchlist[VISIBLE_GAMES_IN_LIST]; int m_matchlist[VISIBLE_GAMES_IN_LIST];
std::vector<const game_driver *> m_driverlist; std::vector<const game_driver *> m_driverlist;

View File

@ -183,7 +183,8 @@ static inline int is_breakable_char(unicode_char ch)
CORE IMPLEMENTATION 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, 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, 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, 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_handler_param = 0;
m_single_step = false; m_single_step = false;
m_showfps = false; m_showfps = false;
m_showfps_end = false; m_showfps_end = 0;
m_show_profiler = false; m_show_profiler = false;
m_popup_text_end = 0; m_popup_text_end = 0;
m_use_natural_keyboard = false; 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; float mouse_y=-1,mouse_x=-1;
if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) { 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 // first draw the FPS counter
if (machine.ui().show_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, 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); JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr);
} }

View File

@ -584,7 +584,7 @@ void video_manager::postload()
// forward // 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 we're fast forwarding or paused, autoframeskip is disabled
if (m_fastforward || machine().paused()) if (m_fastforward || machine().paused())

View File

@ -100,7 +100,7 @@ private:
void postload(); void postload();
// effective value helpers // effective value helpers
int effective_autoframeskip() const; bool effective_autoframeskip() const;
int effective_frameskip() const; int effective_frameskip() const;
bool effective_throttle() const; bool effective_throttle() const;

View File

@ -27,7 +27,9 @@
// global allocation helpers -- use these instead of new and delete // global allocation helpers -- use these instead of new and delete
#define global_alloc(_type) new _type #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(_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(_ptr) do { delete _ptr; } while (0)
#define global_free_array(_ptr) do { delete[] _ptr; } while (0) #define global_free_array(_ptr) do { delete[] _ptr; } while (0)

View File

@ -36,16 +36,17 @@ public:
: fidelz80base_state(mconfig, type, tag), : fidelz80base_state(mconfig, type, tag),
m_6821pia(*this, "6821pia"), m_6821pia(*this, "6821pia"),
m_cart(*this, "cartslot"), m_cart(*this, "cartslot"),
m_speaker(*this, "speaker"), m_speaker(*this, "speaker")
m_irq_off(*this, "irq_off")
{ } { }
// devices/pointers // devices/pointers
optional_device<pia6821_device> m_6821pia; optional_device<pia6821_device> m_6821pia;
optional_device<generic_slot_device> m_cart; optional_device<generic_slot_device> m_cart;
optional_device<speaker_sound_device> m_speaker; 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 // model CSC
void csc_update_7442(); void csc_update_7442();
void csc_prepare_display(); void csc_prepare_display();
@ -65,8 +66,6 @@ public:
// model SC12 // model SC12
DECLARE_MACHINE_START(sc12); DECLARE_MACHINE_START(sc12);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge); 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_WRITE8_MEMBER(sc12_control_w);
DECLARE_READ8_MEMBER(sc12_input_r); 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 // TTL
WRITE8_MEMBER(fidel6502_state::sc12_control_w) WRITE8_MEMBER(fidel6502_state::sc12_control_w)
@ -571,8 +556,9 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz) MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(sc12_map) 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_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer
MCFG_TIMER_DRIVER_ADD("irq_off", fidel6502_state, irq_off) 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_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_sc12) MCFG_DEFAULT_LAYOUT(layout_fidel_sc12)
@ -595,7 +581,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fev, fidel6502_state ) static MACHINE_CONFIG_START( fev, fidel6502_state )
/* basic machine hardware */ /* 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_CPU_PROGRAM_MAP(fev_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) 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 */ /* 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( 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 )

View File

@ -598,7 +598,7 @@ PB.3 - violet wire
PB.4 - white wire (and TSI BUSY line) PB.4 - white wire (and TSI BUSY line)
PB.5 - selection jumper input (see below) PB.5 - selection jumper input (see below)
PB.6 - TSI start line PB.6 - TSI start line
PB.7 - TSI ROM D0 line PB.7 - TSI ROM A12 line
selection jumpers: selection jumpers:
@ -1070,7 +1070,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
{ {
// d0-d3: select digits // d0-d3: select digits
// d0-d7: select leds, input mux low bits // 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; m_led_select = data;
vsc_prepare_display(); vsc_prepare_display();
} }
@ -1081,7 +1081,8 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w)
READ8_MEMBER(fidelz80_state::vsc_pio_porta_r) READ8_MEMBER(fidelz80_state::vsc_pio_porta_r)
{ {
// d0-d7: multiplexed inputs // d0-d7: multiplexed inputs
return read_inputs(10); return read_inputs(11);
} }
READ8_MEMBER(fidelz80_state::vsc_pio_portb_r) READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
@ -1090,18 +1091,26 @@ READ8_MEMBER(fidelz80_state::vsc_pio_portb_r)
// d4: TSI BUSY line // d4: TSI BUSY line
ret |= (m_speech->busy_r()) ? 0 : 0x10; ret |= (m_speech->busy_r()) ? 0 : 0x10;
return ret; return ret;
} }
WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w) WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w)
{ {
// d0,d1: input mux highest bits // 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 // d6: TSI START line
m_speech->start_w(data >> 6 & 1); m_speech->start_w(data >> 6 & 1);
// d2: lower TSI volume // d2: lower TSI volume
m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0); 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_START("IN.4")
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED) PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("LEVEL") // factory setting PORT_START("LEVEL") // hardwired (VCC/GND?)
PORT_CONFNAME( 0x80, 0x00, "PPI.B.7: Maximum Levels" ) PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" )
PORT_CONFSETTING( 0x00, "10" ) PORT_CONFSETTING( 0x00, "10" ) // factory setting
PORT_CONFSETTING( 0x80, "3" ) PORT_CONFSETTING( 0x80, "3" )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( vcc ) static INPUT_PORTS_START( vcc )
PORT_INCLUDE( vcc_base ) PORT_INCLUDE( vcc_base )
PORT_START("IN.4") // not consumer accessible PORT_START("IN.4") // PCB jumpers, not consumer accessible
PORT_CONFNAME( 0x01, 0x00, "PCB Jumper: French" ) PORT_CONFNAME( 0x01, 0x00, "Language: French" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) ) 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) ) 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) ) 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x08, DEF_STR( On ) ) PORT_CONFSETTING( 0x08, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
@ -1326,7 +1335,7 @@ static INPUT_PORTS_START( vccfr )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
@ -1335,7 +1344,7 @@ static INPUT_PORTS_START( vccsp )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x02, DEF_STR( On ) ) PORT_CONFSETTING( 0x02, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
@ -1344,7 +1353,7 @@ static INPUT_PORTS_START( vccg )
PORT_INCLUDE( vcc ) PORT_INCLUDE( vcc )
PORT_MODIFY("IN.4") 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( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x04, DEF_STR( On ) ) PORT_CONFSETTING( 0x04, DEF_STR( On ) )
INPUT_PORTS_END 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(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(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S)
PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED) 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 INPUT_PORTS_END
static INPUT_PORTS_START( vbrc ) static INPUT_PORTS_START( vbrc )
@ -1582,6 +1598,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz 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) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1705,8 +1722,39 @@ ROM_START( vsc )
ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) ) ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) )
ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) ) 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_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 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, 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, 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( 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 ) COMP( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )

View File

@ -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( 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( 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 )

View File

@ -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( 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( 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( 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 ) 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( 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( 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, 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( 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, 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( 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( 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 ) CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )

View File

@ -179,7 +179,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore01, iteagle ) static MACHINE_CONFIG_DERIVED( gtfore01, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) 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_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7) MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -187,7 +187,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore02, iteagle ) static MACHINE_CONFIG_DERIVED( gtfore02, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201) MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201)
MCFG_DEVICE_MODIFY(":pci:0a.0") MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7) MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -215,28 +215,28 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gtfore06, iteagle ) static MACHINE_CONFIG_DERIVED( gtfore06, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d) MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d)
MCFG_DEVICE_MODIFY(":pci:0a.0") MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9); MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9);
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( carnking, iteagle ) static MACHINE_CONFIG_DERIVED( carnking, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) 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_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9) MCFG_ITEAGLE_EEPROM_INIT(0x0a01, 0x9)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbhsc, iteagle ) static MACHINE_CONFIG_DERIVED( bbhsc, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) 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_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0600, 0x9) MCFG_ITEAGLE_EEPROM_INIT(0x0000, 0x7)
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle ) static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle )
MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704) MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704)
MCFG_DEVICE_MODIFY(":pci:0a.0") MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9) MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -331,7 +331,7 @@ static INPUT_PORTS_START( virtpool )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( bbhcotw ) static INPUT_PORTS_START( bbh )
PORT_INCLUDE( iteagle ) PORT_INCLUDE( iteagle )
PORT_MODIFY("IN1") 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( 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( 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( 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( 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 ) 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, 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( 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( 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( 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, bbhcotw, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups 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

View File

@ -15,7 +15,6 @@
Vancouver 68020 12Mhz Vancouver 68020 12Mhz
Genius 68030 V4.00 33.333 Mhz Genius 68030 V4.00 33.333 Mhz
Genius 68030 V4.01 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 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) 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) 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) 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 // 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(); UINT8 *rom = memregion("maincpu")->base();
if(rom[0x870] == 0x0c && rom[0x871] == 0x78) { if(rom[0x870] == 0x0c && rom[0x871] == 0x78) {
if (!strcmp(machine().system().name,"gen32_oc")) { rom[0x870] = 0x38;
rom[0x870] = 0x6c;
} else {
rom[0x870] = 0x38;
}
} }
} }
@ -1692,15 +1687,6 @@ static MACHINE_CONFIG_START( gen32, polgar_state )
MCFG_NVRAM_ADD_0FILL("nvram") 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 MACHINE_CONFIG_END
static MACHINE_CONFIG_START( bpl32, polgar_state ) 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_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c))
ROM_END 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_START( berlinp )
ROM_REGION32_BE( 0x40000, "maincpu", 0 ) ROM_REGION32_BE( 0x40000, "maincpu", 0 )
ROM_LOAD("berlinp.bin", 0x00000, 0x40000,CRC(82FBAF6E) SHA1(729B7CEF3DFAECC4594A6178FC4BA6015AFA6202)) 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( 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, 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_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( 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, 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 ) 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 )

View File

@ -70,21 +70,32 @@ WRITE16_MEMBER(overdriv_state::eeprom_w)
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline) 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; int scanline = param;
/* TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) */ m_fake_timer ++;
/* 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 // 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); 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); m_maincpu->set_input_line(5, HOLD_LINE);
}
} }
INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt) INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt)
{ {
// this doesn't get turned on until the irq has happened? wrong irq? // this doesn't get turned on until the irq has happened? wrong irq?
// if (m_k053246->k053246_is_irq_enabled()) if (m_k053246->k053246_is_irq_enabled())
m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong 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) 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) WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w)
{ {
m_subcpu->set_input_line(5, HOLD_LINE); // likely wrong 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) 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 ) 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) AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w)
ADDRESS_MAP_END ADDRESS_MAP_END
// HACK ALERT #ifdef UNUSED_FUNCTION
WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w )
{ {
m_k053246->k053246_word_w(space,offset,data,mem_mask); 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); //printf("%02x %04x %04x\n", offset, data, mem_mask);
} }
#endif
static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state ) static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM 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(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(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(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(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(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(0x200000, 0x203fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_RANGE(0x208000, 0x20bfff) AM_RAM
AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r)
AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r) AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r)
ADDRESS_MAP_END 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 ) 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(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_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) AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write)
@ -222,7 +243,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( overdriv ) static INPUT_PORTS_START( overdriv )
PORT_START("INPUTS") 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( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -297,10 +318,7 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state )
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59) MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4,384,0,305,264,0,224)
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_UPDATE_DRIVER(overdriv_state, screen_update_overdriv) MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
@ -475,6 +493,6 @@ ROM_START( overdrivb )
ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) )
ROM_END 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, 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 ) 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 ) 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?

View File

@ -254,7 +254,10 @@ MACHINE_CONFIG_END
/* ROM definition */ /* ROM definition */
ROM_START( pulsarlb ) ROM_START( pulsarlb )
ROM_REGION( 0x10800, "maincpu", ROMREGION_ERASEFF ) 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 ROM_END
/* Driver */ /* Driver */

View File

@ -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( 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( 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_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) 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_REQUIRES_ARTWORK ) 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_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 ) COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK )

View File

@ -25,7 +25,7 @@ public:
// devices/pointers // devices/pointers
required_device<cpu_device> m_maincpu; 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_device<s14001a_device> m_speech;
optional_region_ptr<UINT8> m_speech_rom; optional_region_ptr<UINT8> m_speech_rom;

View File

@ -24,7 +24,6 @@ public:
m_k053246(*this, "k053246"), m_k053246(*this, "k053246"),
m_k053251(*this, "k053251"), m_k053251(*this, "k053251"),
m_k053252(*this, "k053252"), m_k053252(*this, "k053252"),
m_sprram(*this, "sprram"),
m_screen(*this, "screen") m_screen(*this, "screen")
{ } { }
@ -45,13 +44,13 @@ public:
required_device<k053247_device> m_k053246; required_device<k053247_device> m_k053246;
required_device<k053251_device> m_k053251; required_device<k053251_device> m_k053251;
required_device<k053252_device> m_k053252; required_device<k053252_device> m_k053252;
required_shared_ptr<UINT16> m_sprram;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
DECLARE_WRITE16_MEMBER(eeprom_w); DECLARE_WRITE16_MEMBER(eeprom_w);
DECLARE_WRITE16_MEMBER(cpuA_ctrl_w); DECLARE_WRITE16_MEMBER(cpuA_ctrl_w);
DECLARE_READ16_MEMBER(cpuB_ctrl_r); DECLARE_READ16_MEMBER(cpuB_ctrl_r);
DECLARE_WRITE16_MEMBER(cpuB_ctrl_w); DECLARE_WRITE16_MEMBER(cpuB_ctrl_w);
DECLARE_WRITE16_MEMBER(overdriv_soundirq_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_x_w);
DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w); DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w);
virtual void machine_start() override; virtual void machine_start() override;
@ -59,8 +58,8 @@ public:
UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(cpuB_interrupt); INTERRUPT_GEN_MEMBER(cpuB_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline); TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline);
int m_fake_timer;
DECLARE_WRITE16_MEMBER( overdriv_k053246_word_w );
K051316_CB_MEMBER(zoom_callback_1); K051316_CB_MEMBER(zoom_callback_1);
K051316_CB_MEMBER(zoom_callback_2); K051316_CB_MEMBER(zoom_callback_2);
K053246_CB_MEMBER(sprite_callback); K053246_CB_MEMBER(sprite_callback);

View File

@ -4,6 +4,7 @@
#include "coreutil.h" #include "coreutil.h"
#define LOG_FPGA (0) #define LOG_FPGA (0)
#define LOG_SERIAL (0)
#define LOG_RTC (0) #define LOG_RTC (0)
#define LOG_RAM (0) #define LOG_RAM (0)
#define LOG_EEPROM (0) #define LOG_EEPROM (0)
@ -80,14 +81,14 @@ void iteagle_fpga_device::device_reset()
m_serial_str.clear(); m_serial_str.clear();
m_serial_idx = 0; m_serial_idx = 0;
m_serial_data = false; 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_com1, 0, sizeof(m_serial_com1));
memset(m_serial_com2, 0, sizeof(m_serial_com2)); memset(m_serial_com2, 0, sizeof(m_serial_com2));
memset(m_serial_com3, 0, sizeof(m_serial_com3)); 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_com1[0] = 0x2c;
m_serial_com2[0] = 0x2c; m_serial_com2[0] = 0x2c;
m_serial_com3[0] = 0x2c; m_serial_com3[0] = 0x2c;
m_serial_com4[0] = 0x2c;
} }
void iteagle_fpga_device::update_sequence(UINT32 data) 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) 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 & 0x20)>>2) | ((m_seq & 0x40)>>4) | ((m_seq & 0x80)>>6) | ((m_seq & 0x100)>>8);
m_seq = (m_seq>>8) | ((feed&0xff)<<16); 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); m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
} else if (data & 0x2) { } else if (data & 0x2) {
val1 = ((m_seq & 0x2)<<1) | ((m_seq & 0x4)>>1) | ((m_seq & 0x8)>>3); 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_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_seq = (m_seq>>6) | ((feed&0x3f)<<18);
m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF); m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
} else { } 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); logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
break; break;
case 0x0c/4: // 1d = modem byte 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) { if (ACCESSING_BITS_0_15) {
m_serial_data = false; m_serial_data = false;
m_serial_idx = 0; 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); logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
break; break;
case 0x1c/4: // 1d = modem byte 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) { if (ACCESSING_BITS_0_15) {
m_serial_data = false; m_serial_data = false;
m_serial_idx = 0; m_serial_idx = 0;
@ -233,8 +232,8 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if ((m_version & 0xff00) == 0x0200) if ((m_version & 0xff00) == 0x0200)
update_sequence_eg1(data & 0xff); update_sequence_eg1(data & 0xff);
else else
// ATMEL Chip access. Returns version id's when bit 7 is set. // ATMEL Chip access. Returns version id's when bit 7 is set.
update_sequence(data & 0xff); update_sequence(data & 0xff);
if (0 && LOG_FPGA) if (0 && LOG_FPGA)
logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask); 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)) { if (ACCESSING_BITS_24_31 && (data & 0x01000000)) {
m_cpu->set_input_line(m_irq_num, CLEAR_LINE); m_cpu->set_input_line(m_irq_num, CLEAR_LINE);
// Not sure what value to use here, needed for lightgun // 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) 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); logerror("%s:fpga_w offset %04X = %08X & %08X Clearing interrupt(%i)\n", machine().describe_context(), offset*4, data, mem_mask, m_irq_num);
} else { } else {
@ -269,7 +268,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) { if (!m_serial_data) {
m_serial_idx = data&0xf; m_serial_idx = data&0xf;
} else { } else {
m_serial_com1[m_serial_idx] = data&0xff; m_serial_com0[m_serial_idx] = data&0xff;
m_serial_idx = 0; m_serial_idx = 0;
} }
m_serial_data = !m_serial_data; m_serial_data = !m_serial_data;
@ -278,29 +277,31 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) { if (!m_serial_data) {
m_serial_idx = (data&0x0f00)>>8; m_serial_idx = (data&0x0f00)>>8;
} else { } 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; m_serial_data = !m_serial_data;
} }
if (ACCESSING_BITS_16_23) { if (ACCESSING_BITS_16_23) {
if (m_serial_str.size()==0) if (m_serial_str.size()==0)
m_serial_str = "com1: "; m_serial_str = "com0: ";
m_serial_str += (data>>16)&0xff; m_serial_str += (data>>16)&0xff;
if (((data>>16)&0xff)==0xd) { 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()); osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear(); m_serial_str.clear();
} }
} }
if (ACCESSING_BITS_24_31) { if (ACCESSING_BITS_24_31) {
if (m_serial_str.size()==0) if (m_serial_str.size()==0)
m_serial_str = "com2: "; m_serial_str = "com1: ";
m_serial_str += (data>>24)&0xff; m_serial_str += (data>>24)&0xff;
if (1 || ((data>>24)&0xff)==0xd) { 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()); osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear(); 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); logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
break; break;
case 0x1c/4: case 0x1c/4:
@ -308,7 +309,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) { if (!m_serial_data) {
m_serial_idx = data&0xf; m_serial_idx = data&0xf;
} else { } else {
m_serial_com3[m_serial_idx] = data&0xff; m_serial_com2[m_serial_idx] = data&0xff;
m_serial_idx = 0; m_serial_idx = 0;
} }
m_serial_data = !m_serial_data; m_serial_data = !m_serial_data;
@ -317,24 +318,26 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w )
if (!m_serial_data) { if (!m_serial_data) {
m_serial_idx = (data&0x0f00)>>8; m_serial_idx = (data&0x0f00)>>8;
} else { } 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; m_serial_data = !m_serial_data;
} }
if (ACCESSING_BITS_16_23) { if (ACCESSING_BITS_16_23) {
if (m_serial_str.size()==0) if (m_serial_str.size()==0)
m_serial_str = "com3: "; m_serial_str = "com2: ";
m_serial_str += (data>>16)&0xff; m_serial_str += (data>>16)&0xff;
if (1 || ((data>>16)&0xff)==0xd) { 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()); osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear(); m_serial_str.clear();
} }
} }
if (ACCESSING_BITS_24_31) { if (ACCESSING_BITS_24_31) {
if (m_serial_str.size()==0) if (m_serial_str.size()==0)
m_serial_str = "com4: "; m_serial_str = "com3: ";
m_serial_str += (data>>24)&0xff; m_serial_str += (data>>24)&0xff;
if (((data>>24)&0xff)==0xd) { 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()); osd_printf_debug("%s\n", m_serial_str.c_str());
m_serial_str.clear(); m_serial_str.clear();
} }
@ -649,7 +652,7 @@ void iteagle_ide_device::device_reset()
{ {
pci_device::device_reset(); pci_device::device_reset();
memset(m_ctrl_regs, 0, sizeof(m_ctrl_regs)); 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)); memset(m_rtc_regs, 0, sizeof(m_rtc_regs));
m_rtc_regs[0xa] = 0x20; // 32.768 MHz m_rtc_regs[0xa] = 0x20; // 32.768 MHz
m_rtc_regs[0xb] = 0x02; // 24-hour format m_rtc_regs[0xb] = 0x02; // 24-hour format

View File

@ -63,10 +63,10 @@ private:
std::string m_serial_str; std::string m_serial_str;
UINT8 m_serial_idx; UINT8 m_serial_idx;
bool m_serial_data; bool m_serial_data;
UINT8 m_serial_com0[0x10];
UINT8 m_serial_com1[0x10]; UINT8 m_serial_com1[0x10];
UINT8 m_serial_com2[0x10]; UINT8 m_serial_com2[0x10];
UINT8 m_serial_com3[0x10]; UINT8 m_serial_com3[0x10];
UINT8 m_serial_com4[0x10];
UINT32 m_version; UINT32 m_version;
UINT32 m_seq_init; UINT32 m_seq_init;

View File

@ -2153,6 +2153,9 @@ uvcsp
bridgec3 bridgec3
vbrc vbrc
vsc vsc
vscg
vscfr
vscsp
csc csc
fscc12 fscc12
fexcelv fexcelv
@ -2187,7 +2190,6 @@ van16 // 1991 Mephisto Vancouver 68000
van32 // 1991 Mephisto Vancouver 68020 van32 // 1991 Mephisto Vancouver 68020
gen32 // 1993 Mephisto Genius030 V4.00 gen32 // 1993 Mephisto Genius030 V4.00
gen32_41 // 1993 Mephisto Genius030 V4.01 gen32_41 // 1993 Mephisto Genius030 V4.01
gen32_oc // 1993 Mephisto Genius030 V4.01OC
berlinp // 1994 Mephisto Berlin Pro 68020 berlinp // 1994 Mephisto Berlin Pro 68020
bpl32 // 1996 Mephisto Berlin Pro London Upgrade V5.00 bpl32 // 1996 Mephisto Berlin Pro London Upgrade V5.00
lond020 // 1996 Mephisto London 68020 32 Bit lond020 // 1996 Mephisto London 68020 32 Bit

View File

@ -134,6 +134,8 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64
{ {
(*file)->type = SDLFILE_SOCKET; (*file)->type = SDLFILE_SOCKET;
filerr = sdl_open_socket(path, openflags, file, filesize); filerr = sdl_open_socket(path, openflags, file, filesize);
if(filerr != FILERR_NONE && (*file)->socket != -1)
close((*file)->socket);
goto error; goto error;
} }