From 60965715b2f26080f46f68c93ef97774741ef8f4 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Tue, 19 Apr 2011 06:57:57 +0000 Subject: [PATCH] Fix ldplayer, and convert the driver to modern style. --- .gitattributes | 2 +- src/ldplayer/ldpdriv.c | 44 --- src/ldplayer/ldplayer.c | 576 +++++++++++++++++++++----------------- src/ldplayer/ldplayer.lst | 42 +++ src/ldplayer/ldplayer.mak | 1 - 5 files changed, 356 insertions(+), 309 deletions(-) delete mode 100644 src/ldplayer/ldpdriv.c create mode 100644 src/ldplayer/ldplayer.lst diff --git a/.gitattributes b/.gitattributes index d714193530d..44ce5eebc32 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1282,8 +1282,8 @@ src/emu/video/voodoo.h svneol=native#text/plain src/emu/watchdog.c svneol=native#text/plain src/emu/watchdog.h svneol=native#text/plain src/ldplayer/layout/pr8210.lay svneol=native#text/plain -src/ldplayer/ldpdriv.c svneol=native#text/plain src/ldplayer/ldplayer.c svneol=native#text/plain +src/ldplayer/ldplayer.lst svneol=native#text/plain src/ldplayer/ldplayer.mak svneol=native#text/plain src/lib/expat/ascii.h svneol=native#text/plain src/lib/expat/asciitab.h svneol=native#text/plain diff --git a/src/ldplayer/ldpdriv.c b/src/ldplayer/ldpdriv.c deleted file mode 100644 index 8142ffc7bb9..00000000000 --- a/src/ldplayer/ldpdriv.c +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - - ldpdriv.c - - mamedriv.c substitute file for "ldplayer" MAME builds. - - Copyright Nicola Salmoria and the MAME Team. - Visit http://mamedev.org for licensing and usage restrictions. - - The list of used drivers. Drivers have to be included here to be recognized - by the executable. - - To save some typing, we use a hack here. This file is recursively #included - twice, with different definitions of the DRIVER() macro. The first one - declares external references to the drivers; the second one builds an array - storing all the drivers. - -******************************************************************************/ - -#include "emu.h" - -#ifndef DRIVER_RECURSIVE - -#define DRIVER_RECURSIVE - -/* step 1: declare all external references */ -#define DRIVER(NAME) extern game_driver driver_##NAME; -#include "ldpdriv.c" - -/* step 2: define the drivers[] array */ -#undef DRIVER -#define DRIVER(NAME) &driver_##NAME, -const game_driver * const drivers[] = -{ -#include "ldpdriv.c" - 0 /* end of array */ -}; - -#else /* DRIVER_RECURSIVE */ - - DRIVER( ldv1000 ) /* Pioneer LD-V1000 */ - DRIVER( pr8210 ) /* Pioneer PR-8210 */ - -#endif /* DRIVER_RECURSIVE */ diff --git a/src/ldplayer/ldplayer.c b/src/ldplayer/ldplayer.c index 467a02bfa6c..ec47c00d49b 100644 --- a/src/ldplayer/ldplayer.c +++ b/src/ldplayer/ldplayer.c @@ -26,53 +26,130 @@ * *************************************/ -enum -{ - CMD_SCAN_REVERSE, - CMD_STEP_REVERSE, - CMD_SLOW_REVERSE, - CMD_FAST_REVERSE, - CMD_SCAN_FORWARD, - CMD_STEP_FORWARD, - CMD_SLOW_FORWARD, - CMD_FAST_FORWARD, - CMD_PLAY, - CMD_PAUSE, - CMD_FRAME_TOGGLE, - CMD_CHAPTER_TOGGLE, - CMD_CH1_TOGGLE, - CMD_CH2_TOGGLE, - CMD_0, - CMD_1, - CMD_2, - CMD_3, - CMD_4, - CMD_5, - CMD_6, - CMD_7, - CMD_8, - CMD_9, - CMD_SEARCH -}; - - - /************************************* * * Globals * *************************************/ -static astring filename; +class ldplayer_state : public driver_device +{ +public: + // construction/destruction + ldplayer_state(running_machine &machine, const driver_device_config_base &config) + : driver_device(machine, config), + m_last_controls(0), + m_playing(false), + m_laserdisc(*this, "laserdisc") { } -static input_port_value last_controls; -static UINT8 playing; + // callback hook + static chd_file *get_disc_static(device_t *device) { return device->machine().driver_data()->get_disc(); } -static emu_timer *pr8210_bit_timer; -static UINT32 pr8210_command_buffer_in, pr8210_command_buffer_out; -static UINT8 pr8210_command_buffer[10]; +protected: + // device overrides + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual void machine_start(); + virtual void machine_reset(); -static void (*execute_command)(device_t *laserdisc, int command); + // internal helpers + chd_file *get_disc(); + void process_commands(); + + // derived classes + virtual void execute_command(int command) { assert(false); } + + // timer IDs + enum + { + TIMER_ID_AUTOPLAY, + TIMER_ID_VSYNC_UPDATE + }; + + // commands + enum + { + CMD_SCAN_REVERSE, + CMD_STEP_REVERSE, + CMD_SLOW_REVERSE, + CMD_FAST_REVERSE, + CMD_SCAN_FORWARD, + CMD_STEP_FORWARD, + CMD_SLOW_FORWARD, + CMD_FAST_FORWARD, + CMD_PLAY, + CMD_PAUSE, + CMD_FRAME_TOGGLE, + CMD_CHAPTER_TOGGLE, + CMD_CH1_TOGGLE, + CMD_CH2_TOGGLE, + CMD_0, + CMD_1, + CMD_2, + CMD_3, + CMD_4, + CMD_5, + CMD_6, + CMD_7, + CMD_8, + CMD_9, + CMD_SEARCH + }; + + // internal state + astring m_filename; + input_port_value m_last_controls; + bool m_playing; + required_device m_laserdisc; +}; + + +class pr8210_state : public ldplayer_state +{ +public: + // construction/destruction + pr8210_state(running_machine &machine, const driver_device_config_base &config) + : ldplayer_state(machine, config), + m_bit_timer(timer_alloc(TIMER_ID_BIT)), + m_command_buffer_in(0), + m_command_buffer_out(0) { } + +protected: + // device overrides + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual void machine_reset(); + + // command execution hook + virtual void execute_command(int command); + + // internal helpers + inline void add_command(UINT8 command); + + // timer IDs + enum + { + TIMER_ID_BIT = 100, + TIMER_ID_BIT_OFF + }; + + // internal state + emu_timer *m_bit_timer; + UINT32 m_command_buffer_in; + UINT32 m_command_buffer_out; + UINT8 m_command_buffer[10]; +}; + + +class ldv1000_state : public ldplayer_state +{ +public: + // construction/destruction + ldv1000_state(running_machine &machine, const driver_device_config_base &config) + : ldplayer_state(machine, config) { } + +protected: + // command execution hook + virtual void execute_command(int command); +}; @@ -82,62 +159,52 @@ static void (*execute_command)(device_t *laserdisc, int command); * *************************************/ -static void free_string(running_machine &machine) +chd_file *ldplayer_state::get_disc() { -} + // open a path to the ROMs and find the first CHD file + file_enumerator path(machine().options().media_path()); - -static chd_file *get_disc(device_t *device) -{ + // iterate while we get new objects + const osd_directory_entry *dir; emu_file *image_file = NULL; chd_file *image_chd = NULL; - - /* open a path to the ROMs and find the first CHD file */ - file_enumerator path(device->machine().options().media_path()); - const osd_directory_entry *dir; - - /* iterate while we get new objects */ while ((dir = path.next()) != NULL) { int length = strlen(dir->name); - /* look for files ending in .chd */ + // look for files ending in .chd if (length > 4 && dir->name[length - 4] == '.' && tolower(dir->name[length - 3]) == 'c' && tolower(dir->name[length - 2]) == 'h' && tolower(dir->name[length - 1]) == 'd') { - file_error filerr; - chd_error chderr; - - /* open the file itself via our search path */ - image_file = auto_alloc(device->machine(), emu_file(device->machine().options().media_path(), OPEN_FLAG_READ)); - filerr = image_file->open(dir->name); + // open the file itself via our search path + image_file = auto_alloc(machine(), emu_file(machine().options().media_path(), OPEN_FLAG_READ)); + file_error filerr = image_file->open(dir->name); if (filerr == FILERR_NONE) { - /* try to open the CHD */ - chderr = chd_open_file(*image_file, CHD_OPEN_READ, NULL, &image_chd); + // try to open the CHD + chd_error chderr = chd_open_file(*image_file, CHD_OPEN_READ, NULL, &image_chd); if (chderr == CHDERR_NONE) { - set_disk_handle(device->machine(), "laserdisc", *image_file, *image_chd); - filename.cpy(dir->name); - device->machine().add_notifier(MACHINE_NOTIFY_EXIT, free_string); + set_disk_handle(machine(), "laserdisc", *image_file, *image_chd); + m_filename.cpy(dir->name); break; } } - /* close the file on failure */ - auto_free(device->machine(), image_file); + // close the file on failure + auto_free(machine(), image_file); image_file = NULL; } } - /* if we failed, pop a message and exit */ + // if we failed, pop a message and exit if (image_file == NULL) - fatalerror("No valid image file found!\n"); + throw emu_fatalerror("No valid image file found!\n"); - return get_disk_handle(device->machine(), "laserdisc"); + return get_disk_handle(machine(), "laserdisc"); } @@ -148,119 +215,119 @@ static chd_file *get_disc(device_t *device) * *************************************/ -static void process_commands(device_t *laserdisc) +void ldplayer_state::process_commands() { - input_port_value controls = input_port_read(laserdisc->machine(), "controls"); + input_port_value controls = input_port_read(machine(), "controls"); int number; - /* step backwards */ - if (!(last_controls & 0x01) && (controls & 0x01)) - (*execute_command)(laserdisc, CMD_STEP_REVERSE); + // step backwards + if (!(m_last_controls & 0x01) && (controls & 0x01)) + execute_command(CMD_STEP_REVERSE); - /* step forwards */ - if (!(last_controls & 0x02) && (controls & 0x02)) - (*execute_command)(laserdisc, CMD_STEP_FORWARD); + // step forwards + if (!(m_last_controls & 0x02) && (controls & 0x02)) + execute_command(CMD_STEP_FORWARD); - /* scan backwards */ + // scan backwards if (controls & 0x04) - (*execute_command)(laserdisc, CMD_SCAN_REVERSE); + execute_command(CMD_SCAN_REVERSE); - /* scan forwards */ + // scan forwards if (controls & 0x08) - (*execute_command)(laserdisc, CMD_SCAN_FORWARD); + execute_command(CMD_SCAN_FORWARD); - /* slow backwards */ - if (!(last_controls & 0x10) && (controls & 0x10)) - (*execute_command)(laserdisc, CMD_SLOW_REVERSE); + // slow backwards + if (!(m_last_controls & 0x10) && (controls & 0x10)) + execute_command(CMD_SLOW_REVERSE); - /* slow forwards */ - if (!(last_controls & 0x20) && (controls & 0x20)) - (*execute_command)(laserdisc, CMD_SLOW_FORWARD); + // slow forwards + if (!(m_last_controls & 0x20) && (controls & 0x20)) + execute_command(CMD_SLOW_FORWARD); - /* fast backwards */ + // fast backwards if (controls & 0x40) - (*execute_command)(laserdisc, CMD_FAST_REVERSE); + execute_command(CMD_FAST_REVERSE); - /* fast forwards */ + // fast forwards if (controls & 0x80) - (*execute_command)(laserdisc, CMD_FAST_FORWARD); + execute_command(CMD_FAST_FORWARD); - /* play/pause */ - if (!(last_controls & 0x100) && (controls & 0x100)) + // play/pause + if (!(m_last_controls & 0x100) && (controls & 0x100)) { - playing = !playing; - (*execute_command)(laserdisc, playing ? CMD_PLAY : CMD_PAUSE); + m_playing = !m_playing; + execute_command(m_playing ? CMD_PLAY : CMD_PAUSE); } - /* toggle frame display */ - if (!(last_controls & 0x200) && (controls & 0x200)) - (*execute_command)(laserdisc, CMD_FRAME_TOGGLE); + // toggle frame display + if (!(m_last_controls & 0x200) && (controls & 0x200)) + execute_command(CMD_FRAME_TOGGLE); - /* toggle chapter display */ - if (!(last_controls & 0x400) && (controls & 0x400)) - (*execute_command)(laserdisc, CMD_CHAPTER_TOGGLE); + // toggle chapter display + if (!(m_last_controls & 0x400) && (controls & 0x400)) + execute_command(CMD_CHAPTER_TOGGLE); - /* toggle left channel */ - if (!(last_controls & 0x800) && (controls & 0x800)) - (*execute_command)(laserdisc, CMD_CH1_TOGGLE); + // toggle left channel + if (!(m_last_controls & 0x800) && (controls & 0x800)) + execute_command(CMD_CH1_TOGGLE); - /* toggle right channel */ - if (!(last_controls & 0x1000) && (controls & 0x1000)) - (*execute_command)(laserdisc, CMD_CH2_TOGGLE); + // toggle right channel + if (!(m_last_controls & 0x1000) && (controls & 0x1000)) + execute_command(CMD_CH2_TOGGLE); - /* numbers */ + // numbers for (number = 0; number < 10; number++) - if (!(last_controls & (0x10000 << number)) && (controls & (0x10000 << number))) - (*execute_command)(laserdisc, CMD_0 + number); + if (!(m_last_controls & (0x10000 << number)) && (controls & (0x10000 << number))) + execute_command(CMD_0 + number); - /* enter */ - if (!(last_controls & 0x4000000) && (controls & 0x4000000)) - (*execute_command)(laserdisc, CMD_SEARCH); + // enter + if (!(m_last_controls & 0x4000000) && (controls & 0x4000000)) + execute_command(CMD_SEARCH); - last_controls = controls; + m_last_controls = controls; } -static TIMER_CALLBACK( vsync_update ) +void ldplayer_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - device_t *laserdisc = machine.m_devicelist.first(LASERDISC); - int vblank_scanline; - attotime target; + switch (id) + { + case TIMER_ID_VSYNC_UPDATE: + { + // handle commands + if (param == 0) + process_commands(); - /* handle commands */ - if (!param) - process_commands(laserdisc); - - /* set a timer to go off on the next VBLANK */ - vblank_scanline = machine.primary_screen->visible_area().max_y + 1; - target = machine.primary_screen->time_until_pos(vblank_scanline); - machine.scheduler().timer_set(target, FUNC(vsync_update)); + // set a timer to go off on the next VBLANK + int vblank_scanline = machine().primary_screen->visible_area().max_y + 1; + attotime target = machine().primary_screen->time_until_pos(vblank_scanline); + timer_set(target, TIMER_ID_VSYNC_UPDATE); + break; + } + + case TIMER_ID_AUTOPLAY: + // start playing + execute_command(CMD_PLAY); + m_playing = true; + break; + } } -static MACHINE_START( ldplayer ) +void ldplayer_state::machine_start() { - vsync_update(machine, NULL, 1); + // start the vsync timer going + timer_set(attotime::zero, TIMER_ID_VSYNC_UPDATE, 1); } -static TIMER_CALLBACK( autoplay ) +void ldplayer_state::machine_reset() { - device_t *laserdisc = machine.m_devicelist.first(LASERDISC); + // set up a timer to start playing immediately + timer_set(attotime::zero, TIMER_ID_AUTOPLAY); - /* start playing */ - (*execute_command)(laserdisc, CMD_PLAY); - playing = TRUE; -} - - -static MACHINE_RESET( ldplayer ) -{ - /* set up a timer to start playing immediately */ - machine.scheduler().timer_set(attotime::zero, FUNC(autoplay)); - - /* indicate the name of the file we opened */ - popmessage("Opened %s\n", filename.cstr()); + // indicate the name of the file we opened + popmessage("Opened %s\n", m_filename.cstr()); } @@ -271,153 +338,152 @@ static MACHINE_RESET( ldplayer ) * *************************************/ -INLINE void pr8210_add_command(UINT8 command) +void pr8210_state::add_command(UINT8 command) { - pr8210_command_buffer[pr8210_command_buffer_in++ % ARRAY_LENGTH(pr8210_command_buffer)] = (command & 0x1f) | 0x20; - pr8210_command_buffer[pr8210_command_buffer_in++ % ARRAY_LENGTH(pr8210_command_buffer)] = 0x00 | 0x20; + m_command_buffer[m_command_buffer_in++ % ARRAY_LENGTH(m_command_buffer)] = (command & 0x1f) | 0x20; + m_command_buffer[m_command_buffer_in++ % ARRAY_LENGTH(m_command_buffer)] = 0x00 | 0x20; } -static TIMER_CALLBACK( pr8210_bit_off_callback ) +void pr8210_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - device_t *laserdisc = (device_t *)ptr; - - /* deassert the control line */ - laserdisc_line_w(laserdisc, LASERDISC_LINE_CONTROL, CLEAR_LINE); -} - - -static TIMER_CALLBACK( pr8210_bit_callback ) -{ - attotime duration = attotime::from_msec(30); - device_t *laserdisc = (device_t *)ptr; - UINT8 bitsleft = param >> 16; - UINT8 data = param; - - /* if we have bits, process */ - if (bitsleft != 0) + switch (id) { - /* assert the line and set a timer for deassertion */ - laserdisc_line_w(laserdisc, LASERDISC_LINE_CONTROL, ASSERT_LINE); - machine.scheduler().timer_set(attotime::from_usec(250), FUNC(pr8210_bit_off_callback), 0, ptr); + case TIMER_ID_BIT: + { + attotime duration = attotime::from_msec(30); + UINT8 bitsleft = param >> 16; + UINT8 data = param; - /* space 0 bits apart by 1msec, and 1 bits by 2msec */ - duration = attotime::from_msec((data & 0x80) ? 2 : 1); - data <<= 1; - bitsleft--; + // if we have bits, process + if (bitsleft != 0) + { + // assert the line and set a timer for deassertion + laserdisc_line_w(m_laserdisc, LASERDISC_LINE_CONTROL, ASSERT_LINE); + timer_set(attotime::from_usec(250), TIMER_ID_BIT_OFF); + + // space 0 bits apart by 1msec, and 1 bits by 2msec + duration = attotime::from_msec((data & 0x80) ? 2 : 1); + data <<= 1; + bitsleft--; + } + + // if we're out of bits, queue up the next command + else if (bitsleft == 0 && m_command_buffer_in != m_command_buffer_out) + { + data = m_command_buffer[m_command_buffer_out++ % ARRAY_LENGTH(m_command_buffer)]; + bitsleft = 12; + } + m_bit_timer->adjust(duration, (bitsleft << 16) | data); + break; + } + + // deassert the control line + case TIMER_ID_BIT_OFF: + laserdisc_line_w(m_laserdisc, LASERDISC_LINE_CONTROL, CLEAR_LINE); + break; + + // others to the parent class + default: + ldplayer_state::device_timer(timer, id, param, ptr); + break; } - - /* if we're out of bits, queue up the next command */ - else if (bitsleft == 0 && pr8210_command_buffer_in != pr8210_command_buffer_out) - { - data = pr8210_command_buffer[pr8210_command_buffer_out++ % ARRAY_LENGTH(pr8210_command_buffer)]; - bitsleft = 12; - } - pr8210_bit_timer->adjust(duration, (bitsleft << 16) | data); } -static MACHINE_START( pr8210 ) +void pr8210_state::machine_reset() { - device_t *laserdisc = machine.m_devicelist.first(LASERDISC); - MACHINE_START_CALL(ldplayer); - pr8210_bit_timer = machine.scheduler().timer_alloc(FUNC(pr8210_bit_callback), (void *)laserdisc); + ldplayer_state::machine_reset(); + m_bit_timer->adjust(attotime::zero); } -static MACHINE_RESET( pr8210 ) -{ - MACHINE_RESET_CALL(ldplayer); - pr8210_bit_timer->adjust(attotime::zero); -} - - -static void pr8210_execute(device_t *laserdisc, int command) +void pr8210_state::execute_command(int command) { static const UINT8 digits[10] = { 0x01, 0x11, 0x09, 0x19, 0x05, 0x15, 0x0d, 0x1d, 0x03, 0x13 }; switch (command) { case CMD_SCAN_REVERSE: - if (pr8210_command_buffer_in == pr8210_command_buffer_out || - pr8210_command_buffer_in == (pr8210_command_buffer_out + 1) % ARRAY_LENGTH(pr8210_command_buffer)) + if (m_command_buffer_in == m_command_buffer_out || + m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) { - pr8210_add_command(0x1c); - playing = TRUE; + add_command(0x1c); + m_playing = true; } break; case CMD_STEP_REVERSE: - pr8210_add_command(0x12); - playing = FALSE; + add_command(0x12); + m_playing = false; break; case CMD_SLOW_REVERSE: - pr8210_add_command(0x02); - playing = TRUE; + add_command(0x02); + m_playing = true; break; case CMD_FAST_REVERSE: - if (pr8210_command_buffer_in == pr8210_command_buffer_out || - pr8210_command_buffer_in == (pr8210_command_buffer_out + 1) % ARRAY_LENGTH(pr8210_command_buffer)) + if (m_command_buffer_in == m_command_buffer_out || + m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) { - pr8210_add_command(0x0c); - playing = TRUE; + add_command(0x0c); + m_playing = true; } break; case CMD_SCAN_FORWARD: - if (pr8210_command_buffer_in == pr8210_command_buffer_out || - pr8210_command_buffer_in == (pr8210_command_buffer_out + 1) % ARRAY_LENGTH(pr8210_command_buffer)) + if (m_command_buffer_in == m_command_buffer_out || + m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) { - pr8210_add_command(0x08); - playing = TRUE; + add_command(0x08); + m_playing = true; } break; case CMD_STEP_FORWARD: - pr8210_add_command(0x04); - playing = FALSE; + add_command(0x04); + m_playing = false; break; case CMD_SLOW_FORWARD: - pr8210_add_command(0x18); - playing = TRUE; + add_command(0x18); + m_playing = true; break; case CMD_FAST_FORWARD: - if (pr8210_command_buffer_in == pr8210_command_buffer_out || - pr8210_command_buffer_in == (pr8210_command_buffer_out + 1) % ARRAY_LENGTH(pr8210_command_buffer)) + if (m_command_buffer_in == m_command_buffer_out || + m_command_buffer_in == (m_command_buffer_out + 1) % ARRAY_LENGTH(m_command_buffer)) { - pr8210_add_command(0x10); - playing = TRUE; + add_command(0x10); + m_playing = true; } break; case CMD_PLAY: - pr8210_add_command(0x14); - playing = TRUE; + add_command(0x14); + m_playing = true; break; case CMD_PAUSE: - pr8210_add_command(0x0a); - playing = FALSE; + add_command(0x0a); + m_playing = false; break; case CMD_FRAME_TOGGLE: - pr8210_add_command(0x0b); + add_command(0x0b); break; case CMD_CHAPTER_TOGGLE: - pr8210_add_command(0x06); + add_command(0x06); break; case CMD_CH1_TOGGLE: - pr8210_add_command(0x0e); + add_command(0x0e); break; case CMD_CH2_TOGGLE: - pr8210_add_command(0x16); + add_command(0x16); break; case CMD_0: @@ -430,12 +496,12 @@ static void pr8210_execute(device_t *laserdisc, int command) case CMD_7: case CMD_8: case CMD_9: - pr8210_add_command(digits[command - CMD_0]); + add_command(digits[command - CMD_0]); break; case CMD_SEARCH: - pr8210_add_command(0x1a); - playing = FALSE; + add_command(0x1a); + m_playing = false; break; } } @@ -448,43 +514,43 @@ static void pr8210_execute(device_t *laserdisc, int command) * *************************************/ -static void ldv1000_execute(device_t *laserdisc, int command) +void ldv1000_state::execute_command(int command) { static const UINT8 digits[10] = { 0x3f, 0x0f, 0x8f, 0x4f, 0x2f, 0xaf, 0x6f, 0x1f, 0x9f, 0x5f }; switch (command) { case CMD_SCAN_REVERSE: - laserdisc_data_w(laserdisc, 0xf8); - playing = TRUE; + laserdisc_data_w(m_laserdisc, 0xf8); + m_playing = true; break; case CMD_STEP_REVERSE: - laserdisc_data_w(laserdisc, 0xfe); - playing = FALSE; + laserdisc_data_w(m_laserdisc, 0xfe); + m_playing = false; break; case CMD_SCAN_FORWARD: - laserdisc_data_w(laserdisc, 0xf0); - playing = TRUE; + laserdisc_data_w(m_laserdisc, 0xf0); + m_playing = true; break; case CMD_STEP_FORWARD: - laserdisc_data_w(laserdisc, 0xf6); - playing = FALSE; + laserdisc_data_w(m_laserdisc, 0xf6); + m_playing = false; break; case CMD_PLAY: - laserdisc_data_w(laserdisc, 0xfd); - playing = TRUE; + laserdisc_data_w(m_laserdisc, 0xfd); + m_playing = true; break; case CMD_PAUSE: - laserdisc_data_w(laserdisc, 0xa0); - playing = FALSE; + laserdisc_data_w(m_laserdisc, 0xa0); + m_playing = false; break; case CMD_FRAME_TOGGLE: - laserdisc_data_w(laserdisc, 0xf1); + laserdisc_data_w(m_laserdisc, 0xf1); break; case CMD_0: @@ -497,12 +563,12 @@ static void ldv1000_execute(device_t *laserdisc, int command) case CMD_7: case CMD_8: case CMD_9: - laserdisc_data_w(laserdisc, digits[command - CMD_0]); + laserdisc_data_w(m_laserdisc, digits[command - CMD_0]); break; case CMD_SEARCH: - laserdisc_data_w(laserdisc, 0xf7); - playing = FALSE; + laserdisc_data_w(m_laserdisc, 0xf7); + m_playing = false; break; } } @@ -551,12 +617,9 @@ INPUT_PORTS_END * *************************************/ -static MACHINE_CONFIG_FRAGMENT( ldplayer_core ) +static MACHINE_CONFIG_START( ldplayer_core, ldplayer_state ) - MCFG_MACHINE_START(ldplayer) - MCFG_MACHINE_RESET(ldplayer) - - /* audio hardware */ + // audio hardware MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SOUND_ADD("ldsound", LASERDISC_SOUND, 0) @@ -570,17 +633,15 @@ static MACHINE_CONFIG_DERIVED( ldplayer_ntsc, ldplayer_core ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( ldv1000, ldplayer_ntsc ) +static MACHINE_CONFIG_DERIVED_CLASS( ldv1000, ldplayer_ntsc, ldv1000_state ) MCFG_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, "screen", "ldsound") - MCFG_LASERDISC_GET_DISC(get_disc) + MCFG_LASERDISC_GET_DISC(ldplayer_state::get_disc_static) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( pr8210, ldplayer_ntsc ) - MCFG_MACHINE_START(pr8210) - MCFG_MACHINE_RESET(pr8210) +static MACHINE_CONFIG_DERIVED_CLASS( pr8210, ldplayer_ntsc, pr8210_state ) MCFG_LASERDISC_ADD("laserdisc", PIONEER_PR8210, "screen", "ldsound") - MCFG_LASERDISC_GET_DISC(get_disc) + MCFG_LASERDISC_GET_DISC(ldplayer_state::get_disc_static) MACHINE_CONFIG_END @@ -602,22 +663,11 @@ ROM_END -/************************************* - * - * Driver initialization - * - *************************************/ - -static DRIVER_INIT( ldv1000 ) { execute_command = ldv1000_execute; } -static DRIVER_INIT( pr8210 ) { execute_command = pr8210_execute; } - - - /************************************* * * Game drivers * *************************************/ -GAME( 2008, ldv1000, 0, ldv1000, ldplayer, ldv1000, ROT0, "MAME", "Pioneer LDV-1000 Simulator", 0 ) -GAMEL(2008, pr8210, 0, pr8210, ldplayer, pr8210, ROT0, "MAME", "Pioneer PR-8210 Simulator", 0, layout_pr8210 ) +GAME( 2008, ldv1000, 0, ldv1000, ldplayer, 0, ROT0, "MAME", "Pioneer LDV-1000 Simulator", 0 ) +GAMEL(2008, pr8210, 0, pr8210, ldplayer, 0, ROT0, "MAME", "Pioneer PR-8210 Simulator", 0, layout_pr8210 ) diff --git a/src/ldplayer/ldplayer.lst b/src/ldplayer/ldplayer.lst new file mode 100644 index 00000000000..4b067250129 --- /dev/null +++ b/src/ldplayer/ldplayer.lst @@ -0,0 +1,42 @@ +/****************************************************************************** + + ldpdriv.c + + List of all enabled drivers in the system. This file is parsed by + makelist.exe, sorted, and output as C code describing the drivers. + +**************************************************************************** + + Copyright Aaron Giles + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name 'MAME' nor the names of its contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +******************************************************************************/ + +ldv1000 // Pioneer LD-V1000 +pr8210 // Pioneer PR-8210 diff --git a/src/ldplayer/ldplayer.mak b/src/ldplayer/ldplayer.mak index 1825a356258..2a45e5768d5 100644 --- a/src/ldplayer/ldplayer.mak +++ b/src/ldplayer/ldplayer.mak @@ -44,7 +44,6 @@ SOUNDS += WAVE #------------------------------------------------- DRVLIBS = \ - $(LDPOBJ)/ldpdriv.o \ $(EMUDRIVERS)/emudummy.o \ $(LDPOBJ)/ldplayer.o \