mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
Laserdiscs are now devices. Updated all drivers accordingly.
This commit is contained in:
parent
de171027cc
commit
2f823ff24f
File diff suppressed because it is too large
Load Diff
@ -21,11 +21,14 @@
|
||||
***************************************************************************/
|
||||
|
||||
/* types of players supported */
|
||||
#define LASERDISC_TYPE_PR7820 1 /* Pioneer PR-7820 */
|
||||
#define LASERDISC_TYPE_LDV1000 2 /* Pioneer LD-V1000 */
|
||||
#define LASERDISC_TYPE_22VP932 3 /* Phillips 22VP932 (PAL) */
|
||||
#define LASERDISC_TYPE_LDP1450 4 /* Sony LDP-1450 */
|
||||
#define LASERDISC_TYPE_PR8210 5 /* Pioneer PR-8210 / LD-V1100 */
|
||||
enum
|
||||
{
|
||||
LASERDISC_TYPE_PIONEER_PR7820, /* Pioneer PR-7820 */
|
||||
LASERDISC_TYPE_PIONEER_PR8210, /* Pioneer PR-8210 / LD-V1100 */
|
||||
LASERDISC_TYPE_PIONEER_LDV1000, /* Pioneer LD-V1000 */
|
||||
LASERDISC_TYPE_PHILLIPS_22VP932, /* Phillips 22VP932 (PAL) */
|
||||
LASERDISC_TYPE_SONY_LDP1450, /* Sony LDP-1450 */
|
||||
};
|
||||
|
||||
/* laserdisc control lines */
|
||||
#define LASERDISC_LINE_ENTER 0 /* "ENTER" key/line */
|
||||
@ -46,13 +49,40 @@
|
||||
#define LASERDISC_CODE_LINE17 3
|
||||
#define LASERDISC_CODE_LINE18 4
|
||||
|
||||
/* device configuration */
|
||||
enum
|
||||
{
|
||||
LDINFO_INT_TYPE = DEVINFO_INT_DEVICE_SPECIFIC
|
||||
};
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
TYPE DEFINITIONS
|
||||
***************************************************************************/
|
||||
|
||||
typedef struct _laserdisc_info laserdisc_info;
|
||||
typedef struct _laserdisc_config laserdisc_config;
|
||||
struct _laserdisc_config
|
||||
{
|
||||
int type;
|
||||
int disknum;
|
||||
const char *soundtag;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
DEVICE CONFIGURATION MACROS
|
||||
***************************************************************************/
|
||||
|
||||
#define MDRV_LASERDISC_ADD(_tag, _type, _disknum, _soundtag) \
|
||||
MDRV_DEVICE_ADD(_tag, LASERDISC) \
|
||||
MDRV_DEVICE_CONFIG_DATA32(laserdisc_config, type, LASERDISC_TYPE_##_type) \
|
||||
MDRV_DEVICE_CONFIG_DATA32(laserdisc_config, disknum, _disknum) \
|
||||
MDRV_DEVICE_CONFIG_DATAPTR(laserdisc_config, soundtag, _soundtag)
|
||||
|
||||
#define MDRV_LASERDISC_REMOVE(_tag, _type) \
|
||||
MDRV_DEVICE_REMOVE(_tag, _type)
|
||||
|
||||
|
||||
|
||||
@ -68,19 +98,23 @@ extern const struct CustomSound_interface laserdisc_custom_interface;
|
||||
FUNCTION PROTOTYPES
|
||||
***************************************************************************/
|
||||
|
||||
laserdisc_info *laserdisc_init(running_machine *machine, int type, chd_file *chd, int custom_index);
|
||||
void laserdisc_reset(laserdisc_info *info, int type);
|
||||
void laserdisc_exit(laserdisc_info *info);
|
||||
void laserdisc_vsync(laserdisc_info *info);
|
||||
const char *laserdisc_describe_state(laserdisc_info *info);
|
||||
UINT32 laserdisc_get_video(laserdisc_info *info, bitmap_t **bitmap);
|
||||
UINT32 laserdisc_get_field_code(laserdisc_info *info, UINT8 code);
|
||||
void laserdisc_vsync(const device_config *device);
|
||||
const char *laserdisc_describe_state(const device_config *device);
|
||||
UINT32 laserdisc_get_video(const device_config *device, bitmap_t **bitmap);
|
||||
UINT32 laserdisc_get_field_code(const device_config *device, UINT8 code);
|
||||
|
||||
void laserdisc_data_w(laserdisc_info *info, UINT8 data);
|
||||
void laserdisc_line_w(laserdisc_info *info, UINT8 line, UINT8 newstate);
|
||||
UINT8 laserdisc_data_r(laserdisc_info *info);
|
||||
UINT8 laserdisc_line_r(laserdisc_info *info, UINT8 line);
|
||||
void laserdisc_data_w(const device_config *device, UINT8 data);
|
||||
void laserdisc_line_w(const device_config *device, UINT8 line, UINT8 newstate);
|
||||
UINT8 laserdisc_data_r(const device_config *device);
|
||||
UINT8 laserdisc_line_r(const device_config *device, UINT8 line);
|
||||
|
||||
void pr7820_set_slow_speed(laserdisc_info *info, double frame_rate_scaler);
|
||||
void pr7820_set_slow_speed(const device_config *device, double frame_rate_scaler);
|
||||
|
||||
|
||||
/* ----- device interface ----- */
|
||||
|
||||
/* device get info callback */
|
||||
#define LASERDISC DEVICE_GET_INFO_NAME(laserdisc)
|
||||
DEVICE_GET_INFO( laserdisc );
|
||||
|
||||
#endif /* __LASERDSC_H__ */
|
||||
|
@ -268,7 +268,7 @@ static const raster_info predef_raster_table[] =
|
||||
|
||||
/*-------------------------------------------------
|
||||
get_safe_token - makes sure that the passed
|
||||
in device is, in fact, an IDE controller
|
||||
in device is, in fact, a voodoo device
|
||||
-------------------------------------------------*/
|
||||
|
||||
INLINE voodoo_state *get_safe_token(const device_config *device)
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "machine/laserdsc.h"
|
||||
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
static emu_timer *serial_timer;
|
||||
static UINT8 serial_timer_active;
|
||||
static UINT16 input_select;
|
||||
@ -124,7 +124,7 @@ static VIDEO_UPDATE( alg )
|
||||
fixedvis.max_y++;
|
||||
|
||||
/* first lay down the video data */
|
||||
laserdisc_get_video(discinfo, &vidbitmap);
|
||||
laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
if (video_texture == NULL)
|
||||
video_texture = render_texture_alloc(NULL, NULL);
|
||||
render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16);
|
||||
@ -140,8 +140,8 @@ static VIDEO_UPDATE( alg )
|
||||
render_screen_add_quad(screen, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), overlay_texture, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA) | PRIMFLAG_SCREENTEX(1));
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
if (laserdisc != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -157,7 +157,8 @@ static VIDEO_UPDATE( alg )
|
||||
|
||||
static MACHINE_START( alg )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDP1450, get_disk_handle(0), 1);
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
|
||||
serial_timer = timer_alloc(response_timer, NULL);
|
||||
serial_timer_active = FALSE;
|
||||
}
|
||||
@ -166,7 +167,6 @@ static MACHINE_START( alg )
|
||||
static MACHINE_RESET( alg )
|
||||
{
|
||||
MACHINE_RESET_CALL(amiga);
|
||||
laserdisc_reset(discinfo, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -180,16 +180,16 @@ static MACHINE_RESET( alg )
|
||||
static TIMER_CALLBACK( response_timer )
|
||||
{
|
||||
/* if we still have data to send, do it now */
|
||||
if (laserdisc_line_r(discinfo, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
if (laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
{
|
||||
UINT8 data = laserdisc_data_r(discinfo);
|
||||
UINT8 data = laserdisc_data_r(laserdisc);
|
||||
if (data != 0x0a)
|
||||
mame_printf_debug("Sending serial data = %02X\n", data);
|
||||
amiga_serial_in_w(data);
|
||||
}
|
||||
|
||||
/* if there's more to come, set another timer */
|
||||
if (laserdisc_line_r(discinfo, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
if (laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
timer_adjust_oneshot(serial_timer, amiga_get_serial_char_period(), 0);
|
||||
else
|
||||
serial_timer_active = FALSE;
|
||||
@ -199,10 +199,10 @@ static TIMER_CALLBACK( response_timer )
|
||||
static void vsync_callback(void)
|
||||
{
|
||||
/* only clock the disc every other frame */
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
|
||||
/* if we have data available, set a timer to read it */
|
||||
if (!serial_timer_active && laserdisc_line_r(discinfo, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
if (!serial_timer_active && laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
{
|
||||
timer_adjust_oneshot(serial_timer, amiga_get_serial_char_period(), 0);
|
||||
serial_timer_active = TRUE;
|
||||
@ -213,10 +213,10 @@ static void vsync_callback(void)
|
||||
static void serial_w(UINT16 data)
|
||||
{
|
||||
/* write to the laserdisc player */
|
||||
laserdisc_data_w(discinfo, data & 0xff);
|
||||
laserdisc_data_w(laserdisc, data & 0xff);
|
||||
|
||||
/* if we have data available, set a timer to read it */
|
||||
if (!serial_timer_active && laserdisc_line_r(discinfo, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
if (!serial_timer_active && laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
{
|
||||
timer_adjust_oneshot(serial_timer, amiga_get_serial_char_period(), 0);
|
||||
serial_timer_active = TRUE;
|
||||
@ -471,6 +471,8 @@ static MACHINE_DRIVER_START( alg_r1 )
|
||||
MDRV_MACHINE_START(alg)
|
||||
MDRV_MACHINE_RESET(alg)
|
||||
MDRV_NVRAM_HANDLER(generic_0fill)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", SONY_LDP1450, 0, "laserdisc")
|
||||
|
||||
/* video hardware */
|
||||
MDRV_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER)
|
||||
|
@ -82,7 +82,7 @@ Side 2 = 0x8F7DDD (or 0x880000 | ( 0x77 << 12 ) | 0x0DDD)
|
||||
#define CLIFF_ENABLE_SND_1 NODE_01
|
||||
#define CLIFF_ENABLE_SND_2 NODE_02
|
||||
|
||||
static laserdisc_info *discinfo = NULL;
|
||||
static const device_config *laserdisc;
|
||||
|
||||
static int port_bank = 0;
|
||||
static int phillips_code = 0;
|
||||
@ -101,7 +101,6 @@ static void video_cleanup(running_machine *machine)
|
||||
render_texture_free(video_texture);
|
||||
if (overlay_texture != NULL)
|
||||
render_texture_free(overlay_texture);
|
||||
laserdisc_exit(discinfo);
|
||||
}
|
||||
|
||||
static VIDEO_UPDATE( cliff )
|
||||
@ -109,14 +108,14 @@ static VIDEO_UPDATE( cliff )
|
||||
/* update the TMS9928A video */
|
||||
VIDEO_UPDATE_CALL(tms9928a);
|
||||
|
||||
if (discinfo != NULL)
|
||||
if (laserdisc != NULL)
|
||||
{
|
||||
bitmap_t *vidbitmap;
|
||||
rectangle fixedvis = *TMS9928A_get_visarea();
|
||||
fixedvis.max_x++;
|
||||
fixedvis.max_y++;
|
||||
|
||||
laserdisc_get_video(discinfo, &vidbitmap);
|
||||
laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
|
||||
/* first lay down the video data */
|
||||
if (video_texture == NULL)
|
||||
@ -138,8 +137,8 @@ static VIDEO_UPDATE( cliff )
|
||||
}
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
if (laserdisc != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -175,7 +174,7 @@ static READ8_HANDLER( cliff_port_r )
|
||||
|
||||
static READ8_HANDLER( cliff_phillips_code_r )
|
||||
{
|
||||
if ( discinfo != NULL )
|
||||
if ( laserdisc != NULL )
|
||||
{
|
||||
return ( phillips_code >> (8*offset) ) & 0xff;
|
||||
}
|
||||
@ -219,7 +218,7 @@ static WRITE8_HANDLER( cliff_irqack_w )
|
||||
|
||||
static WRITE8_HANDLER( cliff_ldwire_w )
|
||||
{
|
||||
laserdisc_line_w(discinfo,LASERDISC_LINE_CONTROL,(data&1) ? ASSERT_LINE : CLEAR_LINE );
|
||||
laserdisc_line_w(laserdisc,LASERDISC_LINE_CONTROL,(data&1) ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
|
||||
@ -228,7 +227,7 @@ static WRITE8_HANDLER( cliff_ldwire_w )
|
||||
static INTERRUPT_GEN( cliff_vsync )
|
||||
{
|
||||
/* clock the laserdisc and video chip every 60Hz */
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
TMS9928A_interrupt(machine);
|
||||
}
|
||||
|
||||
@ -239,12 +238,12 @@ static TIMER_CALLBACK( cliff_irq_callback )
|
||||
switch (param)
|
||||
{
|
||||
case 17:
|
||||
phillips_code = laserdisc_get_field_code(discinfo, LASERDISC_CODE_LINE17);
|
||||
phillips_code = laserdisc_get_field_code(laserdisc, LASERDISC_CODE_LINE17);
|
||||
param = 18;
|
||||
break;
|
||||
|
||||
case 18:
|
||||
phillips_code = laserdisc_get_field_code(discinfo, LASERDISC_CODE_LINE18);
|
||||
phillips_code = laserdisc_get_field_code(laserdisc, LASERDISC_CODE_LINE18);
|
||||
param = 17;
|
||||
break;
|
||||
}
|
||||
@ -265,7 +264,7 @@ static void vdp_interrupt (running_machine *machine, int state)
|
||||
|
||||
static MACHINE_START( cliffhgr )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_PR8210, get_disk_handle(0), 0);
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
irq_timer = timer_alloc(cliff_irq_callback, NULL);
|
||||
}
|
||||
|
||||
@ -746,6 +745,8 @@ static MACHINE_DRIVER_START( cliffhgr )
|
||||
|
||||
MDRV_NVRAM_HANDLER(generic_0fill)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_PR8210, 0, "laserdisc")
|
||||
|
||||
/* start with the TMS9928a video configuration */
|
||||
MDRV_IMPORT_FROM(tms9928a)
|
||||
|
||||
@ -758,13 +759,11 @@ static MACHINE_DRIVER_START( cliffhgr )
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
/* laserdisc audio */
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
|
||||
/* discrete sounds */
|
||||
MDRV_SOUND_ADD("discrete", DISCRETE, 0)
|
||||
MDRV_SOUND_CONFIG_DISCRETE(cliffhgr)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "left", 1.0)
|
||||
|
@ -54,8 +54,8 @@
|
||||
#define MASTER_CLOCK_US 16000000
|
||||
#define MASTER_CLOCK_EURO 14318180
|
||||
|
||||
#define LASERDISC_TYPE_MASK 0x7f
|
||||
#define LASERDISC_TYPE_VARIABLE 0x80
|
||||
#define LASERDISC_TYPE_FIXED 0
|
||||
#define LASERDISC_TYPE_VARIABLE 1
|
||||
|
||||
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
static UINT8 last_misc;
|
||||
|
||||
static UINT8 laserdisc_type;
|
||||
@ -96,15 +96,15 @@ static void dleuro_interrupt(running_machine *machine, int state)
|
||||
|
||||
static WRITE8_HANDLER( serial_transmit )
|
||||
{
|
||||
laserdisc_data_w(discinfo, data);
|
||||
laserdisc_data_w(laserdisc, data);
|
||||
}
|
||||
|
||||
|
||||
static int serial_receive(int ch)
|
||||
{
|
||||
/* if we still have data to send, do it now */
|
||||
if (ch == 0 && laserdisc_line_r(discinfo, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
return laserdisc_data_r(discinfo);
|
||||
if (ch == 0 && laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL) == ASSERT_LINE)
|
||||
return laserdisc_data_r(laserdisc);
|
||||
|
||||
return -1;
|
||||
}
|
||||
@ -155,9 +155,6 @@ static void video_cleanup(running_machine *machine)
|
||||
render_texture_free(video_texture);
|
||||
if (overlay_texture != NULL)
|
||||
render_texture_free(overlay_texture);
|
||||
|
||||
/* ensure all async laserdisc activity is complete */
|
||||
laserdisc_exit(discinfo);
|
||||
}
|
||||
|
||||
|
||||
@ -166,7 +163,7 @@ static VIDEO_START( dlair )
|
||||
bitmap_t *vidbitmap;
|
||||
|
||||
/* create textures */
|
||||
last_seqid = laserdisc_get_video(discinfo, &vidbitmap);
|
||||
last_seqid = laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
video_texture = render_texture_alloc(NULL, NULL);
|
||||
render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16);
|
||||
overlay_bitmap = NULL;
|
||||
@ -210,7 +207,7 @@ static VIDEO_UPDATE( dlair )
|
||||
UINT32 seqid;
|
||||
|
||||
/* get the current video and update the bitmap if different */
|
||||
seqid = laserdisc_get_video(discinfo, &vidbitmap);
|
||||
seqid = laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
if (seqid != last_seqid)
|
||||
render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16);
|
||||
last_seqid = seqid;
|
||||
@ -219,8 +216,7 @@ static VIDEO_UPDATE( dlair )
|
||||
render_container_empty(render_container_get_screen(screen));
|
||||
render_screen_add_quad(screen, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), video_texture, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
|
||||
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -244,7 +240,7 @@ static VIDEO_UPDATE( dleuro )
|
||||
render_texture_set_bitmap(overlay_texture, overlay_bitmap, video_screen_get_visible_area(screen), 0, TEXFORMAT_PALETTE16);
|
||||
|
||||
/* get the current video and update the bitmap if different */
|
||||
seqid = laserdisc_get_video(discinfo, &vidbitmap);
|
||||
seqid = laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
if (seqid != last_seqid)
|
||||
render_texture_set_bitmap(video_texture, vidbitmap, NULL, 0, TEXFORMAT_YUY16);
|
||||
last_seqid = seqid;
|
||||
@ -256,8 +252,7 @@ static VIDEO_UPDATE( dleuro )
|
||||
else
|
||||
render_screen_add_quad(screen, 0.0f, 0.0f, 1.0f, 1.0f, MAKE_ARGB(0xff,0xff,0xff,0xff), overlay_texture, PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
|
||||
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -272,31 +267,30 @@ static VIDEO_UPDATE( dleuro )
|
||||
|
||||
static MACHINE_START( dlair )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, laserdisc_type & LASERDISC_TYPE_MASK, get_disk_handle(0), 0);
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_START( dleuro )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
|
||||
/* initialize the CTC and SIO peripherals */
|
||||
ctc_intf.baseclock = cpunum_get_clock(0);
|
||||
sio_intf.baseclock = cpunum_get_clock(0);
|
||||
z80ctc_init(0, &ctc_intf);
|
||||
z80sio_init(0, &sio_intf);
|
||||
|
||||
discinfo = laserdisc_init(machine, laserdisc_type & LASERDISC_TYPE_MASK, get_disk_handle(0), 0);
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_RESET( dlair )
|
||||
{
|
||||
/* determine the laserdisc player from the DIP switches */
|
||||
if (laserdisc_type & LASERDISC_TYPE_VARIABLE)
|
||||
if (laserdisc_type == LASERDISC_TYPE_VARIABLE)
|
||||
{
|
||||
laserdisc_type &= ~LASERDISC_TYPE_MASK;
|
||||
laserdisc_type |= (input_port_read(machine, "DSW2") & 0x08) ? LASERDISC_TYPE_LDV1000 : LASERDISC_TYPE_PR7820;
|
||||
int newtype = (input_port_read(machine, "DSW2") & 0x08) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
|
||||
device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype);
|
||||
}
|
||||
laserdisc_reset(discinfo, laserdisc_type & LASERDISC_TYPE_MASK);
|
||||
}
|
||||
|
||||
|
||||
@ -310,7 +304,7 @@ static MACHINE_RESET( dlair )
|
||||
static INTERRUPT_GEN( vblank_callback )
|
||||
{
|
||||
/* update the laserdisc */
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
|
||||
/* also update the speaker on the European version */
|
||||
if (sndti_exists(SOUND_BEEP, 0))
|
||||
@ -344,10 +338,10 @@ static WRITE8_HANDLER( misc_w )
|
||||
|
||||
/* on bit 5 going low, push the data out to the laserdisc player */
|
||||
if ((diff & 0x20) && !(data & 0x20))
|
||||
laserdisc_data_w(discinfo, laserdisc_data);
|
||||
laserdisc_data_w(laserdisc, laserdisc_data);
|
||||
|
||||
/* on bit 6 going low, we need to signal enter */
|
||||
laserdisc_line_w(discinfo, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
|
||||
laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -371,10 +365,10 @@ static WRITE8_HANDLER( dleuro_misc_w )
|
||||
|
||||
/* on bit 5 going low, push the data out to the laserdisc player */
|
||||
if ((diff & 0x20) && !(data & 0x20))
|
||||
laserdisc_data_w(discinfo, laserdisc_data);
|
||||
laserdisc_data_w(laserdisc, laserdisc_data);
|
||||
|
||||
/* on bit 6 going low, we need to signal enter */
|
||||
laserdisc_line_w(discinfo, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
|
||||
laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -399,18 +393,15 @@ static WRITE8_HANDLER( led_den2_w )
|
||||
|
||||
static CUSTOM_INPUT( laserdisc_status_r )
|
||||
{
|
||||
if (discinfo == NULL)
|
||||
return 0;
|
||||
|
||||
switch (laserdisc_type & LASERDISC_TYPE_MASK)
|
||||
switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
|
||||
{
|
||||
case LASERDISC_TYPE_PR7820:
|
||||
case LASERDISC_TYPE_PIONEER_PR7820:
|
||||
return 0;
|
||||
|
||||
case LASERDISC_TYPE_LDV1000:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_LDV1000:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
|
||||
|
||||
case LASERDISC_TYPE_22VP932:
|
||||
case LASERDISC_TYPE_PHILLIPS_22VP932:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
@ -419,18 +410,15 @@ static CUSTOM_INPUT( laserdisc_status_r )
|
||||
|
||||
static CUSTOM_INPUT( laserdisc_command_r )
|
||||
{
|
||||
if (discinfo == NULL)
|
||||
return 0;
|
||||
|
||||
switch (laserdisc_type & LASERDISC_TYPE_MASK)
|
||||
switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
|
||||
{
|
||||
case LASERDISC_TYPE_PR7820:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_PR7820:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
|
||||
|
||||
case LASERDISC_TYPE_LDV1000:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_LDV1000:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
|
||||
|
||||
case LASERDISC_TYPE_22VP932:
|
||||
case LASERDISC_TYPE_PHILLIPS_22VP932:
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
@ -439,7 +427,7 @@ static CUSTOM_INPUT( laserdisc_command_r )
|
||||
|
||||
static READ8_HANDLER( laserdisc_r )
|
||||
{
|
||||
UINT8 result = laserdisc_data_r(discinfo);
|
||||
UINT8 result = laserdisc_data_r(laserdisc);
|
||||
mame_printf_debug("laserdisc_r = %02X\n", result);
|
||||
return result;
|
||||
}
|
||||
@ -679,7 +667,6 @@ static INPUT_PORTS_START( dlaire )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
#ifdef UNUSED_DEFINITION
|
||||
static INPUT_PORTS_START( dleuro )
|
||||
PORT_START /* IN0 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
|
||||
@ -751,7 +738,7 @@ static INPUT_PORTS_START( dleuro )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) ) PORT_CONDITION("DSW1",0x04,PORTCOND_EQUALS,0x04)
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( Easy ) ) PORT_CONDITION("DSW1",0x04,PORTCOND_EQUALS,0x04)
|
||||
INPUT_PORTS_END
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
@ -800,7 +787,7 @@ static const struct AY8910interface ay8910_interface =
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static MACHINE_DRIVER_START( dlair )
|
||||
static MACHINE_DRIVER_START( dlair_base )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD("main", Z80, MASTER_CLOCK_US/4)
|
||||
@ -838,6 +825,18 @@ static MACHINE_DRIVER_START( dlair )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( dlair_pr7820 )
|
||||
MDRV_IMPORT_FROM(dlair_base)
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_PR7820, 0, "laserdisc")
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( dlair_ldv1000 )
|
||||
MDRV_IMPORT_FROM(dlair_base)
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( dleuro )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -852,6 +851,8 @@ static MACHINE_DRIVER_START( dleuro )
|
||||
MDRV_MACHINE_START(dleuro)
|
||||
MDRV_MACHINE_RESET(dlair)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PHILLIPS_22VP932, 0, "laserdisc")
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||
@ -1058,27 +1059,15 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static DRIVER_INIT( pr7820 )
|
||||
static DRIVER_INIT( fixed )
|
||||
{
|
||||
laserdisc_type = LASERDISC_TYPE_PR7820;
|
||||
}
|
||||
|
||||
|
||||
static DRIVER_INIT( ldv1000 )
|
||||
{
|
||||
laserdisc_type = LASERDISC_TYPE_LDV1000;
|
||||
laserdisc_type = LASERDISC_TYPE_FIXED;
|
||||
}
|
||||
|
||||
|
||||
static DRIVER_INIT( variable )
|
||||
{
|
||||
laserdisc_type = LASERDISC_TYPE_VARIABLE | LASERDISC_TYPE_LDV1000;
|
||||
}
|
||||
|
||||
|
||||
static DRIVER_INIT( 22vp932 )
|
||||
{
|
||||
laserdisc_type = LASERDISC_TYPE_22VP932;
|
||||
laserdisc_type = LASERDISC_TYPE_VARIABLE;
|
||||
}
|
||||
|
||||
|
||||
@ -1089,17 +1078,17 @@ static DRIVER_INIT( 22vp932 )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAMEL( 1983, dlair, 0, dlair, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F2)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairf, dlair, dlair, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaire, dlair, dlair, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. E)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaird, dlair, dlair, dlair, ldv1000, ROT0, "Cinematronics", "Dragon's Lair (US Rev. D, Pioneer LD-V1000)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairc, dlair, dlair, dlair, pr7820, ROT0, "Cinematronics", "Dragon's Lair (US Rev. C, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairb, dlair, dlair, dlair, pr7820, ROT0, "Cinematronics", "Dragon's Lair (US Rev. B, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaira, dlair, dlair, dlair, pr7820, ROT0, "Cinematronics", "Dragon's Lair (US Rev. A, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dleuro, dlair, dleuro, dlair, 22vp932, ROT0, "Atari", "Dragon's Lair (European)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlital, dlair, dleuro, dlair, 22vp932, ROT0, "Sidam", "Dragon's Lair (Italian)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlair, 0, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F2)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairf, dlair, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaire, dlair, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. E)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaird, dlair, dlair_ldv1000, dlair, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. D, Pioneer LD-V1000)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairc, dlair, dlair_pr7820, dlair, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. C, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlairb, dlair, dlair_pr7820, dlair, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. B, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlaira, dlair, dlair_pr7820, dlair, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. A, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dleuro, dlair, dleuro, dleuro, fixed, ROT0, "Atari", "Dragon's Lair (European)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlital, dlair, dleuro, dleuro, fixed, ROT0, "Sidam", "Dragon's Lair (Italian)", GAME_NOT_WORKING, layout_dlair )
|
||||
|
||||
GAMEL( 1983, spaceace, 0, dlair, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaa2, spaceace, dlair, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaa, spaceace, dlair, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, saeuro, spaceace, dleuro, dlair, 22vp932, ROT0, "Atari", "Space Ace (European)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaa2, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaa, spaceace, dlair_ldv1000, dlaire, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", GAME_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, saeuro, spaceace, dleuro, dleuro, fixed, ROT0, "Atari", "Space Ace (European)", GAME_NOT_WORKING, layout_dlair )
|
||||
|
@ -30,7 +30,7 @@ Todo:
|
||||
|
||||
|
||||
/* Misc variables */
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
|
||||
static UINT8 *tile_ram;
|
||||
static UINT8 *tile_control_ram;
|
||||
@ -46,8 +46,8 @@ static VIDEO_UPDATE( esh )
|
||||
fillbitmap(bitmap, 0, cliprect);
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL && ld_video_visible)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
if (ld_video_visible)
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
/* Draw tiles */
|
||||
for (charx = 0; charx < 32; charx++)
|
||||
@ -77,12 +77,12 @@ static VIDEO_UPDATE( esh )
|
||||
/* MEMORY HANDLERS */
|
||||
static READ8_HANDLER(ldp_read)
|
||||
{
|
||||
return laserdisc_data_r(discinfo);
|
||||
return laserdisc_data_r(laserdisc);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER(ldp_write)
|
||||
{
|
||||
laserdisc_data_w(discinfo,data);
|
||||
laserdisc_data_w(laserdisc,data);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER(misc_write)
|
||||
@ -258,12 +258,6 @@ static GFXDECODE_START( esh )
|
||||
GFXDECODE_ENTRY(REGION_GFX1, 0, esh_gfx_layout, 0x0, 0x100)
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_START( esh )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( irq_stop )
|
||||
{
|
||||
cpunum_set_input_line(machine, 0, 0, CLEAR_LINE);
|
||||
@ -275,7 +269,12 @@ static INTERRUPT_GEN( vblank_callback_esh )
|
||||
cpunum_set_input_line(machine, 0, 0, ASSERT_LINE);
|
||||
timer_set(ATTOTIME_IN_USEC(50), NULL, 0, irq_stop);
|
||||
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
static MACHINE_START( esh )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
@ -287,8 +286,11 @@ static MACHINE_DRIVER_START( esh )
|
||||
MDRV_CPU_IO_MAP(z80_0_io,0)
|
||||
MDRV_CPU_VBLANK_INT("main", vblank_callback_esh)
|
||||
|
||||
MDRV_MACHINE_START(esh)
|
||||
MDRV_NVRAM_HANDLER(generic_0fill)
|
||||
|
||||
MDRV_MACHINE_START(esh)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video */
|
||||
|
||||
@ -306,6 +308,12 @@ static MACHINE_DRIVER_START( esh )
|
||||
MDRV_VIDEO_UPDATE(esh)
|
||||
|
||||
/* sound */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
@ -54,7 +54,7 @@ static UINT8* tile_RAM;
|
||||
static UINT8* sprite_RAM;
|
||||
static UINT8* palette_RAM;
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
|
||||
|
||||
/* VIDEO GOODS */
|
||||
@ -209,13 +209,17 @@ static VIDEO_UPDATE( gpworld )
|
||||
gpworld_draw_sprites(screen->machine, bitmap, cliprect);
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_START( gpworld )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
/* MEMORY HANDLERS */
|
||||
/* READS */
|
||||
@ -384,12 +388,6 @@ static INPUT_PORTS_START( gpworld )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_START( gpworld )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( irq_stop )
|
||||
{
|
||||
cpunum_set_input_line(machine, 0, 0, CLEAR_LINE);
|
||||
@ -400,8 +398,8 @@ static INTERRUPT_GEN( vblank_callback_gpworld )
|
||||
/* Do an NMI if the enabled bit is set */
|
||||
if (nmi_enable)
|
||||
{
|
||||
laserdisc_data_w(discinfo,ldp_write_latch);
|
||||
ldp_read_latch = laserdisc_data_r(discinfo);
|
||||
laserdisc_data_w(laserdisc,ldp_write_latch);
|
||||
ldp_read_latch = laserdisc_data_r(laserdisc);
|
||||
cpunum_set_input_line(machine, 0, INPUT_LINE_NMI, PULSE_LINE);
|
||||
}
|
||||
|
||||
@ -409,7 +407,7 @@ static INTERRUPT_GEN( vblank_callback_gpworld )
|
||||
cpunum_set_input_line(machine, 0, 0, ASSERT_LINE);
|
||||
timer_set(ATTOTIME_IN_USEC(100), NULL, 0, irq_stop);
|
||||
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
static const gfx_layout gpworld_tile_layout =
|
||||
@ -437,6 +435,8 @@ static MACHINE_DRIVER_START( gpworld )
|
||||
|
||||
MDRV_MACHINE_START(gpworld)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video */
|
||||
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
@ -450,6 +450,13 @@ static MACHINE_DRIVER_START( gpworld )
|
||||
MDRV_PALETTE_LENGTH(1024)
|
||||
MDRV_VIDEO_UPDATE(gpworld)
|
||||
|
||||
/* sound */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ Todo:
|
||||
|
||||
|
||||
/* Misc variables */
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
|
||||
static UINT8 *tile_ram;
|
||||
static UINT8 *tile_control_ram;
|
||||
@ -50,8 +50,7 @@ static VIDEO_UPDATE( istellar )
|
||||
fillbitmap(bitmap, 0, cliprect);
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
/* DEBUG */
|
||||
/*
|
||||
@ -83,6 +82,12 @@ static VIDEO_UPDATE( istellar )
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_START( istellar )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* MEMORY HANDLERS */
|
||||
/* Z80 0 R/W */
|
||||
@ -113,7 +118,7 @@ static WRITE8_HANDLER(z80_0_latch2_write)
|
||||
/* Z80 2 R/W */
|
||||
static READ8_HANDLER(z80_2_ldp_read)
|
||||
{
|
||||
UINT8 readResult = laserdisc_data_r(discinfo);
|
||||
UINT8 readResult = laserdisc_data_r(laserdisc);
|
||||
logerror("CPU2 : reading LDP : %x\n", readResult);
|
||||
return readResult;
|
||||
}
|
||||
@ -146,7 +151,7 @@ static WRITE8_HANDLER(z80_2_latch1_write)
|
||||
static WRITE8_HANDLER(z80_2_ldp_write)
|
||||
{
|
||||
logerror("CPU2 : writing LDP : 0x%x\n", data);
|
||||
laserdisc_data_w(discinfo,data);
|
||||
laserdisc_data_w(laserdisc,data);
|
||||
}
|
||||
|
||||
|
||||
@ -306,11 +311,6 @@ static GFXDECODE_START( istellar )
|
||||
GFXDECODE_ENTRY( REGION_GFX1, 0, istellar_gfx_layout, 0x0, 0x100 )
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_START( istellar )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( vblank_callback_istellar )
|
||||
{
|
||||
/* Interrupt presumably comes from VBlank */
|
||||
@ -321,7 +321,7 @@ static INTERRUPT_GEN( vblank_callback_istellar )
|
||||
|
||||
/* Only do the LDP's sync once */
|
||||
if (cpunum == 0)
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
|
||||
@ -342,9 +342,11 @@ static MACHINE_DRIVER_START( istellar )
|
||||
MDRV_CPU_ADD("sub", Z80, GUESSED_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(z80_2_mem,0)
|
||||
MDRV_CPU_IO_MAP(z80_2_io,0)
|
||||
|
||||
|
||||
MDRV_MACHINE_START(istellar)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video */
|
||||
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
@ -361,6 +363,12 @@ static MACHINE_DRIVER_START( istellar )
|
||||
MDRV_VIDEO_UPDATE(istellar)
|
||||
|
||||
/* sound */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
@ -72,7 +72,7 @@ Dumping Notes:
|
||||
#define SOUND_PCB_CLOCK (6000000)
|
||||
|
||||
/* Misc variables */
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
|
||||
static UINT8 *tile_ram;
|
||||
static UINT8 *tile_control_ram;
|
||||
@ -87,8 +87,7 @@ static VIDEO_UPDATE( lgp )
|
||||
fillbitmap(bitmap, 0, cliprect);
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
/* Draw tiles */
|
||||
for (charx = 0; charx < 32; charx++)
|
||||
@ -114,12 +113,12 @@ static VIDEO_UPDATE( lgp )
|
||||
/* Main Z80 R/W */
|
||||
static READ8_HANDLER(ldp_read)
|
||||
{
|
||||
return laserdisc_data_r(discinfo);
|
||||
return laserdisc_data_r(laserdisc);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER(ldp_write)
|
||||
{
|
||||
laserdisc_data_w(discinfo,data);
|
||||
laserdisc_data_w(laserdisc,data);
|
||||
}
|
||||
|
||||
|
||||
@ -315,11 +314,6 @@ static GFXDECODE_START( lgp )
|
||||
GFXDECODE_ENTRY(REGION_GFX4, 0, lgp_gfx_layout_16x32, 0x0, 0x100)
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_START( lgp )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( irq_stop )
|
||||
{
|
||||
cpunum_set_input_line(machine, 0, 0, CLEAR_LINE);
|
||||
@ -334,7 +328,13 @@ static INTERRUPT_GEN( vblank_callback_lgp )
|
||||
cpunum_set_input_line(machine, 0, 0, ASSERT_LINE);
|
||||
timer_set(ATTOTIME_IN_USEC(50), NULL, 0, irq_stop);
|
||||
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_START( lgp )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
@ -353,6 +353,8 @@ static MACHINE_DRIVER_START( lgp )
|
||||
|
||||
MDRV_MACHINE_START(lgp)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video */
|
||||
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
@ -369,6 +371,12 @@ static MACHINE_DRIVER_START( lgp )
|
||||
MDRV_VIDEO_UPDATE(lgp)
|
||||
|
||||
/* sound */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ static UINT8* color_RAM;
|
||||
static UINT8* fix_RAM;
|
||||
static UINT8* out_RAM;
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
static UINT8 ldv1000_input_latch;
|
||||
static UINT8 ldv1000_output_latch;
|
||||
|
||||
@ -86,8 +86,7 @@ static VIDEO_UPDATE( astron )
|
||||
astron_draw_sprites(bitmap, cliprect);
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -99,7 +98,7 @@ static VIDEO_UPDATE( astron )
|
||||
static READ8_HANDLER( astron_DISC_read )
|
||||
{
|
||||
if (nmi_enable)
|
||||
ldv1000_input_latch = laserdisc_data_r(discinfo);
|
||||
ldv1000_input_latch = laserdisc_data_r(laserdisc);
|
||||
|
||||
logerror("DISC read (0x%04x) @ 0x%04x [0x%x]\n", ldv1000_input_latch, offset, activecpu_get_pc());
|
||||
|
||||
@ -133,7 +132,7 @@ static WRITE8_HANDLER( astron_DISC_write )
|
||||
ldv1000_output_latch = data;
|
||||
|
||||
if (nmi_enable)
|
||||
laserdisc_data_w(discinfo, ldv1000_output_latch);
|
||||
laserdisc_data_w(laserdisc, ldv1000_output_latch);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( astron_OUT_write )
|
||||
@ -323,14 +322,9 @@ static INPUT_PORTS_START( astron )
|
||||
PORT_BIT ( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) /* SW15 = nonJAMMA pin W = unused? */
|
||||
INPUT_PORTS_END
|
||||
|
||||
static MACHINE_START( astron )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( vblank_callback_astron )
|
||||
{
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
static GFXDECODE_START( segald )
|
||||
@ -339,6 +333,12 @@ static GFXDECODE_START( segald )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
static MACHINE_START( astron )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
/* DRIVER */
|
||||
static MACHINE_DRIVER_START( astron )
|
||||
/* main cpu */
|
||||
@ -350,6 +350,8 @@ static MACHINE_DRIVER_START( astron )
|
||||
|
||||
MDRV_MACHINE_START(astron)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video */
|
||||
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
@ -363,6 +365,13 @@ static MACHINE_DRIVER_START( astron )
|
||||
MDRV_PALETTE_LENGTH(256)
|
||||
MDRV_VIDEO_UPDATE(astron)
|
||||
|
||||
/* sound hardare */
|
||||
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
|
||||
|
||||
MDRV_SOUND_ADD("laserdisc", CUSTOM, 0)
|
||||
MDRV_SOUND_CONFIG(laserdisc_custom_interface)
|
||||
MDRV_SOUND_ROUTE(0, "left", 1.0)
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "machine/laserdsc.h"
|
||||
#include "video/resnet.h"
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static const device_config *laserdisc;
|
||||
static UINT8 superdq_ld_in_latch = 0, superdq_ld_out_latch = 0xff;
|
||||
|
||||
static tilemap *superdq_tilemap;
|
||||
@ -63,14 +63,14 @@ static VIDEO_UPDATE( superdq )
|
||||
{
|
||||
tilemap_draw(bitmap,cliprect,superdq_tilemap,0,0);
|
||||
|
||||
if (!video_skip_this_frame() && discinfo != NULL)
|
||||
if (!video_skip_this_frame())
|
||||
{
|
||||
bitmap_t *vidbitmap;
|
||||
rectangle fixedvis = *video_screen_get_visible_area(screen);
|
||||
fixedvis.max_x++;
|
||||
fixedvis.max_y++;
|
||||
|
||||
laserdisc_get_video(discinfo, &vidbitmap);
|
||||
laserdisc_get_video(laserdisc, &vidbitmap);
|
||||
|
||||
/* first lay down the video data */
|
||||
if (video_texture == NULL)
|
||||
@ -92,8 +92,7 @@ static VIDEO_UPDATE( superdq )
|
||||
}
|
||||
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -145,24 +144,19 @@ static PALETTE_INIT( superdq )
|
||||
}
|
||||
}
|
||||
|
||||
static MACHINE_START( superdq )
|
||||
{
|
||||
discinfo = laserdisc_init(machine, LASERDISC_TYPE_LDV1000, get_disk_handle(0), 0);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( superdq_vblank )
|
||||
{
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
|
||||
/* status is read when the STATUS line from the laserdisc
|
||||
toggles (600usec after the vblank). We could set up a
|
||||
timer to do that, but this works as well */
|
||||
superdq_ld_in_latch = laserdisc_data_r(discinfo);
|
||||
superdq_ld_in_latch = laserdisc_data_r(laserdisc);
|
||||
|
||||
/* command is written when the COMMAND line from the laserdisc
|
||||
toggles (680usec after the vblank). We could set up a
|
||||
timer to do that, but this works as well */
|
||||
laserdisc_data_w(discinfo, superdq_ld_out_latch);
|
||||
laserdisc_data_w(laserdisc, superdq_ld_out_latch);
|
||||
cpunum_set_input_line(machine, 0, 0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
@ -329,6 +323,12 @@ GFXDECODE_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static MACHINE_START( superdq )
|
||||
{
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( superdq )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -336,9 +336,11 @@ static MACHINE_DRIVER_START( superdq )
|
||||
MDRV_CPU_PROGRAM_MAP(superdq_map,0)
|
||||
MDRV_CPU_IO_MAP(superdq_io,0)
|
||||
MDRV_CPU_VBLANK_INT("main", superdq_vblank)
|
||||
|
||||
|
||||
MDRV_MACHINE_START(superdq)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_LDV1000, 0, "laserdisc")
|
||||
|
||||
/* video hardware */
|
||||
MDRV_VIDEO_ATTRIBUTES(VIDEO_SELF_RENDER)
|
||||
|
||||
|
@ -18,8 +18,7 @@
|
||||
|
||||
extern const char layout_dlair[];
|
||||
|
||||
static laserdisc_info *discinfo;
|
||||
static UINT8 laserdisc_type;
|
||||
static const device_config *laserdisc;
|
||||
static UINT8 laserdisc_data;
|
||||
|
||||
static int rx_bit;
|
||||
@ -44,8 +43,7 @@ static const UINT8 led_map[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x0
|
||||
static VIDEO_UPDATE( thayers )
|
||||
{
|
||||
/* display disc information */
|
||||
if (discinfo != NULL)
|
||||
popmessage("%s", laserdisc_describe_state(discinfo));
|
||||
popmessage("%s", laserdisc_describe_state(laserdisc));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -324,7 +322,7 @@ static READ8_HANDLER( dsw_b_r )
|
||||
|
||||
static READ8_HANDLER( laserdsc_data_r )
|
||||
{
|
||||
return laserdisc_data_r(discinfo);
|
||||
return laserdisc_data_r(laserdisc);
|
||||
}
|
||||
|
||||
static WRITE8_HANDLER( laserdsc_data_w )
|
||||
@ -353,21 +351,21 @@ static WRITE8_HANDLER( laserdsc_control_w )
|
||||
|
||||
if (BIT(data, 5))
|
||||
{
|
||||
laserdisc_data_w(discinfo, laserdisc_data);
|
||||
laserdisc_data_w(laserdisc, laserdisc_data);
|
||||
}
|
||||
|
||||
switch (laserdisc_type)
|
||||
switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
|
||||
{
|
||||
case LASERDISC_TYPE_PR7820:
|
||||
case LASERDISC_TYPE_PIONEER_PR7820:
|
||||
pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE;
|
||||
|
||||
laserdisc_line_w(discinfo, LASERDISC_LINE_ENTER, pr7820_enter);
|
||||
laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, pr7820_enter);
|
||||
|
||||
// BIT(data, 7) is INT/_EXT, but there is no such input line in laserdsc.h
|
||||
break;
|
||||
|
||||
case LASERDISC_TYPE_LDV1000:
|
||||
laserdisc_line_w(discinfo, LASERDISC_LINE_ENTER, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
|
||||
case LASERDISC_TYPE_PIONEER_LDV1000:
|
||||
laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -599,16 +597,13 @@ ADDRESS_MAP_END
|
||||
|
||||
static CUSTOM_INPUT( laserdisc_enter_r )
|
||||
{
|
||||
if (discinfo == NULL)
|
||||
return 0;
|
||||
|
||||
switch (laserdisc_type)
|
||||
switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
|
||||
{
|
||||
case LASERDISC_TYPE_PR7820:
|
||||
return pr7820_enter;
|
||||
case LASERDISC_TYPE_PIONEER_PR7820:
|
||||
return pr7820_enter;
|
||||
|
||||
case LASERDISC_TYPE_LDV1000:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_LDV1000:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_STATUS) == ASSERT_LINE) ? 0 : 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -616,16 +611,13 @@ static CUSTOM_INPUT( laserdisc_enter_r )
|
||||
|
||||
static CUSTOM_INPUT( laserdisc_ready_r )
|
||||
{
|
||||
if (discinfo == NULL)
|
||||
return 0;
|
||||
|
||||
switch (laserdisc_type)
|
||||
switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
|
||||
{
|
||||
case LASERDISC_TYPE_PR7820:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_PR7820:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
|
||||
|
||||
case LASERDISC_TYPE_LDV1000:
|
||||
return (laserdisc_line_r(discinfo, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
|
||||
case LASERDISC_TYPE_PIONEER_LDV1000:
|
||||
return (laserdisc_line_r(laserdisc, LASERDISC_LINE_COMMAND) == ASSERT_LINE) ? 0 : 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -736,23 +728,19 @@ INPUT_PORTS_END
|
||||
|
||||
static MACHINE_START( thayers )
|
||||
{
|
||||
laserdisc_type = LASERDISC_TYPE_LDV1000;
|
||||
|
||||
discinfo = laserdisc_init(machine, laserdisc_type, get_disk_handle(0), 0);
|
||||
|
||||
laserdisc = device_list_find_by_tag(machine->config->devicelist, LASERDISC, "laserdisc");
|
||||
memset(&ssi263, 0, sizeof(ssi263));
|
||||
}
|
||||
|
||||
static MACHINE_RESET( thayers )
|
||||
{
|
||||
laserdisc_type = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_LDV1000 : LASERDISC_TYPE_PR7820;
|
||||
|
||||
laserdisc_reset(discinfo, laserdisc_type);
|
||||
int newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
|
||||
device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype);
|
||||
}
|
||||
|
||||
static INTERRUPT_GEN( vblank_callback_thayers )
|
||||
{
|
||||
laserdisc_vsync(discinfo);
|
||||
laserdisc_vsync(laserdisc);
|
||||
}
|
||||
|
||||
/* COP400 Interface */
|
||||
@ -773,14 +761,16 @@ static MACHINE_DRIVER_START( thayers )
|
||||
MDRV_CPU_IO_MAP(thayers_io_map, 0)
|
||||
MDRV_CPU_VBLANK_INT("main", vblank_callback_thayers)
|
||||
|
||||
MDRV_MACHINE_START(thayers)
|
||||
MDRV_MACHINE_RESET(thayers)
|
||||
|
||||
MDRV_CPU_ADD("mcu", COP421, XTAL_4MHz/2) // COP421L-PCA/N
|
||||
MDRV_CPU_PROGRAM_MAP(thayers_cop_map, 0)
|
||||
MDRV_CPU_IO_MAP(thayers_cop_io_map, 0)
|
||||
MDRV_CPU_CONFIG(thayers_cop_intf)
|
||||
|
||||
MDRV_MACHINE_START(thayers)
|
||||
MDRV_MACHINE_RESET(thayers)
|
||||
|
||||
MDRV_LASERDISC_ADD("laserdisc", PIONEER_PR7820, 0, "laserdisc")
|
||||
|
||||
/* video hardware */
|
||||
MDRV_SCREEN_ADD("main", RASTER)
|
||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
|
||||
|
Loading…
Reference in New Issue
Block a user