mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
-bus/gameboy/gb_slot, ieee488/hp9895, psx/gamebooster, snes/sgb: Removed MCFG and MACHINE_CONFIG macros. [Ryan Holtz]
-cpu/jaguar, lh5801, lr35902, z80: Removed MCFG macros. [Ryan Holtz] -video/sed1520: Removed MCFG macros. [Ryan Holtz] -drivers/gb, jaguar, monty, osborne1, pc1500, pc2000, popeye: Removed MACHINE_CONFIG macros. [Ryan Holtz]
This commit is contained in:
parent
b844b7281d
commit
7e4070f563
@ -164,6 +164,15 @@ class gb_cart_slot_device : public gb_cart_slot_device_base
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
template <typename T>
|
||||
gb_cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
|
||||
: gb_cart_slot_device(mconfig, tag, owner, (uint32_t)0)
|
||||
{
|
||||
option_reset();
|
||||
opts(*this);
|
||||
set_default_option(dflt);
|
||||
set_fixed(false);
|
||||
}
|
||||
gb_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
};
|
||||
|
||||
@ -174,6 +183,15 @@ class megaduck_cart_slot_device : public gb_cart_slot_device_base
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
template <typename T>
|
||||
megaduck_cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
|
||||
: megaduck_cart_slot_device(mconfig, tag, owner, (uint32_t)0)
|
||||
{
|
||||
option_reset();
|
||||
opts(*this);
|
||||
set_default_option(dflt);
|
||||
set_fixed(false);
|
||||
}
|
||||
megaduck_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// image-level overrides
|
||||
@ -192,20 +210,6 @@ public:
|
||||
DECLARE_DEVICE_TYPE(GB_CART_SLOT, gb_cart_slot_device)
|
||||
DECLARE_DEVICE_TYPE(MEGADUCK_CART_SLOT, megaduck_cart_slot_device)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
DEVICE CONFIGURATION MACROS
|
||||
***************************************************************************/
|
||||
|
||||
#define GBSLOT_ROM_REGION_TAG ":cart:rom"
|
||||
|
||||
#define MCFG_GB_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, GB_CART_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
|
||||
|
||||
#define MCFG_MEGADUCK_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, MEGADUCK_CART_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
|
||||
|
||||
|
||||
#endif // MAME_BUS_GAMEBOY_GB_SLOT_H
|
||||
|
@ -885,11 +885,12 @@ const tiny_rom_entry *hp9895_device::device_rom_region() const
|
||||
return ROM_NAME(hp9895);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(hp9895_device::device_add_mconfig)
|
||||
MCFG_DEVICE_ADD("cpu" , Z80 , 4000000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(z80_program_map)
|
||||
MCFG_DEVICE_IO_MAP(z80_io_map)
|
||||
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE8(*this, hp9895_device , z80_m1_w))
|
||||
void hp9895_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
Z80(config, m_cpu, 4000000);
|
||||
m_cpu->set_addrmap(AS_PROGRAM, &hp9895_device::z80_program_map);
|
||||
m_cpu->set_addrmap(AS_IO, &hp9895_device::z80_io_map);
|
||||
m_cpu->refresh_cb().set(FUNC(hp9895_device::z80_m1_w));
|
||||
|
||||
PHI(config, m_phi, 0);
|
||||
m_phi->signal_write_cb<phi_device::PHI_488_EOI>().set(FUNC(hp9895_device::phi_eoi_w));
|
||||
@ -905,8 +906,6 @@ MACHINE_CONFIG_START(hp9895_device::device_add_mconfig)
|
||||
m_phi->int_write_cb().set(FUNC(hp9895_device::phi_int_w));
|
||||
m_phi->sys_cntrl_read_cb().set_constant(0);
|
||||
|
||||
MCFG_FLOPPY_DRIVE_ADD("floppy0" , hp9895_floppies , "8dsdd" , hp9895_floppy_formats)
|
||||
MCFG_SLOT_FIXED(true)
|
||||
MCFG_FLOPPY_DRIVE_ADD("floppy1" , hp9895_floppies , "8dsdd" , hp9895_floppy_formats)
|
||||
MCFG_SLOT_FIXED(true)
|
||||
MACHINE_CONFIG_END
|
||||
FLOPPY_CONNECTOR(config, "floppy0", hp9895_floppies, "8dsdd", hp9895_floppy_formats).set_fixed(true);
|
||||
FLOPPY_CONNECTOR(config, "floppy1", hp9895_floppies, "8dsdd", hp9895_floppy_formats).set_fixed(true);
|
||||
}
|
||||
|
@ -150,10 +150,11 @@ static void gb_cart(device_slot_interface &device)
|
||||
// device.option_add_internal("rom_unk01", GB_ROM_UNK01);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(psx_gamebooster_device::device_add_mconfig)
|
||||
void psx_gamebooster_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
/* cartslot */
|
||||
MCFG_GB_CARTRIDGE_ADD("gbslot", gb_cart, nullptr)
|
||||
GB_CART_SLOT(config, m_cartslot, gb_cart, nullptr);
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","gameboy")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gbc_list","gbcolor")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("gameboy");
|
||||
SOFTWARE_LIST(config, "gbc_list").set_compatible("gbcolor");
|
||||
}
|
||||
|
@ -161,18 +161,19 @@ static void supergb_cart(device_slot_interface &device)
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(sns_rom_sgb1_device::device_add_mconfig)
|
||||
MCFG_DEVICE_ADD("sgb_cpu", LR35902, 4295454) /* 4.295454 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(supergb_map)
|
||||
MCFG_LR35902_TIMER_CB(WRITE8(*this, sns_rom_sgb_device, gb_timer_callback))
|
||||
MCFG_LR35902_HALT_BUG
|
||||
void sns_rom_sgb1_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
LR35902(config, m_sgb_cpu, 4295454); /* 4.295454 MHz */
|
||||
m_sgb_cpu->set_addrmap(AS_PROGRAM, &sns_rom_sgb1_device::supergb_map);
|
||||
m_sgb_cpu->timer_cb().set(FUNC(sns_rom_sgb_device::gb_timer_callback));
|
||||
m_sgb_cpu->set_halt_bug(true);
|
||||
|
||||
MCFG_DEVICE_ADD("sgb_ppu", SGB_PPU, "sgb_cpu")
|
||||
SGB_PPU(config, m_sgb_ppu, m_sgb_cpu);
|
||||
|
||||
MCFG_DEVICE_ADD("sgb_apu", DMG_APU, 4295454)
|
||||
DMG_APU(config, m_sgb_apu, 4295454);
|
||||
|
||||
MCFG_GB_CARTRIDGE_ADD("gb_slot", supergb_cart, nullptr)
|
||||
MACHINE_CONFIG_END
|
||||
GB_CART_SLOT(config, m_cartslot, supergb_cart, nullptr);
|
||||
}
|
||||
|
||||
|
||||
ROM_START( supergb )
|
||||
@ -187,18 +188,19 @@ const tiny_rom_entry *sns_rom_sgb1_device::device_rom_region() const
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(sns_rom_sgb2_device::device_add_mconfig)
|
||||
MCFG_DEVICE_ADD("sgb_cpu", LR35902, XTAL(4'194'304)) /* 4.194MHz derived from clock on sgb2 pcb */
|
||||
MCFG_DEVICE_PROGRAM_MAP(supergb_map)
|
||||
MCFG_LR35902_TIMER_CB(WRITE8(*this, sns_rom_sgb_device, gb_timer_callback))
|
||||
MCFG_LR35902_HALT_BUG
|
||||
void sns_rom_sgb2_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
LR35902(config, m_sgb_cpu, XTAL(4'194'304)); /* 4.194MHz derived from clock on sgb2 pcb */
|
||||
m_sgb_cpu->set_addrmap(AS_PROGRAM, &sns_rom_sgb2_device::supergb_map);
|
||||
m_sgb_cpu->timer_cb().set(FUNC(sns_rom_sgb_device::gb_timer_callback));
|
||||
m_sgb_cpu->set_halt_bug(true);
|
||||
|
||||
MCFG_DEVICE_ADD("sgb_ppu", SGB_PPU, "sgb_cpu")
|
||||
SGB_PPU(config, m_sgb_ppu, m_sgb_cpu);
|
||||
|
||||
MCFG_DEVICE_ADD("sgb_apu", DMG_APU, XTAL(4'194'304))
|
||||
DMG_APU(config, m_sgb_apu, XTAL(4'194'304));
|
||||
|
||||
MCFG_GB_CARTRIDGE_ADD("gb_slot", supergb_cart, nullptr)
|
||||
MACHINE_CONFIG_END
|
||||
GB_CART_SLOT(config, m_cartslot, supergb_cart, nullptr);
|
||||
}
|
||||
|
||||
|
||||
ROM_START( supergb2 )
|
||||
|
@ -51,11 +51,12 @@ protected:
|
||||
|
||||
void supergb_map(address_map &map);
|
||||
|
||||
private:
|
||||
required_device<lr35902_cpu_device> m_sgb_cpu;
|
||||
required_device<gameboy_sound_device> m_sgb_apu;
|
||||
required_device<sgb_ppu_device> m_sgb_ppu;
|
||||
required_device<gb_cart_slot_device> m_cartslot;
|
||||
|
||||
private:
|
||||
required_memory_region m_region_bios;
|
||||
|
||||
void lcd_render(uint32_t *source);
|
||||
|
@ -60,14 +60,6 @@ enum
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
CONFIGURATION
|
||||
***************************************************************************/
|
||||
|
||||
#define MCFG_JAGUAR_IRQ_HANDLER(_devcb) \
|
||||
downcast<jaguar_cpu_device &>(*device).set_int_func(DEVCB_##_devcb);
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
INTERRUPT CONSTANTS
|
||||
***************************************************************************/
|
||||
@ -96,7 +88,7 @@ public:
|
||||
~jaguar_cpu_device();
|
||||
|
||||
// configuration helpers
|
||||
template <class Object> devcb_base &set_int_func(Object &&cb) { return m_cpu_interrupt.set_callback(std::forward<Object>(cb)); }
|
||||
auto irq() { return m_cpu_interrupt.bind(); }
|
||||
|
||||
virtual DECLARE_WRITE32_MEMBER(ctrl_w) = 0;
|
||||
virtual DECLARE_READ32_MEMBER(ctrl_r) = 0;
|
||||
|
@ -60,10 +60,6 @@ enum
|
||||
};
|
||||
|
||||
|
||||
#define MCFG_LH5801_IN(_devcb) \
|
||||
downcast<lh5801_cpu_device &>(*device).set_in_func(DEVCB_##_devcb);
|
||||
|
||||
|
||||
class lh5801_cpu_device : public cpu_device
|
||||
{
|
||||
public:
|
||||
@ -71,7 +67,7 @@ public:
|
||||
lh5801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// configuration helpers
|
||||
template <class Object> devcb_base &set_in_func(Object &&cb) { return m_in_func.set_callback(std::forward<Object>(cb)); }
|
||||
auto in_func() { return m_in_func.bind(); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
|
@ -5,23 +5,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define MCFG_LR35902_TIMER_CB(_devcb) \
|
||||
downcast<lr35902_cpu_device &>(*device).set_timer_cb(DEVCB_##_devcb);
|
||||
|
||||
// The first release of this CPU has a bug where the programcounter
|
||||
// is not incremented properly after an interrupt after the halt opcode.
|
||||
// This was fixed in a newer revision.
|
||||
#define MCFG_LR35902_HALT_BUG \
|
||||
downcast<lr35902_cpu_device &>(*device).set_halt_bug(true);
|
||||
|
||||
// The GameBoy has a bug where OAM data gets corrupted if you inc/dec
|
||||
// a 16-bit register in the $fe** region.
|
||||
// note: oldval is in hiword, newval is in loword
|
||||
#define MCFG_LR35902_INCDEC16_CB(_devcb) \
|
||||
downcast<lr35902_cpu_device &>(*device).set_incdec16_cb(DEVCB_##_devcb);
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
LR35902_PC=1, LR35902_SP, LR35902_A, LR35902_F, LR35902_B, LR35902_C, LR35902_D, LR35902_E, LR35902_H, LR35902_L,
|
||||
@ -40,8 +23,16 @@ public:
|
||||
lr35902_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
|
||||
|
||||
// configuration helpers
|
||||
template<class Object> devcb_base &set_timer_cb(Object &&cb) { return m_timer_func.set_callback(std::forward<Object>(cb)); }
|
||||
template<class Object> devcb_base &set_incdec16_cb(Object &&cb) { return m_incdec16_func.set_callback(std::forward<Object>(cb)); }
|
||||
auto timer_cb() { return m_timer_func.bind(); }
|
||||
|
||||
// The GameBoy has a bug where OAM data gets corrupted if you inc/dec
|
||||
// a 16-bit register in the $fe** region.
|
||||
// note: oldval is in hiword, newval is in loword
|
||||
auto incdec16_cb() { return m_incdec16_func.bind(); }
|
||||
|
||||
// The first release of this CPU has a bug where the programcounter
|
||||
// is not incremented properly after an interrupt after the halt opcode.
|
||||
// This was fixed in a newer revision.
|
||||
void set_halt_bug(bool has_halt_bug) { m_has_halt_bug = has_halt_bug; }
|
||||
|
||||
uint8_t get_speed();
|
||||
|
@ -7,15 +7,6 @@
|
||||
|
||||
#include "machine/z80daisy.h"
|
||||
|
||||
#define MCFG_Z80_SET_IRQACK_CALLBACK(_devcb) \
|
||||
downcast<z80_device &>(*device).set_irqack_cb(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_Z80_SET_REFRESH_CALLBACK(_devcb) \
|
||||
downcast<z80_device &>(*device).set_refresh_cb(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_Z80_SET_HALT_CALLBACK(_devcb) \
|
||||
downcast<z80_device &>(*device).set_halt_cb(DEVCB_##_devcb);
|
||||
|
||||
enum
|
||||
{
|
||||
NSC800_RSTA = INPUT_LINE_IRQ0 + 1,
|
||||
@ -45,9 +36,6 @@ public:
|
||||
template <typename... T> void set_memory_map(T &&... args) { set_addrmap(AS_PROGRAM, std::forward<T>(args)...); }
|
||||
template <typename... T> void set_m1_map(T &&... args) { set_addrmap(AS_OPCODES, std::forward<T>(args)...); }
|
||||
template <typename... T> void set_io_map(T &&... args) { set_addrmap(AS_IO, std::forward<T>(args)...); }
|
||||
template<class Object> devcb_base &set_irqack_cb(Object &&cb) { return m_irqack_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template<class Object> devcb_base &set_refresh_cb(Object &&cb) { return m_refresh_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template<class Object> devcb_base &set_halt_cb(Object &&cb) { return m_halt_cb.set_callback(std::forward<Object>(cb)); }
|
||||
auto irqack_cb() { return m_irqack_cb.bind(); }
|
||||
auto refresh_cb() { return m_refresh_cb.bind(); }
|
||||
auto halt_cb() { return m_halt_cb.bind(); }
|
||||
|
@ -27,7 +27,7 @@ class cdrom_image_device : public device_t,
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
cdrom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
virtual ~cdrom_image_device();
|
||||
|
||||
void set_interface(const char *interface) { m_interface = interface; }
|
||||
|
@ -468,6 +468,11 @@ class netlist_mame_stream_input_device : public device_t, public netlist_mame_su
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
netlist_mame_stream_input_device(const machine_config &mconfig, const char *tag, device_t *owner, int channel, const char *param_name)
|
||||
: netlist_mame_stream_input_device(mconfig, tag, owner, (uint32_t)0)
|
||||
{
|
||||
set_params(channel, param_name);
|
||||
}
|
||||
netlist_mame_stream_input_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
void set_params(int channel, const char *param_name);
|
||||
@ -489,6 +494,11 @@ class netlist_mame_stream_output_device : public device_t, public netlist_mame_s
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
netlist_mame_stream_output_device(const machine_config &mconfig, const char *tag, device_t *owner, int channel, const char *out_name)
|
||||
: netlist_mame_stream_output_device(mconfig, tag, owner, (uint32_t)0)
|
||||
{
|
||||
set_params(channel, out_name);
|
||||
}
|
||||
netlist_mame_stream_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
void set_params(int channel, const char *out_name);
|
||||
|
@ -44,6 +44,17 @@ public:
|
||||
// static configuration helpers
|
||||
void set_lcd_size(int lines, int chars) { m_lines = lines; m_chars = chars; }
|
||||
template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb = pixel_update_delegate(std::forward<T>(args)...); }
|
||||
void set_pixel_update_cb(pixel_update_delegate callback) { m_pixel_update_cb = callback; }
|
||||
template <class FunctionClass> void set_pixel_update_cb(const char *devname,
|
||||
void (FunctionClass::*callback)(bitmap_ind16 &, uint8_t, uint8_t, uint8_t, uint8_t, int), const char *name)
|
||||
{
|
||||
set_pixel_update_cb(pixel_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
template <class FunctionClass> void set_pixel_update_cb(
|
||||
void (FunctionClass::*callback)(bitmap_ind16 &, uint8_t, uint8_t, uint8_t, uint8_t, int), const char *name)
|
||||
{
|
||||
set_pixel_update_cb(pixel_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
|
||||
// device interface
|
||||
virtual void write(offs_t offset, u8 data);
|
||||
|
@ -15,10 +15,6 @@
|
||||
#define SED1520CB_UPDATE(cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
|
||||
#define SED1520CB_DEVUPDATE(tag, cls, fnc) sed1520_device::screen_update_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
|
||||
|
||||
#define MCFG_SED1520_ADD(tag, cb) \
|
||||
MCFG_DEVICE_ADD(tag, SED1520, 0) \
|
||||
downcast<sed1520_device &>(*device).set_screen_update_cb(SED1520CB_##cb);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
@ -34,10 +30,20 @@ public:
|
||||
typedef device_delegate<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *vram, int start_line, int adc)> screen_update_delegate;
|
||||
|
||||
// construction/destruction
|
||||
sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
|
||||
// sconfiguration helpers
|
||||
template <typename Object> void set_screen_update_cb(Object &&cb) { m_screen_update_cb = std::forward<Object>(cb); }
|
||||
void set_screen_update_cb(screen_update_delegate callback) { m_screen_update_cb = callback; }
|
||||
template <class FunctionClass> void set_screen_update_cb(const char *devname,
|
||||
uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t *, int, int), const char *name)
|
||||
{
|
||||
set_screen_update_cb(screen_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
template <class FunctionClass> void set_screen_update_cb(
|
||||
uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t *, int, int), const char *name)
|
||||
{
|
||||
set_screen_update_cb(screen_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
|
||||
}
|
||||
|
||||
// device interface
|
||||
virtual DECLARE_WRITE8_MEMBER(write);
|
||||
|
@ -576,26 +576,22 @@ PALETTE_INIT_MEMBER(gb_state, gbp)
|
||||
|
||||
PALETTE_INIT_MEMBER(gb_state, sgb)
|
||||
{
|
||||
int r, g, b;
|
||||
|
||||
for (int i = 0; i < 32768; i++)
|
||||
{
|
||||
r = (i & 0x1F) << 3;
|
||||
g = ((i >> 5) & 0x1F) << 3;
|
||||
b = ((i >> 10) & 0x1F) << 3;
|
||||
int r = (i & 0x1F) << 3;
|
||||
int g = ((i >> 5) & 0x1F) << 3;
|
||||
int b = ((i >> 10) & 0x1F) << 3;
|
||||
palette.set_pen_color(i, r, g, b);
|
||||
}
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(gb_state, gbc)
|
||||
{
|
||||
int r, g, b;
|
||||
|
||||
for (int i = 0; i < 32768; i++)
|
||||
{
|
||||
r = (i & 0x1F) << 3;
|
||||
g = ((i >> 5) & 0x1F) << 3;
|
||||
b = ((i >> 10) & 0x1F) << 3;
|
||||
int r = (i & 0x1F) << 3;
|
||||
int g = ((i >> 5) & 0x1F) << 3;
|
||||
int b = ((i >> 10) & 0x1F) << 3;
|
||||
palette.set_pen_color(i, r, g, b);
|
||||
}
|
||||
}
|
||||
@ -607,51 +603,50 @@ PALETTE_INIT_MEMBER(megaduck_state, megaduck)
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(gb_state::gameboy)
|
||||
|
||||
void gb_state::gameboy(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", LR35902, XTAL(4'194'304))
|
||||
MCFG_DEVICE_PROGRAM_MAP(gameboy_map)
|
||||
MCFG_LR35902_TIMER_CB( WRITE8( *this, gb_state, gb_timer_callback ) )
|
||||
MCFG_LR35902_HALT_BUG
|
||||
LR35902(config, m_maincpu, XTAL(4'194'304));
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gb_state::gameboy_map);
|
||||
m_maincpu->timer_cb().set(FUNC(gb_state::gb_timer_callback));
|
||||
m_maincpu->set_halt_bug(true);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
screen.set_refresh_hz(DMG_FRAMES_PER_SECOND);
|
||||
screen.set_vblank_time(0);
|
||||
screen.set_screen_update("ppu", FUNC(dmg_ppu_device::screen_update));
|
||||
screen.set_palette("palette");
|
||||
screen.set_palette(m_palette);
|
||||
// screen.set_size(20*8, 18*8);
|
||||
screen.set_size(458, 154);
|
||||
screen.set_visarea(0*8, 20*8-1, 0*8, 18*8-1);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
|
||||
MCFG_PALETTE_ADD("palette", 4)
|
||||
MCFG_PALETTE_INIT_OWNER(gb_state,gb)
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfxdecode_device::empty);
|
||||
PALETTE(config, m_palette, 4).set_init(FUNC(gb_state::palette_init_gb));
|
||||
|
||||
MCFG_DEVICE_ADD("ppu", DMG_PPU, "maincpu")
|
||||
DMG_PPU(config, m_ppu, m_maincpu);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("apu", DMG_APU, XTAL(4'194'304))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
|
||||
DMG_APU(config, m_apu, XTAL(4'194'304));
|
||||
m_apu->add_route(0, "lspeaker", 0.50);
|
||||
m_apu->add_route(1, "rspeaker", 0.50);
|
||||
|
||||
/* cartslot */
|
||||
MCFG_GB_CARTRIDGE_ADD("gbslot", gb_cart, nullptr)
|
||||
GB_CART_SLOT(config, m_cartslot, gb_cart, nullptr);
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","gameboy")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gbc_list","gbcolor")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("gameboy");
|
||||
SOFTWARE_LIST(config, "gbc_list").set_compatible("gbcolor");
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(gb_state::supergb)
|
||||
void gb_state::supergb(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", LR35902, 4295454) /* 4.295454 MHz, derived from SNES xtal */
|
||||
MCFG_DEVICE_PROGRAM_MAP(sgb_map)
|
||||
MCFG_LR35902_TIMER_CB( WRITE8(*this, gb_state, gb_timer_callback ) )
|
||||
MCFG_LR35902_HALT_BUG
|
||||
LR35902(config, m_maincpu, 4295454); /* 4.295454 MHz, derived from SNES xtal */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gb_state::sgb_map);
|
||||
m_maincpu->timer_cb().set(FUNC(gb_state::gb_timer_callback));
|
||||
m_maincpu->set_halt_bug(true);
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(gb_state, sgb)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(gb_state, sgb)
|
||||
@ -662,36 +657,34 @@ MACHINE_CONFIG_START(gb_state::supergb)
|
||||
screen.set_refresh_hz(SGB_FRAMES_PER_SECOND);
|
||||
screen.set_vblank_time(0);
|
||||
screen.set_screen_update("ppu", FUNC(dmg_ppu_device::screen_update));
|
||||
screen.set_palette("palette");
|
||||
screen.set_palette(m_palette);
|
||||
screen.set_size(32*8, 28*8);
|
||||
screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
|
||||
MCFG_PALETTE_ADD("palette", 32768)
|
||||
MCFG_PALETTE_INIT_OWNER(gb_state,sgb)
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfxdecode_device::empty);
|
||||
PALETTE(config, m_palette, 32768).set_init(FUNC(gb_state::palette_init_sgb));
|
||||
|
||||
MCFG_DEVICE_ADD("ppu", SGB_PPU, "maincpu")
|
||||
SGB_PPU(config, m_ppu, m_maincpu);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("apu", DMG_APU, 4295454)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
|
||||
DMG_APU(config, m_apu, 4295454);
|
||||
m_apu->add_route(0, "lspeaker", 0.50);
|
||||
m_apu->add_route(1, "rspeaker", 0.50);
|
||||
|
||||
/* cartslot */
|
||||
MCFG_GB_CARTRIDGE_ADD("gbslot", gb_cart, nullptr)
|
||||
GB_CART_SLOT(config, m_cartslot, gb_cart, nullptr);
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","gameboy")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gbc_list","gbcolor")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("gameboy");
|
||||
SOFTWARE_LIST(config, "gbc_list").set_compatible("gbcolor");
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(gb_state::supergb2)
|
||||
void gb_state::supergb2(machine_config &config)
|
||||
{
|
||||
gameboy(config);
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(sgb_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gb_state::sgb_map);
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(gb_state, sgb)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(gb_state, sgb)
|
||||
@ -702,32 +695,28 @@ MACHINE_CONFIG_START(gb_state::supergb2)
|
||||
screen.set_size(32*8, 28*8);
|
||||
screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1);
|
||||
|
||||
MCFG_PALETTE_MODIFY("palette")
|
||||
MCFG_PALETTE_ENTRIES(32768)
|
||||
MCFG_PALETTE_INIT_OWNER(gb_state,sgb)
|
||||
m_palette->set_entries(32768);
|
||||
m_palette->set_init(FUNC(gb_state::palette_init_sgb));
|
||||
|
||||
MCFG_DEVICE_REMOVE("ppu")
|
||||
MCFG_DEVICE_ADD("ppu", SGB_PPU, "maincpu")
|
||||
MACHINE_CONFIG_END
|
||||
SGB_PPU(config.replace(), m_ppu, m_maincpu);
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(gb_state::gbpocket)
|
||||
void gb_state::gbpocket(machine_config &config)
|
||||
{
|
||||
gameboy(config);
|
||||
|
||||
/* video hardware */
|
||||
MCFG_PALETTE_MODIFY("palette")
|
||||
MCFG_PALETTE_INIT_OWNER(gb_state,gbp)
|
||||
m_palette->set_init(FUNC(gb_state::palette_init_gbp));
|
||||
|
||||
MCFG_DEVICE_REMOVE("ppu")
|
||||
MCFG_DEVICE_ADD("ppu", MGB_PPU, "maincpu")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(gb_state::gbcolor)
|
||||
MGB_PPU(config.replace(), m_ppu, m_maincpu);
|
||||
}
|
||||
|
||||
void gb_state::gbcolor(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", LR35902, XTAL(4'194'304)) // todo XTAL(8'388'000)
|
||||
MCFG_DEVICE_PROGRAM_MAP(gbc_map)
|
||||
MCFG_LR35902_TIMER_CB( WRITE8(*this, gb_state, gb_timer_callback ) )
|
||||
LR35902(config, m_maincpu, XTAL(4'194'304)); // todo XTAL(8'388'000)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &gb_state::gbc_map);
|
||||
m_maincpu->timer_cb().set(FUNC(gb_state::gb_timer_callback));
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(gb_state,gbc)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(gb_state,gbc)
|
||||
@ -737,73 +726,71 @@ MACHINE_CONFIG_START(gb_state::gbcolor)
|
||||
screen.set_refresh_hz(DMG_FRAMES_PER_SECOND);
|
||||
screen.set_vblank_time(0);
|
||||
screen.set_screen_update("ppu", FUNC(dmg_ppu_device::screen_update));
|
||||
screen.set_palette("palette");
|
||||
screen.set_palette(m_palette);
|
||||
// screen.set_size(20*8, 18*8);
|
||||
screen.set_size(458, 154);
|
||||
screen.set_visarea(0*8, 20*8-1, 0*8, 18*8-1);
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfxdecode_device::empty);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 32768)
|
||||
MCFG_PALETTE_INIT_OWNER(gb_state,gbc)
|
||||
PALETTE(config, m_palette, 32768).set_init(FUNC(gb_state::palette_init_gbc));
|
||||
|
||||
MCFG_DEVICE_ADD("ppu", CGB_PPU, "maincpu")
|
||||
CGB_PPU(config, m_ppu, m_maincpu);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("apu", CGB04_APU, XTAL(4'194'304))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
|
||||
CGB04_APU(config, m_apu, XTAL(4'194'304));
|
||||
m_apu->add_route(0, "lspeaker", 0.50);
|
||||
m_apu->add_route(1, "rspeaker", 0.50);
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("48K"); /* 2 pages of 8KB VRAM, 8 pages of 4KB RAM */
|
||||
|
||||
/* cartslot */
|
||||
MCFG_GB_CARTRIDGE_ADD("gbslot", gb_cart, nullptr)
|
||||
GB_CART_SLOT(config, "gbslot", gb_cart, nullptr);
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","gbcolor")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gb_list","gameboy")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(megaduck_state::megaduck)
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("gbcolor");
|
||||
SOFTWARE_LIST(config, "gb_list").set_compatible("gameboy");
|
||||
}
|
||||
|
||||
void megaduck_state::megaduck(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", LR35902, XTAL(4'194'304)) /* 4.194304 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(megaduck_map)
|
||||
MCFG_LR35902_TIMER_CB( WRITE8(*this, gb_state, gb_timer_callback ) )
|
||||
MCFG_LR35902_HALT_BUG
|
||||
LR35902(config, m_maincpu, XTAL(4'194'304)); /* 4.194304 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &megaduck_state::megaduck_map);
|
||||
m_maincpu->timer_cb().set(FUNC(gb_state::gb_timer_callback));
|
||||
m_maincpu->set_halt_bug(true);
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
screen.set_refresh_hz(DMG_FRAMES_PER_SECOND);
|
||||
screen.set_vblank_time(0);
|
||||
screen.set_screen_update("ppu", FUNC(dmg_ppu_device::screen_update));
|
||||
screen.set_palette("palette");
|
||||
screen.set_palette(m_palette);
|
||||
screen.set_size(20*8, 18*8);
|
||||
screen.set_visarea(0*8, 20*8-1, 0*8, 18*8-1);
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(megaduck_state, megaduck)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(megaduck_state, megaduck)
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfxdecode_device::empty)
|
||||
GFXDECODE(config, "gfxdecode", m_palette, gfxdecode_device::empty);
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 4)
|
||||
MCFG_PALETTE_INIT_OWNER(megaduck_state,megaduck)
|
||||
PALETTE(config, m_palette, 4).set_init(FUNC(megaduck_state::palette_init_megaduck));
|
||||
|
||||
MCFG_DEVICE_ADD("ppu", DMG_PPU, "maincpu")
|
||||
DMG_PPU(config, m_ppu, m_maincpu);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("apu", DMG_APU, XTAL(4'194'304))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
|
||||
DMG_APU(config, m_apu, XTAL(4'194'304));
|
||||
m_apu->add_route(0, "lspeaker", 0.50);
|
||||
m_apu->add_route(1, "rspeaker", 0.50);
|
||||
|
||||
/* cartslot */
|
||||
MCFG_MEGADUCK_CARTRIDGE_ADD("duckslot", megaduck_cart, nullptr)
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "megaduck")
|
||||
MACHINE_CONFIG_END
|
||||
MEGADUCK_CART_SLOT(config, m_cartslot, megaduck_cart, nullptr);
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("megaduck");
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
|
@ -1838,19 +1838,19 @@ INPUT_PORTS_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
MACHINE_CONFIG_START(jaguar_state::cojagr3k)
|
||||
|
||||
void jaguar_state::cojagr3k(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
R3041(config, m_maincpu, R3000_CLOCK).set_endianness(ENDIANNESS_BIG);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::r3000_map);
|
||||
|
||||
MCFG_DEVICE_ADD("gpu", JAGUARGPU, COJAG_CLOCK/2)
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, gpu_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(gpu_map)
|
||||
JAGUARGPU(config, m_gpu, COJAG_CLOCK/2);
|
||||
m_gpu->irq().set(FUNC(jaguar_state::gpu_cpu_int));
|
||||
m_gpu->set_addrmap(AS_PROGRAM, &jaguar_state::gpu_map);
|
||||
|
||||
MCFG_DEVICE_ADD("dsp", JAGUARDSP, COJAG_CLOCK/2)
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, dsp_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(dsp_map)
|
||||
JAGUARDSP(config, m_dsp, COJAG_CLOCK/2);
|
||||
m_dsp->irq().set(FUNC(jaguar_state::dsp_cpu_int));
|
||||
m_dsp->set_addrmap(AS_PROGRAM, &jaguar_state::dsp_map);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
|
||||
|
||||
@ -1860,108 +1860,106 @@ MACHINE_CONFIG_START(jaguar_state::cojagr3k)
|
||||
m_ide->irq_handler().set(FUNC(jaguar_state::external_int));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_RAW_PARAMS(COJAG_PIXEL_CLOCK/2, 456, 42, 402, 262, 17, 257)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(jaguar_state,screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(COJAG_PIXEL_CLOCK/2, 456, 42, 402, 262, 17, 257);
|
||||
m_screen->set_screen_update(FUNC(jaguar_state::screen_update));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // unknown DAC
|
||||
MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
|
||||
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
|
||||
MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
MACHINE_CONFIG_END
|
||||
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
|
||||
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
|
||||
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
|
||||
vref.set_output(5.0);
|
||||
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
|
||||
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
|
||||
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
|
||||
vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(jaguar_state::cojagr3k_rom)
|
||||
void jaguar_state::cojagr3k_rom(machine_config &config)
|
||||
{
|
||||
cojagr3k(config);
|
||||
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(r3000_rom_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::r3000_rom_map);
|
||||
m_gpu->set_addrmap(AS_PROGRAM, &jaguar_state::gpu_rom_map);
|
||||
m_dsp->set_addrmap(AS_PROGRAM, &jaguar_state::dsp_rom_map);
|
||||
|
||||
MCFG_DEVICE_MODIFY("gpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(gpu_rom_map)
|
||||
m_ide->slot(0).set_default_option(nullptr);
|
||||
}
|
||||
|
||||
MCFG_DEVICE_MODIFY("dsp")
|
||||
MCFG_DEVICE_PROGRAM_MAP(dsp_rom_map)
|
||||
|
||||
MCFG_DEVICE_MODIFY("ide:0")
|
||||
MCFG_SLOT_DEFAULT_OPTION(nullptr)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(jaguar_state::cojag68k)
|
||||
void jaguar_state::cojag68k(machine_config &config)
|
||||
{
|
||||
cojagr3k(config);
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_REPLACE("maincpu", M68EC020, M68K_CLOCK/2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(m68020_map)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(jaguar_state::jaguar)
|
||||
M68EC020(config.replace(), m_maincpu, M68K_CLOCK/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::m68020_map);
|
||||
}
|
||||
|
||||
void jaguar_state::jaguar(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, JAGUAR_CLOCK/2)
|
||||
MCFG_DEVICE_PROGRAM_MAP(jaguar_map)
|
||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(jaguar_state,jaguar_irq_callback)
|
||||
M68000(config, m_maincpu, JAGUAR_CLOCK/2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::jaguar_map);
|
||||
m_maincpu->set_irq_acknowledge_callback(FUNC(jaguar_state::jaguar_irq_callback));
|
||||
|
||||
MCFG_DEVICE_ADD("gpu", JAGUARGPU, JAGUAR_CLOCK)
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, gpu_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(jag_gpu_map)
|
||||
JAGUARGPU(config, m_gpu, JAGUAR_CLOCK);
|
||||
m_gpu->irq().set(FUNC(jaguar_state::gpu_cpu_int));
|
||||
m_gpu->set_addrmap(AS_PROGRAM, &jaguar_state::jag_gpu_map);
|
||||
|
||||
MCFG_DEVICE_ADD("dsp", JAGUARDSP, JAGUAR_CLOCK)
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, dsp_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(jag_dsp_map)
|
||||
JAGUARDSP(config, m_dsp, JAGUAR_CLOCK);
|
||||
m_dsp->irq().set(FUNC(jaguar_state::dsp_cpu_int));
|
||||
m_dsp->set_addrmap(AS_PROGRAM, &jaguar_state::jag_dsp_map);
|
||||
|
||||
// MCFG_NVRAM_HANDLER(jaguar)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
|
||||
MCFG_SCREEN_RAW_PARAMS(JAGUAR_CLOCK, 456, 42, 402, 262, 17, 257)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(jaguar_state,screen_update)
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
|
||||
m_screen->set_raw(JAGUAR_CLOCK, 456, 42, 402, 262, 17, 257);
|
||||
m_screen->set_screen_update(FUNC(jaguar_state::screen_update));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // unknown DAC
|
||||
MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // unknown DAC
|
||||
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
|
||||
MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
|
||||
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 1.0); // unknown DAC
|
||||
DAC_16BIT_R2R_TWOS_COMPLEMENT(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 1.0); // unknown DAC
|
||||
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
|
||||
vref.set_output(5.0);
|
||||
vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
|
||||
vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
|
||||
vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
|
||||
vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
|
||||
|
||||
/* quickload */
|
||||
MCFG_QUICKLOAD_ADD("quickload", jaguar_state, jaguar, "abs,bin,cof,jag,prg", 2)
|
||||
quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0));
|
||||
quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(jaguar_state, jaguar), this), "abs,bin,cof,jag,prg", 0);
|
||||
|
||||
/* cartridge */
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "jaguar_cart")
|
||||
MCFG_GENERIC_EXTENSIONS("j64,rom,bin")
|
||||
MCFG_GENERIC_LOAD(jaguar_state, jaguar_cart)
|
||||
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "jaguar_cart", "j64,rom,bin"));
|
||||
cartslot.set_device_load(device_image_load_delegate(&jaguar_state::device_image_load_jaguar_cart, this));
|
||||
|
||||
/* software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list","jaguar")
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("jaguar");
|
||||
|
||||
EEPROM_93C46_16BIT(config, "eeprom");
|
||||
MACHINE_CONFIG_END
|
||||
EEPROM_93C46_16BIT(config, m_eeprom);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(jaguar_state::jaguarcd)
|
||||
void jaguar_state::jaguarcd(machine_config &config)
|
||||
{
|
||||
jaguar(config);
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(jaguarcd_map)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &jaguar_state::jaguarcd_map);
|
||||
|
||||
MCFG_DEVICE_MODIFY("gpu")
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, gpu_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(jagcd_gpu_map)
|
||||
m_gpu->irq().set(FUNC(jaguar_state::gpu_cpu_int));
|
||||
m_gpu->set_addrmap(AS_PROGRAM, &jaguar_state::jagcd_gpu_map);
|
||||
|
||||
MCFG_DEVICE_MODIFY("dsp")
|
||||
MCFG_JAGUAR_IRQ_HANDLER(WRITELINE(*this, jaguar_state, dsp_cpu_int))
|
||||
MCFG_DEVICE_PROGRAM_MAP(jagcd_dsp_map)
|
||||
m_dsp->irq().set(FUNC(jaguar_state::dsp_cpu_int));
|
||||
m_dsp->set_addrmap(AS_PROGRAM, &jaguar_state::jagcd_dsp_map);
|
||||
|
||||
MCFG_CDROM_ADD("cdrom")
|
||||
MCFG_CDROM_INTERFACE("jag_cdrom")
|
||||
MACHINE_CONFIG_END
|
||||
CDROM(config, "cdrom").set_interface("jag_cdrom");
|
||||
}
|
||||
|
||||
/*************************************
|
||||
*
|
||||
|
@ -69,7 +69,7 @@ private:
|
||||
void monty_io(address_map &map);
|
||||
void monty_mem(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<z80_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<sed1520_device> m_sed0; // TODO: This isn't actually a SED1520, it's a SED1503F
|
||||
//required_device<sed1520_device> m_sed1; // TODO: Also, there are 2 SED1503Fs on the board - one is flipped upside down
|
||||
@ -264,35 +264,35 @@ SED1520_UPDATE_CB(monty_state::screen_update)
|
||||
|
||||
|
||||
// TODO: Additional machine definition - Master Monty has a different memory layout
|
||||
MACHINE_CONFIG_START(monty_state::monty)
|
||||
void monty_state::monty(machine_config &config)
|
||||
{
|
||||
// Basic machine hardware
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, 3580000) // Ceramic resonator labeled 3.58MT
|
||||
MCFG_DEVICE_PROGRAM_MAP(monty_mem)
|
||||
MCFG_DEVICE_IO_MAP(monty_io)
|
||||
MCFG_Z80_SET_HALT_CALLBACK(WRITELINE(*this, monty_state, halt_changed))
|
||||
Z80(config, m_maincpu, 3580000); // Ceramic resonator labeled 3.58MT
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &monty_state::monty_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &monty_state::monty_io);
|
||||
m_maincpu->halt_cb().set(FUNC(monty_state::halt_changed));
|
||||
|
||||
// Video hardware
|
||||
MCFG_SCREEN_ADD("screen", LCD)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not accurate
|
||||
MCFG_SCREEN_SIZE(50, 32) // Two SED1503s (42x16 pixels) control the top and bottom halves
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 50-1, 0, 32-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(monty_state, lcd_update)
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
screen.set_refresh_hz(50);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not accurate
|
||||
screen.set_size(50, 32); // Two SED1503s (42x16 pixels) control the top and bottom halves
|
||||
screen.set_visarea(0, 50-1, 0, 32-1);
|
||||
screen.set_screen_update(FUNC(monty_state::lcd_update));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||
|
||||
// LCD controller interfaces
|
||||
MCFG_SED1520_ADD("sed1520_0", UPDATE(monty_state, screen_update))
|
||||
MACHINE_CONFIG_END
|
||||
SED1520(config, m_sed0).set_screen_update_cb(FUNC(monty_state::screen_update));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(monty_state::mmonty)
|
||||
void monty_state::mmonty(machine_config &config)
|
||||
{
|
||||
monty(config);
|
||||
MCFG_DEVICE_MODIFY( "maincpu" )
|
||||
MCFG_DEVICE_PROGRAM_MAP(mmonty_mem)
|
||||
MACHINE_CONFIG_END
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &monty_state::mmonty_mem);
|
||||
}
|
||||
|
||||
|
||||
// ROM definitions
|
||||
|
@ -467,8 +467,7 @@ void n64_mess_state::n64(machine_config &config)
|
||||
N64PERIPH(config, m_rcp_periphs, 0);
|
||||
|
||||
/* cartridge */
|
||||
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "n64_cart"));
|
||||
cartslot.set_extensions("v64,z64,rom,n64,bin");
|
||||
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "n64_cart", "v64,z64,rom,n64,bin"));
|
||||
cartslot.set_must_be_loaded(true);
|
||||
cartslot.set_device_load(device_image_load_delegate(&n64_mess_state::device_image_load_n64_cart, this));
|
||||
|
||||
|
@ -283,19 +283,22 @@ static GFXDECODE_START( gfx_osborne1 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(osborne1_state::osborne1)
|
||||
MCFG_DEVICE_ADD(m_maincpu, Z80, MAIN_CLOCK/4)
|
||||
MCFG_DEVICE_PROGRAM_MAP(osborne1_mem)
|
||||
MCFG_DEVICE_OPCODES_MAP(osborne1_op)
|
||||
MCFG_DEVICE_IO_MAP(osborne1_io)
|
||||
MCFG_Z80_SET_IRQACK_CALLBACK(WRITELINE(*this, osborne1_state, irqack_w))
|
||||
void osborne1_state::osborne1(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, MAIN_CLOCK/4);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &osborne1_state::osborne1_mem);
|
||||
m_maincpu->set_addrmap(AS_OPCODES, &osborne1_state::osborne1_op);
|
||||
m_maincpu->set_addrmap(AS_IO, &osborne1_state::osborne1_io);
|
||||
m_maincpu->irqack_cb().set(FUNC(osborne1_state::irqack_w));
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME(m_screen, RASTER, rgb_t::green())
|
||||
MCFG_SCREEN_UPDATE_DRIVER(osborne1_state, screen_update)
|
||||
MCFG_SCREEN_RAW_PARAMS(MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, "palette", gfx_osborne1)
|
||||
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_color(rgb_t::green());
|
||||
m_screen->set_screen_update(FUNC(osborne1_state::screen_update));
|
||||
m_screen->set_raw(MAIN_CLOCK, 1024, 0, 104*8, 260, 0, 24*10);
|
||||
m_screen->set_palette("palette");
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, "palette", gfx_osborne1);
|
||||
PALETTE(config, "palette", 3).set_init("palette", FUNC(palette_device::palette_init_monochrome_highlight));
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
SPEAKER_SOUND(config, m_speaker);
|
||||
@ -310,8 +313,8 @@ MACHINE_CONFIG_START(osborne1_state::osborne1)
|
||||
m_pia0->cb2_handler().set(m_ieee, FUNC(ieee488_device::host_ren_w));
|
||||
m_pia0->irqa_handler().set(FUNC(osborne1_state::ieee_pia_irq_a_func));
|
||||
|
||||
MCFG_IEEE488_BUS_ADD()
|
||||
MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_pia0, pia6821_device, ca2_w))
|
||||
IEEE488(config, m_ieee, 0);
|
||||
m_ieee->srq_callback().set(m_pia0, FUNC(pia6821_device::ca2_w));
|
||||
|
||||
PIA6821(config, m_pia1);
|
||||
m_pia1->writepa_handler().set(FUNC(osborne1_state::video_pia_port_a_w));
|
||||
@ -332,23 +335,22 @@ MACHINE_CONFIG_START(osborne1_state::osborne1)
|
||||
|
||||
MB8877(config, m_fdc, MAIN_CLOCK/16);
|
||||
m_fdc->set_force_ready(true);
|
||||
MCFG_FLOPPY_DRIVE_ADD(m_floppy0, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(m_floppy1, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
|
||||
FLOPPY_CONNECTOR(config, m_floppy0, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, m_floppy1, osborne1_floppies, "525ssdd", floppy_image_device::default_floppy_formats);
|
||||
|
||||
// internal ram
|
||||
RAM(config, RAM_TAG).set_default_size("68K"); // 64kB main RAM and 4kbit video attribute RAM
|
||||
|
||||
MCFG_SOFTWARE_LIST_ADD("flop_list","osborne1")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "flop_list").set_original("osborne1");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(osborne1nv_state::osborne1nv)
|
||||
void osborne1nv_state::osborne1nv(machine_config &config)
|
||||
{
|
||||
osborne1(config);
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_IO_MAP(osborne1nv_io)
|
||||
m_maincpu->set_addrmap(AS_IO, &osborne1nv_state::osborne1nv_io);
|
||||
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_NO_PALETTE
|
||||
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
|
||||
m_screen->set_palette(finder_base::DUMMY_TAG);
|
||||
m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
|
||||
|
||||
sy6545_1_device &crtc(SY6545_1(config, "crtc", XTAL(12'288'000)/8));
|
||||
crtc.set_screen(m_screen);
|
||||
@ -356,7 +358,7 @@ MACHINE_CONFIG_START(osborne1nv_state::osborne1nv)
|
||||
crtc.set_char_width(8);
|
||||
crtc.set_update_row_callback(FUNC(osborne1nv_state::crtc_update_row), this);
|
||||
crtc.set_on_update_addr_change_callback(FUNC(osborne1nv_state::crtc_update_addr_changed), this);
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
|
||||
ROM_START( osborne1 )
|
||||
|
@ -38,7 +38,7 @@ public:
|
||||
void pc1500(machine_config &config);
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<lh5801_cpu_device> m_maincpu;
|
||||
required_device<upd1990a_device> m_rtc;
|
||||
|
||||
required_shared_ptr<uint8_t> m_lcd_data;
|
||||
@ -270,23 +270,23 @@ PALETTE_INIT_MEMBER(pc1500_state, pc1500)
|
||||
palette.set_pen_color(1, rgb_t(92, 83, 88));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pc1500_state::pc1500)
|
||||
MCFG_DEVICE_ADD("maincpu", LH5801, 1300000) //1.3 MHz
|
||||
MCFG_DEVICE_PROGRAM_MAP( pc1500_mem )
|
||||
MCFG_DEVICE_IO_MAP( pc1500_mem_io )
|
||||
MCFG_LH5801_IN(READ8(*this, pc1500_state,pc1500_kb_r))
|
||||
void pc1500_state::pc1500(machine_config &config)
|
||||
{
|
||||
LH5801(config, m_maincpu, 1300000); // 1.3 MHz
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pc1500_state::pc1500_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &pc1500_state::pc1500_mem_io);
|
||||
m_maincpu->in_func().set(FUNC(pc1500_state::pc1500_kb_r));
|
||||
|
||||
MCFG_SCREEN_ADD("screen", LCD)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
|
||||
MCFG_SCREEN_UPDATE_DRIVER(pc1500_state, screen_update)
|
||||
MCFG_SCREEN_SIZE(156, 8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 156-1, 0, 7-1)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||
screen.set_refresh_hz(50);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
|
||||
screen.set_screen_update(FUNC(pc1500_state::screen_update));
|
||||
screen.set_size(156, 8);
|
||||
screen.set_visarea(0, 156-1, 0, 7-1);
|
||||
screen.set_palette("palette");
|
||||
|
||||
config.set_default_layout(layout_pc1500);
|
||||
MCFG_PALETTE_ADD("palette", 2)
|
||||
MCFG_PALETTE_INIT_OWNER(pc1500_state, pc1500)
|
||||
PALETTE(config, "palette", 2).set_init(FUNC(pc1500_state::palette_init_pc1500));
|
||||
|
||||
lh5810_device &ioports(LH5810(config, "lh5810"));
|
||||
ioports.porta_r().set(FUNC(pc1500_state::port_a_r));
|
||||
@ -296,7 +296,7 @@ MACHINE_CONFIG_START(pc1500_state::pc1500)
|
||||
ioports.out_int().set_inputline("maincpu", LH5801_LINE_MI);
|
||||
|
||||
UPD1990A(config, m_rtc);
|
||||
MACHINE_CONFIG_END
|
||||
}
|
||||
|
||||
|
||||
ROM_START( pc1500 )
|
||||
|
@ -39,6 +39,7 @@ public:
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_lcdc(*this, "hd44780")
|
||||
, m_screen(*this, "screen")
|
||||
, m_beep(*this, "beeper")
|
||||
, m_cart(*this, "cartslot")
|
||||
, m_bank0(*this, "bank0")
|
||||
@ -69,6 +70,7 @@ protected:
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<hd44780_device> m_lcdc;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<beep_device> m_beep;
|
||||
required_device<generic_slot_device> m_cart;
|
||||
optional_memory_bank m_bank0;
|
||||
@ -878,45 +880,45 @@ DEVICE_IMAGE_LOAD_MEMBER( pc2000_state, pc2000_cart )
|
||||
return image_init_result::PASS;
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pc2000_state::pc2000)
|
||||
void pc2000_state::pc2000(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu",Z80, XTAL(4'000'000)) /* probably not accurate */
|
||||
MCFG_DEVICE_PROGRAM_MAP(pc2000_mem)
|
||||
MCFG_DEVICE_IO_MAP(pc2000_io)
|
||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(pc2000_state, irq0_line_hold, 50)
|
||||
Z80(config, m_maincpu, XTAL(4'000'000)); /* probably not accurate */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pc2000_state::pc2000_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &pc2000_state::pc2000_io);
|
||||
m_maincpu->set_periodic_int(FUNC(pc2000_state::irq0_line_hold), attotime::from_hz(50));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", LCD)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
||||
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
|
||||
MCFG_SCREEN_SIZE(120, 18) //2x20 chars
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 18-1)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_LCD);
|
||||
m_screen->set_refresh_hz(50);
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
|
||||
m_screen->set_screen_update("hd44780", FUNC(hd44780_device::screen_update));
|
||||
m_screen->set_size(120, 18); //2x20 chars
|
||||
m_screen->set_visarea(0, 120-1, 0, 18-1);
|
||||
m_screen->set_palette("palette");
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 2)
|
||||
MCFG_PALETTE_INIT_OWNER(pc2000_state, pc2000)
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pc2000)
|
||||
PALETTE(config, "palette", 2).set_init(FUNC(pc2000_state::palette_init_pc2000));
|
||||
GFXDECODE(config, "gfxdecode", "palette", gfx_pc2000);
|
||||
|
||||
MCFG_HD44780_ADD("hd44780")
|
||||
MCFG_HD44780_LCD_SIZE(2, 20)
|
||||
HD44780(config, m_lcdc, 0);
|
||||
m_lcdc->set_lcd_size(2, 20);
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
MCFG_DEVICE_ADD( "beeper", BEEP, 3250 )
|
||||
MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
|
||||
BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 1.00);
|
||||
|
||||
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "genius_cart")
|
||||
MCFG_GENERIC_LOAD(pc2000_state, pc2000_cart)
|
||||
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "genius_cart"));
|
||||
cartslot.set_device_load(device_image_load_delegate(&pc2000_state::device_image_load_pc2000_cart, this));
|
||||
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pc1000_cart", "pc1000")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "pc1000_cart").set_compatible("pc1000");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pc2000_state::gl2000)
|
||||
void pc2000_state::gl2000(machine_config &config)
|
||||
{
|
||||
pc2000(config);
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "gl2000")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("gl2000");
|
||||
SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
|
||||
}
|
||||
|
||||
HD44780_PIXEL_UPDATE(gl4004_state::gl4000_pixel_update)
|
||||
{
|
||||
@ -935,70 +937,66 @@ HD44780_PIXEL_UPDATE(gl4004_state::gl4000_pixel_update)
|
||||
}
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(gl3000s_state::gl3000s)
|
||||
void gl3000s_state::gl3000s(machine_config &config)
|
||||
{
|
||||
pc2000(config);
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_IO_MAP(gl3000s_io)
|
||||
m_maincpu->set_addrmap(AS_IO, &gl3000s_state::gl3000s_io);
|
||||
|
||||
MCFG_DEVICE_REMOVE("hd44780")
|
||||
MCFG_SED1520_ADD("sed1520_l", UPDATE(gl3000s_state, screen_update_left)) // left panel is 59 pixels (0-58)
|
||||
MCFG_SED1520_ADD("sed1520_r", UPDATE(gl3000s_state, screen_update_right)) // right panel is 61 pixels (59-119)
|
||||
config.device_remove("hd44780");
|
||||
SED1520(config, "sed1520_l").set_screen_update_cb(FUNC(gl3000s_state::screen_update_left)); // left panel is 59 pixels (0-58)
|
||||
SED1520(config, "sed1520_r").set_screen_update_cb(FUNC(gl3000s_state::screen_update_right)); // right panel is 61 pixels (59-119)
|
||||
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_SIZE(120, 24)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 24-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER( gl3000s_state, screen_update )
|
||||
m_screen->set_size(120, 24);
|
||||
m_screen->set_visarea(0, 120-1, 0, 24-1);
|
||||
m_screen->set_screen_update(FUNC(gl3000s_state::screen_update));
|
||||
|
||||
config.set_default_layout(layout_gl3000s);
|
||||
config.device_remove("gfxdecode");
|
||||
|
||||
MCFG_DEVICE_REMOVE("gfxdecode")
|
||||
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
|
||||
SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
|
||||
SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(gl4004_state::gl4000)
|
||||
void gl4004_state::gl4000(machine_config &config)
|
||||
{
|
||||
pc2000(config);
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_SIZE(120, 36) // 4x20 chars
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 36-1)
|
||||
m_screen->set_size(120, 36); // 4x20 chars
|
||||
m_screen->set_visarea(0, 120-1, 0, 36-1);
|
||||
|
||||
MCFG_DEVICE_MODIFY("hd44780")
|
||||
MCFG_HD44780_LCD_SIZE(4, 20)
|
||||
MCFG_HD44780_PIXEL_UPDATE_CB(gl4004_state,gl4000_pixel_update)
|
||||
m_lcdc->set_lcd_size(4, 20);
|
||||
m_lcdc->set_pixel_update_cb(FUNC(gl4004_state::gl4000_pixel_update));
|
||||
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "gl2000_cart").set_compatible("gl2000");
|
||||
SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pc1000_state::misterx)
|
||||
void pc1000_state::misterx(machine_config &config)
|
||||
{
|
||||
pc2000(config);
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_MODIFY("maincpu")
|
||||
MCFG_DEVICE_PROGRAM_MAP(pc1000_mem)
|
||||
MCFG_DEVICE_IO_MAP(pc1000_io)
|
||||
MCFG_DEVICE_PERIODIC_INT_DRIVER(pc1000_state, irq0_line_hold, 10)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &pc1000_state::pc1000_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &pc1000_state::pc1000_io);
|
||||
m_maincpu->set_periodic_int(FUNC(pc1000_state::irq0_line_hold), attotime::from_hz(10));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_SIZE(120, 9) //1x20 chars
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 120-1, 0, 9-1)
|
||||
m_screen->set_size(120, 9); //1x20 chars
|
||||
m_screen->set_visarea(0, 120-1, 0, 9-1);
|
||||
|
||||
MCFG_DEVICE_MODIFY("hd44780")
|
||||
MCFG_HD44780_LCD_SIZE(1, 20)
|
||||
MCFG_HD44780_PIXEL_UPDATE_CB(pc1000_state,pc1000_pixel_update)
|
||||
m_lcdc->set_lcd_size(1, 20);
|
||||
m_lcdc->set_pixel_update_cb(FUNC(pc1000_state::pc1000_pixel_update));
|
||||
|
||||
/* Software lists */
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "misterx")
|
||||
MACHINE_CONFIG_END
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("misterx");
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pc1000_state::pc1000)
|
||||
void pc1000_state::pc1000(machine_config &config)
|
||||
{
|
||||
misterx(config);
|
||||
MCFG_SOFTWARE_LIST_REMOVE("cart_list")
|
||||
MCFG_SOFTWARE_LIST_REMOVE("pc1000_cart")
|
||||
MCFG_SOFTWARE_LIST_ADD("cart_list", "pc1000")
|
||||
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
|
||||
MACHINE_CONFIG_END
|
||||
config.device_remove("cart_list");
|
||||
config.device_remove("pc1000_cart");
|
||||
SOFTWARE_LIST(config, "cart_list").set_original("pc1000");
|
||||
SOFTWARE_LIST(config, "misterx_cart").set_compatible("misterx");
|
||||
}
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( pc2000 )
|
||||
|
@ -17,7 +17,6 @@ Notes:
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/popeye.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/netlist.h"
|
||||
#include "netlist/devices/net_lib.h"
|
||||
@ -586,67 +585,66 @@ WRITE8_MEMBER(tnx1_state::popeye_portB_w)
|
||||
m_dswbit = (data & 0x0e) >> 1;
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(tnx1_state::config)
|
||||
void tnx1_state::config(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) /* 4 MHz */
|
||||
MCFG_DEVICE_PROGRAM_MAP(maincpu_program_map)
|
||||
MCFG_DEVICE_IO_MAP(maincpu_io_map)
|
||||
MCFG_Z80_SET_REFRESH_CALLBACK(WRITE8(*this, tnx1_state, refresh_w))
|
||||
Z80(config, m_maincpu, XTAL(8'000'000)/2); /* 4 MHz */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tnx1_state::maincpu_program_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &tnx1_state::maincpu_io_map);
|
||||
m_maincpu->refresh_cb().set(FUNC(tnx1_state::refresh_w));
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(32*16, 32*16)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 2*16, 30*16-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tnx1_state, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, tnx1_state, screen_vblank))
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(60);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(32*16, 32*16);
|
||||
screen.set_visarea(0*16, 32*16-1, 2*16, 30*16-1);
|
||||
screen.set_screen_update(FUNC(tnx1_state::screen_update));
|
||||
screen.set_palette(m_palette);
|
||||
screen.screen_vblank().set(FUNC(tnx1_state::screen_vblank));
|
||||
|
||||
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_popeye)
|
||||
MCFG_PALETTE_ADD("palette", 16+16*2+8*4)
|
||||
MCFG_PALETTE_INIT_OWNER(tnx1_state, palette_init)
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_popeye);
|
||||
PALETTE(config, m_palette, 16+16*2+8*4).set_init(FUNC(tnx1_state::palette_init_tnx1));
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(8'000'000)/4));
|
||||
aysnd.port_a_read_callback().set_ioport("DSW0");
|
||||
aysnd.port_b_write_callback().set(FUNC(tnx1_state::popeye_portB_w));
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.40);
|
||||
AY8910(config, m_aysnd, XTAL(8'000'000)/4);
|
||||
m_aysnd->port_a_read_callback().set_ioport("DSW0");
|
||||
m_aysnd->port_b_write_callback().set(FUNC(tnx1_state::popeye_portB_w));
|
||||
m_aysnd->add_route(ALL_OUTPUTS, "mono", 0.40);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(tpp2_state::config)
|
||||
void tpp2_state::config(machine_config &config)
|
||||
{
|
||||
tpp1_state::config(config);
|
||||
|
||||
auto &aysnd(*subdevice<ay8910_device>("aysnd"));
|
||||
aysnd.reset_routes();
|
||||
aysnd.set_flags(AY8910_RESISTOR_OUTPUT); /* Does tnx1, tpp1 & popeyebl have the same filtering? */
|
||||
aysnd.set_resistors_load(2000.0, 2000.0, 2000.0);
|
||||
aysnd.add_route(0, "snd_nl", 1.0, 0);
|
||||
aysnd.add_route(1, "snd_nl", 1.0, 1);
|
||||
aysnd.add_route(2, "snd_nl", 1.0, 2);
|
||||
m_aysnd->reset_routes();
|
||||
m_aysnd->set_flags(AY8910_RESISTOR_OUTPUT); /* Does tnx1, tpp1 & popeyebl have the same filtering? */
|
||||
m_aysnd->set_resistors_load(2000.0, 2000.0, 2000.0);
|
||||
m_aysnd->add_route(0, "snd_nl", 1.0, 0);
|
||||
m_aysnd->add_route(1, "snd_nl", 1.0, 1);
|
||||
m_aysnd->add_route(2, "snd_nl", 1.0, 2);
|
||||
|
||||
/* NETLIST configuration using internal AY8910 resistor values */
|
||||
|
||||
MCFG_DEVICE_ADD("snd_nl", NETLIST_SOUND, 48000)
|
||||
MCFG_NETLIST_SETUP(nl_popeye)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
netlist_mame_sound_device &snd_nl(NETLIST_SOUND(config, "snd_nl", 48000));
|
||||
snd_nl.set_constructor(netlist_nl_popeye);
|
||||
snd_nl.add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
|
||||
MCFG_NETLIST_STREAM_INPUT("snd_nl", 0, "R_AY1_1.R")
|
||||
MCFG_NETLIST_STREAM_INPUT("snd_nl", 1, "R_AY1_2.R")
|
||||
MCFG_NETLIST_STREAM_INPUT("snd_nl", 2, "R_AY1_3.R")
|
||||
NETLIST_STREAM_INPUT(config, "snd_nl:cin0", 0, "R_AY1_1.R");
|
||||
NETLIST_STREAM_INPUT(config, "snd_nl:cin1", 1, "R_AY1_2.R");
|
||||
NETLIST_STREAM_INPUT(config, "snd_nl:cin2", 2, "R_AY1_3.R");
|
||||
|
||||
MCFG_NETLIST_STREAM_OUTPUT("snd_nl", 0, "ROUT.1")
|
||||
MCFG_NETLIST_ANALOG_MULT_OFFSET(30000.0, -65000.0)
|
||||
MACHINE_CONFIG_END
|
||||
netlist_mame_stream_output_device &nl_out(NETLIST_STREAM_OUTPUT(config, "snd_nl:cout0", 0, "ROUT.1"));
|
||||
nl_out.set_mult_offset(30000.0, -65000.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
Game ROMset(s)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
@ -32,7 +32,8 @@ public:
|
||||
m_inputs(*this, "INPUTS"),
|
||||
m_bios_hack(*this, "SKIP_CHECK"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_ppu(*this, "ppu")
|
||||
m_ppu(*this, "ppu"),
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
uint8_t m_gb_io[0x10];
|
||||
@ -116,6 +117,7 @@ protected:
|
||||
required_ioport m_bios_hack;
|
||||
optional_device<ram_device> m_ram;
|
||||
required_device<dmg_ppu_device> m_ppu;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
void gb_timer_increment();
|
||||
void gb_timer_check_irq();
|
||||
|
@ -75,6 +75,7 @@ protected:
|
||||
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<z80_device> m_maincpu;
|
||||
|
||||
private:
|
||||
DECLARE_WRITE8_MEMBER(bank_0xxx_w);
|
||||
@ -99,7 +100,6 @@ private:
|
||||
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<pia6821_device> m_pia0;
|
||||
|
@ -2,6 +2,7 @@
|
||||
// copyright-holders:smf, Nicola Salmoria, Couriersud
|
||||
// thanks-to: Marc Lafontaine
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "video/resnet.h"
|
||||
#include "emupal.h"
|
||||
@ -26,7 +27,7 @@ public:
|
||||
virtual void config(machine_config &config);
|
||||
|
||||
protected:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<z80_device> m_maincpu;
|
||||
required_device<ay8910_device> m_aysnd;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -67,7 +68,7 @@ protected:
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
virtual void driver_start() override;
|
||||
virtual void video_start() override;
|
||||
virtual DECLARE_PALETTE_INIT(palette_init);
|
||||
virtual DECLARE_PALETTE_INIT(tnx1);
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
virtual DECLARE_WRITE_LINE_MEMBER(screen_vblank);
|
||||
void update_palette();
|
||||
@ -86,7 +87,7 @@ class tpp1_state : public tnx1_state
|
||||
{
|
||||
using tnx1_state::tnx1_state;
|
||||
protected:
|
||||
virtual DECLARE_PALETTE_INIT(palette_init) override;
|
||||
virtual DECLARE_PALETTE_INIT(tnx1) override;
|
||||
virtual void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
||||
|
||||
static const res_net_info tpp1_bak_mb7051_net_info;
|
||||
|
@ -121,7 +121,7 @@ const res_net_info tnx1_state::obj_mb7052_net_info =
|
||||
};
|
||||
|
||||
|
||||
PALETTE_INIT_MEMBER(tpp1_state, palette_init)
|
||||
PALETTE_INIT_MEMBER(tpp1_state, tnx1)
|
||||
{
|
||||
/* Two of the PROM address pins are tied together */
|
||||
for (int i = 0; i < 0x20; i++)
|
||||
@ -135,7 +135,7 @@ PALETTE_INIT_MEMBER(tpp1_state, palette_init)
|
||||
update_palette();
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(tnx1_state, palette_init)
|
||||
PALETTE_INIT_MEMBER(tnx1_state, tnx1)
|
||||
{
|
||||
/* Two of the PROM address pins are tied together and one is not connected... */
|
||||
for (int i = 0;i < 0x100;i++)
|
||||
|
Loading…
Reference in New Issue
Block a user