mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
Cleanups and version bump.
This commit is contained in:
parent
acc32658ac
commit
7f819dbfef
@ -390,7 +390,7 @@ static void vblank_state_changed(const device_config *screen, void *param, int v
|
||||
/* call the player's VSYNC callback */
|
||||
if (ldcore->intf.vsync != NULL)
|
||||
(*ldcore->intf.vsync)(ld, &ldcore->metadata[ldcore->fieldnum], ldcore->fieldnum, curtime);
|
||||
|
||||
|
||||
/* set a timer to begin fetching the next frame just before the VBI data would be fetched */
|
||||
timer_set(video_screen_get_time_until_pos(screen, 16*2, 0), ld, 0, perform_player_update);
|
||||
}
|
||||
@ -526,7 +526,7 @@ UINT8 laserdisc_line_r(const device_config *device, UINT8 line)
|
||||
|
||||
/*-------------------------------------------------
|
||||
laserdisc_get_video - return the current
|
||||
video frame; return TRUE if valid or FALSE
|
||||
video frame; return TRUE if valid or FALSE
|
||||
if video off
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -894,7 +894,7 @@ static void read_track_data(laserdisc_state *ld)
|
||||
INT32 chdtrack;
|
||||
|
||||
/* if the previous field had a frame number, and the new field immediately follows it,
|
||||
force the new field to pair with the previous one */
|
||||
force the new field to pair with the previous one */
|
||||
frame = &ldcore->frame[ldcore->videoindex];
|
||||
if ((ldcore->metadata[fieldnum ^ 1].line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE && (tracknum * 2 + fieldnum == frame->lastfield + 1))
|
||||
frame->numfields = 1;
|
||||
@ -910,11 +910,11 @@ static void read_track_data(laserdisc_state *ld)
|
||||
frame = &ldcore->frame[ldcore->videoindex];
|
||||
frame->numfields = 0;
|
||||
}
|
||||
|
||||
|
||||
/* if we're squelched, reset the frame counter */
|
||||
if (ldcore->videosquelch)
|
||||
frame->numfields = 0;
|
||||
|
||||
|
||||
/* remember the last field number */
|
||||
frame->lastfield = tracknum * 2 + fieldnum;
|
||||
|
||||
@ -949,7 +949,7 @@ static void read_track_data(laserdisc_state *ld)
|
||||
chdtrack = MAX(chdtrack, 0);
|
||||
chdtrack = MIN(chdtrack, ldcore->chdtracks - 1);
|
||||
readhunk = chdtrack * 2 + fieldnum;
|
||||
|
||||
|
||||
/* set the VBI data for the new field from our precomputed data */
|
||||
if (ldcore->vbidata != NULL)
|
||||
vbi_metadata_unpack(&ldcore->metadata[fieldnum], &vbiframe, &ldcore->vbidata[readhunk * VBI_PACKED_BYTES]);
|
||||
@ -982,11 +982,11 @@ static void process_track_data(const device_config *device)
|
||||
/* remove the video if we had an error */
|
||||
if (ldcore->readresult != CHDERR_NONE)
|
||||
ldcore->avconfig.video = NULL;
|
||||
|
||||
|
||||
/* count the field as read if we are successful */
|
||||
if (ldcore->avconfig.video != NULL)
|
||||
ldcore->frame[ldcore->videoindex].numfields++;
|
||||
|
||||
|
||||
/* render the display if present */
|
||||
// if (ldcore->display && ldcore->avconfig.video != NULL)
|
||||
// render_display((UINT16 *)ldcore->avconfig.video->base, ldcore->avconfig.video->rowpixels, ldcore->avconfig.video->width, ldcore->last_frame);
|
||||
@ -1472,7 +1472,7 @@ static void init_disc(const device_config *device)
|
||||
|
||||
/* determine the maximum track and allocate a frame buffer */
|
||||
ldcore->chdtracks = totalhunks / 2;
|
||||
|
||||
|
||||
/* allocate memory for the precomputed per-frame metadata */
|
||||
ldcore->vbidata = auto_malloc(totalhunks * VBI_PACKED_BYTES);
|
||||
err = chd_get_metadata(ldcore->disc, AV_LD_METADATA_TAG, 0, ldcore->vbidata, totalhunks * VBI_PACKED_BYTES, &vbilength, NULL);
|
||||
@ -1501,7 +1501,7 @@ static void init_video(const device_config *device)
|
||||
for (index = 0; index < ARRAY_LENGTH(ldcore->frame); index++)
|
||||
{
|
||||
frame_data *frame = &ldcore->frame[index];
|
||||
|
||||
|
||||
/* first allocate a YUY16 bitmap at 2x the height */
|
||||
frame->bitmap = auto_bitmap_alloc(ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
|
||||
fillbitmap_yuy16(frame->bitmap, 40, 109, 240);
|
||||
|
@ -9,13 +9,13 @@
|
||||
|
||||
**************************************************************************
|
||||
|
||||
Still to do:
|
||||
|
||||
* add overlay properly (need capture)
|
||||
* implement SLOW TRG
|
||||
* figure out Simutrek without jump hack
|
||||
* figure out serial protocol issues (current hack works nicely)
|
||||
* determine actual slow/fast speeds
|
||||
Still to do:
|
||||
|
||||
* add overlay properly (need capture)
|
||||
* implement SLOW TRG
|
||||
* figure out Simutrek without jump hack
|
||||
* figure out serial protocol issues (current hack works nicely)
|
||||
* determine actual slow/fast speeds
|
||||
|
||||
*************************************************************************/
|
||||
|
||||
@ -313,7 +313,7 @@ static INT32 pr8210_update(laserdisc_state *ld, const vbi_metadata *vbi, int fie
|
||||
{
|
||||
ldplayer_data *player = ld->player;
|
||||
UINT8 spdl_on = !(player->port1 & 0x10);
|
||||
|
||||
|
||||
/* logging */
|
||||
if (LOG_VBLANK_VBI)
|
||||
printf("%3d:Update(%d)\n", video_screen_get_vpos(ld->screen), fieldnum);
|
||||
@ -351,7 +351,7 @@ static INT32 pr8210_update(laserdisc_state *ld, const vbi_metadata *vbi, int fie
|
||||
|
||||
void pr8210_overlay(laserdisc_state *ld, bitmap_t *bitmap)
|
||||
{
|
||||
// ldplayer_data *player = ld->player;
|
||||
// ldplayer_data *player = ld->player;
|
||||
}
|
||||
|
||||
|
||||
@ -403,13 +403,13 @@ static void pr8210_control_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
|
||||
{
|
||||
UINT8 newcommand = (player->accumulator >> 2) & 0x1f;
|
||||
attotime rejectuntil;
|
||||
|
||||
|
||||
/* data is stored to the PIA in bit-reverse order */
|
||||
player->pia.porta = BITSWAP8(newcommand, 0,1,2,3,4,5,6,7);
|
||||
|
||||
|
||||
/* the MCU logic requires a 0 to execute many commands; however, nobody
|
||||
consistently sends a 0, whereas they do tend to send duplicate commands...
|
||||
if we assume that each duplicate causes a 0, we get the correct results */
|
||||
consistently sends a 0, whereas they do tend to send duplicate commands...
|
||||
if we assume that each duplicate causes a 0, we get the correct results */
|
||||
rejectuntil = attotime_add(player->lastcommandtime, PR8210_REJECT_DUPLICATE_TIME);
|
||||
player->lastcommandtime = curtime;
|
||||
if (player->pia.porta == player->lastcommand && attotime_compare(curtime, rejectuntil) < 0)
|
||||
@ -424,7 +424,7 @@ static void pr8210_control_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
|
||||
while (input_code_pressed(KEYCODE_ENTER)) ;
|
||||
while (!input_code_pressed(KEYCODE_ENTER)) ;
|
||||
}
|
||||
|
||||
|
||||
/* reset the first bit time so that the accumulator clears on the next write */
|
||||
player->firstbittime = attotime_sub(curtime, PR8210_MAX_WORD_TIME);
|
||||
}
|
||||
@ -447,7 +447,7 @@ static TIMER_CALLBACK( vsync_off )
|
||||
/*-------------------------------------------------
|
||||
vbi_data_fetch - timer callback to update the
|
||||
VBI data in the PIA as soon as it is ready;
|
||||
this must happy early in the frame because
|
||||
this must happy early in the frame because
|
||||
the player logic relies on fetching it here
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -510,7 +510,7 @@ static READ8_HANDLER( pr8210_pia_r )
|
||||
laserdisc_state *ld = find_pr8210(machine);
|
||||
ldplayer_data *player = ld->player;
|
||||
UINT8 result = 0xff;
|
||||
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
/* (20-26) 7 characters for the chapter/frame */
|
||||
@ -518,19 +518,19 @@ static READ8_HANDLER( pr8210_pia_r )
|
||||
case 0x22: case 0x23: case 0x24: case 0x25: case 0x26:
|
||||
result = player->pia.frame[offset - 0x20];
|
||||
break;
|
||||
|
||||
|
||||
/* (A0) port A value (from serial decoder) */
|
||||
case 0xa0:
|
||||
result = player->pia.porta;
|
||||
break;
|
||||
|
||||
|
||||
/* (C0) VBI decoding state 1 */
|
||||
case 0xc0:
|
||||
if (LOG_VBLANK_VBI)
|
||||
printf("%3d:PIA(C0)\n", video_screen_get_vpos(ld->screen));
|
||||
result = player->pia.vbi1;
|
||||
break;
|
||||
|
||||
|
||||
/* (E0) VBI decoding state 2 */
|
||||
case 0xe0:
|
||||
if (LOG_VBLANK_VBI)
|
||||
@ -556,7 +556,7 @@ static WRITE8_HANDLER( pr8210_pia_w )
|
||||
laserdisc_state *ld = find_pr8210(machine);
|
||||
ldplayer_data *player = ld->player;
|
||||
UINT8 value;
|
||||
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
/* (22-30) 15 characters for the display */
|
||||
@ -565,10 +565,10 @@ static WRITE8_HANDLER( pr8210_pia_w )
|
||||
case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30:
|
||||
player->pia.text[offset - 0x22] = data;
|
||||
break;
|
||||
|
||||
|
||||
/* (40) control lines */
|
||||
case 0x40:
|
||||
|
||||
|
||||
/* toggle bit 0 to latch chapter number into display area */
|
||||
if (!(data & 0x01) && (player->pia.control & 0x01))
|
||||
{
|
||||
@ -586,16 +586,16 @@ static WRITE8_HANDLER( pr8210_pia_w )
|
||||
}
|
||||
player->pia.control = data;
|
||||
break;
|
||||
|
||||
|
||||
/* (60) port B value (LEDs) */
|
||||
case 0x60:
|
||||
|
||||
|
||||
/* these 4 are direct-connect */
|
||||
output_set_value("pr8210_audio1", (data & 0x01) != 0);
|
||||
output_set_value("pr8210_audio2", (data & 0x02) != 0);
|
||||
output_set_value("pr8210_clv", (data & 0x04) != 0);
|
||||
output_set_value("pr8210_cav", (data & 0x08) != 0);
|
||||
|
||||
|
||||
/* remaining 3 bits select one of 5 LEDs via a mux */
|
||||
value = ((data & 0x40) >> 6) | ((data & 0x20) >> 4) | ((data & 0x10) >> 2);
|
||||
output_set_value("pr8210_srev", (value == 0));
|
||||
@ -607,12 +607,12 @@ static WRITE8_HANDLER( pr8210_pia_w )
|
||||
player->pia.portb = data;
|
||||
update_audio_squelch(ld);
|
||||
break;
|
||||
|
||||
|
||||
/* (80) display enable */
|
||||
case 0x80:
|
||||
player->pia.display = data & 0x01;
|
||||
break;
|
||||
|
||||
|
||||
/* no other writes known */
|
||||
default:
|
||||
mame_printf_debug("%03X:Unknown PR-8210 PIA write to offset %02X = %02X\n", activecpu_get_pc(), offset, data);
|
||||
@ -660,9 +660,9 @@ static READ8_HANDLER( pr8210_bus_r )
|
||||
/* bus bit 1: spindle motor stop detector */
|
||||
if (!spdl_on)
|
||||
result |= 0x02;
|
||||
|
||||
|
||||
/* bus bit 0: SLOW TIMER OUT */
|
||||
// if (attotime_compare(attotime_sub(timer_get_time(), player->slowtrg),
|
||||
// if (attotime_compare(attotime_sub(timer_get_time(), player->slowtrg),
|
||||
|
||||
/* loop at beginning waits for $40=0, $02=1 */
|
||||
return result;
|
||||
@ -719,14 +719,14 @@ static WRITE8_HANDLER( pr8210_port1_w )
|
||||
int delta = (data & 0x04) ? PR8210_SCAN_SPEED : PR8210_SEEK_FAST_SPEED;
|
||||
ldcore_set_slider_speed(ld, delta * direction);
|
||||
}
|
||||
|
||||
|
||||
/* bit 1 high stops scanning */
|
||||
else
|
||||
ldcore_set_slider_speed(ld, 0);
|
||||
|
||||
/* video squelch is controlled by bit 5 */
|
||||
update_video_squelch(ld);
|
||||
|
||||
|
||||
/* audio squelch is controlled by bit 6 */
|
||||
update_audio_squelch(ld);
|
||||
}
|
||||
@ -760,7 +760,7 @@ static WRITE8_HANDLER( pr8210_port2_w )
|
||||
if (!(data & 0x20) && (prev & 0x20))
|
||||
player->slowtrg = timer_get_time();
|
||||
|
||||
/* bit 6 when low triggers an IRQ on the MCU */
|
||||
/* bit 6 when low triggers an IRQ on the MCU */
|
||||
cpunum_set_input_line(machine, player->cpunum, MCS48_INPUT_IRQ, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
|
||||
|
||||
/* standby LED is set accordingl to bit 4 */
|
||||
@ -977,7 +977,7 @@ static TIMER_CALLBACK( simutrek_latched_data_w )
|
||||
{
|
||||
laserdisc_state *ld = ptr;
|
||||
ldplayer_data *player = ld->player;
|
||||
|
||||
|
||||
/* store the data and set the ready flag */
|
||||
player->simutrek.data = param;
|
||||
player->simutrek.data_ready = TRUE;
|
||||
@ -1009,14 +1009,14 @@ static WRITE8_HANDLER( simutrek_port2_w )
|
||||
laserdisc_state *ld = find_pr8210(machine);
|
||||
ldplayer_data *player = ld->player;
|
||||
UINT8 prev = player->simutrek.port2;
|
||||
|
||||
|
||||
/* update stat */
|
||||
player->simutrek.port2 = data;
|
||||
|
||||
/* bit $20 goes to the serial line */
|
||||
if ((data ^ prev) & 0x20)
|
||||
pr8210_control_w(ld, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
|
||||
|
||||
|
||||
/* bit $10 goes to JUMP TRG */
|
||||
/* bit $08 controls direction */
|
||||
if (!(data & 0x10) && (prev & 0x10))
|
||||
@ -1026,11 +1026,11 @@ static WRITE8_HANDLER( simutrek_port2_w )
|
||||
printf("%3d:JUMP TRG (Simutrek PC=%03X)\n", video_screen_get_vpos(ld->screen), activecpu_get_pc());
|
||||
ldcore_advance_slider(ld, direction);
|
||||
}
|
||||
|
||||
|
||||
/* bit $04 controls who owns the JUMP TRG command */
|
||||
if (!(data & 0x04) && (prev & 0x04))
|
||||
player->simutrek.jumphack = 1;
|
||||
|
||||
|
||||
/* bits $03 control something (status?) */
|
||||
if (LOG_SIMUTREK && ((data ^ prev) & 0x03))
|
||||
printf("Simutrek Status = %d\n", data & 0x03);
|
||||
|
@ -458,7 +458,7 @@ static INPUT_PORTS_START( ldplayer )
|
||||
PORT_BIT( 0x0000020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Slow forward") PORT_CODE(KEYCODE_CLOSEBRACE)
|
||||
PORT_BIT( 0x0000040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Fast reverse") PORT_CODE(KEYCODE_COMMA)
|
||||
PORT_BIT( 0x0000080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Fast forward") PORT_CODE(KEYCODE_STOP)
|
||||
PORT_BIT( 0x0000100, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Play/Pause") PORT_CODE(KEYCODE_SPACE)
|
||||
PORT_BIT( 0x0000100, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Play/Pause") PORT_CODE(KEYCODE_SPACE)
|
||||
PORT_BIT( 0x0000200, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Toggle frame display") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT( 0x0000400, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Toggle chapter display") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0x0000800, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Toggle left channel") PORT_CODE(KEYCODE_L)
|
||||
|
@ -335,7 +335,7 @@ void vbi_parse_all(const UINT16 *source, int sourcerowpixels, int sourcewidth, i
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
vbi_metadata_pack - pack the VBI data down
|
||||
vbi_metadata_pack - pack the VBI data down
|
||||
into a smaller form for storage
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -361,7 +361,7 @@ void vbi_metadata_pack(UINT8 *dest, UINT32 framenum, const vbi_metadata *vbi)
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
vbi_metadata_unpack - unpack the VBI data
|
||||
vbi_metadata_unpack - unpack the VBI data
|
||||
from a smaller form into the full structure
|
||||
-------------------------------------------------*/
|
||||
|
||||
|
@ -133,7 +133,7 @@ There's also (external) JAMMA adapter - 4th board filled with resistors and diod
|
||||
|
||||
|
||||
|
||||
Funny Land de Luxe
|
||||
Funny Land de Luxe
|
||||
------------------
|
||||
|
||||
Video board has additional chips:
|
||||
|
@ -540,7 +540,7 @@ static INPUT_PORTS_START( baddudes )
|
||||
PORT_START("DSW")
|
||||
DEC0_COIN_SETTING
|
||||
PORT_SERVICE( 0x0010, IP_ACTIVE_LOW ) PORT_DIPLOCATION("SW1:5")
|
||||
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:7")
|
||||
@ -742,7 +742,7 @@ static INPUT_PORTS_START( bouldash )
|
||||
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0x0003, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0002, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
|
||||
PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5,6")
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x0008, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
|
||||
|
@ -162,7 +162,7 @@ static INPUT_PORTS_START( megadon )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Rotation" ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x04, "Slow" )
|
||||
PORT_DIPSETTING( 0x00, "Fast" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "ERG" ) PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPNAME( 0x08, 0x08, "ERG" ) PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, "Game Mode" ) PORT_DIPLOCATION("SW1:8")
|
||||
|
@ -1,12 +1,12 @@
|
||||
/***************************************************************************
|
||||
|
||||
Atari Fire Fox hardware
|
||||
|
||||
|
||||
driver by smf, Aaron Giles, Chris Hardy & Scott Waye
|
||||
|
||||
short term:
|
||||
split driver/vidhrdw/sndhrdw/machine
|
||||
add option to centre joystick to enter test menu
|
||||
split driver/vidhrdw/sndhrdw/machine
|
||||
add option to centre joystick to enter test menu
|
||||
|
||||
it uses a quad pokey package 137323-1221-406???
|
||||
the laser disc is a philips lvp 22vp931
|
||||
@ -21,7 +21,7 @@ Laser Disc - 30 minutes - Color - 1983
|
||||
An interactive CAV laserdisc designed for use in the Atari video arcade game machine.
|
||||
Contains over 100 visual and sound segments that include all of the branching possibilities of this game.
|
||||
Each segment is two to five seconds long. This disc will play on any player,
|
||||
but requires a special level III player for proper control. Video: CAV. Audio: Analog.
|
||||
but requires a special level III player for proper control. Video: CAV. Audio: Analog.
|
||||
|
||||
*/
|
||||
|
||||
@ -45,15 +45,15 @@ fffc=??? e38d
|
||||
fffe=reset e7cc
|
||||
*/
|
||||
|
||||
/* 0x50-52 Used as a copy of the status
|
||||
0x59 = 6-length of laser disc return code
|
||||
/* 0x50-52 Used as a copy of the status
|
||||
0x59 = 6-length of laser disc return code
|
||||
0x53 = pointer to laser disc return
|
||||
( LaserDiscBits & 0x80 ) != 0 when return code available
|
||||
DSKREAD = acknowledge
|
||||
ReadDiscData = return code
|
||||
*/
|
||||
|
||||
/* FXXXXX for first field
|
||||
/* FXXXXX for first field
|
||||
AXXXXX for second field */
|
||||
|
||||
static int m_n_disc_lock;
|
||||
@ -68,8 +68,8 @@ static int disc_reset;
|
||||
static int disk_opr = 0;
|
||||
static int dav = 0x80;
|
||||
static int dak_just_low = 0; /* simulate the 15 uS time for the player to read the data */
|
||||
static int dak = 0x40; /* DAK or DSKFULL active low indicates player has data,
|
||||
reset when player has read data */
|
||||
static int dak = 0x40; /* DAK or DSKFULL active low indicates player has data,
|
||||
reset when player has read data */
|
||||
static int disk_data; /* after a command is sent the first bit indicates an error, except of the data is 0x00 which indicates an invalid manchester data read (whatever that means) */
|
||||
|
||||
int laser_disc_speed = 0;
|
||||
@ -89,8 +89,8 @@ READ8_HANDLER( firefox_disc_status_r )
|
||||
n_data = dav | dak | disk_opr; /* always operational */
|
||||
logerror( "%08x: disc status r %02x\n", activecpu_get_pc(), n_data & ( 0x80 | 0x40 | 0x20 ) );
|
||||
/*
|
||||
fprintf(stderr, "%08x: reading disc status r %02x\n", activecpu_get_pc(), n_data & ( 0x80 | 0x40 | 0x20 ) );
|
||||
*/
|
||||
fprintf(stderr, "%08x: reading disc status r %02x\n", activecpu_get_pc(), n_data & ( 0x80 | 0x40 | 0x20 ) );
|
||||
*/
|
||||
if(dak_just_low)
|
||||
{
|
||||
/* assume that the next status read will be after 15uS */
|
||||
@ -175,14 +175,14 @@ WRITE8_HANDLER( firefox_disc_write_w )
|
||||
( ( command_data[ 2 ] & 0x0f ) * 2 );
|
||||
laser_seek_frame(laser_disc_field >> 1);
|
||||
/*
|
||||
fprintf(stderr, "CMD: goto frame #%01x%02x%02x & play forward disc_field %d\n", command_data[ 0 ] & 0x0f, command_data[ 1 ], command_data[ 2 ] , laser_disc_field);
|
||||
*/
|
||||
fprintf(stderr, "CMD: goto frame #%01x%02x%02x & play forward disc_field %d\n", command_data[ 0 ] & 0x0f, command_data[ 1 ], command_data[ 2 ] , laser_disc_field);
|
||||
*/
|
||||
laser_disc_speed = 1;
|
||||
return;
|
||||
case 0xd0:
|
||||
/*
|
||||
fprintf(stderr, "CMD: goto Frame #%01x%02x%02x & halt (first field)\n", command_data[ 0 ] & 0x0f, command_data[ 1 ], command_data[ 2 ] );
|
||||
*/
|
||||
fprintf(stderr, "CMD: goto Frame #%01x%02x%02x & halt (first field)\n", command_data[ 0 ] & 0x0f, command_data[ 1 ], command_data[ 2 ] );
|
||||
*/
|
||||
laser_disc_field =
|
||||
( ( command_data[ 0 ] & 0x0f ) * 20000 ) +
|
||||
( (( command_data[ 1 ] & 0xf0 ) >> 4) * 2000 ) +
|
||||
@ -386,7 +386,7 @@ WRITE8_HANDLER( firefox_objram_bank_w )
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Main <-> sound communication
|
||||
* Main <-> sound communication
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -394,12 +394,12 @@ static CUSTOM_INPUT( mainflag_r )
|
||||
{
|
||||
return main_to_sound_flag;
|
||||
}
|
||||
|
||||
|
||||
static CUSTOM_INPUT( soundflag_r )
|
||||
{
|
||||
return sound_to_main_flag;
|
||||
}
|
||||
|
||||
|
||||
static READ8_HANDLER( sound_to_main_r )
|
||||
{
|
||||
sound_to_main_flag = 0;
|
||||
@ -436,7 +436,7 @@ static WRITE8_HANDLER( sound_to_main_w )
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* 6532 RIOT handlers
|
||||
* 6532 RIOT handlers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -603,7 +603,7 @@ MACHINE_START( firefox )
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Main CPU memory handlers
|
||||
* Main CPU memory handlers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -652,7 +652,7 @@ ADDRESS_MAP_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Sound CPU memory handlers
|
||||
* Sound CPU memory handlers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -673,7 +673,7 @@ ADDRESS_MAP_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Port definitions
|
||||
* Port definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -755,7 +755,7 @@ INPUT_PORTS_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Graphics definitions
|
||||
* Graphics definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -790,7 +790,7 @@ GFXDECODE_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Machine driver
|
||||
* Machine driver
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -865,7 +865,7 @@ MACHINE_DRIVER_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROM definitions
|
||||
* ROM definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
@ -949,7 +949,7 @@ ROM_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Game drivers
|
||||
* Game drivers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
@ -183,18 +183,18 @@ static WRITE16_HANDLER( galaxi_500004_w )
|
||||
if ( ACCESSING_BITS_0_7 )
|
||||
{
|
||||
/*
|
||||
- Lbits -
|
||||
7654 3210
|
||||
=========
|
||||
---- ---x Hold1 lamp.
|
||||
---- --x- Hold2 lamp.
|
||||
---- -x-- Hold3 lamp.
|
||||
---- x--- Hold4 lamp.
|
||||
---x ---- Hold5 lamp.
|
||||
--x- ---- Start lamp.
|
||||
-x-- ---- Payout.
|
||||
- Lbits -
|
||||
7654 3210
|
||||
=========
|
||||
---- ---x Hold1 lamp.
|
||||
---- --x- Hold2 lamp.
|
||||
---- -x-- Hold3 lamp.
|
||||
---- x--- Hold4 lamp.
|
||||
---x ---- Hold5 lamp.
|
||||
--x- ---- Start lamp.
|
||||
-x-- ---- Payout.
|
||||
|
||||
*/
|
||||
*/
|
||||
output_set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */
|
||||
output_set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */
|
||||
output_set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */
|
||||
|
@ -726,7 +726,7 @@ static WRITE16_HANDLER( mcu_mailbox_w_68k )
|
||||
COMBINE_DATA(&mcu_mailbox[offset%8]);
|
||||
|
||||
/* FIXME: This shouldn't be necessary now that the C70 BIOS is implemented,
|
||||
but for some reason the MCU never responds to the version string command */
|
||||
but for some reason the MCU never responds to the version string command */
|
||||
if ( (namcona1_gametype == NAMCO_NUMANATH) || (namcona1_gametype == NAMCO_KNCKHEAD) )
|
||||
{
|
||||
if ((namcona1_workram[0xf72/2] >> 8) == 7)
|
||||
|
@ -951,39 +951,39 @@ static READ8_HANDLER(dac7_r) // bit 7
|
||||
return input_port_read_safe(machine, "P3", 0xff)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac6_r) // bit 3
|
||||
static READ8_HANDLER(dac6_r) // bit 3
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<1)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<1)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac5_r) // bit 2
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<2)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<2)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac4_r) // bit 1
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<3)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<3)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac3_r) // bit 0
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<4)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<4)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac2_r) // bit 4
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<5)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<5)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac1_r) // bit 5
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<6)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<6)&0x80;
|
||||
}
|
||||
|
||||
static READ8_HANDLER(dac0_r) // bit 6
|
||||
{
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<7)&0x80;
|
||||
return (input_port_read_safe(machine, "P3", 0xff)<<7)&0x80;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( namcoc75_io, ADDRESS_SPACE_IO, 8 )
|
||||
@ -1938,10 +1938,10 @@ static INPUT_PORTS_START( namconb1 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
|
||||
|
||||
PORT_START("P4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
|
||||
|
@ -313,7 +313,7 @@ static ADDRESS_MAP_START( sht_io_map, ADDRESS_SPACE_IO, 8 )
|
||||
AM_RANGE(0x08, 0x08) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x0c, 0x0c) AM_READ_PORT("DSW2") /* DIP2 */
|
||||
AM_RANGE(0x0d, 0x0d) AM_READ_PORT("DSW1") /* DIP1 some games read it from here... */
|
||||
AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") AM_WRITE(mcuenable_hack_w)
|
||||
AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") AM_WRITE(mcuenable_hack_w)
|
||||
/* DIP1 ... and some others from here but there are games which check BOTH! */
|
||||
AM_RANGE(0x12, 0x12) AM_READ_PORT("TRIGGER")
|
||||
AM_RANGE(0x14, 0x14) AM_WRITE(system1_soundport_w) /* sound commands */
|
||||
|
@ -85,7 +85,7 @@ static clock_t lastprogress = 0;
|
||||
***************************************************************************/
|
||||
|
||||
/*-------------------------------------------------
|
||||
print_big_int - 64-bit int printing with
|
||||
print_big_int - 64-bit int printing with
|
||||
commas
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -107,7 +107,7 @@ static void print_big_int(UINT64 intvalue, char *output)
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
big_int_string - return a string for a big
|
||||
big_int_string - return a string for a big
|
||||
integer
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -842,7 +842,7 @@ static int do_createav(int argc, char *argv[], int param)
|
||||
firstframe *= 2;
|
||||
numframes *= 2;
|
||||
}
|
||||
|
||||
|
||||
/* allocate space for the frame data */
|
||||
if (height == 524/2 || height == 624/2)
|
||||
{
|
||||
@ -937,7 +937,7 @@ static int do_createav(int argc, char *argv[], int param)
|
||||
fprintf(stderr, "Error reading frame %d from AVI file: %s\n", effframe, avi_error_string(avierr));
|
||||
err = CHDERR_COMPRESSION_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/* update metadata for this frame */
|
||||
if (ldframedata != NULL)
|
||||
{
|
||||
@ -1804,7 +1804,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
goto cleanup;
|
||||
}
|
||||
header = *chd_get_header(chd);
|
||||
|
||||
|
||||
/* get the metadata */
|
||||
err = chd_get_metadata(chd, AV_METADATA_TAG, 0, metadata, sizeof(metadata), NULL, NULL);
|
||||
if (err != CHDERR_NONE)
|
||||
@ -1847,7 +1847,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
err = CHDERR_OUT_OF_MEMORY;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
||||
/* read the metadata */
|
||||
err = chd_get_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES, &actlength, NULL);
|
||||
if (err != CHDERR_NONE)
|
||||
@ -1897,7 +1897,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
if (vbiframe != 0 || origvbi.white != 0 || origvbi.line16 != 0 || origvbi.line17 != 0 || origvbi.line18 != 0 || origvbi.line1718 != 0)
|
||||
{
|
||||
int errors = 0;
|
||||
|
||||
|
||||
if (vbiframe != framenum)
|
||||
{
|
||||
fprintf(stderr, "%d:Frame mismatch in VBI data (%d, should be %d)\n", framenum, vbiframe, framenum);
|
||||
@ -1931,7 +1931,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
fixes += errors;
|
||||
fixframes += (errors != 0);
|
||||
}
|
||||
|
||||
|
||||
/* pack the new data */
|
||||
vbi_metadata_pack(&vbidata[framenum * VBI_PACKED_BYTES], framenum, &vbi);
|
||||
}
|
||||
@ -1942,7 +1942,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
printf("\nNo fixes required\n");
|
||||
else
|
||||
printf("\nFound %d errors on %d frames\n", fixes, fixframes);
|
||||
|
||||
|
||||
/* close the drive */
|
||||
chd_close(chd);
|
||||
chd = NULL;
|
||||
@ -1957,7 +1957,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
fprintf(stderr, "Error writing new header: %s\n", chd_error_string(err));
|
||||
header.flags &= ~CHDFLAGS_IS_WRITEABLE;
|
||||
writeable = TRUE;
|
||||
|
||||
|
||||
/* open the file */
|
||||
err = chd_open(inputfile, CHD_OPEN_READWRITE, NULL, &chd);
|
||||
if (err != CHDERR_NONE)
|
||||
@ -1965,7 +1965,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
fprintf(stderr, "Error opening CHD file '%s': %s\n", inputfile, chd_error_string(err));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
||||
/* write new metadata */
|
||||
err = chd_set_metadata(chd, AV_LD_METADATA_TAG, 0, vbidata, header.totalhunks * VBI_PACKED_BYTES);
|
||||
if (err != CHDERR_NONE)
|
||||
@ -1975,7 +1975,7 @@ static int do_fixavdata(int argc, char *argv[], int param)
|
||||
}
|
||||
else
|
||||
printf("Updated metadata written successfully\n");
|
||||
|
||||
|
||||
/* allow cleanup code to close the file and revert the header */
|
||||
}
|
||||
|
||||
|
@ -9,4 +9,4 @@
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
const char build_version[] = "0.127u3 ("__DATE__")";
|
||||
const char build_version[] = "0.127u4 ("__DATE__")";
|
||||
|
Loading…
Reference in New Issue
Block a user