mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +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
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@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
|
||||
|
@ -429,6 +429,7 @@ MACHINES["LC89510"] = true
|
||||
MACHINES["LDPR8210"] = true
|
||||
MACHINES["LDSTUB"] = true
|
||||
MACHINES["LDV1000"] = true
|
||||
MACHINES["LDP1000"] = true
|
||||
MACHINES["LDVP931"] = true
|
||||
--MACHINES["LH5810"] = 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 "cpu/m6502/m6502.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "machine/ldv1000.h"
|
||||
#include "machine/ldp1000.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/6850acia.h"
|
||||
|
||||
|
||||
class deco_ld_state : public driver_device
|
||||
@ -123,6 +124,7 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_laserdisc(*this, "laserdisc"),
|
||||
//m_acia(*this, "acia"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -137,7 +139,8 @@ public:
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
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<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -150,20 +153,17 @@ public:
|
||||
|
||||
UINT8 m_laserdisc_data;
|
||||
int m_nmimask;
|
||||
DECLARE_READ8_MEMBER(laserdisc_r);
|
||||
DECLARE_WRITE8_MEMBER(laserdisc_w);
|
||||
DECLARE_READ8_MEMBER(sound_status_r);
|
||||
DECLARE_WRITE8_MEMBER(decold_sound_cmd_w);
|
||||
DECLARE_WRITE8_MEMBER(decold_palette_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(begas_vblank_r);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
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)
|
||||
{
|
||||
m_soundlatch->write(space, 0, data);
|
||||
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 */
|
||||
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(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(0x1006, 0x1006) AM_NOP // 6850 status
|
||||
AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // 6850 data
|
||||
AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(decold_palette_w) AM_SHARE("palette")
|
||||
//AM_RANGE(0x1006, 0x1006) AM_READ(acia_status_hack_r)
|
||||
//AM_RANGE(0x1006, 0x1006) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w)
|
||||
//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(0x2800, 0x2bff) AM_RAM AM_SHARE("vram0")
|
||||
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_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_CLIP(0, 256-1, 8, 240-1)
|
||||
//MCFG_LASERDISC_OVERLAY_CLIP(0, 256-1, 8, 240-1)
|
||||
MCFG_LASERDISC_OVERLAY_PALETTE("palette")
|
||||
|
||||
/* video hardware */
|
||||
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rblaster)
|
||||
MCFG_PALETTE_ADD("palette", 512)
|
||||
MCFG_PALETTE_FORMAT(BBGGGRRR)
|
||||
MCFG_PALETTE_ADD("palette", 0x800)
|
||||
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 */
|
||||
/* TODO: mixing */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
@ -608,7 +592,7 @@ ROM_START( rblaster )
|
||||
ROM_LOAD( "08.bin", 0xa000, 0x2000, CRC(4608b516) SHA1(44af4be84a0b807ea0813ce86376a4b6fd927e5a) )
|
||||
|
||||
DISK_REGION( "laserdisc" )
|
||||
DISK_IMAGE_READONLY( "rblaster", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "rblaster", 0, SHA1(1563ea907d461592e17646848fdf2dce904bba32) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( cobra )
|
||||
|
Loading…
Reference in New Issue
Block a user