mirror of
https://github.com/holub/mame
synced 2025-10-07 09:25:34 +03:00
(MESS) modernized friskyt and micronic nvram. nw.
This commit is contained in:
parent
85371e8009
commit
8df4134302
@ -48,32 +48,18 @@ This info came from http://www.ne.jp/asahi/cc-sakura/akkun/old/fryski.html
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/dac.h"
|
||||
#include "includes/seicross.h"
|
||||
#include "mcfglgcy.h"
|
||||
|
||||
static NVRAM_HANDLER( seicross )
|
||||
|
||||
void seicross_state::nvram_init(nvram_device &nvram, void *data, size_t size)
|
||||
{
|
||||
seicross_state *state = machine.driver_data<seicross_state>();
|
||||
UINT8 *nvram = state->m_nvram;
|
||||
size_t nvram_size = state->m_nvram.bytes();
|
||||
|
||||
if (read_or_write)
|
||||
file->write(nvram,nvram_size);
|
||||
else
|
||||
{
|
||||
if (file)
|
||||
file->read(nvram,nvram_size);
|
||||
else
|
||||
{
|
||||
/* fill in the default values */
|
||||
memset(nvram,0,nvram_size);
|
||||
nvram[0x0d] = nvram[0x0f] = nvram[0x11] = nvram[0x13] = nvram[0x15] = nvram[0x19] = 1;
|
||||
nvram[0x17] = 3;
|
||||
}
|
||||
}
|
||||
static const UINT8 init[32] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
|
||||
0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, };
|
||||
|
||||
memset(data, 0x00, size);
|
||||
memcpy(data, init, sizeof(init));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void seicross_state::machine_reset()
|
||||
{
|
||||
/* start with the protection mcu halted */
|
||||
@ -395,7 +381,7 @@ INTERRUPT_GEN_MEMBER(seicross_state::vblank_irq)
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( nvram, seicross_state )
|
||||
static MACHINE_CONFIG_START( no_nvram, seicross_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, 3072000) /* 3.072 MHz? */
|
||||
@ -404,11 +390,10 @@ static MACHINE_CONFIG_START( nvram, seicross_state )
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", seicross_state, vblank_irq)
|
||||
|
||||
MCFG_CPU_ADD("mcu", NSC8105, 3072000) /* ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(mcu_nvram_map)
|
||||
MCFG_CPU_PROGRAM_MAP(mcu_no_nvram_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(1200)) /* 20 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
MCFG_NVRAM_HANDLER(seicross)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -435,13 +420,13 @@ static MACHINE_CONFIG_START( nvram, seicross_state )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( no_nvram, nvram )
|
||||
static MACHINE_CONFIG_DERIVED( nvram, no_nvram )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("mcu")
|
||||
MCFG_CPU_PROGRAM_MAP(mcu_no_nvram_map)
|
||||
MCFG_CPU_PROGRAM_MAP(mcu_nvram_map)
|
||||
|
||||
MCFG_NVRAM_HANDLER(0)
|
||||
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", seicross_state, nvram_init)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include "machine/nvram.h"
|
||||
|
||||
class seicross_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -8,9 +10,9 @@ public:
|
||||
m_row_scroll(*this, "row_scroll"),
|
||||
m_spriteram2(*this, "spriteram2"),
|
||||
m_colorram(*this, "colorram"),
|
||||
m_nvram(*this, "nvram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_nvram(*this, "nvram"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
@ -19,10 +21,10 @@ public:
|
||||
required_shared_ptr<UINT8> m_row_scroll;
|
||||
required_shared_ptr<UINT8> m_spriteram2;
|
||||
required_shared_ptr<UINT8> m_colorram;
|
||||
optional_shared_ptr<UINT8> m_nvram;
|
||||
|
||||
UINT8 m_portb;
|
||||
tilemap_t *m_bg_tilemap;
|
||||
void nvram_init(nvram_device &nvram, void *data, size_t size);
|
||||
|
||||
UINT8 m_irq_mask;
|
||||
DECLARE_WRITE8_MEMBER(seicross_videoram_w);
|
||||
@ -38,6 +40,7 @@ public:
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_mcu;
|
||||
optional_device<nvram_device> m_nvram;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
@ -116,7 +116,6 @@
|
||||
#include "emu.h"
|
||||
#include "includes/micronic.h"
|
||||
#include "rendlay.h"
|
||||
#include "mcfglgcy.h"
|
||||
|
||||
READ8_MEMBER( micronic_state::keypad_r )
|
||||
{
|
||||
@ -300,30 +299,13 @@ static INPUT_PORTS_START( micronic )
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("END") PORT_CODE(KEYCODE_END)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static NVRAM_HANDLER( micronic )
|
||||
{
|
||||
micronic_state *state = machine.driver_data<micronic_state>();
|
||||
|
||||
if (read_or_write)
|
||||
{
|
||||
file->write(state->m_ram_base, 0x8000);
|
||||
file->write(state->m_ram->pointer(), state->m_ram->size());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (file)
|
||||
{
|
||||
file->read(state->m_ram_base, 0x8000);
|
||||
file->read(state->m_ram->pointer(), state->m_ram->size());
|
||||
state->m_status_flag = 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
state->m_status_flag = 0x00;
|
||||
}
|
||||
}
|
||||
void micronic_state::nvram_init(nvram_device &nvram, void *data, size_t size)
|
||||
{
|
||||
m_status_flag = 0;
|
||||
}
|
||||
|
||||
|
||||
PALETTE_INIT_MEMBER(micronic_state, micronic)
|
||||
{
|
||||
palette.set_pen_color(0, rgb_t(138, 146, 148));
|
||||
@ -336,11 +318,19 @@ void micronic_state::machine_start()
|
||||
m_bank1->configure_entries(0x00, 0x02, memregion(Z80_TAG)->base(), 0x10000);
|
||||
|
||||
/* RAM banks */
|
||||
m_banks_num = (m_ram->size()>>15) + 1;
|
||||
m_banks_num = (m_ram->size() >> 15) + 1;
|
||||
m_bank1->configure_entries(0x02, m_banks_num - 1, m_ram->pointer(), 0x8000);
|
||||
|
||||
m_nvram1->set_base(m_ram_base, 0x8000);
|
||||
m_nvram2->set_base(m_ram->pointer(), m_ram->size());
|
||||
|
||||
/* register for state saving */
|
||||
// save_item(NAME(state->));
|
||||
save_item(NAME(m_banks_num));
|
||||
save_item(NAME(m_kp_matrix));
|
||||
save_item(NAME(m_lcd_contrast));
|
||||
save_item(NAME(m_lcd_backlight));
|
||||
save_item(NAME(m_status_flag));
|
||||
// TODO: restore RAM bank at state load...
|
||||
}
|
||||
|
||||
void micronic_state::machine_reset()
|
||||
@ -386,7 +376,8 @@ static MACHINE_CONFIG_START( micronic, micronic_state )
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("224K")
|
||||
|
||||
MCFG_NVRAM_HANDLER(micronic)
|
||||
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram1", micronic_state, nvram_init) // base ram
|
||||
MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram2", micronic_state, nvram_init) // additional ram banks
|
||||
|
||||
MCFG_MC146818_ADD( MC146818_TAG, XTAL_32_768kHz )
|
||||
MCFG_MC146818_IRQ_HANDLER(WRITELINE(micronic_state, mc146818_irq))
|
||||
|
@ -105,7 +105,7 @@
|
||||
#include "sound/beep.h"
|
||||
#include "machine/ram.h"
|
||||
#include "rendlay.h"
|
||||
#include "mcfglgcy.h"
|
||||
|
||||
|
||||
#define VERBOSE 0
|
||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "video/hd61830.h"
|
||||
#include "machine/mc146818.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/beep.h"
|
||||
#include "imagedev/cassette.h"
|
||||
|
||||
@ -30,8 +31,11 @@ public:
|
||||
m_lcdc(*this, HD61830_TAG),
|
||||
m_beep(*this, "beeper"),
|
||||
m_rtc(*this, MC146818_TAG),
|
||||
m_nvram1(*this, "nvram1"),
|
||||
m_nvram2(*this, "nvram2"),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_ram_base(*this, "ram_base"),
|
||||
m_status_flag(1),
|
||||
m_bank1(*this, "bank1"),
|
||||
m_bit0(*this, "BIT0"),
|
||||
m_bit1(*this, "BIT1"),
|
||||
@ -41,16 +45,20 @@ public:
|
||||
m_bit5(*this, "BIT5"),
|
||||
m_backbattery(*this, "BACKBATTERY"),
|
||||
m_mainbattery(*this, "MAINBATTERY"),
|
||||
m_cassette(*this, "cassette") { }
|
||||
m_cassette(*this, "cassette")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<hd61830_device> m_lcdc;
|
||||
required_device<beep_device> m_beep;
|
||||
required_device<mc146818_device> m_rtc;
|
||||
required_device<nvram_device> m_nvram1;
|
||||
required_device<nvram_device> m_nvram2;
|
||||
required_device<ram_device> m_ram;
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
void nvram_init(nvram_device &nvram, void *data, size_t size);
|
||||
|
||||
DECLARE_READ8_MEMBER( keypad_r );
|
||||
DECLARE_READ8_MEMBER( status_flag_r );
|
||||
@ -70,7 +78,7 @@ public:
|
||||
UINT8 m_banks_num;
|
||||
UINT8 m_kp_matrix;
|
||||
UINT8 m_lcd_contrast;
|
||||
bool m_lcd_backlight;
|
||||
int m_lcd_backlight;
|
||||
UINT8 m_status_flag;
|
||||
DECLARE_PALETTE_INIT(micronic);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user