mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
Added bare-bones Sony LDP-1000 device (nw)
This commit is contained in:
parent
4ceb1a97f3
commit
3c030752cf
@ -1176,6 +1176,18 @@ if (MACHINES["LDV1000"]~=null) then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------------------------------------------
|
||||||
|
--
|
||||||
|
--@src/devices/machine/ldp1000.h,MACHINES["LDP1000"] = true
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
if (MACHINES["LDP1000"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/machine/ldp1000.cpp",
|
||||||
|
MAME_DIR .. "src/devices/machine/ldp1000.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
--
|
--
|
||||||
--@src/devices/machine/ldvp931.h,MACHINES["LDVP931"] = true
|
--@src/devices/machine/ldvp931.h,MACHINES["LDVP931"] = true
|
||||||
|
@ -429,6 +429,7 @@ MACHINES["LC89510"] = true
|
|||||||
MACHINES["LDPR8210"] = true
|
MACHINES["LDPR8210"] = true
|
||||||
MACHINES["LDSTUB"] = true
|
MACHINES["LDSTUB"] = true
|
||||||
MACHINES["LDV1000"] = true
|
MACHINES["LDV1000"] = true
|
||||||
|
MACHINES["LDP1000"] = true
|
||||||
MACHINES["LDVP931"] = true
|
MACHINES["LDVP931"] = true
|
||||||
--MACHINES["LH5810"] = true
|
--MACHINES["LH5810"] = true
|
||||||
MACHINES["LINFLASH"] = true
|
MACHINES["LINFLASH"] = true
|
||||||
|
120
src/devices/machine/ldp1000.cpp
Normal file
120
src/devices/machine/ldp1000.cpp
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Angelo Salese
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sony LDP-1000 laserdisc emulation.
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- Dump BIOSes (seven of them according to docs)
|
||||||
|
- Hookup with Sony SMC-70 / SMC-777
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "machine/ldp1000.h"
|
||||||
|
|
||||||
|
|
||||||
|
ROM_START( ldp1000 )
|
||||||
|
ROM_REGION( 0x2000, "ldp1000", 0 )
|
||||||
|
ROM_LOAD( "ldp1000_bios.bin", 0x0000, 0x2000, NO_DUMP )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// GLOBAL VARIABLES
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
const device_type SONY_LDP1000 = &device_creator<sony_ldp1000_device>;
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// ldp1000_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
sony_ldp1000_device::sony_ldp1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
|
: laserdisc_device(mconfig, SONY_LDP1000, "Sony LDP-1000", tag, owner, clock, "ldp1000", __FILE__)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_validity_check - perform validity checks
|
||||||
|
// on this device
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sony_ldp1000_device::device_validity_check(validity_checker &valid) const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sony_ldp1000_device::device_start()
|
||||||
|
{
|
||||||
|
laserdisc_device::device_start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_reset - device-specific reset
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sony_ldp1000_device::device_reset()
|
||||||
|
{
|
||||||
|
laserdisc_device::device_reset();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_rom_region - return a pointer to our
|
||||||
|
// ROM region definitions
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
const rom_entry *sony_ldp1000_device::device_rom_region() const
|
||||||
|
{
|
||||||
|
return ROM_NAME(ldp1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// player_vsync - VSYNC callback, called at the
|
||||||
|
// start of the blanking period
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void sony_ldp1000_device::player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime)
|
||||||
|
{
|
||||||
|
//printf("%d vsync\n",fieldnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// player_update - update callback, called on
|
||||||
|
// the first visible line of the frame
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
INT32 sony_ldp1000_device::player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime)
|
||||||
|
{
|
||||||
|
//printf("%d update\n",fieldnum);
|
||||||
|
|
||||||
|
return fieldnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// READ/WRITE HANDLERS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
READ8_MEMBER( sony_ldp1000_device::read )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE8_MEMBER( sony_ldp1000_device::write )
|
||||||
|
{
|
||||||
|
}
|
67
src/devices/machine/ldp1000.h
Normal file
67
src/devices/machine/ldp1000.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Angelo Salese
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Sony LDP-1000 laserdisc emulation.
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef __LDP1000DEV_H__
|
||||||
|
#define __LDP1000DEV_H__
|
||||||
|
|
||||||
|
#include "laserdsc.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// INTERFACE CONFIGURATION MACROS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
#define MCFG_LASERDISC_LDP1000_ADD(_tag) \
|
||||||
|
MCFG_DEVICE_ADD(_tag, SONY_LDP1000, 0)
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
extern const device_type SONY_LDP1000;
|
||||||
|
|
||||||
|
// ======================> sony_ldp1000_device
|
||||||
|
|
||||||
|
class sony_ldp1000_device : public laserdisc_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
sony_ldp1000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
// I/O operations
|
||||||
|
DECLARE_WRITE8_MEMBER( write );
|
||||||
|
DECLARE_READ8_MEMBER( read );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_validity_check(validity_checker &valid) const override;
|
||||||
|
virtual void device_start() override;
|
||||||
|
virtual void device_reset() override;
|
||||||
|
virtual const rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
|
virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override;
|
||||||
|
virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override;
|
||||||
|
virtual void player_overlay(bitmap_yuy16 &bitmap) override { }
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// GLOBAL VARIABLES
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -111,8 +111,9 @@ Sound processor - 6502
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/m6502/m6502.h"
|
#include "cpu/m6502/m6502.h"
|
||||||
#include "sound/ay8910.h"
|
#include "sound/ay8910.h"
|
||||||
#include "machine/ldv1000.h"
|
#include "machine/ldp1000.h"
|
||||||
#include "machine/gen_latch.h"
|
#include "machine/gen_latch.h"
|
||||||
|
#include "machine/6850acia.h"
|
||||||
|
|
||||||
|
|
||||||
class deco_ld_state : public driver_device
|
class deco_ld_state : public driver_device
|
||||||
@ -123,6 +124,7 @@ public:
|
|||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_audiocpu(*this, "audiocpu"),
|
m_audiocpu(*this, "audiocpu"),
|
||||||
m_laserdisc(*this, "laserdisc"),
|
m_laserdisc(*this, "laserdisc"),
|
||||||
|
//m_acia(*this, "acia"),
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
m_gfxdecode(*this, "gfxdecode"),
|
||||||
m_screen(*this, "screen"),
|
m_screen(*this, "screen"),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
@ -137,7 +139,8 @@ public:
|
|||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
optional_device<cpu_device> m_audiocpu;
|
optional_device<cpu_device> m_audiocpu;
|
||||||
required_device<pioneer_ldv1000_device> m_laserdisc;
|
required_device<sony_ldp1000_device> m_laserdisc;
|
||||||
|
//required_device<acia6850_device> m_acia;
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
required_device<palette_device> m_palette;
|
required_device<palette_device> m_palette;
|
||||||
@ -150,20 +153,17 @@ public:
|
|||||||
|
|
||||||
UINT8 m_laserdisc_data;
|
UINT8 m_laserdisc_data;
|
||||||
int m_nmimask;
|
int m_nmimask;
|
||||||
DECLARE_READ8_MEMBER(laserdisc_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(laserdisc_w);
|
|
||||||
DECLARE_READ8_MEMBER(sound_status_r);
|
DECLARE_READ8_MEMBER(sound_status_r);
|
||||||
DECLARE_WRITE8_MEMBER(decold_sound_cmd_w);
|
DECLARE_WRITE8_MEMBER(decold_sound_cmd_w);
|
||||||
DECLARE_WRITE8_MEMBER(decold_palette_w);
|
|
||||||
DECLARE_CUSTOM_INPUT_MEMBER(begas_vblank_r);
|
DECLARE_CUSTOM_INPUT_MEMBER(begas_vblank_r);
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
|
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
UINT32 screen_update_rblaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
UINT32 screen_update_rblaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
INTERRUPT_GEN_MEMBER(sound_interrupt);
|
INTERRUPT_GEN_MEMBER(sound_interrupt);
|
||||||
void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *spriteram, UINT16 tile_bank );
|
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *spriteram, UINT16 tile_bank );
|
||||||
};
|
};
|
||||||
|
|
||||||
void deco_ld_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT8 *spriteram, UINT16 tile_bank )
|
void deco_ld_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8 *spriteram, UINT16 tile_bank )
|
||||||
{
|
{
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(1);
|
gfx_element *gfx = m_gfxdecode->gfx(1);
|
||||||
int i,spr_offs,x,y,col,fx,fy;
|
int i,spr_offs,x,y,col,fx,fy;
|
||||||
@ -208,7 +208,7 @@ void deco_ld_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
gfx_element *gfx = m_gfxdecode->gfx(0);
|
gfx_element *gfx = m_gfxdecode->gfx(0);
|
||||||
int y,x;
|
int y,x;
|
||||||
@ -246,33 +246,12 @@ UINT32 deco_ld_state::screen_update_rblaster(screen_device &screen, bitmap_rgb32
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(deco_ld_state::laserdisc_r)
|
|
||||||
{
|
|
||||||
UINT8 result = m_laserdisc->status_r();
|
|
||||||
// osd_printf_debug("laserdisc_r = %02X\n", result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(deco_ld_state::laserdisc_w)
|
|
||||||
{
|
|
||||||
m_laserdisc_data = data;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(deco_ld_state::decold_sound_cmd_w)
|
WRITE8_MEMBER(deco_ld_state::decold_sound_cmd_w)
|
||||||
{
|
{
|
||||||
m_soundlatch->write(space, 0, data);
|
m_soundlatch->write(space, 0, data);
|
||||||
m_audiocpu->set_input_line(0, HOLD_LINE);
|
m_audiocpu->set_input_line(0, HOLD_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* same as Burger Time HW */
|
|
||||||
WRITE8_MEMBER(deco_ld_state::decold_palette_w)
|
|
||||||
{
|
|
||||||
m_palette->write(space, offset, UINT8(~data));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* unknown, but certainly related to audiocpu somehow */
|
/* unknown, but certainly related to audiocpu somehow */
|
||||||
READ8_MEMBER(deco_ld_state::sound_status_r)
|
READ8_MEMBER(deco_ld_state::sound_status_r)
|
||||||
{
|
{
|
||||||
@ -287,9 +266,10 @@ static ADDRESS_MAP_START( rblaster_map, AS_PROGRAM, 8, deco_ld_state )
|
|||||||
AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN1")
|
AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN1")
|
||||||
AM_RANGE(0x1004, 0x1004) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(decold_sound_cmd_w)
|
AM_RANGE(0x1004, 0x1004) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(decold_sound_cmd_w)
|
||||||
AM_RANGE(0x1005, 0x1005) AM_READ(sound_status_r)
|
AM_RANGE(0x1005, 0x1005) AM_READ(sound_status_r)
|
||||||
AM_RANGE(0x1006, 0x1006) AM_NOP // 6850 status
|
//AM_RANGE(0x1006, 0x1006) AM_READ(acia_status_hack_r)
|
||||||
AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // 6850 data
|
//AM_RANGE(0x1006, 0x1006) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w)
|
||||||
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(decold_palette_w) AM_SHARE("palette")
|
//AM_RANGE(0x1007, 0x1007) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w)
|
||||||
|
AM_RANGE(0x1800, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||||
AM_RANGE(0x2000, 0x27ff) AM_RAM
|
AM_RANGE(0x2000, 0x27ff) AM_RAM
|
||||||
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram0")
|
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("vram0")
|
||||||
AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("attr0")
|
AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_SHARE("attr0")
|
||||||
@ -480,17 +460,21 @@ static MACHINE_CONFIG_START( rblaster, deco_ld_state )
|
|||||||
|
|
||||||
// MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
// MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||||
|
|
||||||
MCFG_LASERDISC_LDV1000_ADD("laserdisc") //Sony LDP-1000A, is it truly compatible with the Pioneer?
|
MCFG_LASERDISC_LDP1000_ADD("laserdisc")
|
||||||
MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, deco_ld_state, screen_update_rblaster)
|
MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, deco_ld_state, screen_update_rblaster)
|
||||||
MCFG_LASERDISC_OVERLAY_CLIP(0, 256-1, 8, 240-1)
|
//MCFG_LASERDISC_OVERLAY_CLIP(0, 256-1, 8, 240-1)
|
||||||
MCFG_LASERDISC_OVERLAY_PALETTE("palette")
|
MCFG_LASERDISC_OVERLAY_PALETTE("palette")
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
|
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rblaster)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rblaster)
|
||||||
MCFG_PALETTE_ADD("palette", 512)
|
MCFG_PALETTE_ADD("palette", 0x800)
|
||||||
MCFG_PALETTE_FORMAT(BBGGGRRR)
|
MCFG_PALETTE_FORMAT(BBGGGRRR_inverted)
|
||||||
|
|
||||||
|
//MCFG_DEVICE_ADD("acia", ACIA6850, 0)
|
||||||
|
//MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("laserdisc", sony_ldp1000_device, write))
|
||||||
|
//MCFG_ACIA6850_RXD_HANDLER(DEVREADLINE("laserdisc", sony_ldp1000_device, read))
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
/* TODO: mixing */
|
/* TODO: mixing */
|
||||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
@ -608,7 +592,7 @@ ROM_START( rblaster )
|
|||||||
ROM_LOAD( "08.bin", 0xa000, 0x2000, CRC(4608b516) SHA1(44af4be84a0b807ea0813ce86376a4b6fd927e5a) )
|
ROM_LOAD( "08.bin", 0xa000, 0x2000, CRC(4608b516) SHA1(44af4be84a0b807ea0813ce86376a4b6fd927e5a) )
|
||||||
|
|
||||||
DISK_REGION( "laserdisc" )
|
DISK_REGION( "laserdisc" )
|
||||||
DISK_IMAGE_READONLY( "rblaster", 0, NO_DUMP )
|
DISK_IMAGE_READONLY( "rblaster", 0, SHA1(1563ea907d461592e17646848fdf2dce904bba32) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( cobra )
|
ROM_START( cobra )
|
||||||
|
Loading…
Reference in New Issue
Block a user