Previous 199869 Revisions Next

r29218 Thursday 3rd April, 2014 at 14:23:32 UTC by Fabio Priuli
modernized nvram in 3do and mjkjidai + added default nvram
to the latter. nw.
[src/mame/drivers]3do.c mjkjidai.c
[src/mame/includes]3do.h mjkjidai.h
[src/mame/machine]3do.c

trunk/src/mame/machine/3do.c
r29217r29218
164164   }
165165}
166166
167READ8_MEMBER(_3do_state::_3do_nvarea_r) { return m_nvram[offset]; }
168WRITE8_MEMBER(_3do_state::_3do_nvarea_w) { m_nvram[offset] = data; }
167READ8_MEMBER(_3do_state::_3do_nvarea_r) { return m_nvmem[offset]; }
168WRITE8_MEMBER(_3do_state::_3do_nvarea_w) { m_nvmem[offset] = data; }
169169
170170
171171
trunk/src/mame/includes/mjkjidai.h
r29217r29218
1#include "machine/nvram.h"
12#include "sound/okiadpcm.h"
23
34class mjkjidai_adpcm_device;
r29217r29218
78public:
89   mjkjidai_state(const machine_config &mconfig, device_type type, const char *tag)
910      : driver_device(mconfig, type, tag),
10      m_nvram(*this, "nvram"),
1111      m_spriteram1(*this, "spriteram1"),
1212      m_spriteram2(*this, "spriteram2"),
1313      m_spriteram3(*this, "spriteram3"),
1414      m_videoram(*this, "videoram"),
1515      m_maincpu(*this, "maincpu"),
1616      m_mjk_adpcm(*this, "adpcm"),
17      m_nvram(*this, "nvram"),
1718      m_gfxdecode(*this, "gfxdecode"),
1819      m_palette(*this, "palette") { }
1920
20   required_shared_ptr<UINT8> m_nvram;
2121   required_shared_ptr<UINT8> m_spriteram1;
2222   required_shared_ptr<UINT8> m_spriteram2;
2323   required_shared_ptr<UINT8> m_spriteram3;
r29217r29218
2525
2626   required_device<cpu_device> m_maincpu;
2727   required_device<mjkjidai_adpcm_device> m_mjk_adpcm;
28   required_device<nvram_device> m_nvram;
2829   required_device<gfxdecode_device> m_gfxdecode;
2930   required_device<palette_device> m_palette;
3031
trunk/src/mame/includes/3do.h
r29217r29218
77#ifndef _3DO_H_
88#define _3DO_H_
99
10#include "machine/nvram.h"
11
12
1013struct SLOW2 {
1114   /* 03180000 - 0318003f - configuration group */
1215   /* 03180040 - 0318007f - diagnostic UART */
r29217r29218
139142      m_maincpu(*this, "maincpu"),
140143      m_dram(*this, "dram"),
141144      m_vram(*this, "vram"),
145      m_nvram(*this, "nvram"),
142146      m_bank1(*this, "bank1"),
143147      m_bank2(*this, "bank2") { }
144148
145149   required_device<cpu_device> m_maincpu;
146150   required_shared_ptr<UINT32> m_dram;
147151   required_shared_ptr<UINT32> m_vram;
152   required_device<nvram_device> m_nvram;
148153   SLOW2 m_slow2;
149154   MADAM m_madam;
150155   CLIO m_clio;
151156   SVF m_svf;
152157   DSPP m_dspp;
153   UINT8 m_nvram[0x8000];
158   UINT8 m_nvmem[0x8000];
154159
155160//  UINT8 m_video_bits[512];
156161   DECLARE_READ8_MEMBER(_3do_nvarea_r);
r29217r29218
165170   DECLARE_WRITE32_MEMBER(_3do_clio_w);
166171   virtual void machine_start();
167172   virtual void machine_reset();
173   DECLARE_MACHINE_START(_3do);
168174   DECLARE_VIDEO_START(_3do);
169175   UINT32 screen_update__3do(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
170176
trunk/src/mame/drivers/mjkjidai.c
r29217r29218
2525#include "cpu/z80/z80.h"
2626#include "sound/sn76496.h"
2727#include "includes/mjkjidai.h"
28#include "mcfglgcy.h"
2928
3029/* Start of ADPCM custom chip code */
3130
r29217r29218
133132
134133   res |= (ioport("IN3")->read() & 0xc0);
135134
136   if (m_nvram_init_count)
137   {
138      m_nvram_init_count--;
139      res &= 0xbf;
140   }
141
142135   return res;
143136}
144137
r29217r29218
153146   }
154147}
155148
156static NVRAM_HANDLER( mjkjidai )
157{
158   mjkjidai_state *state = machine.driver_data<mjkjidai_state>();
159149
160   if (read_or_write)
161      file->write(state->m_nvram, state->m_nvram.bytes());
162   else if (file)
163      file->read(state->m_nvram, state->m_nvram.bytes());
164   else
165   {
166      state->m_nvram_init_count = 1;
167   }
168}
169
170
171
172150static ADDRESS_MAP_START( mjkjidai_map, AS_PROGRAM, 8, mjkjidai_state )
173151   AM_RANGE(0x0000, 0x7fff) AM_ROM
174152   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
175153   AM_RANGE(0xc000, 0xcfff) AM_RAM
176   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("nvram")   // cleared and initialized on startup if bit 6 if port 00 is 0
154   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("nvram")   // cleared and initialized on startup if bit 6 of port 00 is 0
177155   AM_RANGE(0xe000, 0xe01f) AM_RAM AM_SHARE("spriteram1")          // shared with tilemap ram
178156   AM_RANGE(0xe800, 0xe81f) AM_RAM AM_SHARE("spriteram2")      // shared with tilemap ram
179157   AM_RANGE(0xf000, 0xf01f) AM_RAM AM_SHARE("spriteram3")      // shared with tilemap ram
r29217r29218
385363   MCFG_CPU_IO_MAP(mjkjidai_io_map)
386364   MCFG_CPU_VBLANK_INT_DRIVER("screen", mjkjidai_state,  vblank_irq)
387365
388   MCFG_NVRAM_HANDLER(mjkjidai)
366   MCFG_NVRAM_ADD_NO_FILL("nvram")
389367
390368   /* video hardware */
391369   MCFG_SCREEN_ADD("screen", RASTER)
r29217r29218
442420
443421   ROM_REGION( 0x8000, "adpcm", 0 )    /* ADPCM samples */
444422   ROM_LOAD( "mkj-40.14c",   0x00000, 0x8000, CRC(4d8fcc4a) SHA1(24c2b8031367035c89c6649a084bce0714f3e8d4) )
423
424   ROM_REGION( 0x1000, "nvram", 0 )    /* preformatted NVRAM */
425   ROM_LOAD( "default.nv",   0x00000, 0x1000, CRC(eccc0263) SHA1(679010f096536e8bb572551e9d0776cad72145e2) )
445426ROM_END
446427
447428
trunk/src/mame/drivers/3do.c
r29217r29218
9898#include "imagedev/chd_cd.h"
9999#include "cpu/arm/arm.h"
100100#include "cpu/arm7/arm7.h"
101#include "mcfglgcy.h"
102101
103102
104
105103#define X2_CLOCK_PAL    59000000
106104#define X2_CLOCK_NTSC   49090000
107105#define X601_CLOCK      XTAL_16_9344MHz
r29217r29218
135133void _3do_state::machine_start()
136134{
137135   m_bank2->set_base(memregion("user1")->base());
136   m_nvram->set_base(&m_nvmem, sizeof(m_nvmem));
138137
139138   /* configure overlay */
140139   m_bank1->configure_entry(0, m_dram);
r29217r29218
159158   NULL
160159};
161160
162static NVRAM_HANDLER( _3do )
163{
164   _3do_state *state = machine.driver_data<_3do_state>();
165   UINT8 *nvram = state->m_nvram;
166161
167   if (read_or_write)
168      file->write(nvram,0x8000);
169   else
170   {
171      if (file)
172         file->read(nvram,0x8000);
173      else
174      {
175         /* fill in the default values */
176         memset(nvram,0xff,0x8000);
177      }
178   }
179}
180
181162static MACHINE_CONFIG_START( 3do, _3do_state )
182163
183164   /* Basic machine hardware */
184165   MCFG_CPU_ADD( "maincpu", ARM7_BE, XTAL_50MHz/4 )
185166   MCFG_CPU_PROGRAM_MAP( 3do_mem)
186167
187   MCFG_NVRAM_HANDLER(_3do)
168   MCFG_NVRAM_ADD_1FILL("nvram")
188169
189170   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
190171
r29217r29218
204185   MCFG_CPU_ADD("maincpu", ARM7_BE, XTAL_50MHz/4 )
205186   MCFG_CPU_PROGRAM_MAP( 3do_mem)
206187
207   MCFG_NVRAM_HANDLER(_3do)
188   MCFG_NVRAM_ADD_1FILL("nvram")
208189
209190   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing
210191

Previous 199869 Revisions Next


© 1997-2024 The MAME Team