Previous 199869 Revisions Next

r18054 Friday 21st September, 2012 at 06:37:59 UTC by Aaron Giles
NVRAM_HANDLER removal.
[src/emu]device.h
[src/mame/drivers]bfm_sc2.c bfm_sc4h.c bmcbowl.c dgpix.c gal3.c mitchell.c
[src/mame/includes]bfm_sc45.h mitchell.h

trunk/src/mame/includes/mitchell.h
r18053r18054
55*************************************************************************/
66
77#include "sound/okim6295.h"
8#include "machine/nvram.h"
89
910class mitchell_state : public driver_device
1011{
r18053r18054
1415        m_maincpu(*this, "maincpu"),
1516        m_audiocpu(*this, "audiocpu"),
1617        m_oki(*this, "oki") ,
18        m_nvram(*this, "nvram"),
1719      m_colorram(*this, "colorram"),
1820      m_videoram(*this, "videoram"){ }
1921
r18053r18054
2123   required_device<cpu_device> m_maincpu;
2224   optional_device<cpu_device> m_audiocpu;
2325   optional_device<okim6295_device> m_oki;
26   optional_device<nvram_device> m_nvram;
2427   /* memory pointers */
2528   required_shared_ptr<UINT8> m_colorram;
2629   required_shared_ptr<UINT8> m_videoram;
r18053r18054
4245   int        m_dial_selected;
4346   int        m_dir[2];
4447   int        m_keymatrix;
48   UINT8      m_dummy_nvram;
4549
46   UINT8 *m_nvram;
47   size_t m_nvram_size;
4850   UINT8 m_irq_source;
4951   DECLARE_READ8_MEMBER(pang_port5_r);
5052   DECLARE_WRITE8_MEMBER(pang_bankswitch_w);
trunk/src/mame/includes/bfm_sc45.h
r18053r18054
66
77#include "machine/bfm_bda.h"
88
9#include "sound/ymz280b.h"
10#include "machine/68681.h"
11#include "machine/nvram.h"
12
913class sc4_state : public driver_device
1014{
1115public:
1216   sc4_state(const machine_config &mconfig, device_type type, const char *tag)
1317      : driver_device(mconfig, type, tag),
18        m_cpuregion(*this, "maincpu"),
19        m_duart(*this, "duart68681"),
20        m_ymz(*this, "ymz"),
1421        m_maincpu(*this, "maincpu"),
15        m_vfd0(*this, "vfd0")
22        m_vfd0(*this, "vfd0"),
23        m_nvram(*this, "nvram")
1624
1725   {
1826      m_chk41addr = -1;
1927      m_dochk41 = false;
2028   }
2129
22   UINT16* m_cpuregion;
23   UINT16* m_mainram;
30   required_memory_region m_cpuregion;
2431   // devices
25   device_t* m_duart;
26   device_t* m_ymz;
32   required_device<duart68681_device> m_duart;
33   required_device<ymz280b_device> m_ymz;
2734   required_device<cpu_device> m_maincpu;
2835   optional_device<bfm_bda_t> m_vfd0;
36   required_device<nvram_device> m_nvram;
2937
3038   // serial vfd
3139   int vfd_enabled;
r18053r18054
4856
4957   int m_chk41addr;
5058   bool m_dochk41;
59   
60   UINT16 m_mainram[0x10000/2];
5161
5262
5363   DECLARE_WRITE8_MEMBER(mux_output_w);
trunk/src/mame/drivers/mitchell.c
r18053r18054
9292   "0111"   /* erase command */
9393};
9494
95static NVRAM_HANDLER( mitchell )
96{
97   mitchell_state *state = machine.driver_data<mitchell_state>();
98   if (read_or_write)
99   {
100      if (state->m_nvram_size)   /* Super Pang, Block Block */
101         file->write(state->m_nvram,state->m_nvram_size);   /* NVRAM */
102   }
103   else
104   {
105      if (file)
106      {
107         if (state->m_nvram_size)   /* Super Pang, Block Block */
108            file->read(state->m_nvram,state->m_nvram_size);   /* NVRAM */
109      }
110   }
111}
112
11395READ8_MEMBER(mitchell_state::pang_port5_r)
11496{
11597
r18053r18054
11571139   MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
11581140   MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
11591141
1160   MCFG_NVRAM_HANDLER(mitchell)
11611142   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
11621143
11631144   /* video hardware */
r18053r18054
11831164   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
11841165MACHINE_CONFIG_END
11851166
1167static MACHINE_CONFIG_DERIVED( pangnv, pang )
1168   MCFG_NVRAM_ADD_0FILL("nvram")
1169MACHINE_CONFIG_END
1170
1171
11861172static const gfx_layout blcharlayout =
11871173{
11881174   8,8,   /* 8*8 characters */
r18053r18054
12201206};
12211207
12221208
1223static MACHINE_CONFIG_DERIVED( spangbl, pang )
1209static MACHINE_CONFIG_DERIVED( spangbl, pangnv )
12241210
12251211   MCFG_CPU_MODIFY("maincpu")
12261212   MCFG_CPU_PROGRAM_MAP(spangbl_map)
r18053r18054
12891275   MCFG_CPU_IO_MAP(mitchell_io_map)
12901276   MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1)   /* ??? one extra irq seems to be needed for music (see input5_r) */
12911277
1292   MCFG_NVRAM_HANDLER(mitchell)
12931278   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
12941279
12951280   /* video hardware */
r18053r18054
13411326   MCFG_CPU_IO_MAP(mitchell_io_map)
13421327   MCFG_TIMER_ADD_SCANLINE("scantimer", mitchell_irq, "screen", 0, 1)   /* ??? one extra irq seems to be needed for music (see input5_r) */
13431328
1344   MCFG_NVRAM_HANDLER(mitchell)
13451329   MCFG_EEPROM_ADD("eeprom", eeprom_intf)
13461330
13471331   /* video hardware */
r18053r18054
21192103DRIVER_INIT_MEMBER(mitchell_state,dokaben)
21202104{
21212105   m_input_type = 0;
2122   m_nvram_size = 0;
21232106   mgakuen2_decode(machine());
21242107   configure_banks(machine());
21252108}
21262109DRIVER_INIT_MEMBER(mitchell_state,pang)
21272110{
21282111   m_input_type = 0;
2129   m_nvram_size = 0;
21302112   pang_decode(machine());
21312113   configure_banks(machine());
21322114}
21332115DRIVER_INIT_MEMBER(mitchell_state,pangb)
21342116{
21352117   m_input_type = 0;
2136   m_nvram_size = 0;
21372118   bootleg_decode(machine());
21382119   configure_banks(machine());
2120   if (m_nvram != NULL)
2121      m_nvram->set_base(&m_dummy_nvram, sizeof(m_dummy_nvram));   /* for pangba */
21392122}
21402123DRIVER_INIT_MEMBER(mitchell_state,cworld)
21412124{
21422125   m_input_type = 0;
2143   m_nvram_size = 0;
21442126   cworld_decode(machine());
21452127   configure_banks(machine());
21462128}
21472129DRIVER_INIT_MEMBER(mitchell_state,hatena)
21482130{
21492131   m_input_type = 0;
2150   m_nvram_size = 0;
21512132   hatena_decode(machine());
21522133   configure_banks(machine());
21532134}
21542135DRIVER_INIT_MEMBER(mitchell_state,spang)
21552136{
21562137   m_input_type = 3;
2157   m_nvram_size = 0x80;
2158   m_nvram = &memregion("maincpu")->base()[0xe000];   /* NVRAM */
2138   m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80);   /* NVRAM */
21592139   spang_decode(machine());
21602140   configure_banks(machine());
21612141}
r18053r18054
21632143DRIVER_INIT_MEMBER(mitchell_state,spangbl)
21642144{
21652145   m_input_type = 3;
2166   m_nvram_size = 0x80;
2167   m_nvram = &memregion("maincpu")->base()[0xe000];   /* NVRAM */
2146   m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80);   /* NVRAM */
21682147   bootleg_decode(machine());
21692148   configure_banks(machine());
21702149}
r18053r18054
21722151DRIVER_INIT_MEMBER(mitchell_state,spangj)
21732152{
21742153   m_input_type = 3;
2175   m_nvram_size = 0x80;
2176   m_nvram = &memregion("maincpu")->base()[0xe000];   /* NVRAM */
2154   m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80);   /* NVRAM */
21772155   spangj_decode(machine());
21782156   configure_banks(machine());
21792157}
21802158DRIVER_INIT_MEMBER(mitchell_state,sbbros)
21812159{
21822160   m_input_type = 3;
2183   m_nvram_size = 0x80;
2184   m_nvram = &memregion("maincpu")->base()[0xe000];   /* NVRAM */
2161   m_nvram->set_base(&memregion("maincpu")->base()[0xe000], 0x80);   /* NVRAM */
21852162   sbbros_decode(machine());
21862163   configure_banks(machine());
21872164}
21882165DRIVER_INIT_MEMBER(mitchell_state,qtono1)
21892166{
21902167   m_input_type = 0;
2191   m_nvram_size = 0;
21922168   qtono1_decode(machine());
21932169   configure_banks(machine());
21942170}
21952171DRIVER_INIT_MEMBER(mitchell_state,qsangoku)
21962172{
21972173   m_input_type = 0;
2198   m_nvram_size = 0;
21992174   qsangoku_decode(machine());
22002175   configure_banks(machine());
22012176}
r18053r18054
22092184DRIVER_INIT_MEMBER(mitchell_state,mgakuen2)
22102185{
22112186   m_input_type = 1;
2212   m_nvram_size = 0;
22132187   mgakuen2_decode(machine());
22142188   configure_banks(machine());
22152189}
22162190DRIVER_INIT_MEMBER(mitchell_state,pkladies)
22172191{
22182192   m_input_type = 1;
2219   m_nvram_size = 0;
22202193   mgakuen2_decode(machine());
22212194   configure_banks(machine());
22222195}
22232196DRIVER_INIT_MEMBER(mitchell_state,pkladiesbl)
22242197{
22252198   m_input_type = 1;
2226   m_nvram_size = 0;
22272199   bootleg_decode(machine());
22282200   configure_banks(machine());
22292201}
22302202DRIVER_INIT_MEMBER(mitchell_state,marukin)
22312203{
22322204   m_input_type = 1;
2233   m_nvram_size = 0;
22342205   marukin_decode(machine());
22352206   configure_banks(machine());
22362207}
22372208DRIVER_INIT_MEMBER(mitchell_state,block)
22382209{
22392210   m_input_type = 2;
2240   m_nvram_size = 0x80;
2241   m_nvram = &memregion("maincpu")->base()[0xff80];   /* NVRAM */
2211   m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80);   /* NVRAM */
22422212   block_decode(machine());
22432213   configure_banks(machine());
22442214}
22452215DRIVER_INIT_MEMBER(mitchell_state,blockbl)
22462216{
22472217   m_input_type = 2;
2248   m_nvram_size = 0x80;
2249   m_nvram = &memregion("maincpu")->base()[0xff80];   /* NVRAM */
2218   m_nvram->set_base(&memregion("maincpu")->base()[0xff80], 0x80);   /* NVRAM */
22502219   bootleg_decode(machine());
22512220   configure_banks(machine());
22522221}
r18053r18054
23212290GAME( 1989, pompingw,  pang,     pang,    pang, mitchell_state,     pang,     ROT0,   "Mitchell", "Pomping World (Japan)", GAME_SUPPORTS_SAVE )
23222291GAME( 1989, cworld,    0,        pang,    qtono1, mitchell_state,   cworld,   ROT0,   "Capcom", "Capcom World (Japan)", GAME_SUPPORTS_SAVE )
23232292GAME( 1990, hatena,    0,        pang,    qtono1, mitchell_state,   hatena,   ROT0,   "Capcom", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", GAME_SUPPORTS_SAVE )
2324GAME( 1990, spang,     0,        pang,    pang, mitchell_state,     spang,    ROT0,   "Mitchell", "Super Pang (World 900914)", GAME_SUPPORTS_SAVE )
2325GAME( 1990, spangj,    spang,    pang,    pang, mitchell_state,     spangj,   ROT0,   "Mitchell", "Super Pang (Japan 901023)", GAME_SUPPORTS_SAVE )
2293GAME( 1990, spang,     0,        pangnv,  pang, mitchell_state,     spang,    ROT0,   "Mitchell", "Super Pang (World 900914)", GAME_SUPPORTS_SAVE )
2294GAME( 1990, spangj,    spang,    pangnv,  pang, mitchell_state,     spangj,   ROT0,   "Mitchell", "Super Pang (Japan 901023)", GAME_SUPPORTS_SAVE )
23262295GAME( 1990, spangbl,   spang,    spangbl, spangbl, mitchell_state,  spangbl,  ROT0,   "bootleg", "Super Pang (World 900914, bootleg)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // different sound hardware
23272296GAME( 1994, mstworld,  0,        mstworld,mstworld, mitchell_state, mstworld, ROT0,   "bootleg (TCH)", "Monsters World (bootleg of Super Pang)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
2328GAME( 1990, sbbros,    spang,    pang,    pang, mitchell_state,     sbbros,   ROT0,   "Mitchell (Capcom license)", "Super Buster Bros. (US 901001)", GAME_SUPPORTS_SAVE )
2297GAME( 1990, sbbros,    spang,    pangnv,  pang, mitchell_state,     sbbros,   ROT0,   "Mitchell (Capcom license)", "Super Buster Bros. (US 901001)", GAME_SUPPORTS_SAVE )
23292298GAME( 1990, marukin,   0,        marukin, marukin, mitchell_state,  marukin,  ROT0,   "Yuga", "Super Marukin-Ban (Japan 901017)", GAME_SUPPORTS_SAVE )
23302299GAME( 1991, qtono1,    0,        pang,    qtono1, mitchell_state,   qtono1,   ROT0,   "Capcom", "Quiz Tonosama no Yabou (Japan)", GAME_SUPPORTS_SAVE )
23312300GAME( 1991, qsangoku,  0,        pang,    qtono1, mitchell_state,   qsangoku, ROT0,   "Capcom", "Quiz Sangokushi (Japan)", GAME_SUPPORTS_SAVE )
2332GAME( 1991, block,     0,        pang,    block, mitchell_state,    block,    ROT270, "Capcom", "Block Block (World 910910)", GAME_SUPPORTS_SAVE )
2333GAME( 1991, blockj,    block,    pang,    block, mitchell_state,    block,    ROT270, "Capcom", "Block Block (Japan 910910)", GAME_SUPPORTS_SAVE )
2334GAME( 1991, blockjoy,  block,    pang,    blockjoy, mitchell_state, block,    ROT270, "Capcom", "Block Block (World 911106 Joystick)", GAME_SUPPORTS_SAVE )
2335GAME( 1991, blockbl,   block,    pang,    block, mitchell_state,    blockbl,  ROT270, "bootleg", "Block Block (bootleg)", GAME_SUPPORTS_SAVE )
2301GAME( 1991, block,     0,        pangnv,  block, mitchell_state,    block,    ROT270, "Capcom", "Block Block (World 910910)", GAME_SUPPORTS_SAVE )
2302GAME( 1991, blockj,    block,    pangnv,  block, mitchell_state,    block,    ROT270, "Capcom", "Block Block (Japan 910910)", GAME_SUPPORTS_SAVE )
2303GAME( 1991, blockjoy,  block,    pangnv,  blockjoy, mitchell_state, block,    ROT270, "Capcom", "Block Block (World 911106 Joystick)", GAME_SUPPORTS_SAVE )
2304GAME( 1991, blockbl,   block,    pangnv,  block, mitchell_state,    blockbl,  ROT270, "bootleg", "Block Block (bootleg)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/gal3.c
r18053r18054
129129#include "includes/namcos2.h"
130130#include "cpu/tms32025/tms32025.h"
131131#include "includes/namcoic.h"
132#include "machine/nvram.h"
132133#include "sound/c140.h"
133134#include "rendlay.h"
134135
r18053r18054
138139public:
139140   gal3_state(const machine_config &mconfig, device_type type, const char *tag)
140141      : namcos2_shared_state(mconfig, type, tag) ,
141      m_nvmem(*this, "nvmem"),
142142      m_rso_shared_ram(*this, "rso_shared_ram"){ }
143143
144144   UINT32 *m_mpSharedRAM0;
145145   //UINT32 *m_mpSharedRAM1;
146   required_shared_ptr<UINT32> m_nvmem;
147146   UINT16 m_namcos21_video_enable;
148147   required_shared_ptr<UINT16> m_rso_shared_ram;
149148   UINT32 m_led_mst;
r18053r18054
247246}
248247
249248
250static NVRAM_HANDLER( gal3 )
251{
252   gal3_state *state = machine.driver_data<gal3_state>();
253   int i;
254   UINT8 data[4];
255   if( read_or_write )
256   {
257      for( i=0; i<state->m_nvmem.bytes()/4; i++ )
258      {
259         UINT32 dword = state->m_nvmem[i];
260         data[0] = dword>>24;
261         data[1] = (dword&0x00ff0000)>>16;
262         data[2] = (dword&0x0000ff00)>>8;
263         data[3] = dword&0xff;
264         file->write( data, 4 );
265      }
266   }
267   else
268   {
269      if( file )
270      {
271         for( i=0; i<state->m_nvmem.bytes()/4; i++ )
272         {
273            file->read( data, 4 );
274            state->m_nvmem[i] = (data[0]<<24)|(data[1]<<16)|(data[2]<<8)|data[3];
275         }
276      }
277      else
278      {
279         /* fill in the default values */
280         memset( state->m_nvmem, 0x00, state->m_nvmem.bytes() );
281      }
282   }
283}
284
285
286249/***************************************************************************************/
287250
288251READ32_MEMBER(gal3_state::led_mst_r)
r18053r18054
651614*/
652615   MCFG_QUANTUM_TIME(attotime::from_hz(60*8000)) /* 8000 CPU slices per frame */
653616
654   MCFG_NVRAM_HANDLER(gal3)
617   MCFG_NVRAM_ADD_0FILL("nvmem")
655618
656619   MCFG_SCREEN_ADD("lscreen", RASTER)
657620   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/bfm_sc4h.c
r18053r18054
3434#include "emu.h"
3535#include "cpu/m68000/m68000.h"
3636#include "includes/bfm_sc45.h"
37#include "sound/ymz280b.h"
38#include "machine/68681.h"
3937#include "bfm_sc4.lh"
4038#include "video/awpvid.h"
4139//DMD01
r18053r18054
103101      }
104102
105103
106      return m_cpuregion[offset];
104      return m_cpuregion->u16(offset);
107105   }
108106   else
109107      logerror("%08x maincpu read access offset %08x mem_mask %04x cs %d\n", pc, offset*2, mem_mask, 1);
r18053r18054
603601   sec.reset();
604602}
605603
606static NVRAM_HANDLER( bfm_sc4 )
607{
608   sc4_state *state = machine.driver_data<sc4_state>();
609   if ( read_or_write )
610   {   // writing
611      file->write(state->m_mainram,0x10000);
612   }
613   else
614   { // reading
615      if ( file )
616      {
617         file->read(state->m_mainram,0x10000);
618      }
619   }
620}
621604
622
623
624605MACHINE_START_MEMBER(sc4_state,sc4)
625606{
626   m_cpuregion = (UINT16*)memregion( "maincpu" )->base();
627   m_mainram = (UINT16*)auto_alloc_array_clear(machine(), UINT16, 0x10000);
628   m_duart = machine().device("duart68681");
629   m_ymz = machine().device("ymz");
630   m68307_set_port_callbacks(machine().device("maincpu"),
607   m_nvram->set_base(m_mainram, sizeof(m_mainram));
608
609   m68307_set_port_callbacks(m_maincpu,
631610      bfm_sc4_68307_porta_r,
632611      bfm_sc4_68307_porta_w,
633612      bfm_sc4_68307_portb_r,
634613      bfm_sc4_68307_portb_w );
635   m68307_set_duart68681(machine().device("maincpu"),machine().device("m68307_68681"));
614   m68307_set_duart68681(m_maincpu,machine().device("m68307_68681"));
636615
637616   int reels = 6;
638617   m_reels=reels;
r18053r18054
773752   /* sound hardware */
774753   MCFG_SPEAKER_STANDARD_MONO("mono")
775754
776   MCFG_NVRAM_HANDLER(bfm_sc4)
755   MCFG_NVRAM_ADD_0FILL("nvram")
777756
778757   MCFG_DUART68681_ADD("duart68681", 16000000/4, bfm_sc4_duart68681_config) // ?? Mhz
779758
trunk/src/mame/drivers/bfm_sc2.c
r18053r18054
230230   int m_e2dummywrite;
231231   int m_e2data_to_read;
232232   UINT8 m_codec_data[256];
233   void e2ram_init(nvram_device &nvram, void *data, size_t size);
233234   DECLARE_WRITE8_MEMBER(bankswitch_w);
234235   DECLARE_WRITE8_MEMBER(reel12_vid_w);
235236   DECLARE_WRITE8_MEMBER(reel12_w);
r18053r18054
296297   DECLARE_DRIVER_INIT(focus);
297298   DECLARE_DRIVER_INIT(drwho);
298299   DECLARE_DRIVER_INIT(drwho_common);
300   DECLARE_MACHINE_START(bfm_sc2);
299301   DECLARE_MACHINE_RESET(init);
300302   DECLARE_MACHINE_RESET(awp_init);
301303   DECLARE_MACHINE_START(sc2dmd);
r18053r18054
471473
472474///////////////////////////////////////////////////////////////////////////
473475
474static NVRAM_HANDLER( bfm_sc2 )
476void bfm_sc2_state::e2ram_init(nvram_device &nvram, void *data, size_t size)
475477{
476   bfm_sc2_state *state = machine.driver_data<bfm_sc2_state>();
477478   static const UINT8 init_e2ram[10] = { 1, 4, 10, 20, 0, 1, 1, 4, 10, 20 };
478   if ( read_or_write )
479   {   // writing
480      file->write(state->m_e2ram,sizeof(state->m_e2ram));
481   }
482   else
483   { // reading
484      if ( file )
485      {
486         file->read(state->m_e2ram,sizeof(state->m_e2ram));
487      }
488      else
489      {
490         memset(state->m_e2ram,0x00,sizeof(state->m_e2ram));
491         memcpy(state->m_e2ram,init_e2ram,sizeof(init_e2ram));
492      }
493   }
479   memset(data,0x00,size);
480   memcpy(data,init_e2ram,size);
494481}
495482
496483///////////////////////////////////////////////////////////////////////////
r18053r18054
21502137// machine driver for scorpion2 board + adder2 expansion //////////////////
21512138///////////////////////////////////////////////////////////////////////////
21522139
2140MACHINE_START_MEMBER(bfm_sc2_state,bfm_sc2)
2141{
2142   nvram_device *e2ram = subdevice<nvram_device>("e2ram");
2143   if (e2ram != NULL)
2144      e2ram->set_base(m_e2ram, sizeof(m_e2ram));
2145}
2146
21532147static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state )
21542148   MCFG_MACHINE_RESET_OVERRIDE(bfm_sc2_state, init )                     // main scorpion2 board initialisation
21552149   MCFG_QUANTUM_TIME(attotime::from_hz(960))                           // needed for serial communication !!
r18053r18054
21612155   MCFG_BFMBD1_ADD("vfd0",0)
21622156   MCFG_BFMBD1_ADD("vfd1",1)
21632157
2158   MCFG_MACHINE_START_OVERRIDE(bfm_sc2_state,bfm_sc2)
2159
21642160   MCFG_NVRAM_ADD_0FILL("nvram")
2165   MCFG_NVRAM_HANDLER(bfm_sc2)
2161   MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init)
21662162   MCFG_DEFAULT_LAYOUT(layout_bfm_sc2)
21672163
21682164   MCFG_SCREEN_ADD("adder", RASTER)
r18053r18054
36913687
36923688MACHINE_START_MEMBER(bfm_sc2_state,sc2dmd)
36933689{
3694
3690   MACHINE_START_CALL_MEMBER(bfm_sc2);
36953691   address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
36963692   space.install_write_handler(0x2800, 0x2800, 0, 0, write8_delegate(FUNC(bfm_sc2_state::vfd1_dmd_w),this));
36973693   space.install_write_handler(0x2900, 0x2900, 0, 0, write8_delegate(FUNC(bfm_sc2_state::dmd_reset_w),this));
r18053r18054
37093705   MCFG_BFMBD1_ADD("vfd0",0)
37103706   MCFG_BFMBD1_ADD("vfd1",1)
37113707
3708   MCFG_MACHINE_START_OVERRIDE(bfm_sc2_state,bfm_sc2)
3709
37123710   MCFG_SPEAKER_STANDARD_MONO("mono")
37133711   MCFG_SOUND_ADD("upd",UPD7759, UPD7759_STANDARD_CLOCK)
37143712   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
r18053r18054
37173715   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
37183716
37193717   MCFG_NVRAM_ADD_0FILL("nvram")
3720   MCFG_NVRAM_HANDLER(bfm_sc2)
3718   MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init)
37213719
37223720   /* video hardware */
37233721   MCFG_DEFAULT_LAYOUT(layout_bfm_sc2)
r18053r18054
37493747   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
37503748
37513749   MCFG_NVRAM_ADD_0FILL("nvram")
3752   MCFG_NVRAM_HANDLER(bfm_sc2)
3750   MCFG_NVRAM_ADD_CUSTOM_DRIVER("e2ram", bfm_sc2_state, e2ram_init)
37533751
37543752   /* video hardware */
37553753   MCFG_DEFAULT_LAYOUT(layout_sc2_dmd)
trunk/src/mame/drivers/dgpix.c
r18053r18054
5050*********************************************************************/
5151
5252#include "emu.h"
53#include "machine/nvram.h"
5354#include "cpu/e132xs/e132xs.h"
5455
5556
r18053r18054
8384
8485READ32_MEMBER(dgpix_state::flash_r)
8586{
86   UINT32 *ROM = (UINT32 *)machine().root_device().memregion("user1")->base();
87   UINT32 *ROM = (UINT32 *)memregion("flash")->base();
8788
8889   if(offset >= (0x2000000 - m_flash_roms * 0x400000) / 4)
8990   {
r18053r18054
120121      if(data == 0xd0d00000)
121122      {
122123         // point to game settings
123         UINT8 *rom = (UINT8 *)machine().root_device().memregion("user1")->base() + offset*4;
124         UINT8 *rom = (UINT8 *)memregion("flash")->base() + offset*4;
124125
125126         // erase one block
126127         memset(rom, 0xff, 0x10000);
r18053r18054
138139      }
139140      else
140141      {
141         UINT16 *rom = (UINT16 *)machine().root_device().memregion("user1")->base();
142         UINT16 *rom = (UINT16 *)memregion("flash")->base();
142143
143144         // write game settings
144145
r18053r18054
209210   AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE(vram_r, vram_w)
210211   AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE(flash_r, flash_w)
211212   AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE(flash_r, flash_w)
212   AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0x1c00000)
213   AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("flash", 0x1c00000) AM_SHARE("nvram")
213214ADDRESS_MAP_END
214215
215216static ADDRESS_MAP_START( io_map, AS_IO, 32, dgpix_state )
r18053r18054
224225ADDRESS_MAP_END
225226
226227
227static NVRAM_HANDLER( flashroms )
228{
229   if (read_or_write)
230   {
231      // point to game settings
232      UINT8 *rom = (UINT8 *)machine.root_device().memregion("user1")->base() + 0x1c00000 + 0x360000;
233      UINT8 tmp[0x40000];
234      int i;
235
236      // save the new settings
237      for( i = 0; i < 0x40000; i++ )
238         tmp[i] = rom[WORD_XOR_BE(i)];
239
240      file->write( tmp, 0x40000 );
241   }
242   else if (file)
243   {
244      // point to game settings
245      UINT8 *rom = (UINT8 *)machine.root_device().memregion("user1")->base() + 0x1c00000 + 0x360000;
246      UINT8 tmp[0x40000];
247      int i;
248
249      file->read( tmp, 0x40000 );
250
251      // overlap the default settings with the saved ones
252      for( i = 0; i < 0x40000; i++ )
253         rom[WORD_XOR_BE(i)] = tmp[i];
254   }
255}
256
257228static INPUT_PORTS_START( dgpix )
258229   PORT_START("VBLANK")
259230   PORT_BIT( 0x00000003, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") //value 2 is used by fmaniac3
r18053r18054
334305    running at 16.9MHz
335306*/
336307
337   MCFG_NVRAM_HANDLER(flashroms)
308   MCFG_NVRAM_ADD_NO_FILL("nvram")
338309
339310   /* video hardware */
340311   MCFG_SCREEN_ADD("screen", RASTER)
r18053r18054
407378*/
408379
409380ROM_START( xfiles )
410   ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */
381   ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */
411382   /* 0 - 0x17fffff empty space */
412383   ROM_LOAD16_WORD_SWAP( "u8.bin",  0x1800000, 0x400000, CRC(3b2c2bc1) SHA1(1c07fb5bd8a8c9b5fb169e6400fef845f3aee7aa) )
413384   ROM_LOAD16_WORD_SWAP( "u9.bin",  0x1c00000, 0x400000, CRC(6ecdd1eb) SHA1(e26c9711e589865cc75ec693d382758fa52528b8) )
r18053r18054
482453*/
483454
484455ROM_START( kdynastg )
485   ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 )  /* Hyperstone CPU Code & Data */
456   ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 )  /* Hyperstone CPU Code & Data */
486457   /* 0 - 0x0ffffff empty space */
487458   ROM_LOAD16_WORD_SWAP( "flash.u6",  0x1000000, 0x400000, CRC(280dd64e) SHA1(0e23b227b1183fb5591c3a849b5a5fe7faa23cc8) )
488459   ROM_LOAD16_WORD_SWAP( "flash.u7",  0x1400000, 0x400000, CRC(f9125894) SHA1(abaad31f7a02143ea7029e47e6baf2976365f70c) )
r18053r18054
560531*/
561532
562533ROM_START( fmaniac3 )
563   ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */
534   ROM_REGION32_BE( 0x2000000, "flash", ROMREGION_ERASE00 ) /* Hyperstone CPU Code & Data */
564535   /* 0 - 0x17fffff empty space */
565536   ROM_LOAD16_WORD_SWAP( "flash.u8", 0x1800000, 0x400000, CRC(dc08a224) SHA1(4d14145eb84ad13674296f81e90b9d60403fa0de) )
566537   ROM_LOAD16_WORD_SWAP( "flash.u9", 0x1c00000, 0x400000, CRC(c1fee95f) SHA1(0ed5ed9fa18e7da9242a6df2c210c46de25a2281) )
r18053r18054
574545
575546DRIVER_INIT_MEMBER(dgpix_state,xfiles)
576547{
577   UINT8 *rom = (UINT8 *)memregion("user1")->base() + 0x1c00000;
548   UINT8 *rom = (UINT8 *)memregion("flash")->base() + 0x1c00000;
578549
579550   rom[BYTE4_XOR_BE(0x3aa92e)] = 3;
580551   rom[BYTE4_XOR_BE(0x3aa92f)] = 0;
r18053r18054
591562
592563DRIVER_INIT_MEMBER(dgpix_state,kdynastg)
593564{
594   UINT8 *rom = (UINT8 *)memregion("user1")->base() + 0x1c00000;
565   UINT8 *rom = (UINT8 *)memregion("flash")->base() + 0x1c00000;
595566
596567   rom[BYTE4_XOR_BE(0x3aaa10)] = 3; // 129f0 - nopped call
597568   rom[BYTE4_XOR_BE(0x3aaa11)] = 0;
trunk/src/mame/drivers/bmcbowl.c
r18053r18054
103103#include "emu.h"
104104#include "cpu/m68000/m68000.h"
105105#include "machine/6522via.h"
106#include "machine/nvram.h"
106107#include "sound/ay8910.h"
107108#include "sound/okim6295.h"
108109
110#define NVRAM_HACK
109111
112
110113class bmcbowl_state : public driver_device
111114{
112115public:
113116   bmcbowl_state(const machine_config &mconfig, device_type type, const char *tag)
114117      : driver_device(mconfig, type, tag) ,
115      m_stats_ram(*this, "stats_ram", 16),
118      m_stats_ram(*this, "nvram", 16),
116119      m_vid1(*this, "vid1"),
117120      m_vid2(*this, "vid2"){ }
118121
r18053r18054
143146
144147
145148
146#define NVRAM_HACK
147
148149void bmcbowl_state::video_start()
149150{
150151}
r18053r18054
311312}
312313#endif
313314
314static NVRAM_HANDLER( bmcbowl )
315void bmcbowl_state::machine_reset()
315316{
316   bmcbowl_state *state = machine.driver_data<bmcbowl_state>();
317   int i;
318
319   if (read_or_write)
320      file->write(state->m_stats_ram, state->m_stats_ram.bytes());
321   else
322
323317#ifdef NVRAM_HACK
324   for (i = 0; i < state->m_stats_ram.bytes(); i++)
325      state->m_stats_ram[i] = 0xff;
318   for (int i = 0; i < m_stats_ram.bytes(); i++)
319      m_stats_ram[i] = 0xff;
326320
327   init_stats(state,bmc_nv1,ARRAY_LENGTH(bmc_nv1),0);
328   init_stats(state,bmc_nv2,ARRAY_LENGTH(bmc_nv2),0x3b0);
329   init_stats(state,bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2);
330#else
331   if (file)
332      file->read(state->m_stats_ram, state->m_stats_ram.bytes());
333   else
334
335      for (i = 0; i < state->m_stats_ram.bytes(); i++)
336         state->m_stats_ram[i] = 0xff;
321   init_stats(this,bmc_nv1,ARRAY_LENGTH(bmc_nv1),0);
322   init_stats(this,bmc_nv2,ARRAY_LENGTH(bmc_nv2),0x3b0);
323   init_stats(this,bmc_nv3,ARRAY_LENGTH(bmc_nv3),0xfe2);
337324#endif
338
339325}
340326
341327static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state )
r18053r18054
355341   AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8_LEGACY("aysnd", ay8910_data_address_w, 0xff00)
356342   AM_RANGE(0x092802, 0x092803) AM_DEVREAD8_LEGACY("aysnd", ay8910_r, 0xff00)
357343   AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0")
358   AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("stats_ram") /* 8 bit */
344   AM_RANGE(0x095000, 0x095fff) AM_RAM AM_SHARE("nvram") /* 8 bit */
359345   AM_RANGE(0x097000, 0x097001) AM_READNOP
360346   AM_RANGE(0x140000, 0x1bffff) AM_ROM
361347   AM_RANGE(0x1c0000, 0x1effff) AM_RAM AM_SHARE("vid1")
r18053r18054
496482   /*irq                  */ DEVCB_DRIVER_MEMBER(bmcbowl_state,via_irq)
497483};
498484
499void bmcbowl_state::machine_reset()
500{
501}
502
503485static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
504486   MCFG_CPU_ADD("maincpu", M68000, 21477270/2 )
505487   MCFG_CPU_PROGRAM_MAP(bmcbowl_mem)
r18053r18054
514496
515497   MCFG_PALETTE_LENGTH(256)
516498
499   MCFG_NVRAM_ADD_1FILL("nvram")
517500
518   MCFG_NVRAM_HANDLER(bmcbowl)
519
520501   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
521502
522503   MCFG_SOUND_ADD("aysnd", AY8910, 3579545/2)
trunk/src/emu/device.h
r18053r18054
438438};
439439
440440
441// ======================> memregion_finder
441// ======================> memory_region_finder
442442
443443// device finder template
444444template<bool _Required>

Previous 199869 Revisions Next


© 1997-2024 The MAME Team